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.
272 lines
12 KiB
XML
272 lines
12 KiB
XML
<?xml version="1.0"?>
|
|
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="iiwa7">
|
|
|
|
<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"/>
|
|
<xacro:arg name="fri_cycle_ms" default="5"/>
|
|
<xacro:arg name="joint_position_tau" default="0.04"/>
|
|
|
|
<xacro:property name="initial_positions"
|
|
value="${xacro.load_yaml('$(arg initial_positions_file)')['initial_positions']}"/>
|
|
|
|
<xacro:include filename="$(find iiwa_description)/urdf/params.xacro"/>
|
|
<xacro:include filename="$(find iiwa_description)/urdf/macros.xacro"/>
|
|
<xacro:include filename="$(find iiwa_description)/urdf/links.xacro"/>
|
|
<xacro:include filename="$(find iiwa_description)/urdf/joints.xacro"/>
|
|
|
|
<xacro:property name="tool_has_camera" value="false"/>
|
|
<xacro:include filename="$(find iiwa_description)/urdf/tools/tool_active.xacro"/>
|
|
|
|
<xacro:if value="$(arg simulate)">
|
|
|
|
<webots>
|
|
<plugin type="webots_ros2_control::Ros2Control"/>
|
|
|
|
<device reference="camera_rgb" type="Camera">
|
|
<ros>
|
|
<enabled>false</enabled>
|
|
<topicName>/camera/color</topicName>
|
|
<updateRate>30</updateRate>
|
|
<alwaysOn>True</alwaysOn>
|
|
<frameName>camera_optical_frame</frameName>
|
|
</ros>
|
|
</device>
|
|
|
|
<device reference="camera_depth" type="RangeFinder">
|
|
<ros>
|
|
<enabled>false</enabled>
|
|
<topicName>/camera/depth</topicName>
|
|
<updateRate>30</updateRate>
|
|
<alwaysOn>True</alwaysOn>
|
|
<frameName>camera_optical_frame</frameName>
|
|
</ros>
|
|
</device>
|
|
|
|
<!-- Keep the 30 Hz deadlines independent of Webots' 32 ms steps. -->
|
|
<xacro:if value="${tool_has_camera}">
|
|
<plugin type="iiwa_utils.webots_camera.WebotsCamera">
|
|
<device>camera_rgb</device>
|
|
<topicName>/camera/color</topicName>
|
|
<updateRate>30</updateRate>
|
|
<frameName>camera_optical_frame</frameName>
|
|
</plugin>
|
|
<plugin type="iiwa_utils.webots_camera.WebotsCamera">
|
|
<device>camera_depth</device>
|
|
<depth>true</depth>
|
|
<topicName>/camera/depth</topicName>
|
|
<updateRate>30</updateRate>
|
|
<frameName>camera_optical_frame</frameName>
|
|
</plugin>
|
|
</xacro:if>
|
|
|
|
</webots>
|
|
|
|
<ros2_control name="iiwaGazeboControl" type="system">
|
|
|
|
<hardware>
|
|
<plugin>webots_ros2_control::Ros2ControlSystem</plugin>
|
|
</hardware>
|
|
|
|
<joint name="joint1">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint2">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint3">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint4">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint5">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint6">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint7">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
</ros2_control>
|
|
|
|
</xacro:if>
|
|
|
|
<xacro:unless value="$(arg simulate)">
|
|
|
|
<ros2_control name="iiwaFRIControl" type="system">
|
|
<hardware>
|
|
<plugin>iiwa_controller/IIWAHardwareInterface</plugin>
|
|
<param name="robot_ip">$(arg robot_ip)</param>
|
|
<param name="fri_port">$(arg fri_port)</param>
|
|
<param name="fri_cycle_ms">$(arg fri_cycle_ms)</param>
|
|
<param name="joint_position_tau">$(arg joint_position_tau)</param>
|
|
<param name="rt_prio">80</param>
|
|
<param name="simulate">false</param>
|
|
</hardware>
|
|
|
|
<joint name="joint1">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint2">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint3">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint4">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint5">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint6">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
<joint name="joint7">
|
|
<command_interface name="position">
|
|
<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>
|
|
</state_interface>
|
|
<state_interface name="velocity"/>
|
|
<state_interface name="effort"/>
|
|
</joint>
|
|
|
|
</ros2_control>
|
|
|
|
</xacro:unless>
|
|
|
|
</robot>
|