Back to All
Project

Integrating OpenRMF with Qualcomm Robotics RB5 and TurtleBot3 for Fleet Management

This project seamlessly integrates a robot fleet management system using the OpenRMF middleware framework with the TurtleBot3, presented via a web interface through the ROS bridge server. Highlighting OpenRMF’ S capabilities in robotics platforms, especially with the navigation stack, the project emphasizes practical implementation in a Qualcomm® Robotics RB5 driven TurtleBot3. Notably, users can teleoperate the robots from a web interface, effortlessly directing them to predefined target positions. This highlights the synergy between OpenRMF, Qualcomm Robotics RB5, TurtleBot3, and web-based robotics control in a compact and user-friendly manner.

 

Objective

This project is motivated by the aspiration to seamlessly integrate a robot fleet management system using the OpenRMF middleware framework with the TurtleBot3. The inspiration lies in highlighting the remarkable capabilities of OpenRMF in the context of robotics platforms, particularly when coupled with the navigation stack. The desired outcome is to practically illustrate the extensive features offered by OpenRMF in a TurtleBot3. Moreover, the project aims to provide users with the ability to teleoperate the robots from a web interface, allowing effortless navigation and precise control of the robots to predefined target positions.

 

 

Equipment Description
Qualcomm Robotics RB5
development kit  
Qualcomm Technologies’ Robotics platform
USB A to Micro USB cable
USB A to USB Type C cable
For serial console interface
For connecting the USB3.0 Type C port to the board and flashing images
Ubuntu 18.04 host  To flash images to Qualcomm Robotics RB5, to run few ROS commands
Turtlebot Burger (TurtleBot3) Off the shelf robot platform from Robotis
Acronyms:  
ROS Robot Operating System

Introduction:

This project seamlessly integrates a robot fleet management system using the OpenRMF middleware framework with the TurtleBot3, presented via a web interface through the ROS bridge server. Highlighting OpenRMF’ S capabilities in robotics platforms, especially with the navigation stack, the project emphasizes practical implementation in a TurtleBot3. Notably, users can teleoperate the robots from the web interface, effortlessly directing them to predefined target positions. This highlights the synergy between OpenRMF, TurtleBot3, and web-based robotics control in a compact and user-friendly manner.

Prerequisites:

Before you begin, make sure you have all the prerequisites set up on an Ubuntu host machine and on Qualcomm Robotics RB5

On Ubuntu 20.04 host -

  1. Install Android Platform tools (ADB, Fastboot)
  2. Install python version 3.8
  3. Install ROS1 – Noetic
  4. Install ROS2 – Galactic
  5. Install Node.js - v14.x or later
  6. Install npm - v7.X or later
  7. Install non-ROS prerequisite packages using the command –
sudo apt update && sudo apt install \
  git wget qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
  python3-rosdep \
  python3-vcstool \
  python3-colcon-common-extensions \
  # maven default-jdk   

8.Install rosbridge packages

sudo apt install ros-noetic-rosbridge-server

On Qualcomm Robotics RB5 –

  1. Flash Qualcomm Robotics RB5 with a firmware image
  2. Setup Wi-Fi
  3. Install python 3.6
  4. Install Docker on RB5
  5. Install ROS Noetic
  6. Install dependent ROS packages
$ sudo apt-get install ros-noetic-joy ros-noetic-teleop-twist-joy \ ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc ros-noetic-rgbd-launch ros-noetic-rosserial-arduino \ ros-noetic-rosserial-python ros-noetic-rosserial-client \ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server \ ros-noetic-move-base ros-noetic-xacro \ ros-noetic-compressed-image-transport ros-noetic-rqr* ros-noetic-rviz \ ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers 

Make sure the Qualcomm Robotics RB5 is well mounted on the Turtlebot3 and then continue with the next 2 steps -

 

7. Install turtlebot3 packages

$ sudo apt install ros-noetic-dynamic-sdk
$ sudo apt install ros-noetic-turtlebot3-msgs
$ sudo apt install ros-noetic-turtlebot3

Set up the workspace on Ubuntu Host and Qualcomm Robotics RB5 –

On Ubuntu 20.04 host -

Client in ROS 1

  1. Start a new ROS 1 workspace, and pull in the necessary repositories,
