Robot Control
Use this page for standalone OMX bringup, MoveIt 2, the OpenMANIPULATOR GUI, and keyboard teleop.
At least one Zenoh daemon must be running in the communication network. If no Zenoh daemon is running, ROS 2 nodes cannot discover or communicate with each other.
For the recommended setup, run zenohd in a terminal inside the OpenMANIPULATOR Docker container.
Launch Bringup
The OMX controller uses ros2_control and MoveIt 2 for modular robot control, trajectory planning, and state feedback.
To use MoveIt 2, GUI, or Keyboard Teleop, open a new OpenMANIPULATOR Docker container and launch the OMX packages:
ros2 launch open_manipulator_bringup omx_f.launch.py
MoveIt 2
MoveIt 2 is a set of packages for motion planning, manipulation, inverse kinematics, control, 3D perception, and collision checking.
Enable MoveIt 2 functionality for advanced motion planning in RViz:
ros2 launch open_manipulator_moveit_config omx_f_moveit.launch.py
Move interactive markers to position the robotic arm, then click Plan & Execute.

Simple Instructions for Using MoveIt 2:
- Move the robot to your desired pose using the Interactive Marker visible in RViz.
- Use Plan in the Commands panel to simulate the motion.
- Click Execute to move the robot according to the simulated motion.
- Set Planning Group to
armand use Goal State options such asinitorhome. - Set Planning Group to
gripperand use Goal State options such ascloseoropen.
GUI
After running bringup and MoveIt 2, launch the OpenMANIPULATOR GUI:
ros2 launch open_manipulator_gui omx_f_gui.launch.py
Basic Controls
Start Timer: Activates the system.Robot Status: Displays current manipulator state.Init Pose: Moves the manipulator to a vertical position.Home Pose: Moves the manipulator to a compact, safe position.Gripper Open/Close: Opens or closes the gripper.
Task Execution
Joint Space Tab: Adjust individual joint angles.Task Space Tab: Control the end-effector position.Task Constructor Tab: Read tasks, save poses, set repetitions, play tasks, stop motion, or reset saved tasks.
Explore GUI Features
- Click the
Timer Startbutton.

- Check the status of OMX.

- To manipulate OMX in joint space, enter the joint angles and total trajectory time. Then click
Send.

- To manipulate OMX in task space, enter the end-effector pose. Then click
Send.

- Create a task constructor with OMX.
- Click
Read taskto prepare for saving tasks. - Adjust the manipulator posture and click
Save pose. - Save multiple postures to complete the task sequence.

- Press
Playto execute the saved tasks in sequence.

OMX GUI Demo

Keyboard Teleop
Control the manipulator with your keyboard after launching the real robot or Gazebo bringup.
ros2 run open_manipulator_teleop omx_f_teleop
Joint Control
1/q: Joint 12/w: Joint 23/e: Joint 34/r: Joint 45/t: Joint 5
Gripper Control
o: Open gripperp: Close gripper
Keyboard Teleop Demo
