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
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.
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
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.
Custom message definitions used by the simulator.
| Message | Description |
|---|---|
Cmd |
Velocity and rotation command |
Ecd |
Encoder feedback data |
- Ubuntu 22.04
- ROS 2 Humble
- RViz2
The following packages are required to build and run Jarabot Simulator on a laptop with Ubuntu 22.04 and ROS 2 Humble already installed.
- Ubuntu 22.04
- ROS 2 Humble (base or desktop installation)
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
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
mkdir -p ~/jarabot_sim_ws/src
cd ~/jarabot_sim_ws/src
git clone https://github.com/playros/jarabot-simulator.git .cd ~/jarabot_sim_ws
colcon build --symlink-install
source install/setup.bashsource install/setup.bash
ros2 launch jarabot_sim jarabot_simulator.launch.pysource install/setup.bash
ros2 run teleop_twist_keyboard teleop_twist_keyboardsource install/setup.bash
rviz2| 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 |
| 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 |
- Differential drive kinematics
- Encoder-integrated odometry
- Standard ROS 2 message interfaces
- Compatible with Navigation2 and SLAM toolchains
- Navigation2 integration examples
- SLAM Toolbox / Cartographer demos
- Gazebo interoperability
- Unified real-robot and simulator workflow
MIT License
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)

