A complete ROS2 Humble workspace featuring a 6-wheel differential drive mobile robot equipped with an Intel RealSense D455 camera for simulation and real-world deployment.
- 6-wheel skid-steering configuration for enhanced traction
- Robust differential drive controller with odometry feedback
- Customizable robot dimensions via URDF/xacro files
- Realistic physics simulation in Gazebo
- RGB Camera: 1280×720 @ 30Hz
- Depth Camera: 1280×720 @ 30Hz
- 3D Point Cloud: Real-time generation for perception tasks
- Hardware-accurate specifications: FOV, range, physical dimensions
- Gazebo Classic: Full physics-based simulation
- RViz2: Real-time 3D visualization
- TF Tree: Complete transform hierarchy
- Sensor Plugins: Camera, depth, point cloud generation
- OS: Ubuntu 22.04 LTS (Jammy)
- ROS2: Humble Hawksbill
- Gazebo: Gazebo Classic 11
- Python: 3.10+
sudo apt update
sudo apt install -y \
ros-humble-desktop \
ros-humble-gazebo-ros-pkgs \
ros-humble-xacro \
ros-humble-robot-state-publisher \
ros-humble-joint-state-publisher \
ros-humble-rviz2 \
ros-humble-tf2-tools \
ros-humble-realsense2-camera \
python3-colcon-common-extensionsCreate a new workspace folder and clone the repository into it:
cd ~
mkdir -p ws_ddmobile
cd ws_ddmobile
git clone https://github.com/1sznkaveesh/D455-Camera-Integration-ROS2.git .cd ~/ws_ddmobile
rosdep install --from-paths src --ignore-src -r -ycolcon build --symlink-installsource install/setup.bashTip: Add this to your ~/.bashrc for automatic sourcing:
echo "source ~/ws_ddmobile/install/setup.bash" >> ~/.bashrcsource ~/ws_ddmobile/install/setup.bash
ros2 launch mobile_dd_robot gazebo_model.launch.pyThis will:
- Start Gazebo with an empty world
- Spawn the robot with the D455 camera
- Initialize all sensors and controllers
- Publish transforms and robot state
Open a new terminal:
source ~/ws_ddmobile/install/setup.bash
rviz2Quick RViz2 Setup:
- Fixed Frame: Set to
odom - Add: RobotModel
- Add: Image → Topic:
/camera/d455/image_raw - Add: PointCloud2 → Topic:
/camera/d455/points- Size (m):
0.1 - Style:
Flat Squares - Color Transformer:
RGB8
- Size (m):
sudo apt install ros-humble-teleop-twist-keyboard
ros2 run teleop_twist_keyboard teleop_twist_keyboardros2 run rqt_image_view rqt_image_view /camera/d455/image_rawros2 run rqt_image_view rqt_image_view /camera/d455/depth/image_raw# List all active topics
ros2 topic list
# Echo odometry data
ros2 topic echo /odom
# Check camera info
ros2 topic echo /camera/d455/camera_info# View TF tree
ros2 run tf2_tools view_frames
# Open the generated PDF
evince frames.pdfws_ddmobile/
├── build/ # Build artifacts (auto-generated)
├── install/ # Installation directory (auto-generated)
├── log/ # Build and runtime logs (auto-generated)
├── src/
│ └── mobile_dd_robot/
│ ├── CMakeLists.txt
│ ├── package.xml
│ ├── README.md
│ ├── launch/
│ │ └── gazebo_model.launch.py
│ └── model/
│ ├── camera.xacro # D455 camera URDF
│ ├── robot.gazebo # Gazebo plugins
│ └── robot_with_camera.xacro # Complete robot URDF
└── README.md # This file
| Topic | Type | Description |
|---|---|---|
/cmd_vel |
geometry_msgs/msg/Twist |
Velocity commands for robot control |
| Topic | Type | Description |
|---|---|---|
/odom |
nav_msgs/msg/Odometry |
Robot odometry (position, velocity) |
/camera/d455/image_raw |
sensor_msgs/msg/Image |
RGB camera feed |
/camera/d455/camera_info |
sensor_msgs/msg/CameraInfo |
RGB camera calibration |
/camera/d455/depth/image_raw |
sensor_msgs/msg/Image |
Depth image |
/camera/d455/depth/camera_info |
sensor_msgs/msg/CameraInfo |
Depth camera calibration |
/camera/d455/points |
sensor_msgs/msg/PointCloud2 |
3D point cloud |
/tf |
tf2_msgs/msg/TFMessage |
Transform tree |
/tf_static |
tf2_msgs/msg/TFMessage |
Static transforms |
odom
└── body_link
├── left_wheel_1_link
├── left_wheel_2_link
├── left_wheel_3_link
├── right_wheel_1_link
├── right_wheel_2_link
├── right_wheel_3_link
└── camera_link
├── camera_depth_frame
└── camera_optical_frame