feat: add release-to-move TCP gizmo control in Webots

Add a native Webots marker for setting the active tool's TCP position and
orientation. Dragging edits the preview; releasing the mouse submits one
complete, checked joint trajectory with configured TCP speed limits.
Unreachable targets reset the marker to the current TCP.

Preserve coordinate, joint, and control-file commands through motion
reservations and a controller action proxy. Give the gizmo lowest priority
and finish its committed trajectory before dispatching queued regular
commands, including waits longer than the former two-second service timeout.

Place the patron TCP at its working end, 55.2 mm along local Z, and use the
flange TCP when no tool is attached. Add digital_twin.tcp_gizmo configuration,
ROS interfaces, launch integration, and regression coverage.

Document operation, configuration, tool attachment, speed limits, and
troubleshooting in both Russian and English.

Validation: 42 Python tests and 8 C++ tests passed. Webots regressions covered
one action per release, translation and rotation with and without a tool,
unreachable targets, and ordinary commands waiting for gizmo completion.
This commit is contained in:
Даниил Грабарь
2026-09-17 17:11:53 +03:00
parent 9f0f05df87
commit 3a5bc28bba
40 changed files with 2373 additions and 70 deletions
+3
View File
@@ -7,6 +7,9 @@ find_package(geometry_msgs REQUIRED)
find_package(action_msgs REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"msg/GizmoCommand.msg"
"msg/GizmoState.msg"
"srv/MotionPriority.srv"
"srv/MoveToPose.srv"
"srv/MoveToNamedPose.srv"
"action/MoveToPose.action"
+3
View File
@@ -0,0 +1,3 @@
# One committed TCP target on mouse release, with generation from GizmoState.
geometry_msgs/PoseStamped target
uint64 epoch
+6
View File
@@ -0,0 +1,6 @@
# Actual TCP pose; enabled is false while any higher-priority motion owns control.
geometry_msgs/PoseStamped actual
bool enabled
# Advances on rejection, controller completion, or higher-priority ownership.
uint64 epoch
string reason
+7
View File
@@ -0,0 +1,7 @@
# Acquire/renew or release a named high-priority lease. TTL uses wall time [s].
string owner
bool acquire
float64 ttl
---
bool success
string message