$ mkdir -p ~/ff_ros1_ws/src
$ cd ~/ff_ros1_ws/src
$ git clone https://github.com/open-rmf/free_fleet -b main
$ git clone https://github.com/eclipse-cyclonedds/cyclonedds -b release/0.7x

2. Install all the dependencies through rosdep

$ cd ~/ff_ros1_ws
$ rosdep install --from-paths src --ignore-src --rosdistro noetic -yr

3. Source ROS 1 and build

$ cd ~/ff_ros1_ws
# Run below command, if sourcing of noetic has not taken care in ~/.bashrc
$ source /opt/ros/noetic/setup.bash
$ colcon build

Client and Server in ROS 2 –

1. Start a new ROS 2 workspace, and pull in the necessary repositories

$ mkdir -p ~/ff_ros2_ws/src
$ cd ~/ff_ros2_ws/src
$ git clone https://github.com/open-rmf/free_fleet -b main
$ git clone https://github.com/open-rmf/rmf_internal_msgs -b main

2. Install all the dependencies through rosdep

$ cd ~/ff_ros2_ws
$ rosdep install --from-paths src --ignore-src --rosdistro galactic -yr

3. Source ROS 2 and build

$ cd ~/ff_ros2_ws
# Run below command, if sourcing of galactic has not taken care in ~/.bashrc
$ source /opt/ros/galactic/setup.bash
$ colcon build
# Optionally use the command below to only build the relevant packages, 
# colcon build –packages-up-to \
# free_fleet ff_examples_ros2 free_fleet_server_ros2 free_fleet_client_ros2


Run the Turtlebot3 Fleet server:

Run the commands below to launch a server on the Ubuntu host for a fleet of turtlebot3 robots.

$ source ~/ff_ros2_ws/install/setup.bash
$ ros2 launch ff_examples_ros2 
turtlebot3_world_ff_server.launch.xml

At this point, the server should register any clients(turtlebots) running, if any of the client bots below are running. Leave this terminal open, we will observe the logs after the next few steps.

To detect a single turtlebot -

In the host terminal start a new ssh connection with the Qualcomm Robotics RB5 and set the ‘ROS_NAMESPACE’ environment variable

                        $ ssh root@<RB5_IP>
$ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_bringup turtlebot3_robot.launch multi_robot_name:="tb3_0" set_lidar_frame_id:="tb3_0/base_scan

After the environment variable is set on the Qualcomm Robotics RB5, switch to the Ubuntu host terminal and launch a single Turtlebot3, with a free fleet client attached to it, by sourcing the ROS 1 workspace and launching the provided example launch file

$ source ~/ff_ros1_ws/install/setup.bash
$ export TURTLEBOT3_MODEL = burger
$ roslaunch ff_examples_ros1 tb3_localization.launch

After launching RViz with the specified command, you can visualize the turtlebot in its real-world environment, enabling real-time monitoring and analysis of its spatial awareness and sensor data.

Audio

At this point, go back to the Ubuntu host terminal which has the server running already, it should display that a new robot has been registered.

Audio

An alternative method to verify that a new robot is recognized is to monitor the

/fleet_states topic by using the command - $ ros2 topic echo /fleet_states

To detect multiple Turtlebots -

In the Ubuntu host terminal that has the ssh connection with the Qualcomm Robotics RB5 , enter the following commands to set the environment variables for multiple turtlebots.

$ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_bringup
turtlebot3_robot.launch multi_robot_name:="tb3_0" set_lidar_frame_id:="tb3_0/base_scan

$ ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_bringup
turtlebot3_robot.launch multi_robot_name:="tb3_1" set_lidar_frame_id:="tb3_1/base_scan"

$ ROS_NAMESPACE=tb3_2 roslaunch turtlebot3_bringup 
turtlebot3_robot.launch multi_robot_name:="tb3_2" set_lidar_frame_id:="tb3_2/base_scan"

After the environment variables are set on the Qualcomm Robotics RB5, switch to the Ubuntu host terminal and run the commands below-

$ source ~/ff_ros1_ws/install/setup.bash
$ export TURTLEBOT3_MODEL = burger
$ roslaunch ff_examples_ros1 tb3_localization.launch

This example launches three Turtlebots and registers each robot as a client within a fleet controlled by free_fleet

The ubuntu host terminal which has the server running already, displays that multiple new robots have been registered.

