Skip to content

Commit

Permalink
Add support for TX2-90 series (#41)
Browse files Browse the repository at this point in the history
Squashed commits:

* Add support for TX2-90 series
* renamed to follow REP-3, added missing files
* Formatting and reordering xacro
* Apply suggested changes to package.xml
* fix tests in CMakeLists.txt
* fix package.xml
* Decimate XL meshes for link 2 and 4.
* remove copied inertial values
* rechecked limits with handbook and clarified reference
* use nominal speed limits
* correct torque limits for wall mounting in comments
* Repeat comment about using Nominal velocity limits.
* Remove dynamics elements as well.
* Make flange parent of tool0.

Co-authored-by: G.A. vd. Hoorn <g.a.vanderhoorn@tudelft.nl>
  • Loading branch information
simonschmeisser and gavanderhoorn authored Jan 31, 2020
1 parent 3268dca commit bd8c3f1
Show file tree
Hide file tree
Showing 42 changed files with 735 additions and 0 deletions.
16 changes: 16 additions & 0 deletions staubli_tx2_90_support/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
cmake_minimum_required(VERSION 2.8.3)
project(staubli_tx2_90_support)

find_package(catkin REQUIRED)

catkin_package()

if (CATKIN_ENABLE_TESTING)
find_package(roslaunch REQUIRED)
roslaunch_add_file_check(tests/roslaunch_test_tx2_90.xml)
roslaunch_add_file_check(tests/roslaunch_test_tx2_90l.xml)
roslaunch_add_file_check(tests/roslaunch_test_tx2_90xl.xml)
endif()

install(DIRECTORY config launch meshes urdf
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
1 change: 1 addition & 0 deletions staubli_tx2_90_support/config/joint_names_tx2_90.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
controller_joint_names: ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6']
1 change: 1 addition & 0 deletions staubli_tx2_90_support/config/joint_names_tx2_90l.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
controller_joint_names: ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6']
1 change: 1 addition & 0 deletions staubli_tx2_90_support/config/joint_names_tx2_90xl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
controller_joint_names: ['joint_1', 'joint_2', 'joint_3', 'joint_4', 'joint_5', 'joint_6']
4 changes: 4 additions & 0 deletions staubli_tx2_90_support/launch/load_tx2_90.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" ?>
<launch>
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find staubli_tx2_90_support)/urdf/tx2_90.xacro'" />
</launch>
4 changes: 4 additions & 0 deletions staubli_tx2_90_support/launch/load_tx2_90l.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" ?>
<launch>
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find staubli_tx2_90_support)/urdf/tx2_90l.xacro'" />
</launch>
4 changes: 4 additions & 0 deletions staubli_tx2_90_support/launch/load_tx2_90xl.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" ?>
<launch>
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find staubli_tx2_90_support)/urdf/tx2_90xl.xacro'" />
</launch>
9 changes: 9 additions & 0 deletions staubli_tx2_90_support/launch/test_tx2_90.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" ?>
<launch>
<include file="$(find staubli_tx2_90_support)/launch/load_tx2_90.launch" />
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
<param name="use_gui" value="true" />
</node>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find industrial_robot_client)/config/robot_state_visualize.rviz" required="true" />
</launch>
9 changes: 9 additions & 0 deletions staubli_tx2_90_support/launch/test_tx2_90l.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" ?>
<launch>
<include file="$(find staubli_tx2_90_support)/launch/load_tx2_90l.launch" />
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
<param name="use_gui" value="true" />
</node>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find industrial_robot_client)/config/robot_state_visualize.rviz" required="true" />
</launch>
9 changes: 9 additions & 0 deletions staubli_tx2_90_support/launch/test_tx2_90xl.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" ?>
<launch>
<include file="$(find staubli_tx2_90_support)/launch/load_tx2_90xl.launch" />
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">
<param name="use_gui" value="true" />
</node>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find industrial_robot_client)/config/robot_state_visualize.rviz" required="true" />
</launch>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
56 changes: 56 additions & 0 deletions staubli_tx2_90_support/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?xml version="1.0"?>
<package format="2">
<name>staubli_tx2_90_support</name>
<version>0.1.0</version>
<description>
<p>
ROS-Industrial support for the Staubli TX2-90 (and variants).
</p>
<p>
This package contains configuration data, 3D models and launch files
for Staubli TX2-90 manipulators. This includes the base model,
as well as models with extended arm and forearm links (L and XL).
</p>
<p><b>Specifications</b>:</p>
<ul>
<li>TX2-90 - Standard Arm - Nominal Speed</li>
<li>TX2-90L - Long Arm - Nominal Speed</li>
<li>TX2-90XL - Extra Long Arm - Nominal Speed</li>
</ul>
<p>
Joint limits, torque limits, and maximum joint velocities
are based on the
information in the <em>Staubli Robotics - TX2 series 90 family -
Instruction Manual</em> version <em>D.280.943.04-E – 12/07/2019</em>.
All urdfs are based on the default motion and joint velocity limits,
unless noted otherwise (ie: no support for high speed joints, extended /
limited motion ranges or other options).
</p>
<p>
Before using any of the configuration files and / or meshes included
in this package, be sure to check they are correct for the particular
robot model and configuration you intend to use them with.
</p>
</description>
<author>Simon Schmeisser (isys vision)</author>
<maintainer email="g.a.vanderhoorn@tudelft.nl">G.A. vd. Hoorn (TU Delft Robotics Institute)</maintainer>
<license>Apache2.0</license>

