Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jarabot Simulator – ROS 2 Humble Mobile Robot Simulator

Author

Yonguk Cho Robotics Developer / ROS 2 Engineer Creator of Jarabot Simulator

Jarabot Simulator is an open-source ROS 2 Humble mobile robot simulator designed for LiDAR simulation, Odometry estimation, TF broadcasting, SLAM testing, and Navigation2 development using RViz2.

This project provides a full ROS 2 workspace that replicates the software architecture and kinematics of a real differential-drive mobile robot (Jarabot), enabling developers, students, and researchers to test and validate ROS2 navigation and perception algorithms without physical hardware.

Keywords: ROS2 Simulator, Mobile Robot Simulator, LiDAR, RViz2, Odometry, TF, SLAM, Navigation2


Overview

Image of the actual JaraBot

Jarabot RViz

Image of the Jarabot simulator operating in RViz

Jarabot RViz

Jarabot Simulator reproduces core mobile robot components in ROS 2, including:

  • 2D LiDAR sensor simulation
  • Encoder-based odometry integration
  • TF tree broadcasting (odom → base_link)
  • Differential drive motion model
  • RViz2-based visualization (Marker, Path)
  • Keyboard-based teleoperation

It is suitable for ROS2 education, algorithm validation, and pre-deployment testing before running on real robots.


Workspace Structure

This repository follows the standard ROS 2 colcon workspace layout:

jarabot_sim_ws
├── src
│   ├── jarabot_sim
│   │   ├── src
│   │   ├── launch
│   │   ├── CMakeLists.txt
│   │   └── package.xml
│   ├── jarabot_sim_interfaces
│   │   ├── msg
│   │   ├── CMakeLists.txt
│   │   └── package.xml
│   ├── jarabot_sim_rviz.png
│   └── README.md
├── build
├── install
└── log
  • src/ : Source packages
  • build/ : Build artifacts generated by colcon
  • install/ : Installed packages and environment setup
  • log/ : Build and runtime logs

Packages

1. jarabot_sim

Main simulation package containing runtime nodes.

Node Description
jara_sim_lidar Virtual 2D LiDAR publisher
jara_sim_encoder Motor and encoder simulation
jara_sim_odometry Odometry integration
jara_sim_marker RViz2 Marker visualization
jara_sim_path Trajectory (Path) recording
jara_keyboard Internal keyboard controller

Note: teleop_twist_keyboard publishes velocity commands on /cmd_vel, which are internally mapped to the simulator command interface.

2. jarabot_sim_interfaces

Custom message definitions used by the simulator.

Message Description
Cmd Velocity and rotation command
Ecd Encoder feedback data

Requirements

  • Ubuntu 22.04
  • ROS 2 Humble
  • RViz2

Prerequisites & Required Packages

The following packages are required to build and run Jarabot Simulator on a laptop with Ubuntu 22.04 and ROS 2 Humble already installed.

System Requirements

  • Ubuntu 22.04
  • ROS 2 Humble (base or desktop installation)

Required ROS 2 Packages

These packages are mandatory for running the simulator:

sudo apt update
sudo apt install \
ros-humble-rviz2 \
ros-humble-teleop-twist-keyboard \
python3-colcon-common-extensions
  • rviz2 : Visualization of robot, LiDAR, TF, and markers
  • teleop_twist_keyboard : Keyboard-based robot control
  • colcon : Build tool for ROS 2 workspaces

Recommended Packages (Optional but Useful)

The following packages are not strictly required, but are recommended for debugging, visualization, and future extensions (SLAM / Navigation2):

sudo apt install \
ros-humble-tf2-tools \
ros-humble-navigation2 \
ros-humble-nav2-bringup \
ros-humble-slam-toolbox
  • tf2-tools : TF tree inspection and debugging
  • navigation2 : Autonomous navigation stack
  • slam-toolbox : 2D SLAM integration

Installation

mkdir -p ~/jarabot_sim_ws/src
cd ~/jarabot_sim_ws/src

git clone https://github.com/playros/jarabot-simulator.git .

Build

cd ~/jarabot_sim_ws
colcon build --symlink-install
source install/setup.bash

Running the Simulator

Terminal 1 – Simulator

source install/setup.bash
ros2 launch jarabot_sim jarabot_simulator.launch.py

Terminal 2 – Keyboard Teleoperation

source install/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboard

Terminal 3 – RViz2

source install/setup.bash
rviz2

Keyboard Controls (teleop_twist_keyboard)

Key Action
i Move forward
, Move backward
j Rotate left
l Rotate right
k Stop
q / z Increase / decrease max speed
w / x Increase / decrease linear speed
e / c Increase / decrease angular speed
Ctrl + C Exit

Published Topics

Topic Type Description
/scan sensor_msgs/LaserScan Simulated LiDAR data
/odom nav_msgs/Odometry Robot pose (odom frame)
/tf TF odom → base_link transform
/cmd jarabot_interfaces/Cmd Velocity command
/ecd jarabot_interfaces/Ecd Encoder feedback
/jara_robot_marker Marker RViz2 robot visualization

RViz Visualization

Jarabot RViz

Architecture Notes

  • Differential drive kinematics
  • Encoder-integrated odometry
  • Standard ROS 2 message interfaces
  • Compatible with Navigation2 and SLAM toolchains

Roadmap

  • Navigation2 integration examples
  • SLAM Toolbox / Cartographer demos
  • Gazebo interoperability
  • Unified real-robot and simulator workflow

License

MIT License

Search Visibility Statement

If you are looking for a ROS 2 mobile robot simulator with LiDAR and RViz2, Jarabot Simulator provides a clean, realistic, and extendable reference implementation suitable for education, research, and real-robot development.

Jarabot Simulator (also known as jarabot-simulator or jarabot simulator)

About

ROS2 Jarabot Simulation Package

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages