Skip to main content

home_service_challenge

TurtleBot3 Home Service Challenge​

note

NOTE:

Home Service Challenge Stadium and Objects

Getting Started​

note

NOTE: Be sure to complete the following instructions before installing Home Service Challenge packages in the pc.

Prerequisites:

  • ROS 2 Humble installed Laptop or desktop PC.
  • This instruction is based on Gazebo simulation.

Remote PC Setup
Install Home Service Challenge packages.
[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

Simulation​

Simulate TurtleBot3 with OpenMANIPULATOR-X in Gazebo.
[Remote PC]

  1. Run the Gazebo Simulation.
$ ros2 launch turtlebot3_manipulation_gazebo turtlebot3_home_service_challenge.launch.py

gazebo_simulation

  1. Run a Nav2 for Gazebo and set 2D Pose Estimate in Rviz.
$ ros2 launch turtlebot3_home_service_challenge_tools navigation2.launch.py

simulation_rviz

  1. Run the core package used to carry out Home Service Challenge's mission.
$ ros2 launch turtlebot3_home_service_challenge_core core_node.launch.py

NOTE: core_node contains nodes for ArUco marker detection, parking, and manipulator control, which core_node uses to perform scenario integration control. The core_node performs and controls the behavior in the scenario sequence. After running core_node, we can see the TF of the ArUco marker in rviz and we can run the scenario. See Missions for more detailed descriptions and to run the scenario.

Actual robot​

Ready for actual robot

  • If you want to run the scenario with TurtleBot3 with OpenMANIPULATOR-X, check the below lists.
    • Create a custom map, then create and save the map with SLAM.
    • Set up the Rpi-camera.

Run Home Service Challenge with actual robot

  1. Run hardware bringup.
    [TurtleBot SBC]
$ ros2 launch turtlebot3_manipulation_bringup hardware.launch.py
  1. Run camera node.
    [TurtleBot SBC]
$ ros2 run camera_ros camera_node --ros-args -p format:='RGB888' -p width:=320 -p height:=240
  1. Run a Nav2 and set 2D Pose Estimate in Rviz. If you want to use a custom map, run it with the launch argument.
    [Remote PC]
$ ros2 launch turtlebot3_home_service_challenge_tools navigation2.launch.py map_yaml_file:=$HOME/map.yaml
  1. Run the core package used to carry out Home Service Challenge's mission. Specify the launch mode and ArUco marker size with the launch argument.
    [Remote PC]
$ ros2 launch turtlebot3_home_service_challenge_core core_node.launch.py launch_mode:='actual' marker_size:=0.04

Arguments
launch_mode

  • default: simulation
  • describtion: Select whether you want to run the Home Service Challenge as a simulation or as an actual robot.

marker_size

  • default: 0.088

  • describtion: Specifies the size of the ArUco markers used in the custom map.

    NOTE: core_node contains nodes for ArUco marker detection, parking, and manipulator control, which core_node uses to perform scenario integration control. The core_node performs and controls the behavior in the scenario sequence. After running core_node, we can see the TF of the ArUco marker in rviz and we can run the scenario. See Missions for more detailed descriptions and to run the scenario.

Missions​

Commands​

Use the following commands during Home Service Challenge.
[Remote PC]
Individual actions

  • Park in front of the ArUco marker: Put the marker's ID for integer to $MARKER_ID.

    $ ros2 topic pub -1 /target_marker_id std_msgs/msg/Int32 "{data: $MARKER_ID}"

    NOTE: When using this command, be sure to include one of the ArUco marker's ID from a scenario.yaml file. In the provided map, IDs 0 through 7 exist. For detailed information on the scenario, see Configuration description below at this section.

  • Control Manipulator : Use the Manipulator to pick up or place objects.

$ 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 scenario
TurtleBot3 will perform individual actions for $SCENARIO_NAME based on the scenario written.

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

NOTE: When using this command, be sure to include one of the scenario name from a scenario.yaml file. The provided scenario file contains room1 through room4. For detailed information on the scenario, see Details description below at this section.

Configuration​

Modify data in configuration files according to the given environment.
[Remote PC]

  • scenario.yaml : This file contains a scenario's data. In the simulation, there are initially markers on the front of the TurtleBot with ID 0 through 3, which are assigned as target_marker_id. And in each room, there are markers with ID 4 through 7.
    • File Path : /turtlebot3_home_service_challenge/turtlebot3_home_service_challenge_core/config/scenario.yaml
    • Script
      scenario:
      room1: # SCENARIO_NAME
      target_marker_id: 0 # ArUco Marker's ID
      goal_pose: [0.9, 0.5, 0.0, 0.0, 0.0, 0.7071, 0.7071] # The coordinates and orientation of the room where the goal marker is located.
      goal_marker_id: 4 # ArUco Marker's ID
      end_pose: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0] # Coordinates and orientation of the location to return to.

  • turtlebot3_hsc_manipulation.srdf : This configuration file contains manipulator's position data. By changing the joint values or adding new group_state, you can specify the tmanipulator's pose.
    • File Path : /turtlebot3_home_service_challenge/turtlebot3_home_service_challenge_tools/config/turtlebot3_hsc_manipulation.srdf
    • Script
      <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>

Details about the Home Service Mission​

The goal of the Home Service Challenge is to move four different objects from a living room to a specific place with given rules, and to return to the starting point. (Used topic for run demo : /scenario_selection)

Using the demo package, the process of moving objects in Home Service Challenge is as follows.

  1. Approaching the target.
  • For the approach to the target with precise, TurtleBot3 wheels are directly controlled by computing target's location from AR marker. (Used Topic : /target_maker_id, /cmd_vel) Try twice for reliable performance.

    demo1

  1. Picking the target with OpenMANIPULATOR-X's gripper.
  • Use the MoveIt package to perform joint space control, workspace control, and gripper control to pick the target object. (Used Topic : /manipulator_control)

    manipulation_diagram

    MoveIt Diagram

  1. Navigating to the next room where the object will be placed. -Reach the next room saved in a yaml file using the Nav2 package.

    demo2

  2. Approaching the target.

  3. Placing the object using the gripper.

  4. Returning to the starting point using the Nav2 package.

    demo3