mini_pi_description¶
Mini_Pi Robot – ROS 2 description & simulation package
Description: Mini_Pi is a small differential drive robot with ultrasonic sensors, modeled in URDF/Xacro and simulated in Gazebo for navigation and SLAM experiments. This is a GIAR research project
1. Project Overview¶
mini_pi_description provides the URDF/Xacro description and Gazebo integration for the Mini_Pi robot:
- A small differential-drive robot intended for education, research, and prototyping.
- Designed as a ROS 2-first robot: easy to use with
rviz2,Gazebo, and standard ROS 2 tools. - Focused on:
- Basic navigation experiments (odometry, wheel kinematics).
- SLAM and mapping (with range sensors and simulated worlds).
- Testing control and perception algorithms in simulation before moving to real hardware.
The package focuses on a clean, modular Xacro structure so it can be reused or extended in other projects.
2. Features¶
- ✅ Differential-drive mobile base
- Left/right wheel joints with configurable radius and separation.
- ✅ Ultrasonic range sensors
- Front-mounted ultrasonic modules (and additional ones if enabled via parameters).
- ✅ URDF/Xacro modular design
- Reusable macros for chassis, wheels, sensors, etc.
- Easy to tweak dimensions and inertial parameters.
- ✅ Gazebo simulation-ready
- Includes Gazebo plugins for differential drive and sensor simulation.
- Compatible with
use_sim_timeand standard ROS 2 workflows. - ✅ RViz visualization
- Robot model can be visualized via
robot_state_publisher+joint_state_publisher. - ✅ Prepared for navigation experiments
- Standard frames (
base_link,odom, etc.). - Structured to be integrated later with Nav2 and SLAM packages.
3. Requirements¶
-
ROS 2 (Jazzy)
-
Gazebo (Harmonic)
-
xacro -
robot_state_publisher -
joint_state_publisherorjoint_state_publisher_gui -
gazebo_ros(if using Gazebo Classic integrations)
4. Build & Installation¶
Clone into your ROS 2 workspace and build:
# 1. Go to your workspace
cd ~/ros2_ws/src
# 2. Clone the repo
git clone https://github.com/<your-user>/mini_pi_description.git
# 3. Build
cd ~/ros2_ws
colcon build --packages-select mini_pi_description
# 4. Source the workspace
source install/setup.bash
5. Robot Description Details¶
High-level structure of the robot model:
-
Base / Chassis
-
Main
base_linkdefined as a box or mesh. -
Inertial, collision, and visual elements defined in Xacro for reuse and clarity.
-
-
Wheels
-
Two driven wheels:
-
left_wheel_link/right_wheel_link -
left_wheel_joint/right_wheel_joint
-
-
Parameters:
-
wheel_radius -
wheel_separation
-
-
-
Caster / Support (optional)
- Passive caster wheel.
-
Ultrasonic Sensors
-
Typically attached to a frame like
ultrasonic_front_link. -
Positioned with configurable offsets from
base_link.
-
-
Coordinate Frames
-
base_link(main body) -
base_footprint(optional, planar projected frame) -
Sensor frames (e.g.,
ultrasonic_front_link) -
odomframe for wheel odometry (usually provided by a controller/odometry node, not by this package alone).
-
The description is written in Xacro to allow parameterization and reuse.
6. Topics, Frames & Controllers¶
-
/tf//tf_static
Standard transform topics for the robot’s TF tree. -
/joint_states
Joint states (wheel joints, sensor joints if any). -
/diff_drive_controller/cmd_vel
Geometry_msgsTwistcommands for the differential drive controller must bestamped:=true. -
/odom
Odometry (if provided by a controller or an external node).
7. Common Issues & Troubleshooting¶
[!WARNING] Do not name the robot
<name_of_robot>_robot_descriptionbecauserobot_descriptionmesses up the argument inros2_controland it will fail—it's a Jazzy bug. To fix it, do not use that name. You can usemini_pi_descriptionormodelor whatever you like.
8. License¶
This project is licensed under the Apache License 2.0. See the LICENSE file for the full text.
9. Photos¶