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:
In the diagram above, kobuki robot was used, and its kobuki ROS node is used for issuing movement commands coming from Nav2 ROS node.
Prepare the target system following the official documentation.
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 packageYou 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 cleanIf Ubuntu 22.04 with Humble is used, then run
source /opt/ros/humble/setup.bashIf Ubuntu 24.04 with Jazzy is used, then run
source /opt/ros/jazzy/setup.bashFinally, install the Debian package that was built via make package:
sudo apt update
sudo apt install ./ros-$(ROS_DISTRO)-wandering_*_amd64.debROS 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
TwistStampedviaenable_stamped_cmd_vel: trueparameter - Launch files automatically select the correct configuration based on
ROS_DISTROenvironment variable
Real Hardware:
- Uses
Twiston 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 -vGazebo 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: /scanThe LiDAR sensor data publishes correctly and works with Nav2 navigation.
To run unit tests (implemented with colcon) execute the below command with target ROS_DISTRO (example for Jazzy):
ROS_DISTRO=jazzy make testTo run E2E functional tests that validate Wandering in a practical setup, execute:
ROS_DISTRO=jazzy make test-e2eThere is a set of prepared Makefile targets to speed up the development.
In particular, use the following Makefile target to run code linters.
make lintAlternatively, 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-yamlTo run license compliance validation:
make license-checkTo 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 testsThis repository provides several tutorials showing the Wandering App running on robotic kits:
- Wandering Application in a Waffle Gazebo Simulation
- Wandering Application on AAEON robot with Intel® RealSense™ Camera and RTAB-Map SLAM
- Execute the Wandering Application on the Jackal™ Robot
In the rviz folder, the Rviz2 config file can be found with Wandering app relevant ROS topics.
rviz2 -d rviz/config.rvizComprehensive documentation on this component is available here: dev guide.
wandering is licensed under Apache 2.0 License.