<url type="website">http://wiki.ros.org/staubli_tx2_90_support</url>
<url type="bugtracker">https://github.com/ros-industrial/staubli_experimental/issues</url>
<url type="repository">https://github.com/ros-industrial/staubli_experimental</url>

<buildtool_depend>catkin</buildtool_depend>

<test_depend>roslaunch</test_depend>

<exec_depend>joint_state_publisher</exec_depend>
<exec_depend>robot_state_publisher</exec_depend>
<exec_depend>rviz</exec_depend>
<exec_depend>staubli_resources</exec_depend>
<exec_depend>xacro</exec_depend>

<export>
<architecture_independent />
</export>
</package>
12 changes: 12 additions & 0 deletions staubli_tx2_90_support/tests/roslaunch_test_tx2_90.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<launch>

<group ns="load_tx2_90__">
<include file="$(find staubli_tx2_90_support)/launch/load_tx2_90.launch"/>
</group>

<group ns="test_tx2_90__">
<include file="$(find staubli_tx2_90_support)/launch/test_tx2_90.launch"/>
</group>

</launch>
12 changes: 12 additions & 0 deletions staubli_tx2_90_support/tests/roslaunch_test_tx2_90l.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<launch>

<group ns="load_tx2_90l__">
<include file="$(find staubli_tx2_90_support)/launch/load_tx2_90l.launch"/>
</group>

<group ns="test_tx2_90l__">
<include file="$(find staubli_tx2_90_support)/launch/test_tx2_90l.launch"/>
</group>

</launch>
12 changes: 12 additions & 0 deletions staubli_tx2_90_support/tests/roslaunch_test_tx2_90xl.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<launch>

<group ns="load_tx2_90xl__">
<include file="$(find staubli_tx2_90_support)/launch/load_tx2_90xl.launch"/>
</group>

<group ns="test_tx2_90xl__">
<include file="$(find staubli_tx2_90_support)/launch/test_tx2_90xl.launch"/>
</group>

</launch>
5 changes: 5 additions & 0 deletions staubli_tx2_90_support/urdf/tx2_90.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" ?>
<robot name="staubli_tx2_90" xmlns:xacro="http://wiki.ros.org/xacro">
<xacro:include filename="$(find staubli_tx2_90_support)/urdf/tx2_90_macro.xacro"/>
<xacro:staubli_tx2_90 prefix=""/>
</robot>
190 changes: 190 additions & 0 deletions staubli_tx2_90_support/urdf/tx2_90_macro.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro">
<xacro:include filename="$(find staubli_resources)/urdf/common_materials.xacro"/>

<xacro:macro name="staubli_tx2_90" params="prefix">
<!-- links: main serial chain -->
<link name="${prefix}base_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/visual/base_link.stl"/>
</geometry>
<xacro:material_staubli_ral_melon_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/collision/base_link.stl"/>
</geometry>
</collision>
</link>
<link name="${prefix}link_1">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/visual/link_1.stl"/>
</geometry>
<xacro:material_staubli_ral_melon_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/collision/link_1.stl"/>
</geometry>
</collision>
</link>
<link name="${prefix}link_2">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/visual/link_2.stl"/>
</geometry>
<xacro:material_staubli_ral_melon_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/collision/link_2.stl"/>
</geometry>
</collision>
</link>
<link name="${prefix}link_3">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/visual/link_3.stl"/>
</geometry>
<xacro:material_staubli_ral_melon_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/collision/link_3.stl"/>
</geometry>
</collision>
</link>
<link name="${prefix}link_4">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/visual/link_4.stl"/>
</geometry>
<xacro:material_staubli_ral_melon_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/collision/link_4.stl"/>
</geometry>
</collision>
</link>
<link name="${prefix}link_5">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/visual/link_5.stl"/>
</geometry>
<xacro:material_staubli_ral_grey_aluminium />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/collision/link_5.stl"/>
</geometry>
</collision>
</link>
<link name="${prefix}link_6">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/visual/link_6.stl"/>
</geometry>
<xacro:material_staubli_ral_grey_aluminium />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://staubli_tx2_90_support/meshes/tx2_90/collision/link_6.stl"/>
</geometry>
</collision>
</link>

