Merge controller into dev: bounded trajectories and shared seven-axis limits

Preserve dev TCP gizmo motion-priority handling while integrating Ruckig smoothing, continuous JTC spline validation and shared robot limits. Resolve launch and dependency conflicts without removing either feature set. Verified merged build of 8 packages and tests of 4 packages.
This commit is contained in:
Даниил Грабарь
2026-09-21 05:21:28 +03:00
41 changed files with 1333 additions and 136 deletions
+5
View File
@@ -43,11 +43,13 @@ def _runtime_setup(context, *args, **kwargs):
if simulate:
xacro_args = {
"initial_positions_file": settings.controller.moveit.initial_positions,
"joint_limits_file": settings.controller.moveit.joint_limits,
"simulate": "true",
}
else:
xacro_args = {
"initial_positions_file": settings.controller.moveit.initial_positions,
"joint_limits_file": settings.controller.moveit.joint_limits,
"robot_ip": settings.robot.ip,
"fri_port": str(settings.robot.port),
"fri_cycle_ms": str(settings.robot.fri_cycle_ms),
@@ -91,6 +93,7 @@ def _runtime_setup(context, *args, **kwargs):
"controller": str(settings.controller.controller_path),
"initial_positions_file": str(settings.controller.moveit.initial_positions),
"tcp_gizmo_enabled": str(settings.digital_twin.tcp_gizmo.enabled).lower(),
"joint_limits_file": str(settings.controller.moveit.joint_limits),
}.items(),
))
@@ -102,6 +105,7 @@ def _runtime_setup(context, *args, **kwargs):
"robot_name": settings.robot.name,
"description": description_path,
"initial_positions_file": settings.controller.moveit.initial_positions,
"joint_limits_file": settings.controller.moveit.joint_limits,
"controller_path": settings.controller.controller_path,
"simulate": "true",
"transform": str(settings.digital_twin.webots.transform),
@@ -113,6 +117,7 @@ def _runtime_setup(context, *args, **kwargs):
"robot_name": settings.robot.name,
"description": description_path,
"initial_positions_file": settings.controller.moveit.initial_positions,
"joint_limits_file": settings.controller.moveit.joint_limits,
"controller_path": settings.controller.controller_path,
"simulate": "false",
"transform": str(settings.digital_twin.webots.transform),
@@ -32,7 +32,8 @@ def _setup_controllers(context, *args, **kwargs):
raise ValueError("joint_position_tau must be finite and non-negative")
update_rate = 1000 // fri_cycle_ms
xacro_args = {"initial_positions_file": initial_positions_file}
xacro_args = {"initial_positions_file": initial_positions_file,
"joint_limits_file": LaunchConfiguration("joint_limits_file").perform(context)}
if simulate:
xacro_args["simulate"] = "true"
@@ -1,6 +1,7 @@
from launch_ros.actions import Node
from moveit_configs_utils import MoveItConfigsBuilder
from .tcp_gizmo_nodes import make_tcp_gizmo_nodes
from iiwa_utils.converter import effective_joint_limits
def make_moveit_nodes(settings, robot_description: str, use_sim_time: bool):
@@ -10,7 +11,8 @@ def make_moveit_nodes(settings, robot_description: str, use_sim_time: bool):
.robot_description(
file_path=settings.robot.description,
mappings={
"initial_positions_file": settings.controller.moveit.initial_positions
"initial_positions_file": settings.controller.moveit.initial_positions,
"joint_limits_file": settings.controller.moveit.joint_limits
},
)
.robot_description_semantic(file_path=settings.controller.moveit.srdf)
@@ -22,10 +24,16 @@ def make_moveit_nodes(settings, robot_description: str, use_sim_time: bool):
.to_moveit_configs()
)
moveit_configs.joint_limits["robot_description_planning"] = effective_joint_limits(
moveit_configs.joint_limits["robot_description_planning"]
)
common_params = [
moveit_configs.to_dict(),
{"robot_description": robot_description},
{"use_sim_time": use_sim_time},
{"iiwa_dynamics.stopped_velocity_tolerance": settings.planning.stopped_velocity_tolerance,
"iiwa_dynamics.state_timeout": settings.planning.state_timeout},
]
move_group = Node(
@@ -27,7 +27,10 @@ def make_web_server_node(settings, use_sim_time: bool) -> Node:
"host": settings.web.host,
"port": settings.web.port,
"endpoints_path": settings.web.endpoints,
"joint_limits_path": settings.web.joint_limits,
"joint_limits_path": settings.controller.moveit.joint_limits,
"trajectory_state_timeout": settings.web.trajectory_state_timeout,
"trajectory_start_tolerance": settings.web.trajectory_start_tolerance,
"trajectory_stopped_velocity": settings.web.trajectory_stopped_velocity,
"use_sim_time": use_sim_time,
}],
)
@@ -30,6 +30,7 @@ def _spawn_setup(context, *args, **kwargs):
xacro_args={
"simulate": "true",
"initial_positions_file": initial_positions_file,
"joint_limits_file": LaunchConfiguration("joint_limits_file").perform(context),
},
)