Skip to main content

Manipulators

This subpage contains additional description and manuals about ROSbot XL manipulator modules

MAN10 OpenMANIPULATOR-X

This is an assembly instructions for Husarion ROSbot XL + OpenMANIPULATOR-X. After mounting the manipulator on the robot, please refer to our OpenMANIPULATOR-X tutorial for a guide on how to run the software.

To make the process easy, please follow the instructions below for assembly and perform the operations in the order described.

The ROSbot XL purchased with MAN10 option is delivered in parts for assembly. One cardboard box contains ROSbot XL and its standard equipment and the other cardboard box includes the arm and all the necessary components to mount the arm on the robot.

note

To perform the steps described below, you will need basic tools such as Allen keys. These keys are supplied with the manipulator and the platform.

Assembling the arm

  1. Follow the instructions provided by the arm manufacturer. Stop before point 9.
  2. Slide the Top cap onto the DYNAMIXEL(ID 12) and fix it with 4x M2.5x8 panhead bolts.
Block diagramBlock diagram
  1. Place the Thrust bearing on DYNAMIXEL(ID 11).
Block diagramBlock diagram
  1. Insert X-SP into the bolt holes of DYNAMIXEL(ID 12) and assemble to FR12-S102K using FHS-M2.5x14. Pay attention to the Horn Align Marking. Referring to the image below, rotate the yoke FR12-S102K in the given position to reach the bolts with a key. Rotate it again by 180° to fix other side.
Block diagramBlock diagram
  1. Connect DYNAMIXEL(ID 12) and DYNAMIXEL(ID 11) using CABLE-X3P-240.
  2. Slide the DYNAMIXEL(ID 11) into the Arm base. Pay attention to the cable routing inside the element and its exit from the housing through the notch under the bearing. Try to position the wires, so none is pinched. Fix these parts together with 4x M2.5x21 countersunk bolts.
Block diagramBlock diagram
  1. Continue the manufacturer's instructions from step 10.

Mounting on the ROSbot XL

  1. Unscrew the Roof rack and break one of the cap using a screwdriver or a key.
Block diagramBlock diagram
  1. Mount Parking Bay Assembly on the Roof rack using 2x M4x12
Block diagramBlock diagram
  1. Connect the CABLE-X3P-380 to the DYNAMIXEL(ID 11)
  2. Install the Arm base on the Roof rack using 4x M4x12 bolts and 4x M4 self-locking nuts.
Block diagramBlock diagram
  1. Using 1x M3x4 panhead bolt connect and mount ROSbot XL Arm Board to the ROSbot XL Power Board.
Block diagramBlock diagram
  1. Connect ROSbot XL Arm Board (CON1) to ROSbot XL Digital Board (CON15) using CABLE-JST-5-240.
Block diagramBlock diagram
  1. Connect CABLE-X3P-380 to the Arm Board.
  2. Mount the Roof rack on the ROSbot XL.
Block diagramBlock diagram

Software

Software packages for ROSbot XL with OpenMANIPULATOR-X are available in the rosbot_xl_manipulation_ros repository. To find out how to use it please refer to our tutorial.

ROS / ROS 2 API

Use bringup.launch.py from rosbot_xl_manipulation_bringup to start all base functionalities for ROSbot XL. In rosbot_xl_manipulation_ros original ROSbot XL interface is extended with OpenMANIPULATOR-X. Below you can find the manipulator API, for ROSbot XL ROS API, please refer to the one in the rosbot_xl_ros repository.

  • gripper_controller - GripperActionController ROS 2 controller (for details refer to the official documentation)

    Action Servers

    • /gripper_controller/gripper_cmd (control_msgs/action/GripperCommand)
  • manipulator_controller - JointTrajectoryController ROS 2 controller (for details refer to the official documentation)

    Subscribes

    • /manipulator_controller/joint_trajectory (trajectory_msgs/msg/JointTrajectory)

    Publishes

    • /manipulator_controller/state (control_msgs/msg/JointTrajectoryControllerState)

    Action Servers:

    • /manipulator_controller/follow_joint_trajectory (control_msgs/action/FollowJointTrajectory)
  • move_group - key node provided by MoveIt 2 (documentation)

    Subscribes

    • /trajectory_execution_event (std_msgs/msg/String)

    Publishes

    • /display_contacts (visualization_msgs/msg/MarkerArray)
    • /display_planned_path (moveit_msgs/msg/DisplayTrajectory)
    • /motion_plan_request (moveit_msgs/msg/MotionPlanRequest)
    • /robot_description_semantic (std_msgs/msg/String)

    Service Servers

    • /apply_planning_scene (moveit_msgs/srv/ApplyPlanningScene)
    • /check_state_validity (moveit_msgs/srv/GetStateValidity)
    • /clear_octomap (std_srvs/srv/Empty)
    • /compute_cartesian_path (moveit_msgs/srv/GetCartesianPath)
    • /compute_fk (moveit_msgs/srv/GetPositionFK)
    • /compute_ik (moveit_msgs/srv/GetPositionIK)
    • /get_planner_params (moveit_msgs/srv/GetPlannerParams)
    • /load_map (moveit_msgs/srv/LoadMap)
    • /plan_kinematic_path (moveit_msgs/srv/GetMotionPlan)
    • /query_planner_interface (moveit_msgs/srv/QueryPlannerInterfaces)
    • /save_map (moveit_msgs/srv/SaveMap)
    • /set_planner_params (moveit_msgs/srv/SetPlannerParams)

    Action Servers

    • /execute_trajectory (moveit_msgs/action/ExecuteTrajectory)
    • /move_action (moveit_msgs/action/MoveGroup)
  • moveit_simple_controller_manager - provides interface to lower level controllers (documentation)

    Action Clients

    • /gripper_controller/gripper_cmd (control_msgs/action/GripperCommand)
    • /manipulator_controller/follow_joint_trajectory (control_msgs/action/FollowJointTrajectory)
  • joy_servo_node - translates messages from gamepad to servo commands - moving the manipulator in cartesian or joint space. Also provides additional functions - moving manipulator to the Home position and opening/closing the gripper.

    Subscribes

    • /joy (sensor_msgs/msg/Joy)

    Publishes

    • /servo_node/delta_joint_cmds (control_msgs/msg/JointJog)
    • /servo_node/delta_twist_cmds (geometry_msgs/msg/TwistStamped)
  • servo_node - based on cartesian or joint commands calculates joint trajectory (documentation)

    Subscribes

    • /servo_node/collision_velocity_scale (std_msgs/msg/Float64)
    • /servo_node/delta_joint_cmds (control_msgs/msg/JointJog)
    • /servo_node/delta_twist_cmds (geometry_msgs/msg/TwistStamped)

    Publishes

    • /manipulator_controller/joint_trajectory (trajectory_msgs/msg/JointTrajectory)
    • /servo_node/collision_velocity_scale (std_msgs/msg/Float64)
    • /servo_node/condition (std_msgs/msg/Float64)
    • /servo_node/status (std_msgs/msg/Int8)

    Service Servers

    • /servo_node/change_control_dimensions (moveit_msgs/srv/ChangeControlDimensions)
    • /servo_node/change_drift_dimensions (moveit_msgs/srv/ChangeDriftDimensions)
    • /servo_node/pause_servo (std_srvs/srv/Trigger)
    • /servo_node/reset_servo_status (std_srvs/srv/Empty)
    • /servo_node/start_servo (std_srvs/srv/Trigger)
    • /servo_node/stop_servo (std_srvs/srv/Trigger)
    • /servo_node/unpause_servo (std_srvs/srv/Trigger)