Trajectory Planning#
Plan and execute joint and Cartesian trajectories with MoveIt2 (OMPL) or Isaac
cuMotion. See Example Applications for the shared manipulator setup. All commands
run through mros. For the programmatic /wmx/moveit2/* service API, see
MoveIt2 Motion Planning.
Basic movements on simulation#
Basic movements on hardware-in-the-loop (HIL).#
Basic movements on real-world scenario.#
Open the scene:
Open
~/workspaces/movensys-simulation/<MANIPULATOR_MODEL>/3a_trajectory_simulation.usdmros ros2 launch movensys_manipulator_description gazebo_trajectory_simulation.launch.py
Run the simulator bridge:
mros ros2 launch movensys_manipulator_moveit_config sim_bridge.launch.py \ simulator:=isaacsim use_sim_time:=true
mros ros2 launch movensys_manipulator_moveit_config sim_bridge.launch.py \ simulator:=gazebo use_sim_time:=true
Launch the planner and service API:
mros ros2 launch movensys_manipulator_moveit_config moveit.launch.py use_sim_time:=true
mros ros2 launch movensys_manipulator_isaac_ros_config isaac_cumotion.launch.py use_sim_time:=true
Add
rsp:=falseif using Gazebo orros2_control– both already publish/robot_description.(optional) Jog the arm from the keyboard (see Keyboard Jogging):
mros ros2 run movensys_manipulator_moveit_config keyboard_teleop
(optional) Execute the trajectory or coverage test:
mros ros2 launch movensys_manipulator_moveit_config trajectory_test.launch.py use_sim_time:=true mros ros2 launch movensys_manipulator_moveit_config coverage_pose.launch.py use_sim_time:=true
Open the scene:
Open
~/workspaces/movensys-simulation/<MANIPULATOR_MODEL>/3b_trajectory_hil.usdmros ros2 launch movensys_manipulator_description gazebo_trajectory_hil.launch.py
Start WMX R2 for the manipulator (real WMX runtime) with
use_sim_time:=true(see~/workspaces/movensys_ws/src/wmx-r2/doc/launch_<MANIPULATOR_MODEL>_manipulator.md).Launch the planner and service API with
use_sim_time:=true:mros ros2 launch movensys_manipulator_moveit_config moveit.launch.py use_sim_time:=true
mros ros2 launch movensys_manipulator_isaac_ros_config isaac_cumotion.launch.py use_sim_time:=true
Add
rsp:=falseif using Gazebo orros2_control– both already publish/robot_description.(optional) Jog the arm from the keyboard (see Keyboard Jogging):
mros ros2 run movensys_manipulator_moveit_config keyboard_teleop
(optional) Execute the trajectory or coverage test:
mros ros2 launch movensys_manipulator_moveit_config trajectory_test.launch.py use_sim_time:=true mros ros2 launch movensys_manipulator_moveit_config coverage_pose.launch.py use_sim_time:=true
(optional) Open the matching scene for visualization:
Open
~/workspaces/movensys-simulation/<MANIPULATOR_MODEL>/3c_trajectory_real.usdmros ros2 launch movensys_manipulator_description gazebo_trajectory_real.launch.py
Start WMX R2 for the manipulator on the robot (see
~/workspaces/movensys_ws/src/wmx-r2/doc/launch_<MANIPULATOR_MODEL>_manipulator.md).Launch the planner and service API:
mros ros2 launch movensys_manipulator_moveit_config moveit.launch.py
mros ros2 launch movensys_manipulator_isaac_ros_config isaac_cumotion.launch.py
Add
rsp:=falseif using Gazebo orros2_control– both already publish/robot_description.(optional) Jog the arm from the keyboard (see Keyboard Jogging):
mros ros2 run movensys_manipulator_moveit_config keyboard_teleop
(optional) Execute the trajectory or coverage test:
mros ros2 launch movensys_manipulator_moveit_config trajectory_test.launch.py mros ros2 launch movensys_manipulator_moveit_config coverage_pose.launch.py
Keyboard Jogging#
keyboard_teleop drives the servo_node started by moveit.launch.py,
so it works in any of the three modes once the planner is up. Pick a mode first
(j / t / p), then jog.
Danger
q and Ctrl+C are not emergency stops. They terminate the
keyboard_teleop process; motion stops only as a side effect, after
Servo’s 0.1 s command timeout. Neither removes motor power, engages brakes,
triggers STO, or stops a move_group trajectory that is already
executing.
Note
This table is the key mapping only. For the configured jog speeds, the per-keypress step size, the command timeout, and the exact stopping behavior of each mode, see Keyboard jogging — speeds, steps, and stopping behavior. On a physical robot, do not use keyboard jogging as the first motion. Follow Commissioning and First Motion first.
Key |
Action |
|---|---|
|
JOINT mode – keys |
|
TWIST mode – Cartesian end-effector jog |
|
POSE mode – nudge an absolute end-effector target pose |
|
X (+ / −) – twist jog, or pose-target nudge |
|
Y (− / +) – twist jog, or pose-target nudge |
|
Z (− / +) – twist jog, or pose-target nudge |
|
Joint jog for joint 1 … 6 (JOINT mode) |
|
Frame for TWIST jog and POSE nudge = base ( |
|
Reverse jog direction (twist / joint) |
|
Quit |