Controls, Menus, and Teleoperation
The operator-facing launch tasks are:
interactive: RViz menus, interactive markers, planning, replay, waypoint execution, grasper commands, and optional manual joystick command input.manual: PS4 joystick direct command teleoperation.direct_thrusters: keyboard PWM testing for individual thruster channels.
Interactive Task
The interactive task starts interactive_controller and exposes an RViz
interactive-marker menu.
Launch:
ros2 launch ros2_control_blue_reach_5 robot_system_multi_interface.launch.py task:=interactive
Select the active robot once from Robots. Tool menus such as Path
Planner, Cmd Replay, Grasper, Waypoints, and Plan & Execute
then operate on that selected robot.
Main menu groups:
Plan & Execute: activate the currently selected feedback controller if it is inactive, then plan and execute the selected target or waypoint mission.Robots: select active robot when multiple simulated robots exist.Waypoints: add, delete, clear, or stop vehicle waypoint missions.Path Planner: select the active robot’s planner backend, currentlyBitstarorRRTstar.Cmd Replay: select the active robot’s replay profile, reset/play, and stop replay. See Command Replay and Experiments for profile format and experiment logging.Grasper: open/close the active robot’s grasper through feedback controllers only.Reset Manager: simulator state reset and release controls. Hidden for therobot_real_hardware namespace.<robot> Control: select controller and control space for a robot.
Feedback Control and Replay
Feedback control and replay are intentionally separated:
PIDandInvDynare closed-loop feedback controllers.CmdReplayis an open-loop command playback controller.Plan & Executeuses the selected feedback controller and refuses to run whileCmdReplayis selected.Replay reset/playback requires both
CmdReplayand an explicitly selected replay profile.Grasper menu commands are rejected while
CmdReplayis active, so they do not queue and apply later.
At startup the default PID controller is selected but inactive. It does not
publish closed-loop commands until the user explicitly activates a behavior.
Pressing Plan & Execute activates the selected feedback controller on
demand.
Controller semantics:
PIDis not a pure textbook PID-only controller. The vehicle command includes hydrostatic restoring compensation in addition to feedback terms. The manipulator side is joint-space feedback with configured command limits.InvDynimplements inverse-dynamics control in the computed-torque sense: desired state and desired acceleration are mapped through an estimated model to actuation, with feedback terms correcting model and state-estimation errors. The manipulator model comes fromFloating-KinDyn-Graph; the vehicle model comes fromdiff_uv.
Waypoint Menu
The waypoint menu operates on vehicle waypoint missions:
Add: append the current target pose as a vehicle waypoint.Delete: remove a selected waypoint.Clear: remove all waypoints and clear visualization.Stop: stop execution while keeping the waypoint list.
Joystick in the Interactive Task
In the interactive task, the robot starts a joystick reader when the
matching /dev/input/jsN device exists.
Share switches between:
direct joystick command publishing, and
the selected feedback controller.
This is manual joystick command input inside the interactive task. It is
separate from launching the standalone manual task.
Manual Task
Launch:
ros2 launch ros2_control_blue_reach_5 robot_system_multi_interface.launch.py task:=manual
The manual task starts the PS4 joystick teleoperation node. Joystick input is
published directly as commands.
Vehicle controls:
Left stick vertical: surge.
Left stick horizontal: sway.
L2/R2: heave down/up.L1/R1: roll.Right stick vertical: pitch.
Right stick horizontal: yaw.
Manipulator controls:
D-pad left/right:
axis_enegative/positive.D-pad up/down:
axis_dpositive/negative.Triangle / X:
axis_cpositive/negative.Square / Circle:
axis_bpositive/negative.Right-stick press / left-stick press: grasper
axis_apositive/negative.
Options mode:
Optionstoggles between manipulator joint mode and auxiliary mode.In auxiliary mode, D-pad left/right publishes light commands.
In auxiliary mode, D-pad up/down publishes camera mount pitch commands.
Direct Thruster Keyboard Task
Launch:
ros2 launch ros2_control_blue_reach_5 robot_system_multi_interface.launch.py \
use_vehicle_hardware:=true \
use_manipulator_hardware:=false \
sim_robot_count:=0 \
task:=direct_thrusters
Keyboard channel mapping:
u -> channel 0
i -> channel 1
o -> channel 2
p -> channel 3
h -> channel 4
j -> channel 5
k -> channel 6
l -> channel 7
Neutral PWM is 1500. Pressed keys publish active PWM 1700 for the
mapped channel. Releasing a key returns the channel to neutral.
Grasper Menu Parameters
The grasper menu uses these parameters:
grasper_menu_open_effortgrasper_menu_close_effortgrasper_menu_effort_duration