This project implements a modular ROS2-based framework for controlling Semubot, the first open-source humanoid robot developed in Estonia. The system is split between a laptop (for visualization and control) and a Raspberry Pi 4B (for hardware motor control).
- Build a URDF model of Semubot using STL files.
- Visualize the robot in RViz2.
- Implement robot movement using ROS2
/cmd_veltopic. - Deploy ROS2 nodes on Raspberry Pi to control real motors via GPIO.
Includes:
- RViz2 visualization
- URDF robot model
/cmd_velpublishing- Motion simulation logic
Includes:
- Motor control node
- GPIO command conversion
Follow the official guide:
https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html
Once installed, source ROS2:
source /opt/ros/jazzy/setup.bashgit clone https://github.com/SemuBot/Huseynli-thesis-2025-ROS-integration.git
cd semubot_ros2_ws
source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
source install/setup.bashgit clone https://github.com/SemuBot/Huseynli-thesis-2025-ROS-integration.git
cd semubot_raspberry_ws
source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
source install/setup.bashros2 launch semubot display_robot.launch.pyros2 run semubot_motor cmd_vel_motor_driver.pyEnsure both the laptop and Raspberry Pi are on the same subnet (LAN). No ROS master is required as ROS2 uses DDS discovery protocol.
To verify connectivity:
ros2 topic listYou should see /cmd_vel on both devices.
| Topic | Type | Description |
|---|---|---|
/cmd_vel |
geometry_msgs/Twist |
Velocity commands |
/joint_states |
sensor_msgs/JointState |
Simulated joint data |
/tf |
tf2_msgs/TFMessage |
Transform frames |
/odom |
nav_msgs/Odometry |
Odometry (simulated) |
Omar Huseynli
University of Tartu – Robotics & Bioengineering
Email: omar.2005.22.04@gmail.com