Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Add support for R-2000iB 165f #52

Open
wants to merge 5 commits into
base: indigo-devel
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions fanuc_r2000ib_support/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.1.0)

project(fanuc_r2000ib_support)

find_package(catkin REQUIRED)

catkin_package()

if (CATKIN_ENABLE_TESTING)
find_package(roslaunch REQUIRED)
roslaunch_add_file_check(tests/roslaunch_test_r2000ib165f.xml)
endif()

install(DIRECTORY config launch meshes urdf
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})
1 change: 1 addition & 0 deletions fanuc_r2000ib_support/config/joint_names_r2000ib165f.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']
3 changes: 3 additions & 0 deletions fanuc_r2000ib_support/launch/load_r2000ib165f.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<launch>
<param name="robot_description" command="$(find xacro)/xacro.py '$(find fanuc_r2000ib_support)/urdf/r2000ib165f.xacro'" />
</launch>
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0"?>
<!--
Manipulator specific version of 'robot_interface_streaming.launch'.

Defaults provided for R-2000iB/165F:
- J23_factor = 1
- use_bswap = true
- 6 joints

Usage:
robot_interface_streaming_r2000ib165f.launch robot_ip:=<value>
-->
<launch>
<arg name="robot_ip" doc="IP of controller" />
<arg name="J23_factor" default="1" doc="Compensation factor for joint 2-3 coupling (-1, 0 or 1)" />
<arg name="use_bswap" default="true" doc="If true, robot driver will byte-swap all incoming and outgoing data" />

<rosparam command="load" file="$(find fanuc_r2000ib_support)/config/joint_names_r2000ib165f.yaml" />

<include file="$(find fanuc_driver)/launch/robot_interface_streaming.launch">
<arg name="robot_ip" value="$(arg robot_ip)" />
<arg name="J23_factor" value="$(arg J23_factor)" />
<arg name="use_bswap" value="$(arg use_bswap)" />
</include>
</launch>
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<!--
Manipulator specific version of the state visualizer.

Defaults provided for R-2000iB/165F:
- J23_factor = 1
- use_bswap = true
- 6 joints

Usage:
robot_state_visualize_r2000ic165f.launch robot_ip:=<value>
-->
<launch>
<arg name="robot_ip" doc="IP of controller" />
<arg name="J23_factor" default="1" doc="Compensation factor for joint 2-3 coupling (-1, 0 or 1)" />
<arg name="use_bswap" default="true" doc="If true, robot driver will byte-swap all incoming and outgoing data" />

<rosparam command="load" file="$(find fanuc_r2000ic_support)/config/joint_names_r2000ic165f.yaml" />

<node name="robot_state_publisher" pkg="robot_state_publisher"
type="robot_state_publisher" />

<include file="$(find fanuc_r2000ib_support)/launch/load_r2000ib165f.launch" />

<node name="rviz" pkg="rviz" type="rviz" args="-d $(find industrial_robot_client)/config/robot_state_visualize.rviz" required="true" />
</launch>
8 changes: 8 additions & 0 deletions fanuc_r2000ib_support/launch/test_r2000ib165f.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<launch>
<include file="$(find fanuc_r2000ib_support)/launch/load_r2000ib165f.launch" />
<param name="use_gui" value="true" />
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<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.
68 changes: 68 additions & 0 deletions fanuc_r2000ib_support/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format2.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="2">
<name>fanuc_r2000ib_support</name>
<version>0.0.1</version>
<description>
<p>
ROS-Industrial support for the Fanuc R-2000iB (and variants).
</p>
<p>
This package contains configuration data, 3D models and launch files
for Fanuc R-2000iB manipulators. This includes the /165F variant only.
</p>
<p><b>Specifications</b>:</p>
<ul>
<li>R-2000iB/165F - "Conventional dress-out"</li>
</ul>
<p>
Joint limits and maximum joint velocities are based on the information available
online at https://www.robots.com/robots/fanuc-r-2000ib-165f
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 email="[email protected]">Simon Schmeisser (isys vision)</author>
<maintainer email="[email protected]">G.A. vd. Hoorn (TU Delft Robotics Institute)</maintainer>
<license>Apache2</license>

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

<buildtool_depend>catkin</buildtool_depend>

<test_depend>roslaunch</test_depend>


<exec_depend>fanuc_driver</exec_depend>
<exec_depend>fanuc_resources</exec_depend>
<exec_depend>joint_state_publisher</exec_depend>
<exec_depend>robot_state_publisher</exec_depend>
<exec_depend>rviz</exec_depend>
<exec_depend>xacro</exec_depend>

<export>
<architecture_independent />
<rosindex>
<tags>
<tag>support_package</tag>
<tag>description</tag>
<tag>fanuc</tag>
<tag>industrial</tag>
<tag>ros-industrial</tag>
<tag>r2000ib</tag>
<tag>experimental</tag>
</tags>
</rosindex>
<ros_industrial>
<support_level value="community" />
</ros_industrial>
</export>
</package>
12 changes: 12 additions & 0 deletions fanuc_r2000ib_support/tests/roslaunch_test_r2000ib165f.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0"?>
<launch>

<group ns="load_r2000ib165f__">
<include file="$(find fanuc_r2000ib_support)/launch/load_r2000ib165f.launch"/>
</group>

<group ns="test_r2000ib165f__">
<include file="$(find fanuc_r2000ib_support)/launch/test_r2000ib165f.launch"/>
</group>

</launch>
6 changes: 6 additions & 0 deletions fanuc_r2000ib_support/urdf/r2000ib165f.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" ?>

<robot name="fanuc_r2000ib" xmlns:xacro="http://wiki.ros.org/xacro">
<xacro:include filename="$(find fanuc_r2000ib_support)/urdf/r2000ib165f_macro.xacro"/>
<xacro:fanuc_r2000ib165f prefix=""/>
</robot>
183 changes: 183 additions & 0 deletions fanuc_r2000ib_support/urdf/r2000ib165f_macro.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro">
<xacro:include filename="$(find fanuc_resources)/urdf/common_materials.xacro"/>

<xacro:macro name="fanuc_r2000ib165f" params="prefix">
<!-- links -->
<link name="${prefix}base_link">
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://fanuc_r2000ib_support/meshes/r2000ib165f/visual/base_link.stl"/>
</geometry>
<xacro:material_fanuc_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://fanuc_r2000ib_support/meshes/r2000ib165f/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://fanuc_r2000ib_support/meshes/r2000ib165f/visual/link_1.stl"/>
</geometry>
<xacro:material_fanuc_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://fanuc_r2000ib_support/meshes/r2000ib165f/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://fanuc_r2000ib_support/meshes/r2000ib165f/visual/link_2.stl"/>
</geometry>
<xacro:material_fanuc_white />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://fanuc_r2000ib_support/meshes/r2000ib165f/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://fanuc_r2000ib_support/meshes/r2000ib165f/visual/link_3.stl"/>
</geometry>
<xacro:material_fanuc_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://fanuc_r2000ib_support/meshes/r2000ib165f/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://fanuc_r2000ib_support/meshes/r2000ib165f/visual/link_4.stl"/>
</geometry>
<xacro:material_fanuc_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://fanuc_r2000ib_support/meshes/r2000ib165f/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://fanuc_r2000ib_support/meshes/r2000ib165f/visual/link_5.stl"/>
</geometry>
<xacro:material_fanuc_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://fanuc_r2000ib_support/meshes/r2000ib165f/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://fanuc_r2000ib_support/meshes/r2000ib165f/visual/link_6.stl"/>
</geometry>
<xacro:material_fanuc_yellow />
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<mesh filename="package://fanuc_r2000ib_support/meshes/r2000ib165f/collision/link_6.stl"/>
</geometry>
</collision>
</link>

<!-- joints: main serial chain -->
<joint name="${prefix}joint_1" type="revolute">
<origin xyz="0 0 0.67" rpy="0 0 0"/>
<parent link="${prefix}base_link"/>
<child link="${prefix}link_1"/>
<axis xyz="0 0 1"/>
<limit lower="${radians(-180)}" upper="${radians(180)}" effort="0" velocity="${radians(110)}" />
</joint>
<joint name="${prefix}joint_2" type="revolute">
<origin xyz="0.312 0 0" rpy="0 0 0"/>
<parent link="${prefix}link_1"/>
<child link="${prefix}link_2"/>
<axis xyz="0 1 0"/>
<limit lower="${radians(-60)}" upper="${radians(75)}" effort="0" velocity="${radians(110)}" />
</joint>
<joint name="${prefix}joint_3" type="revolute">
<origin xyz="0 0 1.075" rpy="0 0 0"/>
<parent link="${prefix}link_2"/>
<child link="${prefix}link_3"/>
<axis xyz="0 -1 0"/>
<limit lower="${radians(-132)}" upper="${radians(230)}" effort="0" velocity="${radians(110)}" />
</joint>
<joint name="${prefix}joint_4" type="revolute">
<origin xyz="0 0 0.225" rpy="0 0 0"/>
<parent link="${prefix}link_3"/>
<child link="${prefix}link_4"/>
<axis xyz="-1 0 0"/>
<limit lower="${radians(-360)}" upper="${radians(360)}" effort="0" velocity="${radians(150)}" />
</joint>
<joint name="${prefix}joint_5" type="revolute">
<origin xyz="1.280 0 0.0" rpy="0 0 0"/>
<parent link="${prefix}link_4"/>
<child link="${prefix}link_5"/>
<axis xyz="0 -1 0"/>
<limit lower="${radians(-125)}" upper="${radians(125)}" effort="0" velocity="${radians(125)}" />
</joint>
<joint name="${prefix}joint_6" type="revolute">
<origin xyz="0.215 0 0.0" rpy="0 0 0"/>
<parent link="${prefix}link_5"/>
<child link="${prefix}link_6"/>
<axis xyz="-1 0 0"/>
<limit lower="${radians(-360)}" upper="${radians(360)}" effort="0" velocity="${radians(220)}" />
</joint>

<!-- ROS-Industrial 'base' frame: base_link to Fanuc World Coordinates transform -->
<link name="${prefix}base" />
<joint name="${prefix}base_link-base" type="fixed">
<origin xyz="0 0 0.670" 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 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}link_6-tool0" type="fixed">
<origin xyz="0 0 0" rpy="${pi} ${-pi/2.0} 0" />
<parent link="${prefix}link_6" />
<child link="${prefix}tool0" />
</joint>


</xacro:macro>
</robot>