feat(control): unify joint limits and bound trajectory dynamics
Use shared limits for all seven axes across MoveIt, URDF and FRI. Apply Ruckig smoothing and continuous JTC spline checks, stretching trajectory timing to respect velocity, acceleration and jerk limits. Require fresh stationary feedback for direct trajectories and protect preparation from concurrent submissions and stop requests. Add regression tests, dependencies and bilingual FRI documentation. Include the updated LIN speed-sweep scenario and current 60 ms filter configuration. Acceleration and jerk limits remain project settings; physical high-speed twitching is still under investigation.
This commit is contained in:
@@ -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"/>
|
||||
@@ -52,8 +54,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>
|
||||
@@ -64,8 +66,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>
|
||||
@@ -76,8 +78,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>
|
||||
@@ -88,8 +90,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>
|
||||
@@ -100,8 +102,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>
|
||||
@@ -112,8 +114,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>
|
||||
@@ -124,8 +126,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>
|
||||
@@ -153,8 +155,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">
|
||||
@@ -166,8 +168,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">
|
||||
@@ -179,8 +181,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">
|
||||
@@ -192,8 +194,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">
|
||||
@@ -205,8 +207,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">
|
||||
@@ -218,8 +220,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">
|
||||
@@ -231,8 +233,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">
|
||||
|
||||
Reference in New Issue
Block a user