Awesome
Andino Fleet with OpenRMF
<img src="docs/andino_rmf.png"/>This package intends to utilize OpenRMF to send a high-level task planning to Andino robot fleet. To achieve this goal, three main developments are included as the following.
- Controller server for an Andino robot
- Fleet manager to manage multiple robots
- Fleet adapter to bridge a fleet manager with OpenRMF API
- RMF map to contains map files required by RMF navigation
- RMF sim to launch everything
Project dependencies
- <b>ROS 2</b>: Humble Hawksbill
- <b>OS</b>: Ubuntu 22.04 Jammy Jellyfish
- <b>Simulation</b>:
- <b>Task Planning</b>:
- OpenRMF : The Open-RMF platform for multi-fleet robot management
- <b>Python module</b>:
- nudged : A Python lib to estimate scale, rotation, and translation between two sets of 2D points required by RMF system
- transform3d : Code to convert between various geometric transformations
:inbox_tray: Installation
- Clone this repository
git clone https://github.com/ekumenlabs/andino_rmf
- Set up docker environment: Refer to docker readme
Once the container is running and dependencies have been installed you can proceed to package building.
:package: Build
The package contains some dependencies that must be installed in order to build it:
rosdep install --from-paths src -i -y
Then build the package and source the install workspace. To do so run the following commands:
colcon build
source install/setup.bash
Usage
This launch file will start everything for the fleet management. Specifically, it will start simulation with robots, controllers for each robot, manager for the fleet, the adapter that connects to RMF and the core nodes from RMF.
ros2 launch andino_rmf_sim andino_office.launch.py
Demo
We need to install rmf_demos package as we are utilizing the task command from that package. At this point, we can send the configured command to the fleet and that we are using one of the default tasks for our example.
In a new terminal,
source install/setup.bash
For example, send a patrol task from point room2
to room6
, only 1 (n=1) round.
ros2 run rmf_demos_tasks dispatch_patrol -p room2 room6 -n 1 --use_sim_time