Skip to content

ngwk1/rmf_demos

 
 

Repository files navigation

RMF Demos

This repository contains documentation and demo packages which showcase the capabilities of the Robotics Middleware Framework (RMF) including traffic_management, conflict resolution, and door/lift interaction with heterogeneous robot fleets. The demos serve as a starting point for working and integrating with RMF.

Note: The entire RMF ecosystem is still under active development, which may cause documentation, API or ABI compatibility to break.

System Requirements

These demos were developed and tested on

Setup

Install all non-ROS prerequisites of the packages,

sudo apt update && sudo apt install \
  git cmake wget python3-vcstool \
  qt5-default libeigen3-dev \
  libwebsocketpp-dev \
  libboost-all-dev curl \
  python3-shapely python3-yaml

Setup a new ROS 2 workspace and pull in all the required repositories using vcs,

mkdir -p ~/rmf_demos_ws/src
cd ~/rmf_demos_ws
wget https://raw.githubusercontent.com/osrf/rmf_demos/master/rmf_demos.repos
vcs import src < rmf_demos.repos

Ensure all ROS prerequisites are fulfilled,

cd ~/rmf_demos_ws
rosdep install --from-paths src --ignore-src --rosdistro eloquent \
    -y --skip-keys "websocketpp ament_python"

Some of the demos might refer to open source gazebo models hosted here. To avoid any race conditions and errors where gazebo downloads all models when launched, optionally, a local copy of all the open source models can be downloaded and saved manually like so,

cd ~/.
hg clone https://bitbucket.org/osrf/gazebo_models
cd gazebo_models
cp -r ./* ~/.gazebo/models/.

Compiling Instructions

Source ROS 2 Eloquent and build,

cd ~/rmf_demos_ws
source /opt/ros/eloquent/setup.bash
colcon build

Office World

An indoor office environemnt for robots to navigate around. It includes a beverage dispensing station, controllable doors and laneways which are integrated into RMF.

source ~/rmf_demos_ws/install/setup.bash
ros2 launch demos office.launch.xml

To simulate a delivery

source ~/rmf_demos_ws/install/setup.bash
ros2 run rmf_demo_tasks request_delivery 

To request each of the Magni robots to loop between two points,

source ~/rmf_demos_ws/install/setup.bash
ros2 launch demos office_loop.launch.xml

Example Map

An example map/graph configuration generated using the layout of the OSRF Singapore office, has been included in the package rmf_demo_maps, and it can be found here. This configuration file can be read and modified by the traffic editor, and is parsed by the different core packages of RMF during build time.

Below is a screenshot of how the provided demo map will look like, when opened using the traffic editor,

Airport Terminal World

This demo world shows robot interaction on a much larger map, with a lot more lanes, destinations, robots and possible interactions between robots from different fleets, robots and infrastructure, as well as robots and users. In the illustrations below, from top to bottom we have how the world looks like in traffic_editor, the schedule visualizer in rviz, and the full simulation in gazebo,

To launch the world and the schedule visualizer,

source ~/rmf_demos_ws/install/setup.bash
ros2 launch demos airport_terminal.launch.xml

To start a basic setup where Magni and MiR100 robots are spawned, without sending any requests,

source ~/rmf_demos_ws/install/setup.bash
ros2 run demos airport_terminal_spawn_robots.sh

To spawn the robots as well as sending looping jobs,

source ~/rmf_demos_ws/install/setup.bash
ros2 run demos airport_terminal_loop_scenario.sh

Notes and known issues

  • More instructions on using the traffic_editor can be found in the repository.

  • If you encounter problems launching the demos in gazebo, consider removing the local installation and reinstalling using the rosdep command listed at the top,

sudo apt remove gazebo*

cd ~/rmf_demos_ws
rosdep install --from-paths src --ignore-src --rosdistro eloquent \
    -y --skip-keys "websocketpp ament_python"

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 70.2%
  • Python 18.7%
  • CMake 11.1%