Simulation
Not supported with Arduino
Launch gazebo
- 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
- The red cube indicates the end-effector link.
- 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
- The red cube indicates the end-effector link.
- 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
-
The red cube indicates the end-effector link.
- 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