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
+30 -28
View File
@@ -3,6 +3,8 @@
<xacro:arg name="initial_positions_file"
default="$(find iiwa_config)/config/moveit/initial_positions.yaml"/>
<xacro:arg name="joint_limits_file" default="$(find iiwa_config)/config/moveit/joint_limits.yaml"/>
<xacro:property name="joint_limits" value="${xacro.load_yaml('$(arg joint_limits_file)')['joint_limits']}"/>
<xacro:arg name="simulate" default="false"/>
<xacro:arg name="robot_ip" default="192.170.10.2"/>
<xacro:arg name="fri_port" default="30200"/>
@@ -72,8 +74,8 @@
<joint name="joint1">
<command_interface name="position">
<param name="min">-2.97</param>
<param name="max"> 2.97</param>
<param name="min">${joint_limits['joint1']['soft_min_position']}</param>
<param name="max">${joint_limits['joint1']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">${initial_positions['joint1']}</param>
@@ -84,8 +86,8 @@
<joint name="joint2">
<command_interface name="position">
<param name="min">-2.09</param>
<param name="max"> 2.09</param>
<param name="min">${joint_limits['joint2']['soft_min_position']}</param>
<param name="max">${joint_limits['joint2']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">${initial_positions['joint2']}</param>
@@ -96,8 +98,8 @@
<joint name="joint3">
<command_interface name="position">
<param name="min">-2.97</param>
<param name="max"> 2.97</param>
<param name="min">${joint_limits['joint3']['soft_min_position']}</param>
<param name="max">${joint_limits['joint3']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">${initial_positions['joint3']}</param>
@@ -108,8 +110,8 @@
<joint name="joint4">
<command_interface name="position">
<param name="min">-2.09</param>
<param name="max"> 2.09</param>
<param name="min">${joint_limits['joint4']['soft_min_position']}</param>
<param name="max">${joint_limits['joint4']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">${initial_positions['joint4']}</param>
@@ -120,8 +122,8 @@
<joint name="joint5">
<command_interface name="position">
<param name="min">-2.97</param>
<param name="max"> 2.97</param>
<param name="min">${joint_limits['joint5']['soft_min_position']}</param>
<param name="max">${joint_limits['joint5']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">${initial_positions['joint5']}</param>
@@ -132,8 +134,8 @@
<joint name="joint6">
<command_interface name="position">
<param name="min">-2.09</param>
<param name="max"> 2.09</param>
<param name="min">${joint_limits['joint6']['soft_min_position']}</param>
<param name="max">${joint_limits['joint6']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">${initial_positions['joint6']}</param>
@@ -144,8 +146,8 @@
<joint name="joint7">
<command_interface name="position">
<param name="min">-3.05</param>
<param name="max"> 3.05</param>
<param name="min">${joint_limits['joint7']['soft_min_position']}</param>
<param name="max">${joint_limits['joint7']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
<param name="initial_value">${initial_positions['joint7']}</param>
@@ -173,8 +175,8 @@
<joint name="joint1">
<command_interface name="position">
<param name="min">-2.97</param>
<param name="max"> 2.97</param>
<param name="min">${joint_limits['joint1']['soft_min_position']}</param>
<param name="max">${joint_limits['joint1']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
@@ -186,8 +188,8 @@
<joint name="joint2">
<command_interface name="position">
<param name="min">-2.09</param>
<param name="max"> 2.09</param>
<param name="min">${joint_limits['joint2']['soft_min_position']}</param>
<param name="max">${joint_limits['joint2']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
@@ -199,8 +201,8 @@
<joint name="joint3">
<command_interface name="position">
<param name="min">-2.97</param>
<param name="max"> 2.97</param>
<param name="min">${joint_limits['joint3']['soft_min_position']}</param>
<param name="max">${joint_limits['joint3']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
@@ -212,8 +214,8 @@
<joint name="joint4">
<command_interface name="position">
<param name="min">-2.09</param>
<param name="max"> 2.09</param>
<param name="min">${joint_limits['joint4']['soft_min_position']}</param>
<param name="max">${joint_limits['joint4']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
@@ -225,8 +227,8 @@
<joint name="joint5">
<command_interface name="position">
<param name="min">-2.97</param>
<param name="max"> 2.97</param>
<param name="min">${joint_limits['joint5']['soft_min_position']}</param>
<param name="max">${joint_limits['joint5']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
@@ -238,8 +240,8 @@
<joint name="joint6">
<command_interface name="position">
<param name="min">-2.09</param>
<param name="max"> 2.09</param>
<param name="min">${joint_limits['joint6']['soft_min_position']}</param>
<param name="max">${joint_limits['joint6']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
@@ -251,8 +253,8 @@
<joint name="joint7">
<command_interface name="position">
<param name="min">-3.05</param>
<param name="max"> 3.05</param>
<param name="min">${joint_limits['joint7']['soft_min_position']}</param>
<param name="max">${joint_limits['joint7']['soft_max_position']}</param>
</command_interface>
<state_interface name="position">
+21 -21
View File
@@ -12,57 +12,57 @@
<!-- joint1: ±170° hard, ±165° soft, k_velocity=10 -->
<xacro:revolute_joint jname="joint1" parent="base_link" child="link1"
xyz="0 0 0.3375" rpy="0 0 0" axis="0 0 1"
lower="-2.97" upper="2.97" effort="200"
velocity="1.71" damping="10.0" friction="0.1"
soft_lower="-2.8827" soft_upper="2.8827" k_velocity="10"/>
lower="${joint_limits['joint1']['min_position']}" upper="${joint_limits['joint1']['max_position']}" effort="200"
velocity="${joint_limits['joint1']['max_velocity']}" damping="10.0" friction="0.1"
soft_lower="${joint_limits['joint1']['soft_min_position']}" soft_upper="${joint_limits['joint1']['soft_max_position']}" k_velocity="10"/>
<!-- joint2: ±119° hard, ±114° soft -->
<xacro:revolute_joint jname="joint2" parent="link1" child="link2"
xyz="0 0 0" rpy="-1.5708 0 0" axis="0 0 1"
lower="-2.09" upper="2.09" effort="200"
velocity="1.71" damping="10.0" friction="0.1"
soft_lower="-2.0027" soft_upper="2.0027" k_velocity="10"/>
lower="${joint_limits['joint2']['min_position']}" upper="${joint_limits['joint2']['max_position']}" effort="200"
velocity="${joint_limits['joint2']['max_velocity']}" damping="10.0" friction="0.1"
soft_lower="${joint_limits['joint2']['soft_min_position']}" soft_upper="${joint_limits['joint2']['soft_max_position']}" k_velocity="10"/>
<!-- joint3: ±170° hard, ±165° soft -->
<xacro:revolute_joint jname="joint3" parent="link2" child="link3"
xyz="0 -0.3993 0" rpy="1.5708 0 0" axis="0 0 1"
lower="-2.97" upper="2.97" effort="200"
velocity="1.75" damping="10.0" friction="0.1"
soft_lower="-2.8827" soft_upper="2.8827" k_velocity="10"/>
lower="${joint_limits['joint3']['min_position']}" upper="${joint_limits['joint3']['max_position']}" effort="200"
velocity="${joint_limits['joint3']['max_velocity']}" damping="10.0" friction="0.1"
soft_lower="${joint_limits['joint3']['soft_min_position']}" soft_upper="${joint_limits['joint3']['soft_max_position']}" k_velocity="10"/>
<!-- joint4: ±119° hard, ±114° soft -->
<xacro:revolute_joint jname="joint4" parent="link3" child="link4"
xyz="0 0 0" rpy="-1.5708 0 0" axis="0 0 -1"
lower="-2.09" upper="2.09" effort="200"
velocity="2.27" damping="10.0" friction="0.1"
soft_lower="-2.0027" soft_upper="2.0027" k_velocity="10"/>
lower="${joint_limits['joint4']['min_position']}" upper="${joint_limits['joint4']['max_position']}" effort="200"
velocity="${joint_limits['joint4']['max_velocity']}" damping="10.0" friction="0.1"
soft_lower="${joint_limits['joint4']['soft_min_position']}" soft_upper="${joint_limits['joint4']['soft_max_position']}" k_velocity="10"/>
<!-- joint5: ±170° hard, ±165° soft -->
<xacro:revolute_joint jname="joint5" parent="link4" child="link5"
xyz="0 -0.3993 0" rpy="1.5708 0 0" axis="0 0 1"
lower="-2.97" upper="2.97" effort="200"
velocity="2.44" damping="10.0" friction="0.1"
soft_lower="-2.8827" soft_upper="2.8827" k_velocity="10"/>
lower="${joint_limits['joint5']['min_position']}" upper="${joint_limits['joint5']['max_position']}" effort="200"
velocity="${joint_limits['joint5']['max_velocity']}" damping="10.0" friction="0.1"
soft_lower="${joint_limits['joint5']['soft_min_position']}" soft_upper="${joint_limits['joint5']['soft_max_position']}" k_velocity="10"/>
<!-- joint6: ±119° hard, ±114° soft -->
<xacro:revolute_joint jname="joint6" parent="link5" child="link6"
xyz="0 0 0" rpy="-1.5708 0 0" axis="0 0 1"
lower="-2.09" upper="2.09" effort="200"
velocity="3.14" damping="10.0" friction="0.1"
soft_lower="-2.0027" soft_upper="2.0027" k_velocity="10"/>
lower="${joint_limits['joint6']['min_position']}" upper="${joint_limits['joint6']['max_position']}" effort="200"
velocity="${joint_limits['joint6']['max_velocity']}" damping="10.0" friction="0.1"
soft_lower="${joint_limits['joint6']['soft_min_position']}" soft_upper="${joint_limits['joint6']['soft_max_position']}" k_velocity="10"/>
<!-- joint7: ±174° hard, ±169° soft -->
<xacro:revolute_joint jname="joint7" parent="link6" child="link7"
xyz="0 -0.126 0" rpy="1.5708 0 0" axis="0 0 1"
lower="-3.05" upper="3.05" effort="200"
velocity="3.14" damping="10.0" friction="0.1"
soft_lower="-2.9627" soft_upper="2.9627" k_velocity="10"/>
lower="${joint_limits['joint7']['min_position']}" upper="${joint_limits['joint7']['max_position']}" effort="200"
velocity="${joint_limits['joint7']['max_velocity']}" damping="10.0" friction="0.1"
soft_lower="${joint_limits['joint7']['soft_min_position']}" soft_upper="${joint_limits['joint7']['soft_max_position']}" k_velocity="10"/>
<joint name="tools_joint" type="fixed">
<origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>