Edit on GitHub

Simulation

Not supported with Arduino

Launch gazebo

  1. Close all terminals, then open new terminals and enter the commands below to load OpenMANIPULATOR-X on the Gazebo simulator.
    $ ros2 launch open_manipulator_bringup open_manipulator_x_gazebo.launch.py
    
  2. The red cube indicates the end-effector link.
  1. Close all terminals, then open new terminals and enter the commands below to load OpenManipulator-X on the Gazebo simulator.
    $ ros2 launch open_manipulator_x_bringup gazebo.launch.py
    
  2. The red cube indicates the end-effector link.
  1. Load OpenManipulator-X on Gazebo simulator and click on Play button at the bottom of the Gazebo window.
    $ roslaunch open_manipulator_gazebo open_manipulator_gazebo.launch
    
  2. The red cube indicates the end-effector link.

  3. Below are the active topics when the simulation is running
    $ rostopic list
    
    /clock
    /gazebo/link_states
    /gazebo/model_states
    /gazebo/parameter_descriptions
    /gazebo/parameter_updates
    /gazebo/set_link_state
    /gazebo/set_model_state
    /gazebo_gui/parameter_descriptions
    /gazebo_gui/parameter_updates
    /gazebo_ros_control/pid_gains/gripper/parameter_descriptions
    /gazebo_ros_control/pid_gains/gripper/parameter_updates
    /gazebo_ros_control/pid_gains/gripper/state
    /gazebo_ros_control/pid_gains/gripper_sub/parameter_descriptions
    /gazebo_ros_control/pid_gains/gripper_sub/parameter_updates
    /gazebo_ros_control/pid_gains/gripper_sub/state
    /gazebo_ros_control/pid_gains/joint1/parameter_descriptions
    /gazebo_ros_control/pid_gains/joint1/parameter_updates
    /gazebo_ros_control/pid_gains/joint1/state
    /gazebo_ros_control/pid_gains/joint2/parameter_descriptions
    /gazebo_ros_control/pid_gains/joint2/parameter_updates
    /gazebo_ros_control/pid_gains/joint2/state
    /gazebo_ros_control/pid_gains/joint3/parameter_descriptions
    /gazebo_ros_control/pid_gains/joint3/parameter_updates
    /gazebo_ros_control/pid_gains/joint3/state
    /gazebo_ros_control/pid_gains/joint4/parameter_descriptions
    /gazebo_ros_control/pid_gains/joint4/parameter_updates
    /gazebo_ros_control/pid_gains/joint4/state
    /open_manipulator/gripper_position/command
    /open_manipulator/gripper_sub_position/command
    /open_manipulator/joint1_position/command
    /open_manipulator/joint2_position/command
    /open_manipulator/joint3_position/command
    /open_manipulator/joint4_position/command
    /open_manipulator/joint_states
    /rosout
    /rosout_agg
    

Not supported with Arduino

Operation in Gazebo

In order to control the simulated OpenMANIPULATOR-X, launch the OpenMANIPULATOR-X control GUI or Keyboard teleoperation
Click to view detailed instructions.

  • GUI Program

    Terminal 1 - Launch the Gazebo simulation:

    $ ros2 launch open_manipulator_bringup open_manipulator_x_gazebo.launch.py
    

    Terminal 2 - Launch MoveIt configuration:

    $ ros2 launch open_manipulator_moveit_config open_manipulator_x_moveit.launch.py use_sim:=true
    

    Terminal 3 - Launch GUI program:

    $ ros2 launch open_manipulator_gui open_manipulator_x_gui.launch.py
    

  • Keyboard Teleoperation

    Terminal 1 - Launch the Gazebo simulation:

    $ ros2 launch open_manipulator_bringup open_manipulator_x_gazebo.launch.py
    

    Terminal 2 - Launch teleoperation:

    $ ros2 run open_manipulator_teleop open_manipulator_x_teleop
    
    [INFO] [1751512149.624709736] [keyboard_controller]: Waiting for /joint_states...
    [INFO] [1751512149.625639191] [keyboard_controller]: Waiting for initial joint states...
    [INFO] [1751512149.626929914] [keyboard_controller]: Received joint states: [-0.05982525065917969, -0.9157865293212891, 0.8517752421836835, 0.0], Gripper: 0.0
    [INFO] [1751512149.627527555] [keyboard_controller]: Ready to receive keyboard input!
    [INFO] [1751512149.627527555] [keyboard_controller]: Use 1/q, 2/w, 3/e, 4/r for joints 1-4, o/p for gripper. Press ESC to exit.
    

In order to control the simulated OpenMANIPULATOR-X, launch the OpenManipulator control GUI or Keyboard teleoperation
Click to view detailed instructions.

  • GUI Program
    $ ros2 launch open_manipulator_x_gui open_manipulator_x_gui.launch.py
    

  • Keyboard Teleoperation

    Open a terminal and execute the servo launch file below; MoveIt Servo provides real-time, smooth, and responsive control for robotic manipulators in joint or Cartesian space.

    $ ros2 launch open_manipulator_x_moveit_config servo.launch.py
    

    Open another terminal

    $ ros2 run open_manipulator_x_teleop open_manipulator_x_teleop
    
    [INFO] [1732869286.738207239] [servo_keyboard_input]: SUCCESS TO CONNECT SERVO START SERVER
    [INFO] [1732869286.738351481] [servo_keyboard_input]: SUCCESS TO CONNECT SERVO STOP SERVER
    [INFO] [1732869286.738367129] [servo_keyboard_input]: call 'moveit_servo' start srv.
    [INFO] [1732869286.738923809] [servo_keyboard_input]: SUCCESS to start 'moveit_servo'
    Reading from keyboard
    ---------------------------
    Joint Control Keys:
      1/q: Joint1 +/-
      2/w: Joint2 +/-
      3/e: Joint3 +/-
      4/r: Joint4 +/-
    Use o|p to open/close the gripper.
    'ESC' to quit.
    

In order to control the simulated OpenMANIPULATOR-X, launch the OpenManipulator control GUI or Keyboard teleoperation

  • GUI Program
    $ roslaunch open_manipulator_control_gui open_manipulator_control_gui.launch
    

  • Keyboard Teleoperation
    $ roslaunch open_manipulator_teleop open_manipulator_teleop_keyboard.launch
    
    ---------------------------
    Control Your OpenMANIPULATOR-X!
    ---------------------------
    w : increase x axis in task space
    s : decrease x axis in task space
    a : increase y axis in task space
    d : decrease y axis in task space
    z : increase z axis in task space
    x : decrease z axis in task space
    
    y : increase joint 1 angle
    h : decrease joint 1 angle
    u : increase joint 2 angle
    j : decrease joint 2 angle
    i : increase joint 3 angle
    k : decrease joint 3 angle
    o : increase joint 4 angle
    l : decrease joint 4 angle
    
    g : gripper open
    f : gripper close
    
    1 : init pose
    2 : home pose
    
    q to quit
    ---------------------------
    Present Joint Angle J1: 0.000 J2: 0.000 J3: 0.000 J4: 0.000
    Present Kinematics Position X: 0.000 Y: 0.000 Z: 0.000
    ---------------------------
    

Not supported with Arduino