robot customization in one script!
This commit is contained in:
parent
5cbdf490ad
commit
028279998c
22
README.md
22
README.md
@ -50,10 +50,18 @@ By default, it allows to hold a M6 threaded rod aligned with the wrist rotation
|
|||||||
according to your needs.
|
according to your needs.
|
||||||
|
|
||||||
### Software modifications
|
### Software modifications
|
||||||
Once the physical modification of the robotic arm has been completed, several files need to be updated to use ROS 2 with the new arm.
|
Once the Hardware modification has been completed, several files need to be updated in interbotix packages to use the new arm, named `ẁx250s_custom`. To do so, run the `install.sh` script as follows:
|
||||||
The default arm name is `wx250s` and one will create a new arm configuration `wx250s_custom`. To do so:
|
```
|
||||||
1. Copy the file [/wx250s_custom/xs_common.py] to `~/interbotix_ws/install/interbotix_xs_modules/lib/python3.10/site-packages/interbotix_xs_modules/xs_common/xs_common.py`.
|
./install.sh
|
||||||
2. Copy the file [/wx250s_custom/wx250s_custom.urdf.xacro](http://sekisushai.net/git/sekisushai/small/src/branch/master/wx250s_custom/wx250s_custom.urdf.xacro) to `~/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_descriptions/urdf/`.
|
```
|
||||||
3. Copy the file [/wx250s_custom/wx250s_custom.yaml]() to `~/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_control/config/wx250s_custom.yaml`
|
The script ask several infos to update the interbotix packages files. Also, the kinematics matrices `M` and `Slist` are computed. These matrices are needed by the Python API which will drive the robotic arm.
|
||||||
4. Copy the folder [/wx250s_custom/wx259s_custom_meshes]() to `~/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_descriptions/meshes/`
|
|
||||||
10. Run command `colcon build` in folder `~/interbotix_ws/`
|
|
||||||
|
```
|
||||||
|
ros2 launch interbotix_xsarm_descriptions xsarm_description.launch.py robot_model:=wx250s_custom use_joint_pub_gui:=true
|
||||||
|
```
|
||||||
|
You should see this:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
###
|
||||||
|
50
wx250s_custom/install.sh
Executable file
50
wx250s_custom/install.sh
Executable file
@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Tweak the default interbotix_ws install to add a customized robot wx250s_custom
|
||||||
|
|
||||||
|
read -p "Enter the interbotix packages installation path [default: ~/interbotix_ws]:" DIR
|
||||||
|
DIR=${DIR:-~/interbotix_ws}
|
||||||
|
|
||||||
|
cp xs_common.py "$DIR/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_modules/interbotix_xs_modules/xs_common/"
|
||||||
|
cp wx250s_custom.yaml "$DIR/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_control/config/"
|
||||||
|
cp -r wx250s_custom_meshes "$DIR/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_descriptions/meshes/"
|
||||||
|
|
||||||
|
VAR=`awk 'NR==451{ print; exit }' wx250s_custom.urdf.xacro`
|
||||||
|
VAR=`awk -F'"' '{print $2}' <<< $VAR`
|
||||||
|
|
||||||
|
read -p "Enter the coordinate between wrist_rotate joint and SMA center in m [default: ${VAR}]:" COORD
|
||||||
|
COORD=${COORD:-${VAR}}
|
||||||
|
|
||||||
|
cp wx250s_custom.urdf.xacro wx250s_custom.urdf.xacro~
|
||||||
|
|
||||||
|
sed -i "451s/$VAR/$COORD/" wx250s_custom.urdf.xacro~
|
||||||
|
|
||||||
|
# convert to urdf file needed for kinematic_from_description package
|
||||||
|
ros2 run xacro xacro wx250s_custom.urdf.xacro~ > out.urdf
|
||||||
|
|
||||||
|
# move the urdf.xacro file
|
||||||
|
mv wx250s_custom.urdf.xacro~ "$DIR/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_descriptions/urdf/wx250s_custom.urdf.xacro"
|
||||||
|
|
||||||
|
#
|
||||||
|
git clone https://github.com/Interbotix/kinematics_from_description.git
|
||||||
|
cd kinematics_from_description
|
||||||
|
python setup.py install --user
|
||||||
|
cd ..
|
||||||
|
rm -rf kinematics_from_description
|
||||||
|
|
||||||
|
cp mr_descriptions.py mr_descriptions.py~
|
||||||
|
|
||||||
|
python kinematics.py
|
||||||
|
|
||||||
|
mv mr_descriptions.py "$DIR/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_modules/interbotix_xs_modules/xs_robot/"
|
||||||
|
|
||||||
|
mv mr_descriptions.py~ mr_descriptions.py
|
||||||
|
|
||||||
|
rm out.urdf
|
||||||
|
|
||||||
|
cd $DIR
|
||||||
|
|
||||||
|
rm -rf build
|
||||||
|
rm -rf install
|
||||||
|
|
||||||
|
colcon build
|
37
wx250s_custom/kinematics.py
Normal file
37
wx250s_custom/kinematics.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
Created on Fri Apr 7 15:38:46 2023
|
||||||
|
|
||||||
|
@author: Pierre Lecomte
|
||||||
|
"""
|
||||||
|
import numpy as np
|
||||||
|
from kinematics_from_description.kfd import KinematicsFromDescriptionTool as KFD
|
||||||
|
|
||||||
|
tool = KFD(
|
||||||
|
{
|
||||||
|
"body_frame": "sma_link",
|
||||||
|
"space_frame": "base_link",
|
||||||
|
"namespace": "wx250s_custom",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
tool.load_desc_from_file('out.urdf')
|
||||||
|
tool.run()
|
||||||
|
|
||||||
|
print("Slist:")
|
||||||
|
print(tool.Slist.T)
|
||||||
|
|
||||||
|
print("M:")
|
||||||
|
print(tool.M)
|
||||||
|
|
||||||
|
x = f"""class wx250s_custom(ModernRoboticsDescription):
|
||||||
|
Slist = np.array(
|
||||||
|
{np.array2string(tool.Slist.T, separator=',')}
|
||||||
|
).T
|
||||||
|
|
||||||
|
M = np.array({np.array2string(tool.M, separator=',')})
|
||||||
|
"""
|
||||||
|
|
||||||
|
with open("mr_descriptions.py","a") as f:
|
||||||
|
f.writelines(x)
|
12
wx250s_custom/matrices.txt
Normal file
12
wx250s_custom/matrices.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Slist:
|
||||||
|
[[ 0. 0. 1. 0. 0. 0. ]
|
||||||
|
[ 0. 1. 0. -0.11065 0. 0. ]
|
||||||
|
[ 0. 1. 0. -0.36065 0. 0.04975]
|
||||||
|
[ 1. 0. 0. 0. 0.36065 0. ]
|
||||||
|
[ 0. 1. 0. -0.36065 0. 0.29975]
|
||||||
|
[ 1. 0. 0. 0. 0.36065 0. ]]
|
||||||
|
M:
|
||||||
|
[[1. 0. 0. 0.49275]
|
||||||
|
[0. 1. 0. 0. ]
|
||||||
|
[0. 0. 1. 0.36065]
|
||||||
|
[0. 0. 0. 1. ]]
|
233
wx250s_custom/mr_descriptions.py
Normal file
233
wx250s_custom/mr_descriptions.py
Normal file
@ -0,0 +1,233 @@
|
|||||||
|
# Copyright 2022 Trossen Robotics
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
#
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# * Neither the name of the copyright holder nor the names of its
|
||||||
|
# contributors may be used to endorse or promote products derived from
|
||||||
|
# this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
||||||
|
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
"""
|
||||||
|
Modern Robotics Descriptions for all Interbotix X-Series Arms.
|
||||||
|
|
||||||
|
This module contains properties required by the Modern Robotics library to perform
|
||||||
|
kinematic calculations such as the Joint Screw Axes and Home Configuration for each
|
||||||
|
X-Series robot.
|
||||||
|
|
||||||
|
Note that the end-effector is positioned at '<robot_name>/ee_gripper_link' and that the
|
||||||
|
Space frame is positioned at '<robot_name>/base_link'.
|
||||||
|
|
||||||
|
To calculate your own MR Description, check out the kinematics_from_description package:
|
||||||
|
https://github.com/Interbotix/kinematics_from_description
|
||||||
|
"""
|
||||||
|
|
||||||
|
from abc import ABC
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
|
||||||
|
class ModernRoboticsDescription(ABC):
|
||||||
|
"""
|
||||||
|
Abstract base class for other MR Description classes.
|
||||||
|
|
||||||
|
Derived classes should override the Slist and M member variables.
|
||||||
|
"""
|
||||||
|
|
||||||
|
Slist: np.ndarray = None
|
||||||
|
"""
|
||||||
|
Joint screw axes in the space frame when the manipulator is at the home position, in the format
|
||||||
|
of a matrix with axes as the columns
|
||||||
|
"""
|
||||||
|
|
||||||
|
M: np.ndarray = None
|
||||||
|
"""The home configuration (position and orientation) of the end-effector"""
|
||||||
|
|
||||||
|
|
||||||
|
class px100(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.0931, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.1931, 0.0, 0.035],
|
||||||
|
[0.0, 1.0, 0.0, -0.1931, 0.0, 0.135]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.248575],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.1931],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class px150(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.10457, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.25457, 0.0, 0.05],
|
||||||
|
[0.0, 1.0, 0.0, -0.25457, 0.0, 0.2],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.25457, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.358575],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.25457],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class rx150(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.10457, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.25457, 0.0, 0.05],
|
||||||
|
[0.0, 1.0, 0.0, -0.25457, 0.0, 0.2],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.25457, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.358575],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.25457],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class rx200(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.10457, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.30457, 0.0, 0.05],
|
||||||
|
[0.0, 1.0, 0.0, -0.30457, 0.0, 0.25],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.30457, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.408575],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.30457],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class vx250(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.12705, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.37705, 0.0, 0.06],
|
||||||
|
[0.0, 1.0, 0.0, -0.37705, 0.0, 0.31],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.37705, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.468575],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.37705],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class vx300(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.12705, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.42705, 0.0, 0.05955],
|
||||||
|
[0.0, 1.0, 0.0, -0.42705, 0.0, 0.35955],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.42705, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.536494],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.42705],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class vx300s(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.12705, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.42705, 0.0, 0.05955],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.42705, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.42705, 0.0, 0.35955],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.42705, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.536494],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.42705],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class wx200(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.11065, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.31065, 0.0, 0.05],
|
||||||
|
[0.0, 1.0, 0.0, -0.31065, 0.0, 0.25],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.31065, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.408575],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.31065],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class wx250(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.11065, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.36065, 0.0, 0.04975],
|
||||||
|
[0.0, 1.0, 0.0, -0.36065, 0.0, 0.29975],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.36065, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.458325],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.36065],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class wx250s(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.11065, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.36065, 0.0, 0.04975],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.36065, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.36065, 0.0, 0.29975],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.36065, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.458325],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.36065],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class mobile_px100(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.08518, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.18518, 0.0, 0.035],
|
||||||
|
[0.0, 1.0, 0.0, -0.18518, 0.0, 0.135]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.248575],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.18518],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class mobile_wx200(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.104825, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.304825, 0.0, 0.05],
|
||||||
|
[0.0, 1.0, 0.0, -0.304825, 0.0, 0.25],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.304825, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.408575],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.304825],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
||||||
|
|
||||||
|
class mobile_wx250s(ModernRoboticsDescription):
|
||||||
|
Slist = np.array([[0.0, 0.0, 1.0, 0.0, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.104825, 0.0, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.354825, 0.0, 0.04975],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.354825, 0.0],
|
||||||
|
[0.0, 1.0, 0.0, -0.354825, 0.0, 0.29975],
|
||||||
|
[1.0, 0.0, 0.0, 0.0, 0.354825, 0.0]]).T
|
||||||
|
|
||||||
|
M = np.array([[1.0, 0.0, 0.0, 0.458325],
|
||||||
|
[0.0, 1.0, 0.0, 0.0],
|
||||||
|
[0.0, 0.0, 1.0, 0.354825],
|
||||||
|
[0.0, 0.0, 0.0, 1.0]])
|
||||||
|
|
BIN
wx250s_custom/rviz.png
Normal file
BIN
wx250s_custom/rviz.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 192 KiB |
@ -1,700 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<robot name="wx250s_custom" xmlns:xacro="http://ros.org/wiki/xacro">
|
|
||||||
|
|
||||||
<material name="interbotix_black">
|
|
||||||
<texture filename="package://interbotix_xsarm_descriptions/meshes/interbotix_black.png"/>
|
|
||||||
</material>
|
|
||||||
|
|
||||||
|
|
||||||
<link name="world"/>
|
|
||||||
<joint name="fixed" type="fixed">
|
|
||||||
<parent
|
|
||||||
link="world"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/base_link"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
|
|
||||||
<link name="wx250s_custom/base_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/base.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/base.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="-0.0380446000 0.0006138920 0.0193354000"/>
|
|
||||||
<mass value="0.538736"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0021150000"
|
|
||||||
iyy="0.0006921000"
|
|
||||||
izz="0.0025240000"
|
|
||||||
ixy="-0.0000163500"
|
|
||||||
ixz="0.0000006998"
|
|
||||||
iyz="0.0000464200"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="waist" type="revolute">
|
|
||||||
<axis xyz="0 0 1"/>
|
|
||||||
<limit
|
|
||||||
effort="10"
|
|
||||||
lower="-3.141582653589793"
|
|
||||||
upper="3.141582653589793"
|
|
||||||
velocity="3.141592653589793"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0 0 0.072"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/base_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/shoulder_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/shoulder_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0 0 -0.003"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/shoulder.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0 0 -0.003"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/shoulder.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0.0000223482 0.0000414609 0.0066287000"/>
|
|
||||||
<mass value="0.480879"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0003790000"
|
|
||||||
iyy="0.0005557000"
|
|
||||||
izz="0.0005889000"
|
|
||||||
ixy="0.0000000022"
|
|
||||||
ixz="-0.0000003561"
|
|
||||||
iyz="0.0000012245"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="shoulder" type="revolute">
|
|
||||||
<axis xyz="0 1 0"/>
|
|
||||||
<limit
|
|
||||||
effort="20"
|
|
||||||
lower="-1.8849555921538759"
|
|
||||||
upper="-1.9896753472735356"
|
|
||||||
velocity="3.141592653589793"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0 0 0.03865"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/shoulder_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/upper_arm_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/upper_arm_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/upper_arm.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/upper_arm.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0.0171605000 0.0000002725 0.1913230000"/>
|
|
||||||
<mass value="0.430811"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0034630000"
|
|
||||||
iyy="0.0035870000"
|
|
||||||
izz="0.0004566000"
|
|
||||||
ixy="-0.0000000001"
|
|
||||||
ixz="-0.0000000002"
|
|
||||||
iyz="0.0004272000"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="elbow" type="revolute">
|
|
||||||
<axis xyz="0 1 0"/>
|
|
||||||
<limit
|
|
||||||
effort="15"
|
|
||||||
lower="-2.1467549799530254"
|
|
||||||
upper="1.605702911834783"
|
|
||||||
velocity="3.141592653589793"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.04975 0 0.25"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/upper_arm_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/upper_forearm_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/upper_forearm_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/upper_forearm.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/upper_forearm.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.1079630000 0.0001158760 0"/>
|
|
||||||
<mass value="0.234589"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0000397100"
|
|
||||||
iyy="0.0008878000"
|
|
||||||
izz="0.0008880000"
|
|
||||||
ixy="0.0000023528"
|
|
||||||
ixz="0"
|
|
||||||
iyz="0"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="forearm_roll" type="revolute">
|
|
||||||
<axis xyz="1 0 0"/>
|
|
||||||
<limit
|
|
||||||
effort="2"
|
|
||||||
lower="-3.141582653589793"
|
|
||||||
upper="3.141582653589793"
|
|
||||||
velocity="3.141592653589793"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.175 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/upper_forearm_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/lower_forearm_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/lower_forearm_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="3.141592653589793 0 0"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/lower_forearm.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="3.141592653589793 0 0"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/lower_forearm.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="3.141592653589793 0 0"
|
|
||||||
xyz="0.0374395000 0.0052225200 0"/>
|
|
||||||
<mass value="0.220991"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0000636900"
|
|
||||||
iyy="0.0001677000"
|
|
||||||
izz="0.0001834000"
|
|
||||||
ixy="-0.0000229200"
|
|
||||||
ixz="0"
|
|
||||||
iyz="0"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="wrist_angle" type="revolute">
|
|
||||||
<axis xyz="0 1 0"/>
|
|
||||||
<limit
|
|
||||||
effort="5"
|
|
||||||
lower="-1.7453292519943295"
|
|
||||||
upper="2.1467549799530254"
|
|
||||||
velocity="3.141592653589793"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.075 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/lower_forearm_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/wrist_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/wrist_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/wrist.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/wrist.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0.0423600000 -0.0000106630 0.0105770000"/>
|
|
||||||
<mass value="0.084957"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0000308200"
|
|
||||||
iyy="0.0000282200"
|
|
||||||
izz="0.0000315200"
|
|
||||||
ixy="0.0000000191"
|
|
||||||
ixz="0.0000000023"
|
|
||||||
iyz="0.0000025481"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<!-- Include the gripper if used -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<joint name="wrist_rotate" type="revolute">
|
|
||||||
<axis xyz="1 0 0"/>
|
|
||||||
<limit
|
|
||||||
effort="1"
|
|
||||||
lower="-3.141582653589793"
|
|
||||||
upper="3.141582653589793"
|
|
||||||
velocity="3.141592653589793"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.065 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/wrist_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/gripper_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/gripper_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="-0.02 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="-0.02 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0.0216310000 0.0000002516 0.0114100000"/>
|
|
||||||
<mass value="0.072885"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0000253700"
|
|
||||||
iyy="0.0000183600"
|
|
||||||
izz="0.0000167400"
|
|
||||||
ixy="0.0000000000"
|
|
||||||
ixz="0.0000000000"
|
|
||||||
iyz="0.0000004340"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="ee_arm" type="fixed">
|
|
||||||
<axis xyz="1 0 0"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.043 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/gripper_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/ee_arm_link"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/ee_arm_link">
|
|
||||||
<inertial>
|
|
||||||
<mass value="0.001"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.001"
|
|
||||||
iyy="0.001"
|
|
||||||
izz="0.001"
|
|
||||||
ixy="0"
|
|
||||||
ixz="0"
|
|
||||||
iyz="0"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="gripper" type="continuous">
|
|
||||||
<axis xyz="1 0 0"/>
|
|
||||||
<limit
|
|
||||||
effort="1"
|
|
||||||
velocity="3.141592653589793"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.0055 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/ee_arm_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/gripper_prop_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/gripper_prop_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="-0.0685 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper_prop.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="-0.0685 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper_prop.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0.0008460000 -0.0000016817 0.0000420000"/>
|
|
||||||
<mass value="0.00434"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0000005923"
|
|
||||||
iyy="0.0000011156"
|
|
||||||
izz="0.0000005743"
|
|
||||||
ixy="0.0000000000"
|
|
||||||
ixz="0.0000003195"
|
|
||||||
iyz="-0.0000000004"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<!-- If the AR tag is being used, then add the AR tag mount -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- If the gripper bar is being used, then also add the gripper bar -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<joint name="gripper_bar" type="fixed">
|
|
||||||
<axis xyz="1 0 0"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/ee_arm_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/gripper_bar_link"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/gripper_bar_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="-0.063 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper_bar.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="-0.063 0 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper_bar.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 1.5707963267948966"
|
|
||||||
xyz="0.0096870000 0.0000008177 0.0049620000"/>
|
|
||||||
<mass value="0.034199"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0000074125"
|
|
||||||
iyy="0.0000284300"
|
|
||||||
izz="0.0000286000"
|
|
||||||
ixy="-0.0000000008"
|
|
||||||
ixz="-0.0000000006"
|
|
||||||
iyz="-0.0000013889"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="ee_bar" type="fixed">
|
|
||||||
<axis xyz="1 0 0"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.023 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/gripper_bar_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/fingers_link"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/fingers_link">
|
|
||||||
<inertial>
|
|
||||||
<mass value="0.001"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.001"
|
|
||||||
iyy="0.001"
|
|
||||||
izz="0.001"
|
|
||||||
ixy="0"
|
|
||||||
ixz="0"
|
|
||||||
iyz="0"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<!-- If the gripper fingers are being used, add those as well -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<joint name="left_finger" type="prismatic">
|
|
||||||
<axis xyz="0 1 0"/>
|
|
||||||
<limit
|
|
||||||
effort="5"
|
|
||||||
lower="0.015"
|
|
||||||
upper="0.037"
|
|
||||||
velocity="1"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/fingers_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/left_finger_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/left_finger_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="3.141592653589793 3.141592653589793 0"
|
|
||||||
xyz="0 0.005 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper_finger.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="3.141592653589793 3.141592653589793 0"
|
|
||||||
xyz="0 0.005 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper_finger.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="3.141592653589793 3.141592653589793 1.5707963267948966"
|
|
||||||
xyz="0.0138160000 0.0000000000 0.0000000000"/>
|
|
||||||
<mass value="0.016246"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0000047310"
|
|
||||||
iyy="0.0000015506"
|
|
||||||
izz="0.0000037467"
|
|
||||||
ixy="-0.0000004560"
|
|
||||||
ixz="0.0000000000"
|
|
||||||
iyz="0.0000000000"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="right_finger" type="prismatic">
|
|
||||||
<axis xyz="0 1 0"/>
|
|
||||||
<limit
|
|
||||||
effort="5"
|
|
||||||
lower="-0.037"
|
|
||||||
upper="-0.015"
|
|
||||||
velocity="1"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/fingers_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/right_finger_link"/>
|
|
||||||
<dynamics
|
|
||||||
friction="0.1"
|
|
||||||
damping="0.1"/>
|
|
||||||
|
|
||||||
<mimic
|
|
||||||
joint="left_finger"
|
|
||||||
multiplier="-1"
|
|
||||||
offset="0"/>
|
|
||||||
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/right_finger_link">
|
|
||||||
<visual>
|
|
||||||
<origin
|
|
||||||
rpy="0 3.141592653589793 0"
|
|
||||||
xyz="0 -0.005 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper_finger.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
<material name="interbotix_black"/>
|
|
||||||
</visual>
|
|
||||||
<collision>
|
|
||||||
<origin
|
|
||||||
rpy="0 3.141592653589793 0"
|
|
||||||
xyz="0 -0.005 0"/>
|
|
||||||
<geometry>
|
|
||||||
<mesh
|
|
||||||
filename="${mesh_directory}/gripper_finger.stl"
|
|
||||||
scale="0.001 0.001 0.001"/>
|
|
||||||
</geometry>
|
|
||||||
</collision>
|
|
||||||
<inertial>
|
|
||||||
<origin
|
|
||||||
rpy="0 3.141592653589793 1.5707963267948966"
|
|
||||||
xyz="0.0138160000 0.0000000000 0.0000000000"/>
|
|
||||||
<mass value="0.016246"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.0000047310"
|
|
||||||
iyy="0.0000015506"
|
|
||||||
izz="0.0000037467"
|
|
||||||
ixy="0.0000004560"
|
|
||||||
ixz="0.0000000000"
|
|
||||||
iyz="0.0000000000"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
<joint name="ee_gripper" type="fixed">
|
|
||||||
<axis xyz="1 0 0"/>
|
|
||||||
<origin
|
|
||||||
rpy="0 0 0"
|
|
||||||
xyz="0.128 0 0"/>
|
|
||||||
<parent
|
|
||||||
link="wx250s_custom/fingers_link"/>
|
|
||||||
<child
|
|
||||||
link="wx250s_custom/ee_gripper_link"/>
|
|
||||||
</joint>
|
|
||||||
|
|
||||||
<link name="wx250s_custom/ee_gripper_link">
|
|
||||||
<inertial>
|
|
||||||
<mass value="0.001"/>
|
|
||||||
<inertia
|
|
||||||
ixx="0.001"
|
|
||||||
iyy="0.001"
|
|
||||||
izz="0.001"
|
|
||||||
ixy="0"
|
|
||||||
ixz="0"
|
|
||||||
iyz="0"/>
|
|
||||||
</inertial>
|
|
||||||
</link>
|
|
||||||
|
|
||||||
</robot>
|
|
@ -11,6 +11,7 @@
|
|||||||
<xacro:arg name="robot_name" default="${robot_model}"/>
|
<xacro:arg name="robot_name" default="${robot_model}"/>
|
||||||
<xacro:arg name="base_link_frame" default="base_link"/>
|
<xacro:arg name="base_link_frame" default="base_link"/>
|
||||||
<xacro:arg name="use_world_frame" default="true"/>
|
<xacro:arg name="use_world_frame" default="true"/>
|
||||||
|
<xacro:arg name="use_gripper" default="false"/>
|
||||||
<xacro:arg name="external_urdf_loc" default=""/>
|
<xacro:arg name="external_urdf_loc" default=""/>
|
||||||
<xacro:arg name="hardware_type" default="actual"/>
|
<xacro:arg name="hardware_type" default="actual"/>
|
||||||
|
|
||||||
@ -487,9 +488,6 @@
|
|||||||
</inertial>
|
</inertial>
|
||||||
</link>
|
</link>
|
||||||
|
|
||||||
<xacro:include filename="$(find interbotix_xsarm_descriptions)/urdf/control.urdf.xacro"/>
|
|
||||||
<xacro:include filename="$(find interbotix_xsarm_descriptions)/urdf/gazebo_configs.urdf.xacro"/>
|
|
||||||
|
|
||||||
<xacro:if value="${hardware_type == 'gz_classic'}">
|
<xacro:if value="${hardware_type == 'gz_classic'}">
|
||||||
<xacro:gazebo_configs/>
|
<xacro:gazebo_configs/>
|
||||||
</xacro:if>
|
</xacro:if>
|
||||||
|
Loading…
Reference in New Issue
Block a user