<!-- joints: main serial chain -->
<joint name="${prefix}joint_1" type="revolute">
<origin xyz="0 0 0.478" rpy="0 0 0"/>
<parent link="${prefix}base_link"/>
<child link="${prefix}link_1"/>
<axis xyz="0 0 1"/>
<!-- from Staubli instruction manual:
(1) effort limit = 318 Nm if floor mounted
(2) effort limit = 111 Nm if wall mounted -->
<!-- nominal velocity limits are used -->
<limit lower="${radians(-180)}" upper="${radians(180)}" effort="318.0" velocity="${radians(265)}" />
</joint>
<joint name="${prefix}joint_2" type="revolute">
<origin xyz="0.050 0 0" rpy="0 0 0"/>
<parent link="${prefix}link_1"/>
<child link="${prefix}link_2"/>
<axis xyz="0 1 0"/>
<!-- nominal velocity limits are used -->
<limit lower="${radians(-130)}" upper="${radians(147.5)}" effort="166.0" velocity="${radians(210)}" />
</joint>
<joint name="${prefix}joint_3" type="revolute">
<origin xyz="0 0.05 0.425" rpy="0 0 0"/>
<parent link="${prefix}link_2"/>
<child link="${prefix}link_3"/>
<axis xyz="0 1 0"/>
<!-- nominal velocity limits are used -->
<limit lower="${radians(-145)}" upper="${radians(145)}" effort="76.0" velocity="${radians(315)}" />
</joint>
<joint name="${prefix}joint_4" type="revolute">
<origin xyz="0 0 0" rpy="0 0 0"/>
<parent link="${prefix}link_3"/>
<child link="${prefix}link_4"/>
<axis xyz="0 0 1"/>
<!-- nominal velocity limits are used -->
<limit lower="${radians(-270)}" upper="${radians(270)}" effort="34.0" velocity="${radians(450)}" />
</joint>
<joint name="${prefix}joint_5" type="revolute">
<origin xyz="0 0 0.425" rpy="0 0 0"/>
<parent link="${prefix}link_4"/>
<child link="${prefix}link_5"/>
<axis xyz="0 1 0"/>
<!-- nominal velocity limits are used -->
<limit lower="${radians(-115)}" upper="${radians(140)}" effort="29.0" velocity="${radians(370)}" />
</joint>
<joint name="${prefix}joint_6" type="revolute">
<origin xyz="0 0 0.100" rpy="0 0 0"/>
<parent link="${prefix}link_5"/>
<child link="${prefix}link_6"/>
<axis xyz="0 0 1"/>
<!-- nominal velocity limits are used -->
<limit lower="${radians(-270)}" upper="${radians(270)}" effort="11.0" velocity="${radians(630)}" />
</joint>

<!-- ROS-Industrial 'base' frame: base_link to Staubli World Coordinates transform -->
<link name="${prefix}base" />
<joint name="${prefix}base_link-base" type="fixed">
<origin xyz="0 0 0.478" rpy="0 0 0"/>
<parent link="${prefix}base_link"/>
<child link="${prefix}base"/>
</joint>

<!-- ROS-Industrial 'flange' frame: attachment point for EEF models -->
<link name="${prefix}flange" />
<joint name="${prefix}joint_6-flange" type="fixed">
<origin xyz="0 0 0" rpy="0 ${radians(-90.0)} 0" />
<parent link="${prefix}link_6" />
<child link="${prefix}flange" />
</joint>

<!-- ROS-Industrial 'tool0' frame: all-zeros tool frame -->
<link name="${prefix}tool0" />
<joint name="${prefix}flange-tool0" type="fixed">
<parent link="${prefix}flange" />
<child link="${prefix}tool0" />
<origin xyz="0 0 0" rpy="0 ${radians(90.0)} 0" />
</joint>
</xacro:macro>
</robot>
5 changes: 5 additions & 0 deletions staubli_tx2_90_support/urdf/tx2_90l.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" ?>
<robot name="staubli_tx2_90l" xmlns:xacro="http://wiki.ros.org/xacro">
<xacro:include filename="$(find staubli_tx2_90_support)/urdf/tx2_90l_macro.xacro"/>
<xacro:staubli_tx2_90l prefix=""/>
</robot>
Loading

0 comments on commit bd8c3f1

Please sign in to comment.