Microservice for automatic mapping of environments using mobile robots with differential traction. This microservice uses an interface between ROS and a Programmable Intelligent Space based on computer vision. Mapping is done using a SLAM algorithm available in ROS HectorSLAM.
The mapping is performed within an intelligent space, so the exploration points that the robot will navigate are in the PIS reference. A python script stores the robot's initial pose and a transformation is done to convert the points in the PIS reference frame to the map's reference frame. The map's frame of reference is defined by the robot's initial pose.
In the ROS part, a launch file initializes HectorSLAM with the settings chosen by the user. These settings consist of map size, resolution and something like that, and these are available in the Deployment file.
Is-reconstruction: Estimate the 3D poses of the ArUco Markers.
ROS-master: Provides naming and registration services to the rest of the nodes in the ROS system.
| Name | ⇒ Input | Output ⇒ | Description |
|---|---|---|---|
| IsRosMapping | 📨 topic: IsRosMapping.{robot_id}.MappingRequest 💎 schema: MappingRequest |
📨 topic: move_base/goal 💎 schema: MoveBaseGoal |
It receives exploration points in the PIS referential and sends them to the ROS navigation stack. |
The map is automatically saved at the end of the process on an NFS server available on the main cluster.
The behavior of the microservice can be customized by passing a YAML configuration file.
An example configuration file can be found in etc/config/config.yaml and etc/config/hector_config/hector_params.yaml.
Make sure you have kubectl installed and the right ~/.kube/config file to be able to interact with the cluster.
Deploy the stream application:
kubectl apply -f etc/k8s/deployment.yamlThe .yaml file describes two things:
- a deployment;
- a configmap;
A deployment is a way to run our application and guarantee that an N number of replicas will be running. The configmap allows load the options you desires when deploying into the kubernetes platform. See more about deployment and confimap.
An example of use is shown in examples/client.py.

