Skip to content

Latest commit

 

History

History

README.md

Wandering - The Wandering Mobile Robot Application

Overview

The Wandering mobile robot application is a Robot Operating System 2 (ROS 2) sample application that moves the robot around the room avoiding hitting obstacles, updating a map in real time that is exposed as the ROS topic.

The application consists of two ROS nodes, developed by Intel. In order to function properly, those two nodes depend on other ROS nodes/packages: RealSense ROS wrapper, Nav2 ROS package, RTABMAP with its ROS Wrapper and robot drivers.

This is represented on the diagram below:

Screenshot

In the diagram above, kobuki robot was used, and its kobuki ROS node is used for issuing movement commands coming from Nav2 ROS node.

Get Started

System Requirements

Prepare the target system following the official documentation.

Build

To build debian packages, export ROS_DISTRO env variable to desired platform and run make package command. After build process successfully finishes, built packages will be available in the root directory. The following command is an example for Jazzy distribution.

ROS_DISTRO=jazzy make package

You can list all built packages:

$ ls|grep -i .deb
ros-jazzy-wandering_2.3-1_amd64.deb
ros-jazzy-wandering-aaeon-tutorial_2.3-1_amd64.deb
ros-jazzy-wandering-irobot-tutorial_2.3-1_amd64.deb
ros-jazzy-wandering-jackal-tutorial_2.3-1_amd64.deb
ros-jazzy-wandering-gazebo-tutorial_2.3-1_amd64.deb
ros-jazzy-wandering-tutorials_2.3-1_amd64.deb

*build-deps*.deb package is generated during build process and installation of such packages could be skipped on target platform.

To clean up all build artifacts:

make clean

Install

If Ubuntu 22.04 with Humble is used, then run

source /opt/ros/humble/setup.bash

If Ubuntu 24.04 with Jazzy is used, then run

source /opt/ros/jazzy/setup.bash

Finally, install the Debian package that was built via make package:

sudo apt update
sudo apt install ./ros-$(ROS_DISTRO)-wandering_*_amd64.deb

ROS 2 Jazzy and Gazebo Harmonic Compatibility

Twist vs TwistStamped

ROS 2 Jazzy with Gazebo Harmonic requires geometry_msgs/msg/TwistStamped for robot motion, while Humble with Gazebo Classic uses geometry_msgs/msg/Twist. This difference is automatically handled:

Simulation (Gazebo):

  • Humble + Gazebo Classic: Uses Twist (default)
  • Jazzy + Gazebo Harmonic: Uses TwistStamped via enable_stamped_cmd_vel: true parameter
  • Launch files automatically select the correct configuration based on ROS_DISTRO environment variable

Real Hardware:

  • Uses Twist on both Humble and Jazzy (hardware drivers unchanged)
  • No configuration changes needed when upgrading from Humble to Jazzy
  • Applies to: AAEON, iRobot Create3, Clearpath Jackal, and similar platforms

To verify what your system expects:

ros2 topic info /cmd_vel -v

LiDAR Visualization

Gazebo Harmonic does not render LiDAR rays in the 3D view like Gazebo Classic. Use RViz2 for LiDAR visualization:

ros2 run rviz2 rviz2
# Add → LaserScan display → Topic: /scan

The LiDAR sensor data publishes correctly and works with Nav2 navigation.

Test

To run unit tests (implemented with colcon) execute the below command with target ROS_DISTRO (example for Jazzy):

ROS_DISTRO=jazzy make test

To run E2E functional tests that validate Wandering in a practical setup, execute:

ROS_DISTRO=jazzy make test-e2e

Development

There is a set of prepared Makefile targets to speed up the development.

In particular, use the following Makefile target to run code linters.

make lint

Alternatively, you can run linters individually.

make lint-bash
make lint-clang
make lint-githubactions
make lint-json
make lint-markdown
make lint-python
make lint-yaml

To run license compliance validation:

make license-check

To see a full list of available Makefile targets:

$ make help                                                                                                                                            
Target               Description
------               -----------
license-check        Perform a REUSE license check using docker container https://hub.docker.com/r/fsfe/reuse
lint                 Run all sub-linters using super-linter (using linters defined for this repo only)
lint-all             Run super-linter over entire repository (auto-detects code to lint)
lint-bash            Run Bash linter using super-linter
lint-clang           Run clang linter using super-linter
lint-githubactions   Run Github Actions linter using super-linter
lint-json            Run JSON linter using super-linter
lint-markdown        Run Markdown linter using super-linter
lint-python          Run Python linter using super-linter
lint-yaml            Run YAML linter using super-linter
package              Build Debian packages
test                 Build & test with Colcon
test-e2e             Run E2E functional tests

Usage

Tutorials

This repository provides several tutorials showing the Wandering App running on robotic kits:

Visualization

In the rviz folder, the Rviz2 config file can be found with Wandering app relevant ROS topics.

rviz2 -d rviz/config.rviz

Screenshot

Documentation

Comprehensive documentation on this component is available here: dev guide.

License

wandering is licensed under Apache 2.0 License.