Skip to content

TurtleBot3 Home Service Challenge (ROS 2 Humble)

Overview

The TurtleBot3 Home Service Challenge simulates real-world robotics tasks involving navigation, manipulation, and interaction with objects. Designed to test autonomous task completion, the challenge utilizes the TurtleBot3 with the OpenMANIPULATOR-X arm, operating in a Gazebo-based virtual environment or on actual hardware.


Prerequisites

Before running the challenge:

  • ROS 2 Humble must be installed.
  • Complete TurtleBot3 setup on both the Remote PC and SBC.
  • Install TB3 & OpenMANIPULATOR-X packages.

Installation (Remote PC)

cd ~/turtlebot3_ws/src/
git clone -b humble https://github.com/ROBOTIS-GIT/turtlebot3_home_service_challenge.git
cd ~/turtlebot3_ws && colcon build --symlink-install

Gazebo Simulation

Launch Environment

ros2 launch turtlebot3_manipulation_gazebo turtlebot3_home_service_challenge.launch.py

Launch Navigation in RViz

ros2 launch turtlebot3_home_service_challenge_tools navigation2.launch.py

Launch Core Node (Scenario Control)

ros2 launch turtlebot3_home_service_challenge_core core_node.launch.py

The core node manages: - ArUco marker detection - Parking logic - Manipulator control


Real Robot Operation

Bringup Hardware

ros2 launch turtlebot3_manipulation_bringup hardware.launch.py

Launch Camera Node

ros2 run camera_ros camera_node --ros-args -p format:='RGB888' -p width:=320 -p height:=240

Launch Navigation with Custom Map

ros2 launch turtlebot3_home_service_challenge_tools navigation2.launch.py map_yaml_file:=$HOME/map.yaml

Run Core Node with Parameters

ros2 launch turtlebot3_home_service_challenge_core core_node.launch.py launch_mode:='actual' marker_size:=0.04

Mission Execution

Individual Actions

  • Park in front of marker (IDs 0–7):
ros2 topic pub -1 /target_marker_id std_msgs/msg/Int32 "{data: 1}"
  • Control Manipulator:
ros2 topic pub -1 /manipulator_control std_msgs/msg/String "{data: 'pick_target'}"
ros2 topic pub -1 /manipulator_control std_msgs/msg/String "{data: 'place_target'}"

Run Full Scenario

ros2 topic pub -1 /scenario_selection std_msgs/msg/String "{data: 'room1'}"

Configuration

  • Scenario YAML File

Defines marker IDs, goals, and return poses:

scenario:
  room1:
    target_marker_id: 0
    goal_pose: [0.9, 0.5, 0.0, 0.0, 0.0, 0.7071, 0.7071]
    goal_marker_id: 4
    end_pose: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0]
  • Manipulator Pose File (srdf)
<group_state name="target" group="arm">
  <joint name="joint1" value="0"/>
  <joint name="joint2" value="0.9076"/>
  <joint name="joint3" value="-0.9425"/>
  <joint name="joint4" value="0.0873"/>
</group_state>

Mission Workflow Summary

  1. Approach object using AR marker.
  2. Pick object with manipulator.
  3. Navigate to placement location.
  4. Place object using gripper.
  5. Return to home base.