Once you are able to visualize the three bots in the Rviz, you can command the turtlebots to navigate to various areas on the map by utilizing the tools and panels within the visualization interface. Choose the navigation goal using 2D Nav Goal, and the selected goal will be displayed on the panel. Finally, click on "Send Nav Goal" to initiate the navigation command.

Audio

Setup the Web UI to control the turtlebots using virtual joysticks :

The web application here is built with ReactJS, a widely-used JavaScript framework for front-end development. Through the web interface, users can take control of the robots, observe the navigation map, and track the robots’ position, orientation, and velocity. Additionally, the capability to visualize and monitor a fleet of three robots on the web using ros2djs is also incorporated.

1. In the Ubuntu host terminal, Navigate to project directory & run the commands below

$ cd ~/
$ git clone https://github.com/globaledgesoft/ROS1-OpenRMF-integration-with-Turtlebot3-for-Fleet-management-using-RB5-with-web-visualisation/tree/main
$cd <cloned repo>
$ npm start

This command will launch the development server, and the web application will be accessible at [http://localhost:3000](http://localhost:3000) in your web browser. The web browser has virtual joysticks as below to control the robots, but the robots are currently disconnected.

Audio

2. Open another terminal and run the following commands

$ source /opt/ros/noetic/setup.bash 
$ roslaunch rosbridge_server rosbridge_websocket.launch

Rosbridge_websocket node has been started & the connection has been established. You should see in the terminal logs that connection to robots is successful.

Audio

The web page now shows that the robots are connected.

Audio

3. Ensure that the client bot launch file and the Turtlebot3 fleet server launch files are active to facilitate web visualization. If you have already initiated the client and server for multiple robots in the previous steps, you can skip the following commands. If not, run the commands to launch the client and server. Open a new terminal and run the following the commands:

$ source ~/ff_ros2_ws/install/setup.bash
$ ros2 launch ff_examples_ros2 turtlebot3_world_ff_server.launch.xml 

Open another terminal and run the following the commands:

$ source ~/ff_ros1_ws/install/setup.bash
$ export TURTLEBOT3_MODEL = burger
$ roslaunch ff_examples_ros1 tb3_localization.launch

4. Refresh the URL "localhost:3000" once. You will be able to observe the three robots on the map along with their respective positions and velocities.

Qualcomm-image

5. You can control the three robots using their respective buttons. Utilize the teleop joysticks to operate the robots and observe the path each robot takes to reach its final goal. Concurrently monitor the changes in both RViz and Gazebo. Please note that specific targets have been provided for the three robots..

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries ("Qualcomm"). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.

Project Authors
Capgemini
Ashish TiwariArchitect
Sahil BandarTech Lead
Avdhesh ChouhanProfessional II
Ankitha MAssociate l – Engineer
Pinisetti Vijaya GaneshAssociate l – Engineer

Sign up for the Developer Newsletter.

Get software and hardware tool resources to help optimize your development delivered to your inbox weekly.

Qualcomm relentlessly innovates to deliver intelligent computing everywhere, helping the world tackle some of its most important challenges. Our leading-edge AI, high performance, low-power computing, and unrivaled connectivity deliver proven solutions that transform major industries. At Qualcomm, we are engineering human progress.

Stay connected

Get the latest Qualcomm and industry information delivered to your inbox.

Subscribe
Manage your subscription

© Qualcomm Technologies, Inc. and/or its affiliated companies.

Snapdragon and Qualcomm branded products are products of Qualcomm Technologies, Inc. and/or its subsidiaries. Qualcomm patented technologies are licensed by Qualcomm Incorporated.

Note: Certain services and materials may require you to accept additional terms and conditions before accessing or using those items.

References to "Qualcomm" may mean Qualcomm Incorporated, or subsidiaries or business units within the Qualcomm corporate structure, as applicable.

Qualcomm Incorporated includes our licensing business, QTL, and the vast majority of our patent portfolio. Qualcomm Technologies, Inc., a subsidiary of Qualcomm Incorporated, operates, along with its subsidiaries, substantially all of our engineering, research and development functions, and substantially all of our products and services businesses, including our QCT semiconductor business.

Materials that are as of a specific date, including but not limited to press releases, presentations, blog posts and webcasts, may have been superseded by subsequent events or disclosures.

Nothing in these materials is an offer to sell or license any of the services or materials referenced herein.