Compare commits
7 Commits
dc10214e3d
...
551132c24c
Author | SHA1 | Date | |
---|---|---|---|
551132c24c | |||
00264cd163 | |||
14619a8d90 | |||
87dc4b4c85 | |||
3bb43308d0 | |||
82dc45f1cf | |||
9f8cde61d3 |
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
/build/
|
||||||
|
/install/
|
||||||
|
/log/
|
||||||
|
.idea
|
15
.gitmodules
vendored
Normal file
15
.gitmodules
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
[submodule "src/Universal_Robots_ROS2_Description"]
|
||||||
|
path = src/Universal_Robots_ROS2_Description
|
||||||
|
url = https://github.com/UniversalRobots/Universal_Robots_ROS2_Description
|
||||||
|
branch = humble
|
||||||
|
[submodule "src/serial"]
|
||||||
|
path = src/serial
|
||||||
|
url = https://github.com/tylerjw/serial.git
|
||||||
|
branch = ros2
|
||||||
|
[submodule "src/Universal_Robots_ROS2_Driver"]
|
||||||
|
path = src/Universal_Robots_ROS2_Driver
|
||||||
|
url = https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver.git
|
||||||
|
branch = humble
|
||||||
|
[submodule "src/ros2_robotiq_gripper"]
|
||||||
|
path = src/ros2_robotiq_gripper
|
||||||
|
url = https://github.com/PickNikRobotics/ros2_robotiq_gripper.git
|
33
Dockerfile
Normal file
33
Dockerfile
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
# Use ROS 2 Humble Hawksbill base image
|
||||||
|
FROM osrf/ros:humble-desktop-full-jammy
|
||||||
|
|
||||||
|
# Update and install dependencies
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
python3-colcon-common-extensions python3-pip \
|
||||||
|
ros-humble-xacro
|
||||||
|
|
||||||
|
COPY requirements.txt ./
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Create a workspace
|
||||||
|
WORKDIR /ros2_ws
|
||||||
|
|
||||||
|
# Copy your ROS 2 package into the workspace
|
||||||
|
COPY ./src /ros2_ws/src
|
||||||
|
|
||||||
|
# get all the ros dependencies
|
||||||
|
RUN rosdep update && rosdep install --ignore-src --from-paths src -y
|
||||||
|
|
||||||
|
# remove unnecessary pkgs
|
||||||
|
RUN rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Build your package
|
||||||
|
RUN . /opt/ros/humble/setup.sh && \
|
||||||
|
colcon build
|
||||||
|
|
||||||
|
RUN echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
|
||||||
|
|
||||||
|
ENV PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/ros/humble/bin"
|
||||||
|
|
||||||
|
# Source the workspace
|
||||||
|
CMD ["/bin/bash"]
|
14
docker-compose.yaml
Normal file
14
docker-compose.yaml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
ros2:
|
||||||
|
build: .
|
||||||
|
volumes:
|
||||||
|
- ./src:/ros2_ws/src
|
||||||
|
networks:
|
||||||
|
- ros_network
|
||||||
|
tty: true
|
||||||
|
stdin_open: true
|
||||||
|
|
||||||
|
networks:
|
||||||
|
ros_network:
|
||||||
|
driver: bridge
|
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
pytest~=6.2.5
|
||||||
|
PyYAML~=5.4.1
|
||||||
|
setuptools~=58.2.0
|
1
src/Universal_Robots_ROS2_Description
Submodule
1
src/Universal_Robots_ROS2_Description
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c1c8ac92cd09e1b550837ad3566b427a957caf7c
|
1
src/Universal_Robots_ROS2_Driver
Submodule
1
src/Universal_Robots_ROS2_Driver
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 8bc95d773f2476eeb18370a128b9f0c02ee98fd3
|
1
src/ros2_robotiq_gripper
Submodule
1
src/ros2_robotiq_gripper
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 25c6e0f2b67c9b4ccf06b72078105b6154583ac9
|
1
src/serial
Submodule
1
src/serial
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit d8d160678aa0b31cdf467c052b954fa287cc6cdf
|
26
src/ur_robotiq_description/CMakeLists.txt
Normal file
26
src/ur_robotiq_description/CMakeLists.txt
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
cmake_minimum_required(VERSION 3.8)
|
||||||
|
project(ur_robotiq_description)
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
|
add_compile_options(-Wall -Wextra -Wpedantic)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# find dependencies
|
||||||
|
find_package(ament_cmake REQUIRED)
|
||||||
|
# uncomment the following section in order to fill in
|
||||||
|
# further dependencies manually.
|
||||||
|
# find_package(<dependency> REQUIRED)
|
||||||
|
|
||||||
|
if(BUILD_TESTING)
|
||||||
|
find_package(ament_lint_auto REQUIRED)
|
||||||
|
# the following line skips the linter which checks for copyrights
|
||||||
|
# comment the line when a copyright and license is added to all source files
|
||||||
|
set(ament_cmake_copyright_FOUND TRUE)
|
||||||
|
# the following line skips cpplint (only works in a git repo)
|
||||||
|
# comment the line when this package is in a git repo and when
|
||||||
|
# a copyright and license is added to all source files
|
||||||
|
set(ament_cmake_cpplint_FOUND TRUE)
|
||||||
|
ament_lint_auto_find_test_dependencies()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
ament_package()
|
18
src/ur_robotiq_description/package.xml
Normal file
18
src/ur_robotiq_description/package.xml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
||||||
|
<package format="3">
|
||||||
|
<name>ur_robotiq_description</name>
|
||||||
|
<version>0.0.0</version>
|
||||||
|
<description>TODO: Package description</description>
|
||||||
|
<maintainer email="nikolaus.feith@unileoben.ac.at">niko</maintainer>
|
||||||
|
<license>TODO: License declaration</license>
|
||||||
|
|
||||||
|
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||||
|
|
||||||
|
<test_depend>ament_lint_auto</test_depend>
|
||||||
|
<test_depend>ament_lint_common</test_depend>
|
||||||
|
|
||||||
|
<export>
|
||||||
|
<build_type>ament_cmake</build_type>
|
||||||
|
</export>
|
||||||
|
</package>
|
904
src/ur_robotiq_description/urdf/ur_robotiq.urdf
Normal file
904
src/ur_robotiq_description/urdf/ur_robotiq.urdf
Normal file
@ -0,0 +1,904 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<!-- =================================================================================== -->
|
||||||
|
<!-- | This document was autogenerated by xacro from ur_robotiq.urdf.xacro | -->
|
||||||
|
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
|
||||||
|
<!-- =================================================================================== -->
|
||||||
|
<robot name="ur3e_robotiq">
|
||||||
|
<!--
|
||||||
|
Base UR robot series xacro macro.
|
||||||
|
|
||||||
|
NOTE this is NOT a URDF. It cannot directly be loaded by consumers
|
||||||
|
expecting a flattened '.urdf' file. See the top-level '.xacro' for that
|
||||||
|
(but note that .xacro must still be processed by the xacro command).
|
||||||
|
|
||||||
|
This file models the base kinematic chain of a UR robot, which then gets
|
||||||
|
parameterised by various configuration files to convert it into a UR3(e),
|
||||||
|
UR5(e), UR10(e) or UR16e.
|
||||||
|
|
||||||
|
NOTE the default kinematic parameters (i.e., link lengths, frame locations,
|
||||||
|
offsets, etc) do not correspond to any particular robot. They are defaults
|
||||||
|
only. There WILL be non-zero offsets between the Forward Kinematics results
|
||||||
|
in TF (i.e., robot_state_publisher) and the values reported by the Teach
|
||||||
|
Pendant.
|
||||||
|
|
||||||
|
For accurate (and robot-specific) transforms, the 'kinematics_parameters_file'
|
||||||
|
parameter MUST point to a .yaml file containing the appropriate values for
|
||||||
|
the targeted robot.
|
||||||
|
|
||||||
|
If using the UniversalRobots/Universal_Robots_ROS_Driver, follow the steps
|
||||||
|
described in the readme of that repository to extract the kinematic
|
||||||
|
calibration from the controller and generate the required .yaml file.
|
||||||
|
|
||||||
|
Main author of the migration to yaml configs Ludovic Delval.
|
||||||
|
|
||||||
|
Contributors to previous versions (in no particular order)
|
||||||
|
|
||||||
|
- Denis Stogl
|
||||||
|
- Lovro Ivanov
|
||||||
|
- Felix Messmer
|
||||||
|
- Kelsey Hawkins
|
||||||
|
- Wim Meeussen
|
||||||
|
- Shaun Edwards
|
||||||
|
- Nadia Hammoudeh Garcia
|
||||||
|
- Dave Hershberger
|
||||||
|
- G. vd. Hoorn
|
||||||
|
- Philip Long
|
||||||
|
- Dave Coleman
|
||||||
|
- Miguel Prada
|
||||||
|
- Mathias Luedtke
|
||||||
|
- Marcel Schnirring
|
||||||
|
- Felix von Drigalski
|
||||||
|
- Felix Exner
|
||||||
|
- Jimmy Da Silva
|
||||||
|
- Ajit Krisshna N L
|
||||||
|
- Muhammad Asif Rana
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
NOTE the macro defined in this file is NOT part of the public API of this
|
||||||
|
package. Users CANNOT rely on this file being available, or stored in
|
||||||
|
this location. Nor can they rely on the existence of the macro.
|
||||||
|
-->
|
||||||
|
<link name="world"/>
|
||||||
|
<ros2_control name="ur_arm" type="system">
|
||||||
|
<hardware>
|
||||||
|
<plugin>ur_robot_driver/URPositionHardwareInterface</plugin>
|
||||||
|
<param name="robot_ip">0.0.0.0</param>
|
||||||
|
<param name="script_filename"></param>
|
||||||
|
<param name="output_recipe_filename"></param>
|
||||||
|
<param name="input_recipe_filename"></param>
|
||||||
|
<param name="headless_mode">False</param>
|
||||||
|
<param name="reverse_port">50001</param>
|
||||||
|
<param name="script_sender_port">50002</param>
|
||||||
|
<param name="reverse_ip">0.0.0.0</param>
|
||||||
|
<param name="script_command_port">50004</param>
|
||||||
|
<param name="trajectory_port">50003</param>
|
||||||
|
<param name="tf_prefix"></param>
|
||||||
|
<param name="non_blocking_read">True</param>
|
||||||
|
<param name="servoj_gain">2000</param>
|
||||||
|
<param name="servoj_lookahead_time">0.03</param>
|
||||||
|
<param name="use_tool_communication">False</param>
|
||||||
|
<param name="kinematics/hash">calib_16756443741236045476</param>
|
||||||
|
<param name="tool_voltage">0</param>
|
||||||
|
<param name="tool_parity">0</param>
|
||||||
|
<param name="tool_baud_rate">115200</param>
|
||||||
|
<param name="tool_stop_bits">1</param>
|
||||||
|
<param name="tool_rx_idle_chars">1.5</param>
|
||||||
|
<param name="tool_tx_idle_chars">3.5</param>
|
||||||
|
<param name="tool_device_name">/tmp/ttyUR</param>
|
||||||
|
<param name="tool_tcp_port">54321</param>
|
||||||
|
<param name="keep_alive_count">2</param>
|
||||||
|
</hardware>
|
||||||
|
<joint name="shoulder_pan_joint">
|
||||||
|
<command_interface name="position">
|
||||||
|
<param name="min">{-2*pi}</param>
|
||||||
|
<param name="max">{2*pi}</param>
|
||||||
|
</command_interface>
|
||||||
|
<command_interface name="velocity">
|
||||||
|
<param name="min">-3.15</param>
|
||||||
|
<param name="max">3.15</param>
|
||||||
|
</command_interface>
|
||||||
|
<state_interface name="position">
|
||||||
|
<!-- initial position for the FakeSystem and simulation -->
|
||||||
|
<param name="initial_value">0.0</param>
|
||||||
|
</state_interface>
|
||||||
|
<state_interface name="velocity"/>
|
||||||
|
<state_interface name="effort"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="shoulder_lift_joint">
|
||||||
|
<command_interface name="position">
|
||||||
|
<param name="min">{-2*pi}</param>
|
||||||
|
<param name="max">{2*pi}</param>
|
||||||
|
</command_interface>
|
||||||
|
<command_interface name="velocity">
|
||||||
|
<param name="min">-3.15</param>
|
||||||
|
<param name="max">3.15</param>
|
||||||
|
</command_interface>
|
||||||
|
<state_interface name="position">
|
||||||
|
<!-- initial position for the FakeSystem and simulation -->
|
||||||
|
<param name="initial_value">-1.57</param>
|
||||||
|
</state_interface>
|
||||||
|
<state_interface name="velocity"/>
|
||||||
|
<state_interface name="effort"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="elbow_joint">
|
||||||
|
<command_interface name="position">
|
||||||
|
<param name="min">{-pi}</param>
|
||||||
|
<param name="max">{pi}</param>
|
||||||
|
</command_interface>
|
||||||
|
<command_interface name="velocity">
|
||||||
|
<param name="min">-3.15</param>
|
||||||
|
<param name="max">3.15</param>
|
||||||
|
</command_interface>
|
||||||
|
<state_interface name="position">
|
||||||
|
<!-- initial position for the FakeSystem and simulation -->
|
||||||
|
<param name="initial_value">0.0</param>
|
||||||
|
</state_interface>
|
||||||
|
<state_interface name="velocity"/>
|
||||||
|
<state_interface name="effort"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="wrist_1_joint">
|
||||||
|
<command_interface name="position">
|
||||||
|
<param name="min">{-2*pi}</param>
|
||||||
|
<param name="max">{2*pi}</param>
|
||||||
|
</command_interface>
|
||||||
|
<command_interface name="velocity">
|
||||||
|
<param name="min">-3.2</param>
|
||||||
|
<param name="max">3.2</param>
|
||||||
|
</command_interface>
|
||||||
|
<state_interface name="position">
|
||||||
|
<!-- initial position for the FakeSystem and simulation -->
|
||||||
|
<param name="initial_value">-1.57</param>
|
||||||
|
</state_interface>
|
||||||
|
<state_interface name="velocity"/>
|
||||||
|
<state_interface name="effort"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="wrist_2_joint">
|
||||||
|
<command_interface name="position">
|
||||||
|
<param name="min">{-2*pi}</param>
|
||||||
|
<param name="max">{2*pi}</param>
|
||||||
|
</command_interface>
|
||||||
|
<command_interface name="velocity">
|
||||||
|
<param name="min">-3.2</param>
|
||||||
|
<param name="max">3.2</param>
|
||||||
|
</command_interface>
|
||||||
|
<state_interface name="position">
|
||||||
|
<!-- initial position for the FakeSystem and simulation -->
|
||||||
|
<param name="initial_value">0.0</param>
|
||||||
|
</state_interface>
|
||||||
|
<state_interface name="velocity"/>
|
||||||
|
<state_interface name="effort"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="wrist_3_joint">
|
||||||
|
<command_interface name="position">
|
||||||
|
<param name="min">{-2*pi}</param>
|
||||||
|
<param name="max">{2*pi}</param>
|
||||||
|
</command_interface>
|
||||||
|
<command_interface name="velocity">
|
||||||
|
<param name="min">-3.2</param>
|
||||||
|
<param name="max">3.2</param>
|
||||||
|
</command_interface>
|
||||||
|
<state_interface name="position">
|
||||||
|
<!-- initial position for the FakeSystem and simulation -->
|
||||||
|
<param name="initial_value">0.0</param>
|
||||||
|
</state_interface>
|
||||||
|
<state_interface name="velocity"/>
|
||||||
|
<state_interface name="effort"/>
|
||||||
|
</joint>
|
||||||
|
<sensor name="tcp_fts_sensor">
|
||||||
|
<state_interface name="force.x"/>
|
||||||
|
<state_interface name="force.y"/>
|
||||||
|
<state_interface name="force.z"/>
|
||||||
|
<state_interface name="torque.x"/>
|
||||||
|
<state_interface name="torque.y"/>
|
||||||
|
<state_interface name="torque.z"/>
|
||||||
|
</sensor>
|
||||||
|
<!-- NOTE The following are joints used only for testing with fake hardware and will change in the future -->
|
||||||
|
<gpio name="speed_scaling">
|
||||||
|
<state_interface name="speed_scaling_factor"/>
|
||||||
|
<param name="initial_speed_scaling_factor">1</param>
|
||||||
|
<command_interface name="target_speed_fraction_cmd"/>
|
||||||
|
<command_interface name="target_speed_fraction_async_success"/>
|
||||||
|
</gpio>
|
||||||
|
<gpio name="gpio">
|
||||||
|
<command_interface name="standard_digital_output_cmd_0"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_1"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_2"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_3"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_4"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_5"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_6"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_7"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_8"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_9"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_10"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_11"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_12"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_13"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_14"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_15"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_16"/>
|
||||||
|
<command_interface name="standard_digital_output_cmd_17"/>
|
||||||
|
<command_interface name="standard_analog_output_cmd_0"/>
|
||||||
|
<command_interface name="standard_analog_output_cmd_1"/>
|
||||||
|
<command_interface name="tool_voltage_cmd"/>
|
||||||
|
<command_interface name="io_async_success"/>
|
||||||
|
<state_interface name="digital_output_0"/>
|
||||||
|
<state_interface name="digital_output_1"/>
|
||||||
|
<state_interface name="digital_output_2"/>
|
||||||
|
<state_interface name="digital_output_3"/>
|
||||||
|
<state_interface name="digital_output_4"/>
|
||||||
|
<state_interface name="digital_output_5"/>
|
||||||
|
<state_interface name="digital_output_6"/>
|
||||||
|
<state_interface name="digital_output_7"/>
|
||||||
|
<state_interface name="digital_output_8"/>
|
||||||
|
<state_interface name="digital_output_9"/>
|
||||||
|
<state_interface name="digital_output_10"/>
|
||||||
|
<state_interface name="digital_output_11"/>
|
||||||
|
<state_interface name="digital_output_12"/>
|
||||||
|
<state_interface name="digital_output_13"/>
|
||||||
|
<state_interface name="digital_output_14"/>
|
||||||
|
<state_interface name="digital_output_15"/>
|
||||||
|
<state_interface name="digital_output_16"/>
|
||||||
|
<state_interface name="digital_output_17"/>
|
||||||
|
<state_interface name="digital_input_0"/>
|
||||||
|
<state_interface name="digital_input_1"/>
|
||||||
|
<state_interface name="digital_input_2"/>
|
||||||
|
<state_interface name="digital_input_3"/>
|
||||||
|
<state_interface name="digital_input_4"/>
|
||||||
|
<state_interface name="digital_input_5"/>
|
||||||
|
<state_interface name="digital_input_6"/>
|
||||||
|
<state_interface name="digital_input_7"/>
|
||||||
|
<state_interface name="digital_input_8"/>
|
||||||
|
<state_interface name="digital_input_9"/>
|
||||||
|
<state_interface name="digital_input_10"/>
|
||||||
|
<state_interface name="digital_input_11"/>
|
||||||
|
<state_interface name="digital_input_12"/>
|
||||||
|
<state_interface name="digital_input_13"/>
|
||||||
|
<state_interface name="digital_input_14"/>
|
||||||
|
<state_interface name="digital_input_15"/>
|
||||||
|
<state_interface name="digital_input_16"/>
|
||||||
|
<state_interface name="digital_input_17"/>
|
||||||
|
<state_interface name="standard_analog_output_0"/>
|
||||||
|
<state_interface name="standard_analog_output_1"/>
|
||||||
|
<state_interface name="standard_analog_input_0"/>
|
||||||
|
<state_interface name="standard_analog_input_1"/>
|
||||||
|
<state_interface name="analog_io_type_0"/>
|
||||||
|
<state_interface name="analog_io_type_1"/>
|
||||||
|
<state_interface name="analog_io_type_2"/>
|
||||||
|
<state_interface name="analog_io_type_3"/>
|
||||||
|
<state_interface name="tool_mode"/>
|
||||||
|
<state_interface name="tool_output_voltage"/>
|
||||||
|
<state_interface name="tool_output_current"/>
|
||||||
|
<state_interface name="tool_temperature"/>
|
||||||
|
<state_interface name="tool_analog_input_0"/>
|
||||||
|
<state_interface name="tool_analog_input_1"/>
|
||||||
|
<state_interface name="tool_analog_input_type_0"/>
|
||||||
|
<state_interface name="tool_analog_input_type_1"/>
|
||||||
|
<state_interface name="robot_mode"/>
|
||||||
|
<state_interface name="robot_status_bit_0"/>
|
||||||
|
<state_interface name="robot_status_bit_1"/>
|
||||||
|
<state_interface name="robot_status_bit_2"/>
|
||||||
|
<state_interface name="robot_status_bit_3"/>
|
||||||
|
<state_interface name="safety_mode"/>
|
||||||
|
<state_interface name="safety_status_bit_0"/>
|
||||||
|
<state_interface name="safety_status_bit_1"/>
|
||||||
|
<state_interface name="safety_status_bit_2"/>
|
||||||
|
<state_interface name="safety_status_bit_3"/>
|
||||||
|
<state_interface name="safety_status_bit_4"/>
|
||||||
|
<state_interface name="safety_status_bit_5"/>
|
||||||
|
<state_interface name="safety_status_bit_6"/>
|
||||||
|
<state_interface name="safety_status_bit_7"/>
|
||||||
|
<state_interface name="safety_status_bit_8"/>
|
||||||
|
<state_interface name="safety_status_bit_9"/>
|
||||||
|
<state_interface name="safety_status_bit_10"/>
|
||||||
|
<state_interface name="program_running"/>
|
||||||
|
</gpio>
|
||||||
|
<gpio name="payload">
|
||||||
|
<command_interface name="mass"/>
|
||||||
|
<command_interface name="cog.x"/>
|
||||||
|
<command_interface name="cog.y"/>
|
||||||
|
<command_interface name="cog.z"/>
|
||||||
|
<command_interface name="payload_async_success"/>
|
||||||
|
</gpio>
|
||||||
|
<gpio name="resend_robot_program">
|
||||||
|
<command_interface name="resend_robot_program_cmd"/>
|
||||||
|
<command_interface name="resend_robot_program_async_success"/>
|
||||||
|
</gpio>
|
||||||
|
<gpio name="hand_back_control">
|
||||||
|
<command_interface name="hand_back_control_cmd"/>
|
||||||
|
<command_interface name="hand_back_control_async_success"/>
|
||||||
|
</gpio>
|
||||||
|
<gpio name="zero_ftsensor">
|
||||||
|
<command_interface name="zero_ftsensor_cmd"/>
|
||||||
|
<command_interface name="zero_ftsensor_async_success"/>
|
||||||
|
</gpio>
|
||||||
|
<gpio name="system_interface">
|
||||||
|
<state_interface name="initialized"/>
|
||||||
|
</gpio>
|
||||||
|
</ros2_control>
|
||||||
|
<!-- Add URDF transmission elements (for ros_control) -->
|
||||||
|
<!--<xacro:ur_arm_transmission prefix="${prefix}" hw_interface="${transmission_hw_interface}" />-->
|
||||||
|
<!-- Placeholder for ros2_control transmission which don't yet exist -->
|
||||||
|
<!-- links - main serial chain -->
|
||||||
|
<link name="base_link"/>
|
||||||
|
<link name="base_link_inertia">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 3.141592653589793" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/visual/base.dae"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 3.141592653589793" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/collision/base.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="2.0"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.0030531654454" ixy="0.0" ixz="0.0" iyy="0.0030531654454" iyz="0.0" izz="0.005625"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<link name="shoulder_link">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 3.141592653589793" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/visual/shoulder.dae"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 3.141592653589793" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/collision/shoulder.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="2.0"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.008093163429399999" ixy="0.0" ixz="0.0" iyy="0.008093163429399999" iyz="0.0" izz="0.005625"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<link name="upper_arm_link">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="1.5707963267948966 0 -1.5707963267948966" xyz="0 0 0.12"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/visual/upperarm.dae"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="1.5707963267948966 0 -1.5707963267948966" xyz="0 0 0.12"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/collision/upperarm.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="3.42"/>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="-0.121825 0.0 0.12"/>
|
||||||
|
<inertia ixx="0.021728483221103233" ixy="0.0" ixz="0.0" iyy="0.021728483221103233" iyz="0.0" izz="0.00961875"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<link name="forearm_link">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="1.5707963267948966 0 -1.5707963267948966" xyz="0 0 0.027"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/visual/forearm.dae"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="1.5707963267948966 0 -1.5707963267948966" xyz="0 0 0.027"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/collision/forearm.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="1.26"/>
|
||||||
|
<origin rpy="0 1.5707963267948966 0" xyz="-0.1066 0.0 0.027"/>
|
||||||
|
<inertia ixx="0.0065445675821719194" ixy="0.0" ixz="0.0" iyy="0.0065445675821719194" iyz="0.0" izz="0.00354375"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<link name="wrist_1_link">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="1.5707963267948966 0 0" xyz="0 0 -0.104"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/visual/wrist1.dae"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="1.5707963267948966 0 0" xyz="0 0 -0.104"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/collision/wrist1.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.8"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.002084999166" ixy="0.0" ixz="0.0" iyy="0.002084999166" iyz="0.0" izz="0.00225"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<link name="wrist_2_link">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.08535"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/visual/wrist2.dae"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 -0.08535"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/collision/wrist2.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.8"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<inertia ixx="0.002084999166" ixy="0.0" ixz="0.0" iyy="0.002084999166" iyz="0.0" izz="0.00225"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<link name="wrist_3_link">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="1.5707963267948966 0 0" xyz="0 0 -0.0921"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/visual/wrist3.dae"/>
|
||||||
|
</geometry>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="1.5707963267948966 0 0" xyz="0 0 -0.0921"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="package://ur_description/meshes/ur3e/collision/wrist3.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
<inertial>
|
||||||
|
<mass value="0.35"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0.0 0.0 -0.02"/>
|
||||||
|
<inertia ixx="0.00013626661215999998" ixy="0.0" ixz="0.0" iyy="0.00013626661215999998" iyz="0.0" izz="0.0001792"/>
|
||||||
|
</inertial>
|
||||||
|
</link>
|
||||||
|
<!-- base_joint fixes base_link to the environment -->
|
||||||
|
<joint name="base_joint" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<parent link="world"/>
|
||||||
|
<child link="base_link"/>
|
||||||
|
</joint>
|
||||||
|
<!-- joints - main serial chain -->
|
||||||
|
<joint name="base_link-base_link_inertia" type="fixed">
|
||||||
|
<parent link="base_link"/>
|
||||||
|
<child link="base_link_inertia"/>
|
||||||
|
<!-- 'base_link' is REP-103 aligned (so X+ forward), while the internal
|
||||||
|
frames of the robot/controller have X+ pointing backwards.
|
||||||
|
Use the joint between 'base_link' and 'base_link_inertia' (a dummy
|
||||||
|
link/frame) to introduce the necessary rotation over Z (of pi rad).
|
||||||
|
-->
|
||||||
|
<origin rpy="0 0 3.141592653589793" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="shoulder_pan_joint" type="revolute">
|
||||||
|
<parent link="base_link_inertia"/>
|
||||||
|
<child link="shoulder_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0.15185"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="56.0" lower="-6.283185307179586" upper="6.283185307179586" velocity="3.141592653589793"/>
|
||||||
|
<dynamics damping="0" friction="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="shoulder_lift_joint" type="revolute">
|
||||||
|
<parent link="shoulder_link"/>
|
||||||
|
<child link="upper_arm_link"/>
|
||||||
|
<origin rpy="1.570796327 0 0" xyz="0 0 0"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="56.0" lower="-6.283185307179586" upper="6.283185307179586" velocity="3.141592653589793"/>
|
||||||
|
<dynamics damping="0" friction="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="elbow_joint" type="revolute">
|
||||||
|
<parent link="upper_arm_link"/>
|
||||||
|
<child link="forearm_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.24355 0 0"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="28.0" lower="-3.141592653589793" upper="3.141592653589793" velocity="3.141592653589793"/>
|
||||||
|
<dynamics damping="0" friction="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="wrist_1_joint" type="revolute">
|
||||||
|
<parent link="forearm_link"/>
|
||||||
|
<child link="wrist_1_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.2132 0 0.13105"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="12.0" lower="-6.283185307179586" upper="6.283185307179586" velocity="6.283185307179586"/>
|
||||||
|
<dynamics damping="0" friction="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="wrist_2_joint" type="revolute">
|
||||||
|
<parent link="wrist_1_link"/>
|
||||||
|
<child link="wrist_2_link"/>
|
||||||
|
<origin rpy="1.570796327 0 0" xyz="0 -0.08535 -1.750557762378351e-11"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="12.0" lower="-6.283185307179586" upper="6.283185307179586" velocity="6.283185307179586"/>
|
||||||
|
<dynamics damping="0" friction="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="wrist_3_joint" type="revolute">
|
||||||
|
<parent link="wrist_2_link"/>
|
||||||
|
<child link="wrist_3_link"/>
|
||||||
|
<origin rpy="1.570796326589793 3.141592653589793 3.141592653589793" xyz="0 0.0921 -1.8890025766262e-11"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
<limit effort="12.0" lower="-6.283185307179586" upper="6.283185307179586" velocity="6.283185307179586"/>
|
||||||
|
<dynamics damping="0" friction="0"/>
|
||||||
|
</joint>
|
||||||
|
<link name="ft_frame"/>
|
||||||
|
<joint name="wrist_3_link-ft_frame" type="fixed">
|
||||||
|
<parent link="wrist_3_link"/>
|
||||||
|
<child link="ft_frame"/>
|
||||||
|
<origin rpy="3.141592653589793 0 0" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
<!-- ROS-Industrial 'base' frame - base_link to UR 'Base' Coordinates transform -->
|
||||||
|
<link name="base"/>
|
||||||
|
<joint name="base_link-base_fixed_joint" type="fixed">
|
||||||
|
<!-- Note the rotation over Z of pi radians - as base_link is REP-103
|
||||||
|
aligned (i.e., has X+ forward, Y+ left and Z+ up), this is needed
|
||||||
|
to correctly align 'base' with the 'Base' coordinate system of
|
||||||
|
the UR controller.
|
||||||
|
-->
|
||||||
|
<origin rpy="0 0 3.141592653589793" xyz="0 0 0"/>
|
||||||
|
<parent link="base_link"/>
|
||||||
|
<child link="base"/>
|
||||||
|
</joint>
|
||||||
|
<!-- ROS-Industrial 'flange' frame - attachment point for EEF models -->
|
||||||
|
<link name="flange"/>
|
||||||
|
<joint name="wrist_3-flange" type="fixed">
|
||||||
|
<parent link="wrist_3_link"/>
|
||||||
|
<child link="flange"/>
|
||||||
|
<origin rpy="0 -1.5707963267948966 -1.5707963267948966" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
<!-- ROS-Industrial 'tool0' frame - all-zeros tool frame -->
|
||||||
|
<link name="tool0"/>
|
||||||
|
<joint name="flange-tool0" type="fixed">
|
||||||
|
<!-- default toolframe - X+ left, Y+ up, Z+ front -->
|
||||||
|
<origin rpy="1.5707963267948966 0 1.5707963267948966" xyz="0 0 0"/>
|
||||||
|
<parent link="flange"/>
|
||||||
|
<child link="tool0"/>
|
||||||
|
</joint>
|
||||||
|
<ros2_control name="gripper" type="system">
|
||||||
|
<!-- Plugins -->
|
||||||
|
<hardware>
|
||||||
|
<plugin>robotiq_driver/RobotiqGripperHardwareInterface</plugin>
|
||||||
|
<param name="gripper_closed_position">0.695</param>
|
||||||
|
<param name="COM_port">/dev/ttyUSB0</param>
|
||||||
|
<param name="gripper_speed_multiplier">1.0</param>
|
||||||
|
<param name="gripper_force_multiplier">0.5</param>
|
||||||
|
</hardware>
|
||||||
|
<!-- Joint interfaces -->
|
||||||
|
<!-- With Ignition or Hardware, they handle mimic joints, so we only need this command interface activated -->
|
||||||
|
<joint name="finger_joint">
|
||||||
|
<command_interface name="position"/>
|
||||||
|
<state_interface name="position">
|
||||||
|
<param name="initial_value">0.695</param>
|
||||||
|
</state_interface>
|
||||||
|
<state_interface name="velocity"/>
|
||||||
|
</joint>
|
||||||
|
<gpio name="reactivate_gripper">
|
||||||
|
<command_interface name="reactivate_gripper_cmd"/>
|
||||||
|
<command_interface name="reactivate_gripper_response"/>
|
||||||
|
</gpio>
|
||||||
|
</ros2_control>
|
||||||
|
<!-- this is a temporary link to rotate the 2f-140 gripper to match the 2f-85 -->
|
||||||
|
<link name="robotiq_base_link"/>
|
||||||
|
<joint name="robotiq_base_joint" type="fixed">
|
||||||
|
<parent link="ft_frame"/>
|
||||||
|
<child link="robotiq_base_link"/>
|
||||||
|
<origin rpy="0 0 1.5707963267948966" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
<link name="robotiq_140_base_link">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="8.625E-08 -4.6583E-06 0.03145"/>
|
||||||
|
<mass value="0.22652"/>
|
||||||
|
<inertia ixx="0.00020005" ixy="-4.2442E-10" ixz="-2.9069E-10" iyy="0.00017832" iyz="-3.4402E-08" izz="0.00013478"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_base_link.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.1 0.1 0.1 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_base_link.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<joint name="robotiq_140_base_joint" type="fixed">
|
||||||
|
<parent link="robotiq_base_link"/>
|
||||||
|
<child link="robotiq_140_base_link"/>
|
||||||
|
<origin rpy="3.141592653589793 0 0" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
<link name="left_outer_knuckle">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.000200000000003065 0.0199435877845359 0.0292245259211331"/>
|
||||||
|
<mass value="0.00853198276973456"/>
|
||||||
|
<inertia ixx="2.89328108496468E-06" ixy="-1.57935047237397E-19" ixz="-1.93980378593255E-19" iyy="1.86719750325683E-06" iyz="-1.21858577871576E-06" izz="1.21905238907251E-06"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_outer_knuckle.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.792156862745098 0.819607843137255 0.933333333333333 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_outer_knuckle.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="left_outer_finger">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.00030115855001899 0.0373907951953854 -0.0208027427000385"/>
|
||||||
|
<mass value="0.022614240507152"/>
|
||||||
|
<inertia ixx="1.52518312458174E-05" ixy="9.76583423954399E-10" ixz="-5.43838577022588E-10" iyy="6.17694243867776E-06" iyz="6.78636130740228E-06" izz="1.16494917907219E-05"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_outer_finger.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.1 0.1 0.1 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_outer_finger.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="left_inner_finger">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.000299999999999317 0.0160078233491243 -0.0136945669206257"/>
|
||||||
|
<mass value="0.0104003125914103"/>
|
||||||
|
<inertia ixx="2.71909453810972E-06" ixy="1.35402465472579E-21" ixz="-7.1817349065269E-22" iyy="7.69100314106116E-07" iyz="6.74715432769696E-07" izz="2.30315190420171E-06"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_inner_finger.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.1 0.1 0.1 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_inner_finger.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="left_inner_finger_pad">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.027 0.065 0.0075"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.9 0.9 0.9 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.03 0.07 0.0075"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.9 0.0 0.0 1"/>
|
||||||
|
</material>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="left_inner_knuckle">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.000123011831763771 0.0507850843201817 0.00103968640075166"/>
|
||||||
|
<mass value="0.0271177346495152"/>
|
||||||
|
<inertia ixx="2.61910379223783E-05" ixy="-2.43616858946494E-07" ixz="-6.37789906117123E-09" iyy="2.8270243746167E-06" iyz="-5.37200748039765E-07" izz="2.83695868220296E-05"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_inner_knuckle.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.1 0.1 0.1 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_inner_knuckle.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="right_outer_knuckle">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="-0.000200000000003065 0.0199435877845359 0.0292245259211331"/>
|
||||||
|
<mass value="0.00853198276973456"/>
|
||||||
|
<inertia ixx="2.89328108496468E-06" ixy="-1.57935047237397E-19" ixz="-1.93980378593255E-19" iyy="1.86719750325683E-06" iyz="-1.21858577871576E-06" izz="1.21905238907251E-06"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_outer_knuckle.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.792156862745098 0.819607843137255 0.933333333333333 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_outer_knuckle.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="right_outer_finger">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.00030115855001899 0.0373907951953854 -0.0208027427000385"/>
|
||||||
|
<mass value="0.022614240507152"/>
|
||||||
|
<inertia ixx="1.52518312458174E-05" ixy="9.76583423954399E-10" ixz="-5.43838577022588E-10" iyy="6.17694243867776E-06" iyz="6.78636130740228E-06" izz="1.16494917907219E-05"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_outer_finger.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.1 0.1 0.1 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_outer_finger.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="right_inner_finger">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.000299999999999317 0.0160078233491243 -0.0136945669206257"/>
|
||||||
|
<mass value="0.0104003125914103"/>
|
||||||
|
<inertia ixx="2.71909453810972E-06" ixy="1.35402465472579E-21" ixz="-7.1817349065269E-22" iyy="7.69100314106116E-07" iyz="6.74715432769696E-07" izz="2.30315190420171E-06"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_inner_finger.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.1 0.1 0.1 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_inner_finger.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="right_inner_finger_pad">
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.027 0.065 0.0075"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.9 0.9 0.9 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<box size="0.03 0.07 0.0075"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.9 0.0 0.0 1"/>
|
||||||
|
</material>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<link name="right_inner_knuckle">
|
||||||
|
<inertial>
|
||||||
|
<origin rpy="0 0 0" xyz="0.000123011831763771 0.0507850843201817 0.00103968640075166"/>
|
||||||
|
<mass value="0.0271177346495152"/>
|
||||||
|
<inertia ixx="2.61910379223783E-05" ixy="-2.43616858946494E-07" ixz="-6.37789906117123E-09" iyy="2.8270243746167E-06" iyz="-5.37200748039765E-07" izz="2.83695868220296E-05"/>
|
||||||
|
</inertial>
|
||||||
|
<visual>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/visual/2f_140/robotiq_2f_140_inner_knuckle.stl"/>
|
||||||
|
</geometry>
|
||||||
|
<material name="">
|
||||||
|
<color rgba="0.1 0.1 0.1 1"/>
|
||||||
|
</material>
|
||||||
|
</visual>
|
||||||
|
<collision>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
<geometry>
|
||||||
|
<mesh filename="file:///home/niko/PycharmProjects/ws_universal_robotics/install/robotiq_description/share/robotiq_description/meshes/collision/2f_140/robotiq_2f_140_inner_knuckle.stl"/>
|
||||||
|
</geometry>
|
||||||
|
</collision>
|
||||||
|
</link>
|
||||||
|
<joint name="finger_joint" type="revolute">
|
||||||
|
<origin rpy="2.2957963267948966 0 0" xyz="0 -0.030601 0.054905"/>
|
||||||
|
<parent link="robotiq_140_base_link"/>
|
||||||
|
<child link="left_outer_knuckle"/>
|
||||||
|
<axis xyz="-1 0 0"/>
|
||||||
|
<limit effort="1000" lower="0" upper="0.7" velocity="2.0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="left_outer_finger_joint" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.01821998610742 0.0260018192872234"/>
|
||||||
|
<parent link="left_outer_knuckle"/>
|
||||||
|
<child link="left_outer_finger"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="left_inner_knuckle_joint" type="revolute">
|
||||||
|
<origin rpy="2.2957963267948966 0 0.0" xyz="0 -0.0127 0.06142"/>
|
||||||
|
<parent link="robotiq_140_base_link"/>
|
||||||
|
<child link="left_inner_knuckle"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<limit effort="1000" lower="-0.8757" upper="0.8757" velocity="2.0"/>
|
||||||
|
<mimic joint="finger_joint" multiplier="-1" offset="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="left_inner_finger_joint" type="revolute">
|
||||||
|
<origin rpy="-0.725 0 0" xyz="0 0.0817554015893473 -0.0282203446692936"/>
|
||||||
|
<parent link="left_outer_finger"/>
|
||||||
|
<child link="left_inner_finger"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<limit effort="1000" lower="-0.8757" upper="0.8757" velocity="2.0"/>
|
||||||
|
<mimic joint="finger_joint" multiplier="1" offset="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="left_inner_finger_pad_joint" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.0457554015893473 -0.0272203446692936"/>
|
||||||
|
<parent link="left_inner_finger"/>
|
||||||
|
<child link="left_inner_finger_pad"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="right_outer_knuckle_joint" type="revolute">
|
||||||
|
<origin rpy="2.2957963267948966 0 3.141592653589793" xyz="0 0.030601 0.054905"/>
|
||||||
|
<parent link="robotiq_140_base_link"/>
|
||||||
|
<child link="right_outer_knuckle"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<limit effort="1000" lower="-0.725" upper="0.725" velocity="2.0"/>
|
||||||
|
<mimic joint="finger_joint" multiplier="-1" offset="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="right_outer_finger_joint" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.01821998610742 0.0260018192872234"/>
|
||||||
|
<parent link="right_outer_knuckle"/>
|
||||||
|
<child link="right_outer_finger"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="right_inner_knuckle_joint" type="revolute">
|
||||||
|
<origin rpy="2.2957963267948966 0 -3.141592653589793" xyz="0 0.0127 0.06142"/>
|
||||||
|
<parent link="robotiq_140_base_link"/>
|
||||||
|
<child link="right_inner_knuckle"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<limit effort="1000" lower="-0.8757" upper="0.8757" velocity="2.0"/>
|
||||||
|
<mimic joint="finger_joint" multiplier="-1" offset="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="right_inner_finger_joint" type="revolute">
|
||||||
|
<origin rpy="-0.725 0 0" xyz="0 0.0817554015893473 -0.0282203446692936"/>
|
||||||
|
<parent link="right_outer_finger"/>
|
||||||
|
<child link="right_inner_finger"/>
|
||||||
|
<axis xyz="1 0 0"/>
|
||||||
|
<limit effort="1000" lower="-0.8757" upper="0.8757" velocity="2.0"/>
|
||||||
|
<mimic joint="finger_joint" multiplier="1" offset="0"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="right_inner_finger_pad_joint" type="fixed">
|
||||||
|
<origin rpy="0 0 0" xyz="0 0.0457554015893473 -0.0272203446692936"/>
|
||||||
|
<parent link="right_inner_finger"/>
|
||||||
|
<child link="right_inner_finger_pad"/>
|
||||||
|
<axis xyz="0 0 1"/>
|
||||||
|
</joint>
|
||||||
|
<joint name="ft_frame-gripper" type="fixed">
|
||||||
|
<parent link="ft_frame"/>
|
||||||
|
<child link="robotiq_base_link"/>
|
||||||
|
<origin rpy="0 0 0" xyz="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
</robot>
|
110
src/ur_robotiq_description/urdf/ur_robotiq.urdf.xacro
Normal file
110
src/ur_robotiq_description/urdf/ur_robotiq.urdf.xacro
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="ur3e_robotiq">
|
||||||
|
|
||||||
|
<!-- parameters -->
|
||||||
|
<xacro:arg name="name" default="ur_arm"/>
|
||||||
|
<!-- import main macro -->
|
||||||
|
<xacro:include filename="$(find ur_description)/urdf/ur_macro.xacro"/>
|
||||||
|
<xacro:include filename="$(find robotiq_description)/urdf/robotiq_2f_140_macro.urdf.xacro" />
|
||||||
|
|
||||||
|
<!-- possible 'ur_type' values: ur3, ur3e, ur5, ur5e, ur10, ur10e, ur16e, ur20 -->
|
||||||
|
<!-- the default value should raise an error in case this was called without defining the type -->
|
||||||
|
<xacro:arg name="ur_type" default="ur3e"/>
|
||||||
|
|
||||||
|
<!-- parameters -->
|
||||||
|
<xacro:arg name="tf_prefix" default="" />
|
||||||
|
<xacro:arg name="joint_limit_params" default="$(find ur_description)/config/$(arg ur_type)/joint_limits.yaml"/>
|
||||||
|
<xacro:arg name="kinematics_params" default="$(find ur_description)/config/$(arg ur_type)/default_kinematics.yaml"/>
|
||||||
|
<xacro:arg name="physical_params" default="$(find ur_description)/config/$(arg ur_type)/physical_parameters.yaml"/>
|
||||||
|
<xacro:arg name="visual_params" default="$(find ur_description)/config/$(arg ur_type)/visual_parameters.yaml"/>
|
||||||
|
<xacro:arg name="transmission_hw_interface" default=""/>
|
||||||
|
<xacro:arg name="safety_limits" default="false"/>
|
||||||
|
<xacro:arg name="safety_pos_margin" default="0.15"/>
|
||||||
|
<xacro:arg name="safety_k_position" default="20"/>
|
||||||
|
<!-- ros2_control related parameters -->
|
||||||
|
<xacro:arg name="headless_mode" default="false" />
|
||||||
|
<xacro:arg name="robot_ip" default="0.0.0.0" />
|
||||||
|
<xacro:arg name="script_filename" default=""/>
|
||||||
|
<xacro:arg name="output_recipe_filename" default=""/>
|
||||||
|
<xacro:arg name="input_recipe_filename" default=""/>
|
||||||
|
<xacro:arg name="reverse_ip" default="0.0.0.0"/>
|
||||||
|
<xacro:arg name="script_command_port" default="50004"/>
|
||||||
|
<xacro:arg name="reverse_port" default="50001"/>
|
||||||
|
<xacro:arg name="script_sender_port" default="50002"/>
|
||||||
|
<xacro:arg name="trajectory_port" default="50003"/>
|
||||||
|
<!-- tool communication related parameters-->
|
||||||
|
<xacro:arg name="use_tool_communication" default="false" />
|
||||||
|
<xacro:arg name="tool_voltage" default="0" />
|
||||||
|
<xacro:arg name="tool_parity" default="0" />
|
||||||
|
<xacro:arg name="tool_baud_rate" default="115200" />
|
||||||
|
<xacro:arg name="tool_stop_bits" default="1" />
|
||||||
|
<xacro:arg name="tool_rx_idle_chars" default="1.5" />
|
||||||
|
<xacro:arg name="tool_tx_idle_chars" default="3.5" />
|
||||||
|
<xacro:arg name="tool_device_name" default="/tmp/ttyUR" />
|
||||||
|
<xacro:arg name="tool_tcp_port" default="54321" />
|
||||||
|
|
||||||
|
<!-- Simulation parameters -->
|
||||||
|
<xacro:arg name="use_fake_hardware" default="false" />
|
||||||
|
<xacro:arg name="fake_sensor_commands" default="false" />
|
||||||
|
<xacro:arg name="sim_gazebo" default="false" />
|
||||||
|
<xacro:arg name="sim_ignition" default="false" />
|
||||||
|
<xacro:arg name="simulation_controllers" default="" />
|
||||||
|
|
||||||
|
<!-- initial position for simulations (Fake Hardware, Gazebo, Ignition) -->
|
||||||
|
<xacro:arg name="initial_positions_file" default="$(find ur_description)/config/initial_positions.yaml"/>
|
||||||
|
|
||||||
|
<!-- convert to property to use substitution in function -->
|
||||||
|
<xacro:property name="initial_positions_file" default="$(arg initial_positions_file)"/>
|
||||||
|
|
||||||
|
<link name="world"/>
|
||||||
|
<xacro:ur_robot
|
||||||
|
name="$(arg name)"
|
||||||
|
tf_prefix="$(arg tf_prefix)"
|
||||||
|
parent="world"
|
||||||
|
joint_limits_parameters_file="$(arg joint_limit_params)"
|
||||||
|
kinematics_parameters_file="$(arg kinematics_params)"
|
||||||
|
physical_parameters_file="$(arg physical_params)"
|
||||||
|
visual_parameters_file="$(arg visual_params)"
|
||||||
|
transmission_hw_interface="$(arg transmission_hw_interface)"
|
||||||
|
safety_limits="$(arg safety_limits)"
|
||||||
|
safety_pos_margin="$(arg safety_pos_margin)"
|
||||||
|
safety_k_position="$(arg safety_k_position)"
|
||||||
|
use_fake_hardware="$(arg use_fake_hardware)"
|
||||||
|
fake_sensor_commands="$(arg fake_sensor_commands)"
|
||||||
|
sim_gazebo="$(arg sim_gazebo)"
|
||||||
|
sim_ignition="$(arg sim_ignition)"
|
||||||
|
headless_mode="$(arg headless_mode)"
|
||||||
|
initial_positions="${xacro.load_yaml(initial_positions_file)}"
|
||||||
|
use_tool_communication="$(arg use_tool_communication)"
|
||||||
|
tool_voltage="$(arg tool_voltage)"
|
||||||
|
tool_parity="$(arg tool_parity)"
|
||||||
|
tool_baud_rate="$(arg tool_baud_rate)"
|
||||||
|
tool_stop_bits="$(arg tool_stop_bits)"
|
||||||
|
tool_rx_idle_chars="$(arg tool_rx_idle_chars)"
|
||||||
|
tool_tx_idle_chars="$(arg tool_tx_idle_chars)"
|
||||||
|
tool_device_name="$(arg tool_device_name)"
|
||||||
|
tool_tcp_port="$(arg tool_tcp_port)"
|
||||||
|
robot_ip="$(arg robot_ip)"
|
||||||
|
script_filename="$(arg script_filename)"
|
||||||
|
output_recipe_filename="$(arg output_recipe_filename)"
|
||||||
|
input_recipe_filename="$(arg input_recipe_filename)"
|
||||||
|
reverse_ip="$(arg reverse_ip)"
|
||||||
|
script_command_port="$(arg script_command_port)"
|
||||||
|
reverse_port="$(arg reverse_port)"
|
||||||
|
script_sender_port="$(arg script_sender_port)"
|
||||||
|
trajectory_port="$(arg trajectory_port)"
|
||||||
|
>
|
||||||
|
<origin xyz="0 0 0" rpy="0 0 0" /> <!-- position robot in the world -->
|
||||||
|
</xacro:ur_robot>
|
||||||
|
|
||||||
|
<xacro:robotiq_gripper name="gripper" prefix="" parent="ft_frame" use_fake_hardware="$(arg use_fake_hardware)">
|
||||||
|
<origin xyz="0 0 0" rpy="3.141592653589793 0 0" />
|
||||||
|
</xacro:robotiq_gripper>
|
||||||
|
|
||||||
|
<joint name="ft_frame-gripper" type="fixed">
|
||||||
|
<parent link="ft_frame"/>
|
||||||
|
<child link="robotiq_base_link"/>
|
||||||
|
<origin xyz="0 0 0" rpy="0 0 0"/>
|
||||||
|
</joint>
|
||||||
|
|
||||||
|
</robot>
|
Loading…
Reference in New Issue
Block a user