Isomorphic teleop (drag_teleop_controller)¶
Master–slave isomorphic teleop (同构遥操作) for HighTorque Panthera HT dual-arm. The ROS package is still named drag_teleop_controller; that is not drag teaching.
Repository: fiveages-sim/drag_teleop_controller
README: README.md
Purpose¶
One ros2_control controller plugin, started twice:
role:=master— operator arm with Pinocchio gravity compensation (τ_G = rnea(q, 0, 0)); optional force feedbackrole:=slave— follower; tracks mapped master joints (position/mit/effort)
Joint mapping (and effort mapping under power conservation) is applied before publishing teleop_states. Arm joints (12) are commanded by this controller; grippers use adaptive_gripper_controller.
There is no enter_teach_mode, /start_recording, or /playback service.
Launch¶
Launch file: drag_teleop_controller.launch.py (not drag_teleop.launch.py).
# Mock
ros2 launch drag_teleop_controller drag_teleop_controller.launch.py \
role:=master hardware:=mock_components
ros2 launch drag_teleop_controller drag_teleop_controller.launch.py \
role:=slave hardware:=mock_components
# Real (see README for mode × hardware-interface requirements)
ros2 launch drag_teleop_controller drag_teleop_controller.launch.py \
role:=master hardware:=real mode:=effort \
hardware_control_mode:=effort
ros2 launch drag_teleop_controller drag_teleop_controller.launch.py \
role:=slave hardware:=real mode:=mit
Default robot is panthera_ht. Namespaces are /drag_teleop_{role}.
Services¶
Service |
Type |
Description |
|---|---|---|
|
|
Runtime |
|
|
Master-only: |
Topics¶
Topic |
Direction |
Description |
|---|---|---|
|
Publish (master) / Subscribe (slave) |
Forward-mapped master state |
|
Publish (slave) / Subscribe (master) |
Inverse-mapped slave state |
Launch arguments¶
Argument |
Default |
Meaning |
|---|---|---|
|
(required) |
|
|
|
|
|
|
|
|
|
|
|
(yaml) |
|
|
(yaml) |
|
|
|
Master publishes OCS2 moveJ + gripper commands |
|
package yaml |
e.g. |
Mode × hardware command-interface matrix, control laws, and YAML keys: read the README. DexCap mapping is a separate package: teleop-joint-mapper.