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