├── robotiq_140_gripper_description ├── CMakeLists.txt ├── package.xml ├── urdf │ ├── robotiq_140_world.urdf.xacro │ ├── robotiq_140.urdf.xacro │ └── robotiq_140.urdf ├── visualize.rviz ├── rviz │ └── visualization.rviz └── meshes │ ├── robotiq_140_left_outer_knuckle.dae │ └── robotiq_140_right_outer_knuckle.dae ├── robotiq_85_gripper_description ├── CMakeLists.txt ├── package.xml ├── urdf │ ├── robotiq_85_world.urdf.xacro │ ├── robotiq_85.urdf.xacro │ └── robotiq_85.urdf ├── rviz │ └── visualization.rviz └── meshes │ └── 2-F-85_1_l.dae ├── robotiq_hande_gripper_description ├── CMakeLists.txt ├── package.xml ├── urdf │ ├── robotiq_hande_world.urdf.xacro │ ├── robotiq_hande.urdf.xacro │ └── robotiq_hande.urdf └── rviz │ └── visualization.rviz ├── robotiq_gazebo ├── CMakeLists.txt ├── package.xml ├── scripts │ ├── spawn_hande.py │ ├── spawn_robotiq85.py │ └── spawn_robotiq140.py └── launch │ ├── robotiq_140.launch.py │ ├── robotiq_hande.launch.py │ └── robotiq_85.launch.py ├── robotiq_gripper_gazebo_plugins ├── package.xml ├── CMakeLists.txt ├── include │ └── robotiq_gripper_gazebo_plugins │ │ ├── RobotiqGripperPlugin.h │ │ └── spline.hpp └── src │ ├── RobotiqGripperPlugin.cpp │ └── spline.cpp └── README.md /robotiq_140_gripper_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(robotiq_140_gripper_description) 3 | 4 | if(NOT CMAKE_CXX_STANDARD) 5 | set(CMAKE_CXX_STANDARD 14) 6 | endif() 7 | 8 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 9 | add_compile_options(-Wall -Wextra -Wpedantic) 10 | endif() 11 | 12 | find_package(ament_cmake REQUIRED) 13 | find_package(urdf REQUIRED) 14 | 15 | install(DIRECTORY meshes urdf rviz 16 | DESTINATION share/${PROJECT_NAME} 17 | ) 18 | 19 | ament_export_dependencies(xacro) 20 | ament_export_dependencies(urdf) 21 | ament_package() 22 | -------------------------------------------------------------------------------- /robotiq_85_gripper_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(robotiq_85_gripper_description) 3 | 4 | if(NOT CMAKE_CXX_STANDARD) 5 | set(CMAKE_CXX_STANDARD 14) 6 | endif() 7 | 8 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 9 | add_compile_options(-Wall -Wextra -Wpedantic) 10 | endif() 11 | 12 | find_package(ament_cmake REQUIRED) 13 | find_package(urdf REQUIRED) 14 | 15 | install(DIRECTORY meshes urdf rviz 16 | DESTINATION share/${PROJECT_NAME} 17 | ) 18 | 19 | ament_export_dependencies(xacro) 20 | ament_export_dependencies(urdf) 21 | ament_package() 22 | -------------------------------------------------------------------------------- /robotiq_hande_gripper_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(robotiq_hande_gripper_description) 3 | 4 | if(NOT CMAKE_CXX_STANDARD) 5 | set(CMAKE_CXX_STANDARD 14) 6 | endif() 7 | 8 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 9 | add_compile_options(-Wall -Wextra -Wpedantic) 10 | endif() 11 | 12 | find_package(ament_cmake REQUIRED) 13 | find_package(urdf REQUIRED) 14 | 15 | install(DIRECTORY meshes urdf rviz 16 | DESTINATION share/${PROJECT_NAME} 17 | ) 18 | 19 | ament_export_dependencies(xacro) 20 | ament_export_dependencies(urdf) 21 | ament_package() 22 | -------------------------------------------------------------------------------- /robotiq_gazebo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(robotiq_gazebo) 3 | 4 | if(NOT CMAKE_CXX_STANDARD) 5 | set(CMAKE_CXX_STANDARD 14) 6 | endif() 7 | 8 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") 9 | add_compile_options(-Wall -Wextra -Wpedantic) 10 | endif() 11 | 12 | find_package(ament_cmake REQUIRED) 13 | find_package(urdf REQUIRED) 14 | 15 | install(DIRECTORY launch 16 | DESTINATION share/${PROJECT_NAME} 17 | ) 18 | 19 | install( 20 | PROGRAMS 21 | scripts/spawn_hande.py 22 | scripts/spawn_robotiq85.py 23 | scripts/spawn_robotiq140.py 24 | DESTINATION lib/${PROJECT_NAME} 25 | ) 26 | 27 | ament_export_dependencies(xacro) 28 | ament_export_dependencies(urdf) 29 | ament_package() 30 | -------------------------------------------------------------------------------- /robotiq_gazebo/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | robotiq_gazebo 4 | 0.0.1 5 | 6 | ROS2 packages for MARA simulations 7 | 8 | Apache 2.0 9 | Alejandro Hernandez 10 | Alejandro Hernandez 11 | https://github.com/erlerobot/mara 12 | https://github.com/erlerobot/mara/issues 13 | 14 | urdf 15 | 16 | urdf 17 | ament_cmake 18 | 19 | 20 | ament_cmake 21 | 22 | 23 | -------------------------------------------------------------------------------- /robotiq_85_gripper_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | robotiq_85_gripper_description 4 | 0.0.1 5 | 6 | 3D models of the robotiq 85 gripper for simulation and visualization 7 | 8 | Apache 2.0 9 | Alejandro Hernandez 10 | Alejandro Hernandez 11 | Yue Erro 12 | https://github.com/AcutronicRobotics/robotiq_modular_gripper 13 | https://github.com/AcutronicRobotics/robotiq_modular_gripper/issues 14 | ament_cmake 15 | urdf 16 | 17 | ament_cmake 18 | 19 | 20 | -------------------------------------------------------------------------------- /robotiq_hande_gripper_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | robotiq_hande_gripper_description 4 | 0.0.1 5 | 6 | 3D models of the Hand-E gripper for simulation and visualization 7 | 8 | Apache 2.0 9 | Alejandro Hernandez 10 | Alejandro Hernandez 11 | Yue Erro 12 | https://github.com/AcutronicRobotics/robotiq_modular_gripper 13 | https://github.com/AcutronicRobotics/robotiq_modular_gripper/issues 14 | ament_cmake 15 | urdf 16 | 17 | ament_cmake 18 | 19 | 20 | -------------------------------------------------------------------------------- /robotiq_85_gripper_description/urdf/robotiq_85_world.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ~/out:=robotiq_85_joint_states 18 | 19 | 25 20 | robotiq_85_joint_finger 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /robotiq_140_gripper_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | robotiq_140_gripper_description 4 | 0.0.1 5 | 6 | 3D models of the robotiq 140 gripper for simulation and visualization 7 | 8 | Apache 2.0 9 | Alejandro Hernandez 10 | Alejandro Hernandez 11 | Yue Erro 12 | https://github.com/AcutronicRobotics/robotiq_modular_gripper 13 | https://github.com/AcutronicRobotics/robotiq_modular_gripper/issues 14 | ament_cmake 15 | urdf 16 | 17 | ament_cmake 18 | 19 | 20 | -------------------------------------------------------------------------------- /robotiq_140_gripper_description/urdf/robotiq_140_world.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ~/out:=robotiq_140_joint_states 18 | 19 | 25 20 | robotiq_140_joint_finger 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /robotiq_hande_gripper_description/urdf/robotiq_hande_world.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | ~/out:=hande_joint_states 19 | 20 | 25 21 | hande_joint_finger 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /robotiq_gripper_gazebo_plugins/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | robotiq_gripper_gazebo_plugins 5 | 0.0.1 6 | robotiq gripper Gazebo plugin 7 | All rights reserved 8 | Alejandro Hernandez 9 | Ibai Apellaniz 10 | Alejandro Hernandez 11 | Yue Erro 12 | https://github.com/AcutronicRobotics/robotiq_modular_gripper 13 | https://github.com/AcutronicRobotics/robotiq_modular_gripper/issues 14 | 15 | ament_cmake 16 | 17 | rclcpp 18 | gazebo_ros 19 | hrim_actuator_gripper_msgs 20 | hrim_actuator_gripper_srvs 21 | 22 | rclcpp 23 | gazebo_ros 24 | hrim_actuator_gripper_msgs 25 | hrim_actuator_gripper_srvs 26 | 27 | 28 | ament_cmake 29 | 30 | 31 | -------------------------------------------------------------------------------- /robotiq_gazebo/scripts/spawn_hande.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from gazebo_msgs.srv import SpawnEntity 5 | 6 | import rclpy 7 | from ros2pkg.api import get_prefix_path 8 | import os 9 | 10 | def main(args=None): 11 | rclpy.init(args=args) 12 | node = rclpy.create_node('minimal_client') 13 | cli = node.create_client(SpawnEntity, '/spawn_entity') 14 | 15 | prefix_path = get_prefix_path('robotiq_hande_gripper_description') 16 | assert os.path.isdir(prefix_path) 17 | 18 | content = "" 19 | with open(prefix_path + "/share/robotiq_hande_gripper_description/urdf/robotiq_hande.urdf", 'r') as content_file: 20 | content = content_file.read() 21 | 22 | req = SpawnEntity.Request() 23 | req.name = "hande" 24 | req.xml = content 25 | req.robot_namespace = "" 26 | req.reference_frame = "world" 27 | 28 | while not cli.wait_for_service(timeout_sec=1.0): 29 | node.get_logger().info('service not available, waiting again...') 30 | 31 | future = cli.call_async(req) 32 | rclpy.spin_until_future_complete(node, future) 33 | 34 | if future.result() is not None: 35 | node.get_logger().info( 36 | 'Result ' + str(future.result().success) + " " + future.result().status_message) 37 | else: 38 | node.get_logger().info('Service call failed %r' % (future.exception(),)) 39 | 40 | node.destroy_node() 41 | rclpy.shutdown() 42 | 43 | 44 | if __name__ == '__main__': 45 | main() 46 | -------------------------------------------------------------------------------- /robotiq_gazebo/scripts/spawn_robotiq85.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from gazebo_msgs.srv import SpawnEntity 5 | 6 | import rclpy 7 | from ros2pkg.api import get_prefix_path 8 | import os 9 | 10 | def main(args=None): 11 | rclpy.init(args=args) 12 | node = rclpy.create_node('minimal_client') 13 | cli = node.create_client(SpawnEntity, '/spawn_entity') 14 | 15 | prefix_path = get_prefix_path('robotiq_85_gripper_description') 16 | assert os.path.isdir(prefix_path) 17 | 18 | content = "" 19 | with open(prefix_path + "/share/robotiq_85_gripper_description/urdf/robotiq_85.urdf", 'r') as content_file: 20 | content = content_file.read() 21 | 22 | req = SpawnEntity.Request() 23 | req.name = "robotiq_85" 24 | req.xml = content 25 | req.robot_namespace = "" 26 | req.reference_frame = "world" 27 | 28 | while not cli.wait_for_service(timeout_sec=1.0): 29 | node.get_logger().info('service not available, waiting again...') 30 | 31 | future = cli.call_async(req) 32 | rclpy.spin_until_future_complete(node, future) 33 | 34 | if future.result() is not None: 35 | node.get_logger().info( 36 | 'Result ' + str(future.result().success) + " " + future.result().status_message) 37 | else: 38 | node.get_logger().info('Service call failed %r' % (future.exception(),)) 39 | 40 | node.destroy_node() 41 | rclpy.shutdown() 42 | 43 | 44 | if __name__ == '__main__': 45 | main() 46 | -------------------------------------------------------------------------------- /robotiq_gazebo/scripts/spawn_robotiq140.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | # -*- coding: utf-8 -*- 3 | 4 | from gazebo_msgs.srv import SpawnEntity 5 | 6 | import rclpy 7 | from ros2pkg.api import get_prefix_path 8 | import os 9 | 10 | def main(args=None): 11 | rclpy.init(args=args) 12 | node = rclpy.create_node('minimal_client') 13 | cli = node.create_client(SpawnEntity, '/spawn_entity') 14 | 15 | prefix_path = get_prefix_path('robotiq_140_gripper_description') 16 | assert os.path.isdir(prefix_path) 17 | 18 | content = "" 19 | with open(prefix_path + "/share/robotiq_140_gripper_description/urdf/robotiq_140.urdf", 'r') as content_file: 20 | content = content_file.read() 21 | 22 | req = SpawnEntity.Request() 23 | req.name = "robotiq_140" 24 | req.xml = content 25 | req.robot_namespace = "" 26 | req.reference_frame = "world" 27 | 28 | while not cli.wait_for_service(timeout_sec=1.0): 29 | node.get_logger().info('service not available, waiting again...') 30 | 31 | future = cli.call_async(req) 32 | rclpy.spin_until_future_complete(node, future) 33 | 34 | if future.result() is not None: 35 | node.get_logger().info( 36 | 'Result ' + str(future.result().success) + " " + future.result().status_message) 37 | else: 38 | node.get_logger().info('Service call failed %r' % (future.exception(),)) 39 | 40 | node.destroy_node() 41 | rclpy.shutdown() 42 | 43 | 44 | if __name__ == '__main__': 45 | main() 46 | -------------------------------------------------------------------------------- /robotiq_gazebo/launch/robotiq_140.launch.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import launch 4 | 5 | from ament_index_python.packages import get_package_share_directory, get_package_prefix 6 | from launch import LaunchDescription 7 | from launch import LaunchService 8 | from launch.actions.execute_process import ExecuteProcess 9 | from launch_ros.actions import Node 10 | 11 | def generate_launch_description(): 12 | urdf = os.path.join(get_package_share_directory('robotiq_140_gripper_description'), 'urdf', 'robotiq_140.urdf') 13 | install_dir = get_package_prefix('robotiq_140_gripper_description') 14 | 15 | if 'GAZEBO_MODEL_PATH' in os.environ: 16 | os.environ['GAZEBO_MODEL_PATH'] = os.environ['GAZEBO_MODEL_PATH'] + ':' + install_dir + '/share' 17 | else: 18 | os.environ['GAZEBO_MODEL_PATH'] = install_dir + "/share" 19 | 20 | if 'GAZEBO_PLUGIN_PATH' in os.environ: 21 | os.environ['GAZEBO_PLUGIN_PATH'] = os.environ['GAZEBO_PLUGIN_PATH'] + ':' + install_dir + '/lib' 22 | else: 23 | os.environ['GAZEBO_PLUGIN_PATH'] = install_dir + '/lib' 24 | 25 | try: 26 | envs = {} 27 | for key in os.environ.__dict__["_data"]: 28 | key = key.decode("utf-8") 29 | if (key.isupper()): 30 | envs[key] = os.environ[key] 31 | except Exception as e: 32 | print("Error with Envs: " + str(e)) 33 | return None 34 | 35 | ld = LaunchDescription([ 36 | ExecuteProcess( 37 | cmd=['gazebo', '--verbose', '-s', 'libgazebo_ros_factory.so'], output='screen', 38 | env=envs 39 | ), 40 | Node(package='robot_state_publisher', node_executable='robot_state_publisher', output='screen', arguments=[urdf]), 41 | Node(package='robotiq_gazebo', node_executable='spawn_robotiq140.py', output='screen'), 42 | ]) 43 | return ld 44 | -------------------------------------------------------------------------------- /robotiq_gazebo/launch/robotiq_hande.launch.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import launch 4 | 5 | from ament_index_python.packages import get_package_share_directory, get_package_prefix 6 | from launch import LaunchDescription 7 | from launch import LaunchService 8 | from launch.actions.execute_process import ExecuteProcess 9 | from launch_ros.actions import Node 10 | 11 | def generate_launch_description(): 12 | urdf = os.path.join(get_package_share_directory('robotiq_hande_gripper_description'), 'urdf', 'robotiq_hande.urdf') 13 | install_dir = get_package_prefix('robotiq_hande_gripper_description') 14 | 15 | if 'GAZEBO_MODEL_PATH' in os.environ: 16 | os.environ['GAZEBO_MODEL_PATH'] = os.environ['GAZEBO_MODEL_PATH'] + ':' + install_dir + '/share' 17 | else: 18 | os.environ['GAZEBO_MODEL_PATH'] = install_dir + "/share" 19 | 20 | if 'GAZEBO_PLUGIN_PATH' in os.environ: 21 | os.environ['GAZEBO_PLUGIN_PATH'] = os.environ['GAZEBO_PLUGIN_PATH'] + ':' + install_dir + '/lib' 22 | else: 23 | os.environ['GAZEBO_PLUGIN_PATH'] = install_dir + '/lib' 24 | 25 | try: 26 | envs = {} 27 | for key in os.environ.__dict__["_data"]: 28 | key = key.decode("utf-8") 29 | if (key.isupper()): 30 | envs[key] = os.environ[key] 31 | except Exception as e: 32 | print("Error with Envs: " + str(e)) 33 | return None 34 | 35 | ld = LaunchDescription([ 36 | ExecuteProcess( 37 | cmd=['gazebo', '--verbose', '-s', 'libgazebo_ros_factory.so'], output='screen', 38 | env=envs 39 | ), 40 | Node(package='robot_state_publisher', node_executable='robot_state_publisher', output='screen', arguments=[urdf]), 41 | Node(package='robotiq_gazebo', node_executable='spawn_hande.py', output='screen'), 42 | ]) 43 | return ld 44 | -------------------------------------------------------------------------------- /robotiq_gazebo/launch/robotiq_85.launch.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os 3 | import launch 4 | 5 | from ament_index_python.packages import get_package_share_directory, get_package_prefix 6 | from launch import LaunchDescription 7 | from launch import LaunchService 8 | from launch.actions.execute_process import ExecuteProcess 9 | from launch_ros.actions import Node 10 | 11 | def generate_launch_description(): 12 | urdf = os.path.join(get_package_share_directory('robotiq_85_gripper_description'), 'urdf', 'robotiq_85.urdf') 13 | install_dir = get_package_prefix('robotiq_85_gripper_description') 14 | 15 | print("install_dir ", install_dir) 16 | 17 | if 'GAZEBO_MODEL_PATH' in os.environ: 18 | os.environ['GAZEBO_MODEL_PATH'] = os.environ['GAZEBO_MODEL_PATH'] + ':' + install_dir + '/share' 19 | else: 20 | os.environ['GAZEBO_MODEL_PATH'] = install_dir + "/share" 21 | 22 | if 'GAZEBO_PLUGIN_PATH' in os.environ: 23 | os.environ['GAZEBO_PLUGIN_PATH'] = os.environ['GAZEBO_PLUGIN_PATH'] + ':' + install_dir + '/lib' 24 | else: 25 | os.environ['GAZEBO_PLUGIN_PATH'] = install_dir + '/lib' 26 | 27 | try: 28 | envs = {} 29 | for key in os.environ.__dict__["_data"]: 30 | key = key.decode("utf-8") 31 | if (key.isupper()): 32 | envs[key] = os.environ[key] 33 | except Exception as e: 34 | print("Error with Envs: " + str(e)) 35 | return None 36 | 37 | ld = LaunchDescription([ 38 | ExecuteProcess( 39 | cmd=['gazebo', '--verbose', '-s', 'libgazebo_ros_factory.so'], output='screen', 40 | env=envs 41 | ), 42 | Node(package='robot_state_publisher', node_executable='robot_state_publisher', output='screen', arguments=[urdf]), 43 | Node(package='robotiq_gazebo', node_executable='spawn_robotiq85.py', output='screen'), 44 | ]) 45 | return ld 46 | -------------------------------------------------------------------------------- /robotiq_gripper_gazebo_plugins/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(robotiq_gripper_gazebo_plugins) 3 | 4 | # Default to C++14 5 | if(NOT CMAKE_CXX_STANDARD) 6 | set(CMAKE_CXX_STANDARD 14) 7 | endif() 8 | if(CMAKE_COMPILER_IS_GNUCXX) 9 | # we dont use add_compile_options with pedantic in message packages 10 | # because the Python C extensions dont comply with it 11 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -fpermissive -Wno-unused-parameter") 12 | endif() 13 | 14 | if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") 15 | # we dont use add_compile_options with pedantic in message packages 16 | # because the Python C extensions dont comply with it 17 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wpedantic -fpermissive -Wno-unused-parameter -Wno-header-guard -Wstatic-float-init") 18 | endif() 19 | 20 | find_package(ament_cmake REQUIRED) 21 | find_package(gazebo_ros REQUIRED) 22 | find_package(rclcpp REQUIRED) 23 | find_package(hrim_actuator_gripper_msgs REQUIRED) 24 | find_package(hrim_actuator_gripper_srvs REQUIRED) 25 | 26 | include_directories(include 27 | ${gazebo_ros_INCLUDE_DIRS} 28 | ${hrim_actuator_gripper_msgs_INCLUDE_DIRS} 29 | ${hrim_actuator_gripper_srvs_INCLUDE_DIRS} 30 | ) 31 | link_directories(${gazebo_dev_LIBRARY_DIRS}) 32 | 33 | # robotiq finger gripper plugin 34 | add_library(robotiq_gripper_gazebo_plugin SHARED 35 | src/RobotiqGripperPlugin.cpp 36 | src/spline.cpp 37 | ) 38 | 39 | ament_target_dependencies(robotiq_gripper_gazebo_plugin 40 | "gazebo_ros" 41 | "rclcpp" 42 | "hrim_actuator_gripper_msgs" 43 | "hrim_actuator_gripper_srvs" 44 | ) 45 | 46 | ament_export_libraries(robotiq_gripper_gazebo_plugin) 47 | 48 | ament_export_include_directories(include) 49 | ament_export_dependencies(rclcpp) 50 | ament_export_dependencies(gazebo_ros) 51 | 52 | ament_package() 53 | 54 | install(DIRECTORY include/ 55 | DESTINATION include) 56 | 57 | install(TARGETS 58 | robotiq_gripper_gazebo_plugin 59 | ARCHIVE DESTINATION lib 60 | LIBRARY DESTINATION lib 61 | RUNTIME DESTINATION bin) 62 | -------------------------------------------------------------------------------- /robotiq_gripper_gazebo_plugins/include/robotiq_gripper_gazebo_plugins/RobotiqGripperPlugin.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2014 Open Source Robotics Foundation 3 | * Copyright 2015 Clearpath Robotics 4 | * 5 | * Licensed under the Apache License, Version 2.0 (the "License"); 6 | * you may not use this file except in compliance with the License. 7 | * You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | * 17 | */ 18 | 19 | #ifndef GAZEBO_ROBOTIQ_GRIPPER_PLUGIN_HH 20 | #define GAZEBO_ROBOTIQ_GRIPPER_PLUGIN_HH 21 | 22 | #include 23 | #include 24 | 25 | // Gazebo 26 | #include 27 | #include 28 | #include 29 | #include 30 | 31 | // Spline (interpolation) 32 | #include 33 | 34 | // HRIM 35 | #include 36 | #include 37 | 38 | #include 39 | 40 | using namespace std::chrono_literals; 41 | 42 | namespace gazebo 43 | { 44 | class RobotiqGripperPlugin : public gazebo::ModelPlugin 45 | { 46 | private: 47 | sdf::ElementPtr sdf; 48 | gazebo::physics::ModelPtr model; 49 | gazebo_ros::Node::SharedPtr node; 50 | gazebo::event::ConnectionPtr updateConnection; 51 | 52 | std::shared_ptr> fingerstatePublisher; 53 | std::shared_ptr timer_fingerstate; 54 | rclcpp::Service::SharedPtr fingercontrolService; 55 | 56 | std::vector jointsVec; 57 | std::map joint_multipliers_; 58 | 59 | double target_pose; 60 | double target_velocity; 61 | 62 | unsigned int joint_type = (unsigned int)-1; 63 | 64 | double kp = 400.0; 65 | double ki = 1; 66 | double kd = 0.01; 67 | double imin = 0.0; 68 | double imax = 0.0; 69 | double cmdmin = -10.0; 70 | double cmdmax = 10.0; 71 | 72 | // Min and max joint speed values and radius for revolute joint based grippers. 73 | double MinVelocity; // mm/s 74 | double MaxVelocity; // mm/s 75 | double radius; // mm 76 | 77 | void createTopicAndService(std::string node_name); 78 | void gripper_service(const std::shared_ptr request_header, const std::shared_ptr request, std::shared_ptr response); 79 | void timer_fingerstate_msgs(); 80 | void UpdatePIDControl(); 81 | void UpdateJointPIDs(); 82 | 83 | public: 84 | RobotiqGripperPlugin(); 85 | ~RobotiqGripperPlugin(); 86 | 87 | void Load(gazebo::physics::ModelPtr parent, sdf::ElementPtr sdf); 88 | void Reset(); 89 | 90 | // Interpolation 91 | std::vector interpolated_targetJoint; 92 | double current_pose_rad = 0.0; 93 | bool executing_joints; 94 | unsigned int index_executing_joints; 95 | double targetJoint = 0.0; 96 | }; 97 | } 98 | #endif 99 | -------------------------------------------------------------------------------- /robotiq_gripper_gazebo_plugins/include/robotiq_gripper_gazebo_plugins/spline.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * spline.h 3 | * 4 | * simple cubic spline interpolation library without external 5 | * dependencies 6 | * 7 | * --------------------------------------------------------------------- 8 | * Copyright (C) 2011, 2014 Tino Kluge (ttk448 at gmail.com) 9 | * 10 | * This program is free software; you can redistribute it and/or 11 | * modify it under the terms of the GNU General Public License 12 | * as published by the Free Software Foundation; either version 2 13 | * of the License, or (at your option) any later version. 14 | * 15 | * This program is distributed in the hope that it will be useful, 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 | * GNU General Public License for more details. 19 | * 20 | * You should have received a copy of the GNU General Public License 21 | * along with this program. If not, see . 22 | * --------------------------------------------------------------------- 23 | * 24 | */ 25 | 26 | 27 | #ifndef TK_SPLINE_H 28 | #define TK_SPLINE_H 29 | 30 | #include 31 | //#include 32 | #include 33 | #include 34 | 35 | 36 | namespace tk 37 | { 38 | 39 | // band matrix solver 40 | class band_matrix 41 | { 42 | private: 43 | std::vector< std::vector > m_upper; // upper band 44 | std::vector< std::vector > m_lower; // lower band 45 | public: 46 | band_matrix() {}; // constructor 47 | band_matrix(int dim, int n_u, int n_l); // constructor 48 | ~band_matrix() {}; // destructor 49 | bool resize(int dim, int n_u, int n_l); // init with dim,n_u,n_l 50 | int dim() const; // matrix dimension 51 | int num_upper() const 52 | { 53 | return m_upper.size()-1; 54 | } 55 | int num_lower() const 56 | { 57 | return m_lower.size()-1; 58 | } 59 | // access operator 60 | double & operator () (int i, int j); // write 61 | double operator () (int i, int j) const; // read 62 | // we can store an additional diogonal (in m_lower) 63 | double& saved_diag(int i); 64 | double saved_diag(int i) const; 65 | void lu_decompose(); 66 | std::vector r_solve(const std::vector& b); 67 | std::vector l_solve(const std::vector& b); 68 | std::vector lu_solve(const std::vector& b, 69 | bool is_lu_decomposed=false); 70 | bool success; 71 | 72 | }; 73 | 74 | 75 | // spline interpolation 76 | class spline 77 | { 78 | public: 79 | enum bd_type { 80 | first_deriv = 1, 81 | second_deriv = 2 82 | }; 83 | 84 | private: 85 | std::vector m_x,m_y; // x,y coordinates of points 86 | // interpolation parameters 87 | // f(x) = a*(x-x_i)^3 + b*(x-x_i)^2 + c*(x-x_i) + y_i 88 | std::vector m_a,m_b,m_c; // spline coefficients 89 | double m_b0, m_c0; // for left extrapol 90 | bd_type m_left, m_right; 91 | double m_left_value, m_right_value; 92 | bool m_force_linear_extrapolation; 93 | 94 | public: 95 | // set default boundary condition to be zero curvature at both ends 96 | spline(): m_left(second_deriv), m_right(second_deriv), 97 | m_left_value(0.0), m_right_value(0.0), 98 | m_force_linear_extrapolation(false) 99 | { 100 | ; 101 | } 102 | 103 | // optional, but if called it has to come be before set_points() 104 | void set_boundary(bd_type left, double left_value, 105 | bd_type right, double right_value, 106 | bool force_linear_extrapolation=false); 107 | bool set_points(const std::vector& x, 108 | const std::vector& y, bool cubic_spline=true); 109 | double operator() (double x) const; 110 | }; 111 | 112 | } // namespace tk 113 | 114 | #endif /* TK_SPLINE_H */ -------------------------------------------------------------------------------- /robotiq_hande_gripper_description/urdf/robotiq_hande.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | Gazebo/Black 28 | True 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Gazebo/Grey 55 | True 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | Gazebo/Grey 82 | True 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 500 105 | 3 106 | 9 107 | 20 108 | 150 109 | ${prefix}joint_finger 110 | robotiq_hande_base_to_${prefix}right_finger 111 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Robotiq modular gripper 2 | 3 | - [Install](#install) 4 | - [Launch](#launch) 5 | 6 | ## Industrial and modular end-of-arm tooling 7 | 8 | 9 | 10 | As they are key to highly flexible automation tasks, we have enhanced three different grippers from Robotiq through the H-ROS SoM. Ranging from 50mm to 140mm stroke. 11 | 12 | - **ROS 2.0 native**: Ready to be steered with MARA, the first truly modular collaborative robot. 13 | - **Independent ROS 2.0 adapter, plug & play**: Easy to install manually and seamlessly working with other modular robot components. 14 | - **Real-time, time-sensitive communications**: Qualified -through the H-ROS SoM- to achieve time synchronization and deterministic communications enabled with TSN standards. 15 | - [**Ideal for MARA**](https://acutronicrobotics.com/products/mara/): Three highly adaptable grippers to be used in combination with MARA or other ROS 2.0 enabled robots. Now you can operate them from ROS 2.0 directly, by using a simple Ethernet connection. 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |
S50
S85
S140
Original gripperHand-E2F-852F-140
Stroke (adjustable)50 mm85 mm140 mm
Grip force (adjustable)60 to 130 N20 to 235 N 10 to 125 N
Form-fit grip payload5 kg5 kg2.5 kg
Friction grip payload3 kg5 kg2.5 kg
Gripper mass1 kg0.9 kg1 kg
Position resolution (fingertip)0.2 mm0.4 mm0.6 mm
Closing speed (adjustable)20 to 150 mm/s20 to 150 mm/s30 to 250 mm/s
81 | 82 | # Install 83 | 84 | ## Install ROS 2.0 85 | 86 | Install ROS 2.0 following the official instructions: [source](https://index.ros.org/doc/ros2/Linux-Development-Setup/) [debian packages](https://index.ros.org/doc/ros2/Linux-Install-Debians/). 87 | 88 | ## Create mara ROS 2.0 workspace 89 | Create a ROS workspace, for example: 90 | 91 | ```sh 92 | mkdir -p ~/ros2_mara_ws/src 93 | cd ~/ros2_mara_ws 94 | sudo apt install -y python3-vcstool python3-numpy 95 | wget https://raw.githubusercontent.com/acutronicrobotics/MARA/master/mara-ros2.repos 96 | vcs import src < mara-ros2.repos 97 | ``` 98 | 99 | Generate HRIM dependencies: 100 | 101 | ```sh 102 | cd ~/ros2_mara_ws/src/HRIM 103 | sudo pip3 install hrim 104 | python3 hrim.py generate models/actuator/servo/servo.xml 105 | python3 hrim.py generate models/actuator/gripper/gripper.xml 106 | ``` 107 | 108 | ## Compile 109 | Right now you can compile the code: 110 | 111 | ```sh 112 | source /opt/ros/dashing/setup.bash 113 | cd ~/ros2_mara_ws && colcon build --merge-install --packages-skip individual_trajectories_bridge 114 | ``` 115 | 116 | # Launch 117 | 118 | ### S85 ( Robotiq 2f-85 ) 119 | 120 | ``` 121 | ros2 launch robotiq_gazebo robotiq_85.launch.py 122 | ``` 123 | 124 | ### S140 ( Robotiq 2f-140 ) 125 | 126 | ``` 127 | ros2 launch robotiq_gazebo robotiq_140.launch.py 128 | ``` 129 | 130 | ### S50 ( Robotiq Hand-E ) 131 | 132 | ``` 133 | ros2 launch robotiq_gazebo robotiq_hande.launch.py 134 | ``` 135 | -------------------------------------------------------------------------------- /robotiq_hande_gripper_description/urdf/robotiq_hande.urdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | Gazebo/Black 31 | True 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | Gazebo/Grey 57 | True 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | Gazebo/Grey 83 | True 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 500 103 | 3 104 | 9 105 | 20 106 | 150 107 | hande_joint_finger 108 | robotiq_hande_base_to_hande_right_finger 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | ~/out:=hande_joint_states 121 | 122 | 25 123 | hande_joint_finger 124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /robotiq_140_gripper_description/visualize.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Global Options1 8 | - /Status1 9 | - /RobotModel1 10 | Splitter Ratio: 0.494145185 11 | Tree Height: 842 12 | - Class: rviz/Selection 13 | Name: Selection 14 | - Class: rviz/Tool Properties 15 | Expanded: 16 | - /2D Pose Estimate1 17 | - /2D Nav Goal1 18 | - /Publish Point1 19 | Name: Tool Properties 20 | Splitter Ratio: 0.588679016 21 | - Class: rviz/Views 22 | Expanded: 23 | - /Current View1 24 | Name: Views 25 | Splitter Ratio: 0.5 26 | - Class: rviz/Time 27 | Experimental: false 28 | Name: Time 29 | SyncMode: 0 30 | SyncSource: "" 31 | Visualization Manager: 32 | Class: "" 33 | Displays: 34 | - Alpha: 0.5 35 | Cell Size: 1 36 | Class: rviz/Grid 37 | Color: 160; 160; 164 38 | Enabled: true 39 | Line Style: 40 | Line Width: 0.0299999993 41 | Value: Lines 42 | Name: Grid 43 | Normal Cell Count: 0 44 | Offset: 45 | X: 0 46 | Y: 0 47 | Z: 0 48 | Plane: XY 49 | Plane Cell Count: 10 50 | Reference Frame: 51 | Value: true 52 | - Alpha: 1 53 | Class: rviz/RobotModel 54 | Collision Enabled: false 55 | Enabled: true 56 | Links: 57 | All Links Enabled: true 58 | Expand Joint Details: false 59 | Expand Link Details: false 60 | Expand Tree: false 61 | Link Tree Style: Links in Alphabetic Order 62 | left_inner_finger: 63 | Alpha: 1 64 | Show Axes: false 65 | Show Trail: false 66 | Value: true 67 | left_inner_knuckle: 68 | Alpha: 1 69 | Show Axes: false 70 | Show Trail: false 71 | Value: true 72 | left_outer_finger: 73 | Alpha: 1 74 | Show Axes: false 75 | Show Trail: false 76 | Value: true 77 | left_outer_knuckle: 78 | Alpha: 1 79 | Show Axes: false 80 | Show Trail: false 81 | Value: true 82 | right_inner_finger: 83 | Alpha: 1 84 | Show Axes: false 85 | Show Trail: false 86 | Value: true 87 | right_inner_knuckle: 88 | Alpha: 1 89 | Show Axes: false 90 | Show Trail: false 91 | Value: true 92 | right_outer_finger: 93 | Alpha: 1 94 | Show Axes: false 95 | Show Trail: false 96 | Value: true 97 | right_outer_knuckle: 98 | Alpha: 1 99 | Show Axes: false 100 | Show Trail: false 101 | Value: true 102 | robotiq_arg2f_base_link: 103 | Alpha: 1 104 | Show Axes: false 105 | Show Trail: false 106 | Value: true 107 | Name: RobotModel 108 | Robot Description: robot_description 109 | TF Prefix: "" 110 | Update Interval: 0 111 | Value: true 112 | Visual Enabled: true 113 | - Class: rviz/TF 114 | Enabled: false 115 | Frame Timeout: 15 116 | Frames: 117 | All Enabled: true 118 | Marker Scale: 1 119 | Name: TF 120 | Show Arrows: true 121 | Show Axes: true 122 | Show Names: true 123 | Tree: 124 | {} 125 | Update Interval: 0 126 | Value: false 127 | Enabled: true 128 | Global Options: 129 | Background Color: 48; 48; 48 130 | Fixed Frame: robotiq_arg2f_base_link 131 | Frame Rate: 30 132 | Name: root 133 | Tools: 134 | - Class: rviz/Interact 135 | Hide Inactive Objects: true 136 | - Class: rviz/MoveCamera 137 | - Class: rviz/Select 138 | - Class: rviz/FocusCamera 139 | - Class: rviz/Measure 140 | - Class: rviz/SetInitialPose 141 | Topic: /initialpose 142 | - Class: rviz/SetGoal 143 | Topic: /move_base_simple/goal 144 | - Class: rviz/PublishPoint 145 | Single click: true 146 | Topic: /clicked_point 147 | Value: true 148 | Views: 149 | Current: 150 | Class: rviz/Orbit 151 | Distance: 0.782706261 152 | Enable Stereo Rendering: 153 | Stereo Eye Separation: 0.0599999987 154 | Stereo Focal Distance: 1 155 | Swap Stereo Eyes: false 156 | Value: false 157 | Focal Point: 158 | X: 0 159 | Y: 0 160 | Z: 0 161 | Focal Shape Fixed Size: true 162 | Focal Shape Size: 0.0500000007 163 | Name: Current View 164 | Near Clip Distance: 0.00999999978 165 | Pitch: 0.0747964084 166 | Target Frame: 167 | Value: Orbit (rviz) 168 | Yaw: 6.24540329 169 | Saved: ~ 170 | Window Geometry: 171 | Displays: 172 | collapsed: false 173 | Height: 1176 174 | Hide Left Dock: false 175 | Hide Right Dock: false 176 | QMainWindow State: 000000ff00000000fd0000000400000000000001ad000003ebfc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006b00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730100000034000003eb000000ef00fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c000002610000000100000132000003ebfc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a005600690065007700730100000034000003eb000000cd00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073f0000004afc0100000002fb0000000800540069006d006501000000000000073f0000043900fffffffb0000000800540069006d006501000000000000045000000000000000000000044e000003eb00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 177 | Selection: 178 | collapsed: false 179 | Time: 180 | collapsed: false 181 | Tool Properties: 182 | collapsed: false 183 | Views: 184 | collapsed: false 185 | Width: 1855 186 | X: 98 187 | Y: 36 188 | -------------------------------------------------------------------------------- /robotiq_140_gripper_description/rviz/visualization.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz_common/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Global Options1 8 | - /Status1 9 | - /RobotModel1 10 | Splitter Ratio: 0.5 11 | Tree Height: 617 12 | - Class: rviz_common/Selection 13 | Name: Selection 14 | - Class: rviz_common/Tool Properties 15 | Expanded: 16 | - /2D Nav Goal1 17 | - /Publish Point1 18 | Name: Tool Properties 19 | Splitter Ratio: 0.5886790156364441 20 | - Class: rviz_common/Views 21 | Expanded: 22 | - /Current View1 23 | Name: Views 24 | Splitter Ratio: 0.5 25 | Visualization Manager: 26 | Class: "" 27 | Displays: 28 | - Alpha: 0.5 29 | Cell Size: 1 30 | Class: rviz_default_plugins/Grid 31 | Color: 160; 160; 164 32 | Enabled: true 33 | Line Style: 34 | Line Width: 0.029999999329447746 35 | Value: Lines 36 | Name: Grid 37 | Normal Cell Count: 0 38 | Offset: 39 | X: 0 40 | Y: 0 41 | Z: 0 42 | Plane: XY 43 | Plane Cell Count: 10 44 | Reference Frame: 45 | Value: true 46 | - Alpha: 1 47 | Class: rviz_default_plugins/RobotModel 48 | Collision Enabled: false 49 | Description File: "" 50 | Description Source: Topic 51 | Description Topic: /robot_description 52 | Enabled: true 53 | Links: 54 | All Links Enabled: true 55 | Expand Joint Details: false 56 | Expand Link Details: false 57 | Expand Tree: false 58 | Link Tree Style: Links in Alphabetic Order 59 | left_inner_finger: 60 | Alpha: 1 61 | Show Axes: false 62 | Show Trail: false 63 | Value: true 64 | left_inner_knuckle: 65 | Alpha: 1 66 | Show Axes: false 67 | Show Trail: false 68 | Value: true 69 | left_outer_finger: 70 | Alpha: 1 71 | Show Axes: false 72 | Show Trail: false 73 | Value: true 74 | left_outer_knuckle: 75 | Alpha: 1 76 | Show Axes: false 77 | Show Trail: false 78 | Value: true 79 | right_inner_finger: 80 | Alpha: 1 81 | Show Axes: false 82 | Show Trail: false 83 | Value: true 84 | right_inner_knuckle: 85 | Alpha: 1 86 | Show Axes: false 87 | Show Trail: false 88 | Value: true 89 | right_outer_finger: 90 | Alpha: 1 91 | Show Axes: false 92 | Show Trail: false 93 | Value: true 94 | right_outer_knuckle: 95 | Alpha: 1 96 | Show Axes: false 97 | Show Trail: false 98 | Value: true 99 | robotiq_adapter_link: 100 | Alpha: 1 101 | Show Axes: false 102 | Show Trail: false 103 | Value: true 104 | robotiq_arg2f_base_link: 105 | Alpha: 1 106 | Show Axes: false 107 | Show Trail: false 108 | Value: true 109 | world: 110 | Alpha: 1 111 | Show Axes: false 112 | Show Trail: false 113 | Name: RobotModel 114 | TF Prefix: "" 115 | Unreliable: false 116 | Update Interval: 0 117 | Value: true 118 | Visual Enabled: true 119 | Enabled: true 120 | Global Options: 121 | Background Color: 48; 48; 48 122 | Fixed Frame: world 123 | Frame Rate: 30 124 | Name: root 125 | Tools: 126 | - Class: rviz_default_plugins/MoveCamera 127 | - Class: rviz_default_plugins/Select 128 | - Class: rviz_default_plugins/FocusCamera 129 | - Class: rviz_default_plugins/Measure 130 | Line color: 128; 128; 0 131 | - Class: rviz_default_plugins/SetInitialPose 132 | Topic: /initialpose 133 | - Class: rviz_default_plugins/SetGoal 134 | Topic: /move_base_simple/goal 135 | - Class: rviz_default_plugins/PublishPoint 136 | Single click: true 137 | Topic: /clicked_point 138 | Transformation: 139 | Current: 140 | Class: rviz_default_plugins/TF 141 | Value: true 142 | Views: 143 | Current: 144 | Class: rviz_default_plugins/Orbit 145 | Distance: 4.320241928100586 146 | Enable Stereo Rendering: 147 | Stereo Eye Separation: 0.05999999865889549 148 | Stereo Focal Distance: 1 149 | Swap Stereo Eyes: false 150 | Value: false 151 | Focal Point: 152 | X: 0 153 | Y: 0 154 | Z: 0 155 | Focal Shape Fixed Size: true 156 | Focal Shape Size: 0.05000000074505806 157 | Invert Z Axis: false 158 | Name: Current View 159 | Near Clip Distance: 0.009999999776482582 160 | Pitch: 0.47539830207824707 161 | Target Frame: 162 | Value: Orbit (rviz) 163 | Yaw: 0.26539814472198486 164 | Saved: ~ 165 | Window Geometry: 166 | Displays: 167 | collapsed: false 168 | Height: 846 169 | Hide Left Dock: false 170 | Hide Right Dock: false 171 | QMainWindow State: 000000ff00000000fd000000040000000000000156000002f4fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000002f4000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002f4fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000002f4000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d006501000000000000045000000000000000000000023f000002f400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 172 | Selection: 173 | collapsed: false 174 | Tool Properties: 175 | collapsed: false 176 | Views: 177 | collapsed: false 178 | Width: 1200 179 | X: 305 180 | Y: 43 181 | -------------------------------------------------------------------------------- /robotiq_85_gripper_description/rviz/visualization.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz_common/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Global Options1 8 | - /Status1 9 | - /RobotModel1 10 | Splitter Ratio: 0.5 11 | Tree Height: 617 12 | - Class: rviz_common/Selection 13 | Name: Selection 14 | - Class: rviz_common/Tool Properties 15 | Expanded: 16 | - /2D Nav Goal1 17 | - /Publish Point1 18 | Name: Tool Properties 19 | Splitter Ratio: 0.5886790156364441 20 | - Class: rviz_common/Views 21 | Expanded: 22 | - /Current View1 23 | Name: Views 24 | Splitter Ratio: 0.5 25 | Visualization Manager: 26 | Class: "" 27 | Displays: 28 | - Alpha: 0.5 29 | Cell Size: 1 30 | Class: rviz_default_plugins/Grid 31 | Color: 160; 160; 164 32 | Enabled: true 33 | Line Style: 34 | Line Width: 0.029999999329447746 35 | Value: Lines 36 | Name: Grid 37 | Normal Cell Count: 0 38 | Offset: 39 | X: 0 40 | Y: 0 41 | Z: 0 42 | Plane: XY 43 | Plane Cell Count: 10 44 | Reference Frame: 45 | Value: true 46 | - Alpha: 1 47 | Class: rviz_default_plugins/RobotModel 48 | Collision Enabled: false 49 | Description File: "" 50 | Description Source: Topic 51 | Description Topic: /robot_description 52 | Enabled: true 53 | Links: 54 | All Links Enabled: true 55 | Expand Joint Details: false 56 | Expand Link Details: false 57 | Expand Tree: false 58 | Link Tree Style: Links in Alphabetic Order 59 | left_inner_finger: 60 | Alpha: 1 61 | Show Axes: false 62 | Show Trail: false 63 | Value: true 64 | left_inner_knuckle: 65 | Alpha: 1 66 | Show Axes: false 67 | Show Trail: false 68 | Value: true 69 | left_outer_finger: 70 | Alpha: 1 71 | Show Axes: false 72 | Show Trail: false 73 | Value: true 74 | left_outer_knuckle: 75 | Alpha: 1 76 | Show Axes: false 77 | Show Trail: false 78 | Value: true 79 | right_inner_finger: 80 | Alpha: 1 81 | Show Axes: false 82 | Show Trail: false 83 | Value: true 84 | right_inner_knuckle: 85 | Alpha: 1 86 | Show Axes: false 87 | Show Trail: false 88 | Value: true 89 | right_outer_finger: 90 | Alpha: 1 91 | Show Axes: false 92 | Show Trail: false 93 | Value: true 94 | right_outer_knuckle: 95 | Alpha: 1 96 | Show Axes: false 97 | Show Trail: false 98 | Value: true 99 | robotiq_adapter_link: 100 | Alpha: 1 101 | Show Axes: false 102 | Show Trail: false 103 | Value: true 104 | robotiq_arg2f_base_link: 105 | Alpha: 1 106 | Show Axes: false 107 | Show Trail: false 108 | Value: true 109 | world: 110 | Alpha: 1 111 | Show Axes: false 112 | Show Trail: false 113 | Name: RobotModel 114 | TF Prefix: "" 115 | Unreliable: false 116 | Update Interval: 0 117 | Value: true 118 | Visual Enabled: true 119 | Enabled: true 120 | Global Options: 121 | Background Color: 48; 48; 48 122 | Fixed Frame: world 123 | Frame Rate: 30 124 | Name: root 125 | Tools: 126 | - Class: rviz_default_plugins/MoveCamera 127 | - Class: rviz_default_plugins/Select 128 | - Class: rviz_default_plugins/FocusCamera 129 | - Class: rviz_default_plugins/Measure 130 | Line color: 128; 128; 0 131 | - Class: rviz_default_plugins/SetInitialPose 132 | Topic: /initialpose 133 | - Class: rviz_default_plugins/SetGoal 134 | Topic: /move_base_simple/goal 135 | - Class: rviz_default_plugins/PublishPoint 136 | Single click: true 137 | Topic: /clicked_point 138 | Transformation: 139 | Current: 140 | Class: rviz_default_plugins/TF 141 | Value: true 142 | Views: 143 | Current: 144 | Class: rviz_default_plugins/Orbit 145 | Distance: 4.320241928100586 146 | Enable Stereo Rendering: 147 | Stereo Eye Separation: 0.05999999865889549 148 | Stereo Focal Distance: 1 149 | Swap Stereo Eyes: false 150 | Value: false 151 | Focal Point: 152 | X: 0 153 | Y: 0 154 | Z: 0 155 | Focal Shape Fixed Size: true 156 | Focal Shape Size: 0.05000000074505806 157 | Invert Z Axis: false 158 | Name: Current View 159 | Near Clip Distance: 0.009999999776482582 160 | Pitch: 0.47539830207824707 161 | Target Frame: 162 | Value: Orbit (rviz) 163 | Yaw: 0.26539814472198486 164 | Saved: ~ 165 | Window Geometry: 166 | Displays: 167 | collapsed: false 168 | Height: 846 169 | Hide Left Dock: false 170 | Hide Right Dock: false 171 | QMainWindow State: 000000ff00000000fd000000040000000000000156000002f4fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000002f4000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002f4fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000002f4000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d006501000000000000045000000000000000000000023f000002f400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 172 | Selection: 173 | collapsed: false 174 | Tool Properties: 175 | collapsed: false 176 | Views: 177 | collapsed: false 178 | Width: 1200 179 | X: 305 180 | Y: 43 181 | -------------------------------------------------------------------------------- /robotiq_hande_gripper_description/rviz/visualization.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz_common/Displays 3 | Help Height: 78 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Global Options1 8 | - /Status1 9 | - /RobotModel1 10 | Splitter Ratio: 0.5 11 | Tree Height: 617 12 | - Class: rviz_common/Selection 13 | Name: Selection 14 | - Class: rviz_common/Tool Properties 15 | Expanded: 16 | - /2D Nav Goal1 17 | - /Publish Point1 18 | Name: Tool Properties 19 | Splitter Ratio: 0.5886790156364441 20 | - Class: rviz_common/Views 21 | Expanded: 22 | - /Current View1 23 | Name: Views 24 | Splitter Ratio: 0.5 25 | Visualization Manager: 26 | Class: "" 27 | Displays: 28 | - Alpha: 0.5 29 | Cell Size: 1 30 | Class: rviz_default_plugins/Grid 31 | Color: 160; 160; 164 32 | Enabled: true 33 | Line Style: 34 | Line Width: 0.029999999329447746 35 | Value: Lines 36 | Name: Grid 37 | Normal Cell Count: 0 38 | Offset: 39 | X: 0 40 | Y: 0 41 | Z: 0 42 | Plane: XY 43 | Plane Cell Count: 10 44 | Reference Frame: 45 | Value: true 46 | - Alpha: 1 47 | Class: rviz_default_plugins/RobotModel 48 | Collision Enabled: false 49 | Description File: "" 50 | Description Source: Topic 51 | Description Topic: /robot_description 52 | Enabled: true 53 | Links: 54 | All Links Enabled: true 55 | Expand Joint Details: false 56 | Expand Link Details: false 57 | Expand Tree: false 58 | Link Tree Style: Links in Alphabetic Order 59 | left_inner_finger: 60 | Alpha: 1 61 | Show Axes: false 62 | Show Trail: false 63 | Value: true 64 | left_inner_knuckle: 65 | Alpha: 1 66 | Show Axes: false 67 | Show Trail: false 68 | Value: true 69 | left_outer_finger: 70 | Alpha: 1 71 | Show Axes: false 72 | Show Trail: false 73 | Value: true 74 | left_outer_knuckle: 75 | Alpha: 1 76 | Show Axes: false 77 | Show Trail: false 78 | Value: true 79 | right_inner_finger: 80 | Alpha: 1 81 | Show Axes: false 82 | Show Trail: false 83 | Value: true 84 | right_inner_knuckle: 85 | Alpha: 1 86 | Show Axes: false 87 | Show Trail: false 88 | Value: true 89 | right_outer_finger: 90 | Alpha: 1 91 | Show Axes: false 92 | Show Trail: false 93 | Value: true 94 | right_outer_knuckle: 95 | Alpha: 1 96 | Show Axes: false 97 | Show Trail: false 98 | Value: true 99 | robotiq_adapter_link: 100 | Alpha: 1 101 | Show Axes: false 102 | Show Trail: false 103 | Value: true 104 | robotiq_arg2f_base_link: 105 | Alpha: 1 106 | Show Axes: false 107 | Show Trail: false 108 | Value: true 109 | world: 110 | Alpha: 1 111 | Show Axes: false 112 | Show Trail: false 113 | Name: RobotModel 114 | TF Prefix: "" 115 | Unreliable: false 116 | Update Interval: 0 117 | Value: true 118 | Visual Enabled: true 119 | Enabled: true 120 | Global Options: 121 | Background Color: 48; 48; 48 122 | Fixed Frame: world 123 | Frame Rate: 30 124 | Name: root 125 | Tools: 126 | - Class: rviz_default_plugins/MoveCamera 127 | - Class: rviz_default_plugins/Select 128 | - Class: rviz_default_plugins/FocusCamera 129 | - Class: rviz_default_plugins/Measure 130 | Line color: 128; 128; 0 131 | - Class: rviz_default_plugins/SetInitialPose 132 | Topic: /initialpose 133 | - Class: rviz_default_plugins/SetGoal 134 | Topic: /move_base_simple/goal 135 | - Class: rviz_default_plugins/PublishPoint 136 | Single click: true 137 | Topic: /clicked_point 138 | Transformation: 139 | Current: 140 | Class: rviz_default_plugins/TF 141 | Value: true 142 | Views: 143 | Current: 144 | Class: rviz_default_plugins/Orbit 145 | Distance: 4.320241928100586 146 | Enable Stereo Rendering: 147 | Stereo Eye Separation: 0.05999999865889549 148 | Stereo Focal Distance: 1 149 | Swap Stereo Eyes: false 150 | Value: false 151 | Focal Point: 152 | X: 0 153 | Y: 0 154 | Z: 0 155 | Focal Shape Fixed Size: true 156 | Focal Shape Size: 0.05000000074505806 157 | Invert Z Axis: false 158 | Name: Current View 159 | Near Clip Distance: 0.009999999776482582 160 | Pitch: 0.47539830207824707 161 | Target Frame: 162 | Value: Orbit (rviz) 163 | Yaw: 0.26539814472198486 164 | Saved: ~ 165 | Window Geometry: 166 | Displays: 167 | collapsed: false 168 | Height: 846 169 | Hide Left Dock: false 170 | Hide Right Dock: false 171 | QMainWindow State: 000000ff00000000fd000000040000000000000156000002f4fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000002f4000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002f4fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d000002f4000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d006501000000000000045000000000000000000000023f000002f400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 172 | Selection: 173 | collapsed: false 174 | Tool Properties: 175 | collapsed: false 176 | Views: 177 | collapsed: false 178 | Width: 1200 179 | X: 305 180 | Y: 43 181 | -------------------------------------------------------------------------------- /robotiq_gripper_gazebo_plugins/src/RobotiqGripperPlugin.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | #include "robotiq_gripper_gazebo_plugins/RobotiqGripperPlugin.h" 5 | 6 | namespace gazebo{ 7 | RobotiqGripperPlugin::RobotiqGripperPlugin(){ 8 | printf("RobotiqGripperPlugin\n"); 9 | } 10 | 11 | RobotiqGripperPlugin::~RobotiqGripperPlugin(){ 12 | } 13 | 14 | void RobotiqGripperPlugin::gripper_service(const std::shared_ptr request_header, 15 | const std::shared_ptr request, 16 | std::shared_ptr response){ 17 | if(!executing_joints){ 18 | (void)request_header; 19 | 20 | // Pose control 21 | double upper_limit = jointsVec[0]->UpperLimit(0); 22 | 23 | if((int)this->joint_type == 1088){ // prismatic 24 | target_pose = request->goal_linearposition; 25 | } 26 | else if((int)this->joint_type == 576){ // revolute 27 | target_pose = request->goal_angularposition; 28 | } 29 | else{ 30 | RCLCPP_ERROR(node->get_logger(), "joint_finger type not supported"); 31 | } 32 | 33 | if(target_pose < 0.0){ 34 | target_pose = 0.0; 35 | RCLCPP_INFO(node->get_logger(), "goal changed to its minimum value: 0.0"); 36 | }else if(target_pose > upper_limit){ 37 | target_pose = upper_limit; 38 | RCLCPP_INFO(node->get_logger(), "goal changed to its maximum value: %lf", upper_limit); 39 | } 40 | 41 | // Invert pose meaning 42 | target_pose = upper_limit - target_pose; 43 | 44 | // Speed control 45 | if((int)this->joint_type == 1088){ // prismatic (e.g. S50 gripper) 46 | if (request->goal_velocity >= MinVelocity && request->goal_velocity <= MaxVelocity){ 47 | target_velocity = request->goal_velocity; 48 | }else if (request->goal_velocity < MinVelocity){ 49 | target_velocity = MinVelocity; 50 | RCLCPP_INFO(node->get_logger(), "Minimum value exceeded, target velocity changed to its minimum value: %lf mm/s", MinVelocity); 51 | }else if (request->goal_velocity > MaxVelocity){ 52 | target_velocity = MaxVelocity; 53 | RCLCPP_INFO(node->get_logger(), "maximum value exceeded, target velocity changed to its maximum value: %lf mm/s", MaxVelocity); 54 | } 55 | target_velocity *= 0.001; // to m/s 56 | } 57 | else if((int)this->joint_type == 576){ // revolute (e.g. S140 and S85 grippers) 58 | if (request->goal_velocity >= MinVelocity && request->goal_velocity <= MaxVelocity){ 59 | target_velocity = request->goal_velocity / radius; 60 | }else if (request->goal_velocity < MinVelocity){ 61 | target_velocity = MinVelocity / radius; 62 | RCLCPP_INFO(node->get_logger(), "Minimum value exceeded, target velocity changed to its minimum value: %lf mm/s", MinVelocity); 63 | }else if (request->goal_velocity > MaxVelocity){ 64 | target_velocity = MaxVelocity / radius; 65 | RCLCPP_INFO(node->get_logger(), "maximum value exceeded, target velocity changed to its maximum value: %lf mm/s", MaxVelocity); 66 | } 67 | } 68 | 69 | double current_pose = this->model->GetJointController()->GetPositions().begin()->second; //Taking first joint for reference only, this should be improved 70 | double start_time = 0; 71 | // ATTENTION! Same formula is used for both angular and linear movement grippers. Meaning the values in the formula sometimes contain radians, other times meters. 72 | double end_time = fabs(current_pose - target_pose) / target_velocity; 73 | 74 | std::vector X(2), Y_pos(2); 75 | X[0] = start_time; 76 | X[1] = end_time; 77 | Y_pos[0] = current_pose; 78 | Y_pos[1] = target_pose; 79 | 80 | tk::spline interpolation_linear_pos; 81 | if(!interpolation_linear_pos.set_points(X, Y_pos)) 82 | return; 83 | 84 | interpolated_targetJoint.clear(); 85 | for(double t = start_time; t < end_time; t+=0.001 ){ 86 | interpolated_targetJoint.push_back(interpolation_linear_pos(t)); 87 | } 88 | 89 | response->goal_accepted = true; 90 | } 91 | } 92 | 93 | void RobotiqGripperPlugin::Load(gazebo::physics::ModelPtr parent, sdf::ElementPtr sdf){ 94 | this->model = parent; 95 | this->sdf = sdf; 96 | 97 | if (!this->model){ 98 | gzerr<< "Parent model is NULL! RobotiqGripperPlugin could not be loaded."<< std::endl; 99 | return; 100 | } 101 | 102 | std::string robot_namespace_ = ""; 103 | if(this->sdf->HasElement("robotNamespace")) 104 | robot_namespace_ = this->sdf->GetElement("robotNamespace")->Get() + "/"; 105 | else 106 | printf("No robotNamespace\n"); 107 | 108 | node = gazebo_ros::Node::Get(this->sdf); 109 | std::string node_name = this->sdf->Get("name"); 110 | RCLCPP_INFO(node->get_logger(), "name of the gripper node is %s\n", node_name.c_str()); 111 | 112 | createTopicAndService(node_name); 113 | 114 | if(this->sdf->HasElement("kp")) 115 | this->kp = this->sdf->GetElement("kp")->Get(); 116 | if(this->sdf->HasElement("ki")) 117 | this->ki = this->sdf->GetElement("ki")->Get(); 118 | if(this->sdf->HasElement("kd")) 119 | this->kd = this->sdf->GetElement("kd")->Get(); 120 | 121 | // velocity related tags 122 | if(this->sdf->HasElement("min_velocity")){ 123 | this->MinVelocity = this->sdf->GetElement("min_velocity")->Get(); 124 | }else{ 125 | RCLCPP_ERROR(node->get_logger(), "No min_velocity element."); 126 | node.reset(); 127 | return; 128 | } 129 | if(this->sdf->HasElement("max_velocity")){ 130 | this->MaxVelocity = this->sdf->GetElement("max_velocity")->Get(); 131 | }else{ 132 | RCLCPP_ERROR(node->get_logger(), "No max_velocity element."); 133 | node.reset(); 134 | return; 135 | } 136 | if(this->sdf->HasElement("radius")){ 137 | this->radius = this->sdf->GetElement("radius")->Get(); 138 | }else{ 139 | RCLCPP_INFO(node->get_logger(), "No radius element found. Angular movement radius must be set for grippers with revolute joints."); 140 | } 141 | 142 | sdf::ElementPtr joint_elem = this->sdf->GetElement("joint"); 143 | while(joint_elem){ 144 | auto joint_name = joint_elem->Get(); 145 | auto joint = model->GetJoint(joint_name); 146 | 147 | if(joint_name.find("joint_finger")){ 148 | this->joint_type = this->model->GetJoint(joint_name)->GetType(); 149 | } 150 | 151 | if(!joint){ 152 | gzthrow("Could not find " + joint_name + " joint\n"); 153 | } 154 | else{ 155 | if(joint_elem->HasAttribute("multiplier")) 156 | joint_multipliers_[joint->GetScopedName()] = std::stod(joint_elem->GetAttribute("multiplier")->GetAsString()); 157 | else 158 | joint_multipliers_[joint->GetScopedName()] = 1; 159 | jointsVec.push_back(joint); 160 | } 161 | joint_elem = joint_elem->GetNextElement("joint"); 162 | } 163 | 164 | if((int)this->joint_type == -1){ 165 | RCLCPP_ERROR(node->get_logger(), "joint_finger is missing, the gripper will not work"); 166 | } 167 | 168 | if(jointsVec.empty()){ 169 | RCLCPP_ERROR(node->get_logger(), "No joints found."); 170 | node.reset(); 171 | return; 172 | } 173 | else{ 174 | targetJoint = 0; 175 | } 176 | 177 | interpolated_targetJoint.clear(); 178 | executing_joints = false; 179 | index_executing_joints = 0; 180 | 181 | this->updateConnection = gazebo::event::Events::ConnectWorldUpdateBegin( boost::bind(&RobotiqGripperPlugin::UpdatePIDControl, this)); 182 | 183 | UpdateJointPIDs(); 184 | } 185 | 186 | void RobotiqGripperPlugin::Reset() 187 | { 188 | interpolated_targetJoint.clear(); 189 | targetJoint = 0; 190 | executing_joints = false; 191 | } 192 | 193 | void RobotiqGripperPlugin::createTopicAndService(std::string node_name){ 194 | 195 | std::string fingerstate = std::string(node_name) + "/fingerstate"; 196 | RCLCPP_INFO(node->get_logger(), "creating %s publisher ", fingerstate.c_str()); 197 | fingerstatePublisher = node->create_publisher(fingerstate, rmw_qos_profile_default); 198 | 199 | timer_fingerstate = node->create_wall_timer(100ms, std::bind(&RobotiqGripperPlugin::timer_fingerstate_msgs, this)); 200 | 201 | std::string fingercontrol = std::string(node_name) + "/fingercontrol"; 202 | RCUTILS_LOG_INFO_NAMED(node->get_name(), "creating %s service ", fingercontrol.c_str()); 203 | std::function, 204 | const std::shared_ptr, 205 | std::shared_ptr)> cb_fingercontrol_function = \ 206 | std::bind(&RobotiqGripperPlugin::gripper_service, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3); 207 | fingercontrolService = node->create_service(fingercontrol, cb_fingercontrol_function); 208 | } 209 | 210 | void RobotiqGripperPlugin::timer_fingerstate_msgs(){ 211 | hrim_actuator_gripper_msgs::msg::StateFingerGripper fingerstateMsg; 212 | gazebo::common::Time cur_time = this->model->GetWorld()->SimTime(); 213 | fingerstateMsg.header.stamp.sec = cur_time.sec; 214 | fingerstateMsg.header.stamp.nanosec = cur_time.nsec; 215 | 216 | if((int)this->joint_type == 1088){ 217 | // prismatic 218 | fingerstateMsg.linear_position = jointsVec.front()->Position(0); 219 | fingerstateMsg.angular_position = 0; 220 | } 221 | else if((int)this->joint_type == 576){ 222 | // revolute 223 | fingerstateMsg.linear_position = 0; 224 | fingerstateMsg.angular_position = jointsVec.front()->Position(0); 225 | } 226 | fingerstatePublisher->publish(fingerstateMsg); 227 | } 228 | 229 | void RobotiqGripperPlugin::UpdateJointPIDs(){ 230 | for(auto &joint : this->jointsVec) 231 | this->model->GetJointController()->SetPositionPID(joint->GetScopedName(), 232 | common::PID(kp, ki, kd, imax, imin, joint->LowerLimit(0), joint->UpperLimit(0))); 233 | } 234 | 235 | void RobotiqGripperPlugin::UpdatePIDControl(){ 236 | if(!executing_joints && interpolated_targetJoint.size()>0){ 237 | index_executing_joints = 0; 238 | executing_joints = true; 239 | } 240 | if(executing_joints){ 241 | targetJoint = interpolated_targetJoint[index_executing_joints]; 242 | index_executing_joints++; 243 | if(index_executing_joints==interpolated_targetJoint.size()){ 244 | executing_joints = false; 245 | interpolated_targetJoint.clear(); 246 | index_executing_joints = 0; 247 | } 248 | } 249 | for(auto &joint : this->jointsVec) 250 | this->model->GetJointController()->SetPositionTarget(joint->GetScopedName(), 251 | targetJoint * joint_multipliers_[joint->GetScopedName()]); 252 | } 253 | 254 | GZ_REGISTER_MODEL_PLUGIN(RobotiqGripperPlugin) 255 | } 256 | -------------------------------------------------------------------------------- /robotiq_gripper_gazebo_plugins/src/spline.cpp: -------------------------------------------------------------------------------- 1 | #include "robotiq_gripper_gazebo_plugins/spline.hpp" 2 | namespace tk 3 | { 4 | // band_matrix implementation 5 | // ------------------------- 6 | 7 | band_matrix::band_matrix(int dim, int n_u, int n_l) 8 | { 9 | success = true; 10 | 11 | if( !resize(dim, n_u, n_l) ){ 12 | printf("resize error!\n"); 13 | success = false; 14 | } 15 | } 16 | 17 | bool band_matrix::resize(int dim, int n_u, int n_l) 18 | { 19 | // assert(dim>0); 20 | // assert(n_u>=0); 21 | // assert(n_l>=0); 22 | if( !(dim>0) || !(n_u>=0) || !(n_l>=0)){ 23 | printf("resize inside error!\n"); 24 | return false; 25 | } 26 | 27 | m_upper.resize(n_u+1); 28 | m_lower.resize(n_l+1); 29 | for(size_t i=0; i0) { 41 | return m_upper[0].size(); 42 | } else { 43 | return 0; 44 | } 45 | } 46 | 47 | // defines the new operator (), so that we can access the elements 48 | // by A(i,j), index going from i=0,...,dim()-1 49 | double & band_matrix::operator () (int i, int j) 50 | { 51 | int k=j-i; // what band is the entry 52 | // assert( (i>=0) && (i=0) && (j diogonal, k<0 lower left part, k>0 upper right part 55 | if(k>=0) return m_upper[k][i]; 56 | else return m_lower[-k][i]; 57 | } 58 | 59 | double band_matrix::operator () (int i, int j) const 60 | { 61 | int k=j-i; // what band is the entry 62 | // assert( (i>=0) && (i=0) && (j diogonal, k<0 lower left part, k>0 upper right part 65 | if(k>=0) return m_upper[k][i]; 66 | else return m_lower[-k][i]; 67 | } 68 | 69 | // second diag (used in LU decomposition), saved in m_lower 70 | double band_matrix::saved_diag(int i) const 71 | { 72 | //assert( (i>=0) && (i=0) && (idim(); i++) { 92 | //assert(this->operator()(i,i)!=0.0); 93 | if( this->operator()(i,i)==0.0 ) 94 | { 95 | printf("this->operator()(i,i)==0.0\n"); 96 | 97 | success = false; 98 | return; 99 | } 100 | this->saved_diag(i)=1.0/this->operator()(i,i); 101 | j_min=std::max(0,i-this->num_lower()); 102 | j_max=std::min(this->dim()-1,i+this->num_upper()); 103 | for(int j=j_min; j<=j_max; j++) { 104 | this->operator()(i,j) *= this->saved_diag(i); 105 | } 106 | this->operator()(i,i)=1.0; // prevents rounding errors 107 | } 108 | 109 | // Gauss LR-Decomposition 110 | for(int k=0; kdim(); k++) { 111 | i_max=std::min(this->dim()-1,k+this->num_lower()); // num_lower not a mistake! 112 | for(int i=k+1; i<=i_max; i++) { 113 | //assert(this->operator()(k,k)!=0.0); 114 | if( this->operator()(k,k)==0.0 ) 115 | { 116 | printf("this->operator()(k,k)==0.0 \n"); 117 | 118 | success = false; 119 | return; 120 | } 121 | x=-this->operator()(i,k)/this->operator()(k,k); 122 | this->operator()(i,k)=-x; // assembly part of L 123 | j_max=std::min(this->dim()-1,k+this->num_upper()); 124 | for(int j=k+1; j<=j_max; j++) { 125 | // assembly part of R 126 | this->operator()(i,j)=this->operator()(i,j)+x*this->operator()(k,j); 127 | } 128 | } 129 | } 130 | } 131 | 132 | // solves Ly=b 133 | std::vector band_matrix::l_solve(const std::vector& b) 134 | { 135 | //assert( this->dim()==(int)b.size() ); 136 | if( this->dim()!=(int)b.size() ) 137 | { 138 | printf("this->dim()!=(int)b.size() \n"); 139 | 140 | success = false; 141 | return std::vector(); 142 | } 143 | std::vector x(this->dim()); 144 | int j_start; 145 | double sum; 146 | for(int i=0; idim(); i++) { 147 | sum=0; 148 | j_start=std::max(0,i-this->num_lower()); 149 | for(int j=j_start; joperator()(i,j)*x[j]; 150 | x[i]=(b[i]*this->saved_diag(i)) - sum; 151 | } 152 | return x; 153 | } 154 | 155 | // solves Rx=y 156 | std::vector band_matrix::r_solve(const std::vector& b) 157 | { 158 | //assert( this->dim()==(int)b.size() ); 159 | if( this->dim()!=(int)b.size() ) 160 | { 161 | printf("this->dim()!=(int)b.size() \n"); 162 | 163 | success = false; 164 | return std::vector(); 165 | } 166 | std::vector x(this->dim()); 167 | int j_stop; 168 | double sum; 169 | for(int i=this->dim()-1; i>=0; i--) { 170 | sum=0; 171 | j_stop=std::min(this->dim()-1,i+this->num_upper()); 172 | for(int j=i+1; j<=j_stop; j++) sum += this->operator()(i,j)*x[j]; 173 | x[i]=( b[i] - sum ) / this->operator()(i,i); 174 | } 175 | return x; 176 | } 177 | 178 | std::vector band_matrix::lu_solve(const std::vector& b, 179 | bool is_lu_decomposed) 180 | { 181 | //assert( this->dim()==(int)b.size() ); 182 | if( this->dim()!=(int)b.size() ) 183 | { 184 | printf(" this->dim()!=(int)b.size()\n"); 185 | 186 | success = false; 187 | return std::vector(); 188 | } 189 | std::vector x,y; 190 | if(is_lu_decomposed==false) { 191 | this->lu_decompose(); 192 | if(!success) 193 | return std::vector(); 194 | } 195 | y=this->l_solve(b); 196 | x=this->r_solve(y); 197 | return x; 198 | } 199 | 200 | // spline implementation 201 | // ----------------------- 202 | 203 | void spline::set_boundary(spline::bd_type left, double left_value, 204 | spline::bd_type right, double right_value, 205 | bool force_linear_extrapolation) 206 | { 207 | //assert(m_x.size()==0); // set_points() must not have happened yet 208 | m_left=left; 209 | m_right=right; 210 | m_left_value=left_value; 211 | m_right_value=right_value; 212 | m_force_linear_extrapolation=force_linear_extrapolation; 213 | } 214 | 215 | bool spline::set_points(const std::vector& x, 216 | const std::vector& y, bool cubic_spline) 217 | { 218 | if(x.size()!=y.size()) 219 | return false; 220 | if(x.size()<2) 221 | return false; 222 | 223 | m_x=x; 224 | m_y=y; 225 | int n=x.size(); 226 | // TODO: maybe sort x and y, rather than returning an error 227 | 228 | for(int i=0; im_x[i+1]){ 230 | printf("m_x[i]>m_x[i+1]\n"); 231 | return false; 232 | } 233 | } 234 | 235 | if(cubic_spline==true) { // cubic spline interpolation 236 | // setting up the matrix and right hand side of the equation system 237 | // for the parameters b[] 238 | band_matrix A(n,1,1); 239 | if( !A.success ){ 240 | printf("242\n"); 241 | return false; 242 | } 243 | 244 | std::vector rhs(n); 245 | for(int i=1; i::const_iterator it; 329 | it=std::lower_bound(m_x.begin(),m_x.end(),x); 330 | int idx=std::max( int(it-m_x.begin())-1, 0); 331 | 332 | double h=x-m_x[idx]; 333 | double interpol; 334 | if(xm_x[n-1]) { 338 | // extrapolation to the right 339 | interpol=(m_b[n-1]*h + m_c[n-1])*h + m_y[n-1]; 340 | } else { 341 | // interpolation 342 | interpol=((m_a[idx]*h + m_b[idx])*h + m_c[idx])*h + m_y[idx]; 343 | } 344 | return interpol; 345 | } 346 | 347 | } // namespace tk 348 | -------------------------------------------------------------------------------- /robotiq_85_gripper_description/urdf/robotiq_85.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | Gazebo/Black 28 | True 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Gazebo/Grey 55 | True 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | Gazebo/Grey 82 | True 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | Gazebo/Black 109 | True 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | Gazebo/Black 136 | True 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | Gazebo/Black 163 | False 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | Gazebo/Black 190 | False 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | Gazebo/Black 217 | False 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | Gazebo/Black 244 | False 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | -0.0179 0 0.00652 0 0 0 315 | ${prefix}left_inner_knuckle 316 | ${prefix}left_inner_finger 317 | 318 | 0 1 0 319 | 320 | 0 321 | 0.82589 322 | 3.87 323 | 21.03 324 | 325 | 326 | 327 | 328 | 329 | 0.0179 0 0.00652 0 0 0 330 | ${prefix}right_inner_knuckle 331 | ${prefix}right_inner_finger 332 | 333 | 0 -1 0 334 | 335 | 0 336 | 0.82589 337 | 3.87 338 | 21.03 339 | 340 | 341 | 342 | 343 | 344 | 10 345 | 10 346 | 0.1 347 | 20 348 | 150 349 | 100 350 | ${prefix}robotiq_arg2f_base_link_to_${prefix}left_inner_knuckle 351 | ${prefix}robotiq_arg2f_base_link_to_${prefix}left_outer_knuckle 352 | ${prefix}robotiq_arg2f_base_link_to_${prefix}right_inner_knuckle 353 | ${prefix}joint_finger 354 | 355 | 356 | 357 | 358 | -------------------------------------------------------------------------------- /robotiq_85_gripper_description/urdf/robotiq_85.urdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | Gazebo/Black 31 | True 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | Gazebo/Grey 57 | True 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | Gazebo/Grey 83 | True 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | Gazebo/Black 109 | True 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | Gazebo/Black 135 | True 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | Gazebo/Black 161 | False 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | Gazebo/Black 187 | False 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | Gazebo/Black 213 | False 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | Gazebo/Black 239 | False 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | -0.0179 0 0.00652 0 0 0 301 | robotiq_85_left_inner_knuckle 302 | robotiq_85_left_inner_finger 303 | 304 | 0 1 0 305 | 306 | 0 307 | 0.82589 308 | 3.87 309 | 21.03 310 | 311 | 312 | 313 | 314 | 0.0179 0 0.00652 0 0 0 315 | robotiq_85_right_inner_knuckle 316 | robotiq_85_right_inner_finger 317 | 318 | 0 -1 0 319 | 320 | 0 321 | 0.82589 322 | 3.87 323 | 21.03 324 | 325 | 326 | 327 | 328 | 10 329 | 10 330 | 0.1 331 | 20 332 | 150 333 | 100 334 | robotiq_85_robotiq_arg2f_base_link_to_robotiq_85_left_inner_knuckle 335 | robotiq_85_robotiq_arg2f_base_link_to_robotiq_85_left_outer_knuckle 336 | robotiq_85_robotiq_arg2f_base_link_to_robotiq_85_right_inner_knuckle 337 | robotiq_85_joint_finger 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | ~/out:=robotiq_85_joint_states 350 | 351 | 25 352 | robotiq_85_joint_finger 353 | 354 | 355 | 356 | -------------------------------------------------------------------------------- /robotiq_140_gripper_description/urdf/robotiq_140.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | Gazebo/Black 28 | True 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | Gazebo/Grey 55 | True 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | Gazebo/Grey 82 | True 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | Gazebo/Black 109 | False 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | Gazebo/Black 136 | False 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | Gazebo/Black 163 | False 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | Gazebo/Black 190 | False 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | Gazebo/Black 217 | True 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | Gazebo/Black 244 | True 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | -0.0179 0 0.00652 0 0 0 315 | ${prefix}left_inner_knuckle 316 | ${prefix}left_inner_finger 317 | 318 | 0 1 0 319 | 320 | 0 321 | 0.78574722925 322 | 3.54 323 | 18.65 324 | 325 | 326 | 327 | 328 | 329 | 0.0179 0 0.00652 0 0 0 330 | ${prefix}right_inner_knuckle 331 | ${prefix}right_inner_finger 332 | 333 | 0 -1 0 334 | 335 | 0 336 | 0.78574722925 337 | 3.54 338 | 18.65 339 | 340 | 341 | 342 | 343 | 344 | 600 345 | 0.1 346 | 0.01 347 | 30 348 | 250 349 | 156 350 | robotiq_arg2f_base_to_${prefix}left_inner_knuckle 351 | robotiq_arg2f_base_to_${prefix}left_outer_knuckle 352 | robotiq_arg2f_base_to_${prefix}right_inner_knuckle 353 | ${prefix}joint_finger 354 | 355 | 356 | 357 | 358 | -------------------------------------------------------------------------------- /robotiq_140_gripper_description/urdf/robotiq_140.urdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | Gazebo/Black 31 | True 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | Gazebo/Grey 57 | True 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | Gazebo/Grey 83 | True 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | Gazebo/Black 109 | False 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | Gazebo/Black 135 | False 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | Gazebo/Black 161 | False 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | Gazebo/Black 187 | False 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | Gazebo/Black 213 | True 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | Gazebo/Black 239 | True 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | -0.0179 0 0.00652 0 0 0 301 | robotiq_140_left_inner_knuckle 302 | robotiq_140_left_inner_finger 303 | 304 | 0 1 0 305 | 306 | 0 307 | 0.78574722925 308 | 3.54 309 | 18.65 310 | 311 | 312 | 313 | 314 | 0.0179 0 0.00652 0 0 0 315 | robotiq_140_right_inner_knuckle 316 | robotiq_140_right_inner_finger 317 | 318 | 0 -1 0 319 | 320 | 0 321 | 0.78574722925 322 | 3.54 323 | 18.65 324 | 325 | 326 | 327 | 328 | 600 329 | 0.1 330 | 0.01 331 | 30 332 | 250 333 | 156 334 | robotiq_arg2f_base_to_robotiq_140_left_inner_knuckle 335 | robotiq_arg2f_base_to_robotiq_140_left_outer_knuckle 336 | robotiq_arg2f_base_to_robotiq_140_right_inner_knuckle 337 | robotiq_140_joint_finger 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | ~/out:=robotiq_140_joint_states 350 | 351 | 25 352 | robotiq_140_joint_finger 353 | 354 | 355 | 356 | -------------------------------------------------------------------------------- /robotiq_140_gripper_description/meshes/robotiq_140_left_outer_knuckle.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | VCGLab 6 | VCGLib | MeshLab 7 | 8 | ju. may. 16 09:51:57 2019 GMT 9 | ju. may. 16 09:51:57 2019 GMT 10 | Y_UP 11 | 12 | 13 | 14 | 15 | 16 | 25.7988 -4.5 -8.26868 25.7988 4.5 -8.26868 26.684 -4.5 -8.53099 26.684 4.5 -8.53099 27.4576 -4.5 -9.03515 27.4576 4.5 -9.03515 28.8898 4.5 -9.972 28.8898 -4.5 -9.972 30.5282 4.5 -10.4664 30.5282 -4.5 -10.4664 32.2395 4.5 -10.4782 32.2395 -4.5 -10.4782 33.8846 4.5 -10.0063 33.8846 -4.5 -10.0063 35.3295 4.5 -9.08919 35.3295 -4.5 -9.08919 36.4567 4.5 -7.80149 36.4567 -4.5 -7.80149 37.1746 4.5 -6.24792 37.1746 -4.5 -6.24792 37.4246 4.5 -4.5549 37.4246 -4.5 -4.5549 37.1865 4.5 -2.86015 37.1865 -4.5 -2.86015 36.4796 4.5 -1.30157 36.4796 -4.5 -1.30157 35.3615 4.5 -0.00594693 35.3615 -4.5 -0.00594693 33.9231 4.5 0.921309 33.9231 -4.5 0.921309 32.2814 4.5 1.40476 32.2814 -4.5 1.40476 29.5101 4.5 1.80459 29.5101 -4.5 1.80459 28.3328 -4.5 2.22054 28.3328 4.5 2.22054 27.4044 -4.5 3.05535 27.4044 4.5 3.05535 26.8661 -4.5 4.18192 26.8661 4.5 4.18192 26.7998 -4.5 5.42874 26.7998 4.5 5.42874 27.2076 4.5 8.25492 27.2076 -4.5 8.25492 27.1625 4.5 8.79292 27.1625 -4.5 8.79292 26.8861 4.5 9.2567 26.8861 -4.5 9.2567 26.4344 4.5 9.5524 26.4344 -4.5 9.5524 25.8988 4.5 9.62015 25.8988 -4.5 9.62015 25.3877 4.5 9.44625 25.3877 -4.5 9.44625 16.163 4.5 3.72886 16.163 -4.5 3.72886 15.1311 -4.5 3.31632 15.1311 4.5 3.31632 14.0203 -4.5 3.2816 14.0203 4.5 3.2816 7.24651 4.5 4.25888 7.24651 -4.5 4.25888 6.24423 -4.5 4.57816 6.24423 4.5 4.57816 5.39962 -4.5 5.2052 5.39962 4.5 5.2052 4.38365 -4.5 -6.08552 4.38365 4.5 -6.08552 5.49186 -4.5 -5.5741 5.49186 4.5 -5.5741 6.71095 -4.5 -5.51481 6.71095 4.5 -5.51481 0.390224 -4.5 -2.46936 2.71479 -4.5 -6.99142 1.36087 -4.5 -2.09715 2.0962 -4.5 -1.36233 -1.57398 -4.5 -1.94231 -2.85982 -4.5 -6.93336 -0.647892 -4.5 -2.41459 -1.02687 -4.5 -7.42937 0.871905 -4.5 -7.44915 -2.33364 -4.5 0.896736 -7.46982 -4.5 0.672157 -2.49662 -4.5 -0.129967 -7.39922 -4.5 -1.22541 -2.22791 -4.5 -1.1342 -6.8543 -4.5 -3.04442 -5.87002 -4.5 -4.66829 -4.50945 -4.5 -5.9929 0.131711 -4.5 2.49653 -1.57614 -4.5 7.33252 -0.895106 -4.5 2.33426 -3.36716 -4.5 6.70166 -1.76715 -4.5 1.76838 1.13575 -4.5 2.22712 1.94341 -4.5 1.57262 2.46908 -4.5 -0.391947 -4.94234 -4.5 5.64121 -6.20071 -4.5 4.21915 -7.0616 -4.5 2.52663 3.91929 -4.5 6.39446 2.18772 -4.5 7.17383 0.315918 -4.5 7.49334 2.41504 -4.5 0.646207 26.3828 -4.5 -6.7314 27.2545 -4.5 -8.11988 26.5629 -4.5 -1.96208 26.0209 -4.5 -3.50935 25.959 -4.5 -5.14765 28.4968 -4.5 -9.18971 29.9993 -4.5 -9.84585 31.6284 -4.5 -10.03 33.2394 -4.5 -9.72575 34.6891 -4.5 -8.96018 35.8488 -4.5 -7.80131 36.6154 -4.5 -6.3521 36.9207 -4.5 -4.74133 36.7377 -4.5 -3.1121 36.0826 -4.5 -1.6092 35.0137 -4.5 -0.36616 33.6258 -4.5 0.506569 32.0423 -4.5 0.931446 30.404 -4.5 0.870718 28.8564 -4.5 0.329777 27.5369 -4.5 -0.643313 -2.33364 4.5 0.896736 -6.20071 4.5 4.21915 -1.76715 4.5 1.76838 -4.94234 4.5 5.64121 -0.895106 4.5 2.33426 -0.647892 4.5 -2.41459 0.390224 4.5 -2.46936 0.871905 4.5 -7.44915 26.0209 4.5 -3.50935 25.959 4.5 -5.14765 -2.49662 4.5 -0.129967 -7.46982 4.5 0.672157 -7.0616 4.5 2.52663 -3.36716 4.5 6.70166 -1.57614 4.5 7.33252 0.131711 4.5 2.49653 -1.57398 4.5 -1.94231 -5.87002 4.5 -4.66829 -2.22791 4.5 -1.1342 -6.8543 4.5 -3.04442 -7.39922 4.5 -1.22541 2.71479 4.5 -6.99142 1.36087 4.5 -2.09715 2.0962 4.5 -1.36233 1.94341 4.5 1.57262 2.41504 4.5 0.646207 0.315918 4.5 7.49334 2.18772 4.5 7.17383 1.13575 4.5 2.22712 3.91929 4.5 6.39446 -1.02687 4.5 -7.42937 -2.85982 4.5 -6.93336 -4.50945 4.5 -5.9929 2.46908 4.5 -0.391947 26.3828 4.5 -6.7314 27.2545 4.5 -8.11988 26.5629 4.5 -1.96208 27.5369 4.5 -0.643313 28.8564 4.5 0.329777 30.404 4.5 0.870718 32.0423 4.5 0.931446 33.6258 4.5 0.506569 35.0137 4.5 -0.36616 36.0826 4.5 -1.6092 36.7377 4.5 -3.1121 36.9207 4.5 -4.74133 36.6154 4.5 -6.3521 35.8488 4.5 -7.80131 34.6891 4.5 -8.96018 33.2394 4.5 -9.72575 31.6284 4.5 -10.03 29.9993 4.5 -9.84585 28.4968 4.5 -9.18971 26.0209 5.5 -3.50935 26.5629 5.5 -1.96208 31.4246 5.5 -4.53376 27.5369 5.5 -0.643313 28.8564 5.5 0.329777 27.2545 5.5 -8.11988 26.3828 5.5 -6.7314 25.959 5.5 -5.14765 31.6284 5.5 -10.03 29.9993 5.5 -9.84585 28.4968 5.5 -9.18971 35.8488 5.5 -7.80131 34.6891 5.5 -8.96018 33.2394 5.5 -9.72575 36.7377 5.5 -3.1121 36.9207 5.5 -4.74133 36.6154 5.5 -6.3521 33.6258 5.5 0.506569 35.0137 5.5 -0.36616 36.0826 5.5 -1.6092 30.404 5.5 0.870718 32.0423 5.5 0.931446 28.8564 -5.5 0.329777 30.404 -5.5 0.870718 32.0423 -5.5 0.931446 33.6258 -5.5 0.506569 35.0137 -5.5 -0.36616 36.0826 -5.5 -1.6092 36.7377 -5.5 -3.1121 36.9207 -5.5 -4.74133 36.6154 -5.5 -6.3521 35.8488 -5.5 -7.80131 34.6891 -5.5 -8.96018 33.2394 -5.5 -9.72575 31.6284 -5.5 -10.03 29.9993 -5.5 -9.84585 28.4968 -5.5 -9.18971 27.2545 -5.5 -8.11988 26.3828 -5.5 -6.7314 25.959 -5.5 -5.14765 26.0209 -5.5 -3.50935 26.5629 -5.5 -1.96208 27.5369 -5.5 -0.643313 31.4246 -5.5 -4.53376 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -0.28409 0 -0.958798 -0.28409 0 -0.958798 -0.546021 0 -0.837771 -0.546021 0 -0.837771 -0.547421 0 -0.836857 -0.547421 0 -0.836857 -0.288894 0 -0.957361 -0.288894 0 -0.957361 -0.0068676 0 -0.999976 -0.0068676 0 -0.999976 0.275724 0 -0.961237 0.275724 0 -0.961237 0.535878 0 -0.844295 0.535878 0 -0.844295 0.752438 0 -0.658664 0.752438 0 -0.658664 0.90778 0 -0.419447 0.90778 0 -0.419447 0.98927 0 -0.146101 0.98927 0 -0.146101 0.990275 0 0.139126 0.990275 0 0.139126 0.910714 0 0.413038 0.910714 0 0.413038 0.757062 0 0.653343 0.757062 0 0.653343 0.541814 0 0.840499 0.541814 0 0.840499 0.28249 0 0.95927 0.28249 0 0.95927 0.142795 0 0.989752 0.142795 0 0.989752 0.333142 0 0.942877 0.333142 0 0.942877 0.668607 0 0.743616 0.668607 0 0.743616 0.902283 0 0.431143 0.902283 0 0.431143 0.998592 0 0.0530421 0.998592 0 0.0530421 0.989752 0 -0.142796 0.989752 0 -0.142796 0.996507 0 0.083507 0.996507 0 0.083507 0.859046 0 0.511898 0.859046 0 0.511898 0.547706 0 0.836671 0.547706 0 0.836671 0.125497 0 0.992094 0.125497 0 0.992094 -0.322109 0 0.946703 -0.322109 0 0.946703 -0.526813 0 0.849981 -0.526813 0 0.849981 -0.371212 0 0.928548 -0.371212 0 0.928548 -0.0312439 0 0.999512 -0.0312439 0 0.999512 0.142796 0 0.989752 0.142796 0 0.989752 0.303528 0 0.952822 0.303528 0 0.952822 0.596087 0 0.80292 0.596087 0 0.80292 0.419018 0 -0.907978 0.419018 0 -0.907978 0.0485781 0 -0.998819 0.0485781 0 -0.998819 -0.142796 0 -0.989752 -0.142796 0 -0.989752 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 -0.59354 0 0.804804 -0.32995 0 0.943999 -0.32995 0 0.943999 -0.0370415 0 0.999314 -0.0370415 0 0.999314 0.259155 0 0.965836 0.259155 0 0.965836 0.532327 0 0.846539 0.532327 0 0.846539 0.758199 0 0.652023 0.758199 0 0.652023 0.916703 0 0.399571 0.916703 0 0.399571 0.993751 0 0.111619 0.993751 0 0.111619 0.982501 0 -0.186255 0.982501 0 -0.186255 0.883951 0 -0.467579 0.883951 0 -0.467579 0.70686 0 -0.707353 0.70686 0 -0.707353 0.466962 0 -0.884277 0.466962 0 -0.884277 0.185568 0 -0.982631 0.185568 0 -0.982631 -0.112311 0 -0.993673 -0.112311 0 -0.993673 -0.400211 0 -0.916423 -0.400211 0 -0.916423 -0.652552 0 -0.757744 -0.652552 0 -0.757744 -0.84691 0 -0.531736 -0.84691 0 -0.531736 -0.966015 0 -0.258485 -0.966015 0 -0.258485 -0.999287 0 0.0377429 -0.999287 0 0.0377429 -0.943768 0 0.330608 -0.943768 0 0.330608 -0.80439 0 0.594101 -0.80439 0 0.594101 -0.59354 0 0.804804 -0.59354 0 0.804804 -0.32995 0 0.943999 -0.32995 0 0.943999 -0.0370415 0 0.999314 -0.0370415 0 0.999314 0.259155 0 0.965836 0.259155 0 0.965836 0.532327 0 0.846539 0.532327 0 0.846539 0.758199 0 0.652023 0.758199 0 0.652023 0.916703 0 0.399571 0.916703 0 0.399571 0.993751 0 0.111619 0.993751 0 0.111619 0.982501 0 -0.186255 0.982501 0 -0.186255 0.883951 0 -0.467579 0.883951 0 -0.467579 0.70686 0 -0.707353 0.70686 0 -0.707353 0.466962 0 -0.884277 0.466962 0 -0.884277 0.185568 0 -0.982631 0.185568 0 -0.982631 -0.112311 0 -0.993673 -0.112311 0 -0.993673 -0.400211 0 -0.916423 -0.400211 0 -0.916423 -0.652552 0 -0.757744 -0.652552 0 -0.757744 -0.84691 0 -0.531736 -0.84691 0 -0.531736 -0.966015 0 -0.258485 -0.966015 0 -0.258485 -0.999287 0 0.0377429 -0.999287 0 0.0377429 -0.943768 0 0.330608 -0.943768 0 0.330608 -0.80439 0 0.594101 -0.80439 0 0.594101 -0.59354 0 0.804804 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0.626299 0 0.779583 0.626299 0 0.779583 0.410437 0 0.911889 0.410437 0 0.911889 0.168263 0 0.985742 0.168263 0 0.985742 -0.0846963 0 0.996407 -0.0846963 0 0.996407 -0.332227 0 0.9432 -0.332227 0 0.9432 -0.558459 0 0.829532 -0.558459 0 0.829532 -0.748895 0 0.662689 -0.748895 0 0.662689 -0.891324 0 0.453367 -0.891324 0 0.453367 -0.976618 0 0.214982 -0.976618 0 0.214982 -0.999309 0 -0.0371821 -0.999309 0 -0.0371821 -0.957941 0 -0.286965 -0.957941 0 -0.286965 -0.855168 0 -0.51835 -0.855168 0 -0.51835 -0.697577 0 -0.71651 -0.697577 0 -0.71651 -0.495269 0 -0.86874 -0.495269 0 -0.86874 -0.261213 0 -0.965281 -0.261213 0 -0.965281 -0.010416 0 -0.999946 -0.010416 0 -0.999946 0.241053 0 -0.970512 0.241053 0 -0.970512 0.477068 0 -0.878866 0.477068 0 -0.878866 0.544347 0 -0.83886 0.544347 0 -0.83886 0.15609 0 -0.987743 0.15609 0 -0.987743 -0.259157 0 -0.965835 -0.259157 0 -0.965835 -0.629592 0 -0.776926 -0.629592 0 -0.776926 -0.891164 0 -0.453681 -0.891164 0 -0.453681 -0.998648 0 -0.0519874 -0.998648 0 -0.0519874 -0.933456 0 0.358693 -0.933456 0 0.358693 -0.70686 0 0.707353 -0.70686 0 0.707353 -0.358041 0 0.933706 -0.358041 0 0.933706 0.0526844 0 0.998611 0.0526844 0 0.998611 0.454303 0 0.890847 0.454303 0 0.890847 0.777365 0 0.629049 0.777365 0 0.629049 0.966016 0 0.258483 0.966016 0 0.258483 0.987634 0 -0.15678 0.987634 0 -0.15678 0.83848 0 -0.544932 0.83848 0 -0.544932 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |

0 0 1 0 2 0 2 1 1 1 3 1 2 2 3 2 4 2 4 3 3 3 5 3 4 4 5 4 6 4 4 5 6 5 7 5 7 6 6 6 8 6 7 7 8 7 9 7 9 8 8 8 10 8 9 9 10 9 11 9 11 10 10 10 12 10 11 11 12 11 13 11 13 12 12 12 14 12 13 13 14 13 15 13 15 14 14 14 16 14 15 15 16 15 17 15 17 16 16 16 18 16 17 17 18 17 19 17 19 18 18 18 20 18 19 19 20 19 21 19 21 20 20 20 22 20 21 21 22 21 23 21 23 22 22 22 24 22 23 23 24 23 25 23 25 24 24 24 26 24 25 25 26 25 27 25 27 26 26 26 28 26 27 27 28 27 29 27 29 28 28 28 30 28 29 29 30 29 31 29 32 30 33 30 30 30 30 31 33 31 31 31 33 32 32 32 34 32 34 33 32 33 35 33 34 34 35 34 36 34 36 35 35 35 37 35 36 36 37 36 38 36 38 37 37 37 39 37 38 38 39 38 40 38 40 39 39 39 41 39 42 40 43 40 41 40 41 41 43 41 40 41 43 42 42 42 44 42 43 43 44 43 45 43 45 44 44 44 46 44 45 45 46 45 47 45 47 46 46 46 48 46 47 47 48 47 49 47 49 48 48 48 50 48 49 49 50 49 51 49 51 50 50 50 52 50 51 51 52 51 53 51 54 52 55 52 52 52 52 53 55 53 53 53 55 54 54 54 56 54 56 55 54 55 57 55 56 56 57 56 58 56 58 57 57 57 59 57 60 58 61 58 59 58 59 59 61 59 58 59 61 60 60 60 62 60 62 61 60 61 63 61 62 62 63 62 64 62 64 63 63 63 65 63 66 64 67 64 68 64 68 65 67 65 69 65 68 66 69 66 70 66 70 67 69 67 71 67 1 68 0 68 71 68 71 69 0 69 70 69 72 70 73 70 74 70 74 71 73 71 66 71 74 72 66 72 75 72 53 73 55 73 43 73 76 74 77 74 78 74 78 75 77 75 79 75 78 76 79 76 72 76 72 77 79 77 80 77 72 78 80 78 73 78 81 79 82 79 83 79 83 80 82 80 84 80 83 81 84 81 85 81 84 82 86 82 85 82 85 83 86 83 87 83 85 84 87 84 76 84 76 85 87 85 88 85 76 86 88 86 77 86 89 87 90 87 91 87 91 88 90 88 92 88 91 89 92 89 93 89 94 90 95 90 64 90 96 91 36 91 38 91 92 92 97 92 93 92 93 93 97 93 98 93 93 94 98 94 81 94 81 95 98 95 99 95 81 96 99 96 82 96 64 97 100 97 94 97 94 98 100 98 101 98 94 99 101 99 89 99 89 100 101 100 102 100 89 101 102 101 90 101 56 102 58 102 103 102 103 103 58 103 61 103 103 104 61 104 95 104 95 105 61 105 62 105 95 106 62 106 64 106 104 107 70 107 0 107 66 108 68 108 75 108 75 109 68 109 70 109 75 110 70 110 96 110 103 111 96 111 56 111 56 112 96 112 38 112 56 113 38 113 55 113 55 114 38 114 40 114 55 115 40 115 43 115 104 116 0 116 105 116 34 117 36 117 106 117 106 118 36 118 96 118 106 119 96 119 107 119 107 120 96 120 70 120 107 121 70 121 108 121 108 122 70 122 104 122 49 123 51 123 47 123 47 124 51 124 53 124 47 125 53 125 45 125 45 126 53 126 43 126 0 127 2 127 105 127 105 128 2 128 4 128 105 129 4 129 109 129 109 130 4 130 7 130 109 131 7 131 110 131 110 132 7 132 9 132 110 133 9 133 111 133 111 134 9 134 11 134 111 135 11 135 112 135 112 136 11 136 13 136 112 137 13 137 113 137 113 138 13 138 15 138 113 139 15 139 114 139 114 140 15 140 17 140 114 141 17 141 115 141 115 142 17 142 19 142 115 143 19 143 116 143 116 144 19 144 21 144 116 145 21 145 117 145 117 146 21 146 23 146 117 147 23 147 118 147 118 148 23 148 25 148 118 149 25 149 119 149 119 150 25 150 27 150 119 151 27 151 120 151 120 152 27 152 29 152 120 153 29 153 121 153 121 154 29 154 31 154 121 155 31 155 122 155 122 156 31 156 33 156 122 157 33 157 123 157 123 158 33 158 34 158 123 159 34 159 124 159 124 160 34 160 106 160 125 161 126 161 127 161 127 162 126 162 128 162 127 163 128 163 129 163 130 164 131 164 132 164 133 165 134 165 57 165 135 166 136 166 125 166 125 167 136 167 137 167 125 168 137 168 126 168 57 169 134 169 59 169 128 170 138 170 129 170 129 171 138 171 139 171 129 172 139 172 140 172 141 173 142 173 143 173 143 174 142 174 144 174 143 175 144 175 135 175 135 176 144 176 145 176 135 177 145 177 136 177 132 178 131 178 146 178 146 179 131 179 147 179 146 180 147 180 67 180 67 181 147 181 69 181 69 182 147 182 148 182 69 183 148 183 71 183 149 184 63 184 150 184 150 185 63 185 60 185 139 186 151 186 140 186 140 187 151 187 152 187 140 188 152 188 153 188 153 189 152 189 154 189 153 190 154 190 149 190 149 191 154 191 65 191 149 192 65 192 63 192 132 193 155 193 130 193 130 194 155 194 156 194 130 195 156 195 141 195 141 196 156 196 157 196 141 197 157 197 142 197 54 198 39 198 37 198 46 199 44 199 42 199 60 200 59 200 150 200 150 201 59 201 134 201 150 202 134 202 158 202 158 203 134 203 159 203 52 204 50 204 48 204 159 205 160 205 3 205 48 206 46 206 52 206 52 207 46 207 42 207 52 208 42 208 54 208 54 209 42 209 41 209 54 210 41 210 39 210 148 211 158 211 71 211 71 212 158 212 159 212 71 213 159 213 1 213 1 214 159 214 3 214 133 215 57 215 161 215 161 216 57 216 54 216 161 217 54 217 162 217 162 218 54 218 37 218 162 219 37 219 163 219 163 220 37 220 35 220 163 221 35 221 164 221 164 222 35 222 32 222 164 223 32 223 165 223 165 224 32 224 30 224 165 225 30 225 166 225 166 226 30 226 28 226 166 227 28 227 167 227 167 228 28 228 26 228 167 229 26 229 168 229 168 230 26 230 24 230 168 231 24 231 169 231 169 232 24 232 22 232 169 233 22 233 170 233 170 234 22 234 20 234 170 235 20 235 171 235 171 236 20 236 18 236 171 237 18 237 172 237 172 238 18 238 16 238 172 239 16 239 173 239 173 240 16 240 14 240 173 241 14 241 174 241 174 242 14 242 12 242 174 243 12 243 175 243 175 244 12 244 10 244 175 245 10 245 176 245 176 246 10 246 8 246 176 247 8 247 177 247 177 248 8 248 6 248 177 249 6 249 160 249 160 250 6 250 5 250 160 251 5 251 3 251 178 252 179 252 180 252 180 253 179 253 181 253 180 254 181 254 182 254 183 255 184 255 180 255 180 256 184 256 185 256 180 257 185 257 178 257 186 258 187 258 180 258 180 259 187 259 188 259 180 260 188 260 183 260 189 261 190 261 180 261 180 262 190 262 191 262 180 263 191 263 186 263 192 264 193 264 180 264 180 265 193 265 194 265 180 266 194 266 189 266 195 267 196 267 180 267 180 268 196 268 197 268 180 269 197 269 192 269 182 270 198 270 180 270 180 271 198 271 199 271 180 272 199 272 195 272 181 273 163 273 182 273 182 274 163 274 164 274 182 275 164 275 198 275 198 276 164 276 165 276 198 277 165 277 199 277 199 278 165 278 166 278 199 279 166 279 195 279 195 280 166 280 167 280 195 281 167 281 196 281 196 282 167 282 168 282 196 283 168 283 197 283 197 284 168 284 169 284 197 285 169 285 192 285 192 286 169 286 170 286 192 287 170 287 193 287 193 288 170 288 171 288 193 289 171 289 194 289 194 290 171 290 172 290 194 291 172 291 189 291 189 292 172 292 173 292 189 293 173 293 190 293 190 294 173 294 174 294 190 295 174 295 191 295 191 296 174 296 175 296 191 297 175 297 186 297 186 298 175 298 176 298 186 299 176 299 187 299 187 300 176 300 177 300 187 301 177 301 188 301 188 302 177 302 160 302 188 303 160 303 183 303 183 304 160 304 159 304 183 305 159 305 184 305 184 306 159 306 134 306 184 307 134 307 185 307 185 308 134 308 133 308 185 309 133 309 178 309 178 310 133 310 161 310 178 311 161 311 179 311 179 312 161 312 162 312 179 313 162 313 181 313 181 314 162 314 163 314 124 315 200 315 123 315 123 316 200 316 201 316 123 317 201 317 122 317 122 318 201 318 202 318 122 319 202 319 121 319 121 320 202 320 203 320 121 321 203 321 120 321 120 322 203 322 204 322 120 323 204 323 119 323 119 324 204 324 205 324 119 325 205 325 118 325 118 326 205 326 206 326 118 327 206 327 117 327 117 328 206 328 207 328 117 329 207 329 116 329 116 330 207 330 208 330 116 331 208 331 115 331 115 332 208 332 209 332 115 333 209 333 114 333 114 334 209 334 210 334 114 335 210 335 113 335 113 336 210 336 211 336 113 337 211 337 112 337 112 338 211 338 212 338 112 339 212 339 111 339 111 340 212 340 213 340 111 341 213 341 110 341 110 342 213 342 214 342 110 343 214 343 109 343 109 344 214 344 215 344 109 345 215 345 105 345 105 346 215 346 216 346 105 347 216 347 104 347 104 348 216 348 217 348 104 349 217 349 108 349 108 350 217 350 218 350 108 351 218 351 107 351 107 352 218 352 219 352 107 353 219 353 106 353 106 354 219 354 220 354 106 355 220 355 124 355 124 356 220 356 200 356 201 357 200 357 221 357 221 358 200 358 220 358 221 359 220 359 219 359 204 360 203 360 221 360 221 361 203 361 202 361 221 362 202 362 201 362 207 363 206 363 221 363 221 364 206 364 205 364 221 365 205 365 204 365 210 366 209 366 221 366 221 367 209 367 208 367 221 368 208 368 207 368 213 369 212 369 221 369 221 370 212 370 211 370 221 371 211 371 210 371 216 372 215 372 221 372 221 373 215 373 214 373 221 374 214 374 213 374 219 375 218 375 221 375 221 376 218 376 217 376 221 377 217 377 216 377 64 378 65 378 154 378 64 379 154 379 100 379 100 380 154 380 152 380 100 381 152 381 101 381 101 382 152 382 151 382 101 383 151 383 102 383 102 384 151 384 139 384 102 385 139 385 90 385 90 386 139 386 138 386 90 387 138 387 92 387 92 388 138 388 128 388 92 389 128 389 97 389 97 390 128 390 126 390 97 391 126 391 98 391 98 392 126 392 137 392 98 393 137 393 99 393 99 394 137 394 136 394 99 395 136 395 82 395 82 396 136 396 145 396 82 397 145 397 84 397 84 398 145 398 144 398 84 399 144 399 86 399 86 400 144 400 142 400 86 401 142 401 87 401 87 402 142 402 157 402 87 403 157 403 88 403 88 404 157 404 156 404 88 405 156 405 77 405 77 406 156 406 155 406 77 407 155 407 79 407 79 408 155 408 132 408 79 409 132 409 80 409 80 410 132 410 146 410 80 411 146 411 73 411 73 412 146 412 67 412 73 413 67 413 66 413 93 414 127 414 91 414 91 415 127 415 129 415 91 416 129 416 89 416 89 417 129 417 140 417 89 418 140 418 94 418 94 419 140 419 153 419 94 420 153 420 95 420 95 421 153 421 149 421 95 422 149 422 103 422 103 423 149 423 150 423 103 424 150 424 96 424 96 425 150 425 158 425 96 426 158 426 75 426 75 427 158 427 148 427 75 428 148 428 74 428 74 429 148 429 147 429 74 430 147 430 72 430 72 431 147 431 131 431 72 432 131 432 78 432 78 433 131 433 130 433 78 434 130 434 76 434 76 435 130 435 141 435 76 436 141 436 85 436 85 437 141 437 143 437 85 438 143 438 83 438 83 439 143 439 135 439 83 440 135 440 81 440 81 441 135 441 125 441 81 442 125 442 93 442 93 443 125 443 127 443

42 |
43 |
44 |
45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 | -------------------------------------------------------------------------------- /robotiq_140_gripper_description/meshes/robotiq_140_right_outer_knuckle.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | VCGLab 6 | VCGLib | MeshLab 7 | 8 | ju. may. 16 09:52:55 2019 GMT 9 | ju. may. 16 09:52:55 2019 GMT 10 | Y_UP 11 | 12 | 13 | 14 | 15 | 16 | -5.39962 -4.5 5.2052 -5.39962 4.5 5.2052 -6.24423 -4.5 4.57816 -6.24423 4.5 4.57816 -7.24651 -4.5 4.25888 -7.24651 4.5 4.25888 -14.0203 4.5 3.2816 -14.0203 -4.5 3.2816 -15.1311 -4.5 3.31632 -15.1311 4.5 3.31632 -16.163 -4.5 3.72886 -16.163 4.5 3.72886 -25.3877 4.5 9.44625 -25.3877 -4.5 9.44625 -25.8988 4.5 9.62015 -25.8988 -4.5 9.62015 -26.4344 4.5 9.5524 -26.4344 -4.5 9.5524 -26.8861 4.5 9.2567 -26.8861 -4.5 9.2567 -27.1625 4.5 8.79292 -27.1625 -4.5 8.79292 -27.2076 4.5 8.25492 -27.2076 -4.5 8.25492 -26.7998 4.5 5.42874 -26.7998 -4.5 5.42874 -26.8661 -4.5 4.18192 -26.8661 4.5 4.18192 -27.4044 -4.5 3.05535 -27.4044 4.5 3.05535 -28.3328 -4.5 2.22054 -28.3328 4.5 2.22054 -29.5101 -4.5 1.80459 -29.5101 4.5 1.80459 -32.2814 4.5 1.40476 -32.2814 -4.5 1.40476 -33.9231 4.5 0.921309 -33.9231 -4.5 0.921309 -35.3615 4.5 -0.00594693 -35.3615 -4.5 -0.00594693 -36.4796 4.5 -1.30157 -36.4796 -4.5 -1.30157 -37.1865 4.5 -2.86015 -37.1865 -4.5 -2.86015 -37.4246 4.5 -4.5549 -37.4246 -4.5 -4.5549 -37.1746 4.5 -6.24792 -37.1746 -4.5 -6.24792 -36.4567 4.5 -7.80149 -36.4567 -4.5 -7.80149 -35.3295 4.5 -9.08919 -35.3295 -4.5 -9.08919 -33.8846 4.5 -10.0063 -33.8846 -4.5 -10.0063 -32.2395 4.5 -10.4782 -32.2395 -4.5 -10.4782 -30.5282 4.5 -10.4664 -30.5282 -4.5 -10.4664 -28.8898 4.5 -9.972 -28.8898 -4.5 -9.972 -27.4576 4.5 -9.03515 -27.4576 -4.5 -9.03515 -26.684 -4.5 -8.53099 -26.684 4.5 -8.53099 -25.7988 -4.5 -8.26868 -25.7988 4.5 -8.26868 -6.71095 4.5 -5.51481 -6.71095 -4.5 -5.51481 -5.49186 -4.5 -5.5741 -5.49186 4.5 -5.5741 -4.38365 -4.5 -6.08552 -4.38365 4.5 -6.08552 2.0962 -4.5 1.36233 4.94234 -4.5 5.64121 1.36087 -4.5 2.09715 3.36716 -4.5 6.70166 0.390224 -4.5 2.46936 -1.76715 -4.5 -1.76838 -2.33364 -4.5 -0.896735 -0.647892 -4.5 2.41459 -3.91929 -4.5 6.39446 -1.57398 -4.5 1.94231 -2.22791 -4.5 1.1342 -0.895106 -4.5 -2.33426 -0.871905 -4.5 -7.44915 0.131711 -4.5 -2.49653 1.02687 -4.5 -7.42937 1.13575 -4.5 -2.22712 1.57614 -4.5 7.33252 -0.315918 -4.5 7.49334 -2.18772 -4.5 7.17383 2.46908 -4.5 0.391949 7.0616 -4.5 2.52663 6.20071 -4.5 4.21915 -2.71479 -4.5 -6.99142 -26.1115 -4.5 -5.9554 -26.7666 -4.5 -7.45831 -28.1602 -4.5 -0.107328 -2.49662 -4.5 0.129969 1.94341 -4.5 -1.57262 6.8543 -4.5 -3.04442 2.41504 -4.5 -0.646205 7.39922 -4.5 -1.22541 7.46982 -4.5 0.672157 2.85982 -4.5 -6.93336 4.50945 -4.5 -5.9929 5.87002 -4.5 -4.66829 -27.0005 -4.5 -1.2662 -26.2339 -4.5 -2.71541 -25.9286 -4.5 -4.32618 -29.6099 -4.5 0.658235 -31.2209 -4.5 0.962471 -32.85 -4.5 0.77834 -34.3524 -4.5 0.122208 -35.5947 -4.5 -0.947628 -36.4665 -4.5 -2.33611 -36.8903 -4.5 -3.91986 -36.8284 -4.5 -5.55815 -36.2864 -4.5 -7.10543 -35.3124 -4.5 -8.4242 -33.9929 -4.5 -9.39728 -32.4453 -4.5 -9.93822 -30.8069 -4.5 -9.99896 -29.2235 -4.5 -9.57408 -27.8356 -4.5 -8.70135 -2.33364 4.5 -0.896735 -1.76715 4.5 -1.76838 2.0962 4.5 1.36233 7.0616 4.5 2.52663 2.46908 4.5 0.391949 7.46982 4.5 0.672157 2.41504 4.5 -0.646205 -2.49662 4.5 0.129969 0.131711 4.5 -2.49653 -0.871905 4.5 -7.44915 -0.895106 4.5 -2.33426 -2.71479 4.5 -6.99142 -2.22791 4.5 1.1342 1.94341 4.5 -1.57262 4.50945 4.5 -5.9929 1.13575 4.5 -2.22712 2.85982 4.5 -6.93336 1.02687 4.5 -7.42937 1.36087 4.5 2.09715 4.94234 4.5 5.64121 6.20071 4.5 4.21915 -0.647892 4.5 2.41459 -0.315918 4.5 7.49334 0.390224 4.5 2.46936 1.57614 4.5 7.33252 3.36716 4.5 6.70166 -1.57398 4.5 1.94231 7.39922 4.5 -1.22541 6.8543 4.5 -3.04442 5.87002 4.5 -4.66829 -3.91929 4.5 6.39446 -2.18772 4.5 7.17383 -26.7666 4.5 -7.45831 -27.8356 4.5 -8.70135 -29.2235 4.5 -9.57408 -30.8069 4.5 -9.99896 -32.4453 4.5 -9.93822 -33.9929 4.5 -9.39728 -35.3124 4.5 -8.4242 -36.2864 4.5 -7.10543 -36.8284 4.5 -5.55815 -36.8903 4.5 -3.91986 -36.4665 4.5 -2.33611 -35.5947 4.5 -0.947628 -27.0005 4.5 -1.2662 -28.1602 4.5 -0.107328 -29.6099 4.5 0.658235 -31.2209 4.5 0.962471 -32.85 4.5 0.77834 -34.3524 4.5 0.122208 -26.1115 4.5 -5.9554 -25.9286 4.5 -4.32618 -26.2339 4.5 -2.71541 -32.4453 5.5 -9.93822 -33.9929 5.5 -9.39728 -31.4246 5.5 -4.53376 -35.3124 5.5 -8.4242 -36.2864 5.5 -7.10543 -27.8356 5.5 -8.70135 -29.2235 5.5 -9.57408 -30.8069 5.5 -9.99896 -25.9286 5.5 -4.32618 -26.1115 5.5 -5.9554 -26.7666 5.5 -7.45831 -28.1602 5.5 -0.107328 -27.0005 5.5 -1.2662 -26.2339 5.5 -2.71541 -32.85 5.5 0.77834 -31.2209 5.5 0.962471 -29.6099 5.5 0.658235 -36.4665 5.5 -2.33611 -35.5947 5.5 -0.947628 -34.3524 5.5 0.122208 -36.8284 5.5 -5.55815 -36.8903 5.5 -3.91986 -36.2864 -5.5 -7.10543 -36.8284 -5.5 -5.55815 -36.8903 -5.5 -3.91986 -36.4665 -5.5 -2.33611 -35.5947 -5.5 -0.947628 -34.3524 -5.5 0.122208 -32.85 -5.5 0.77834 -31.2209 -5.5 0.962471 -29.6099 -5.5 0.658235 -28.1602 -5.5 -0.107328 -27.0005 -5.5 -1.2662 -26.2339 -5.5 -2.71541 -25.9286 -5.5 -4.32618 -26.1115 -5.5 -5.9554 -26.7666 -5.5 -7.45831 -27.8356 -5.5 -8.70135 -29.2235 -5.5 -9.57408 -30.8069 -5.5 -9.99896 -32.4453 -5.5 -9.93822 -33.9929 -5.5 -9.39728 -35.3124 -5.5 -8.4242 -31.4246 -5.5 -4.53376 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -0.596087 0 0.80292 -0.596087 0 0.80292 -0.303528 0 0.952822 -0.303528 0 0.952822 -0.142796 0 0.989752 -0.142796 0 0.989752 0.0312439 0 0.999512 0.0312439 0 0.999512 0.371212 0 0.928548 0.371212 0 0.928548 0.526813 0 0.849981 0.526813 0 0.849981 0.322109 0 0.946703 0.322109 0 0.946703 -0.125497 0 0.992094 -0.125497 0 0.992094 -0.547706 0 0.836671 -0.547706 0 0.836671 -0.859046 0 0.511898 -0.859046 0 0.511898 -0.996507 0 0.083507 -0.996507 0 0.083507 -0.989752 0 -0.142796 -0.989752 0 -0.142796 -0.998592 0 0.0530421 -0.998592 0 0.0530421 -0.902283 0 0.431143 -0.902283 0 0.431143 -0.668607 0 0.743616 -0.668607 0 0.743616 -0.333142 0 0.942877 -0.333142 0 0.942877 -0.142795 0 0.989752 -0.142795 0 0.989752 -0.28249 0 0.95927 -0.28249 0 0.95927 -0.541814 0 0.840499 -0.541814 0 0.840499 -0.757062 0 0.653343 -0.757062 0 0.653343 -0.910714 0 0.413038 -0.910714 0 0.413038 -0.990275 0 0.139126 -0.990275 0 0.139126 -0.98927 0 -0.146101 -0.98927 0 -0.146101 -0.90778 0 -0.419447 -0.90778 0 -0.419447 -0.752438 0 -0.658664 -0.752438 0 -0.658664 -0.535878 0 -0.844295 -0.535878 0 -0.844295 -0.275724 0 -0.961237 -0.275724 0 -0.961237 0.0068676 0 -0.999976 0.0068676 0 -0.999976 0.288894 0 -0.957361 0.288894 0 -0.957361 0.547421 0 -0.836857 0.547421 0 -0.836857 0.546021 0 -0.837771 0.546021 0 -0.837771 0.28409 0 -0.958798 0.28409 0 -0.958798 0.142796 0 -0.989752 0.142796 0 -0.989752 -0.0485781 0 -0.998819 -0.0485781 0 -0.998819 -0.419018 0 -0.907978 -0.419018 0 -0.907978 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 -0.804392 0 -0.594099 -0.943768 0 -0.330609 -0.943768 0 -0.330609 -0.999288 0 -0.0377407 -0.999288 0 -0.0377407 -0.966016 0 0.258483 -0.966016 0 0.258483 -0.84691 0 0.531735 -0.84691 0 0.531735 -0.652552 0 0.757744 -0.652552 0 0.757744 -0.400211 0 0.916423 -0.400211 0 0.916423 -0.112312 0 0.993673 -0.112312 0 0.993673 0.18557 0 0.982631 0.18557 0 0.982631 0.46696 0 0.884279 0.46696 0 0.884279 0.70686 0 0.707354 0.70686 0 0.707354 0.883953 0 0.467576 0.883953 0 0.467576 0.982501 0 0.186256 0.982501 0 0.186256 0.993751 0 -0.111619 0.993751 0 -0.111619 0.916703 0 -0.399571 0.916703 0 -0.399571 0.7582 0 -0.652022 0.7582 0 -0.652022 0.532326 0 -0.846539 0.532326 0 -0.846539 0.259159 0 -0.965835 0.259159 0 -0.965835 -0.0370449 0 -0.999314 -0.0370449 0 -0.999314 -0.329949 0 -0.943999 -0.329949 0 -0.943999 -0.593537 0 -0.804806 -0.593537 0 -0.804806 -0.804392 0 -0.594099 -0.804392 0 -0.594099 -0.943768 0 -0.330609 -0.943768 0 -0.330609 -0.999288 0 -0.0377407 -0.999288 0 -0.0377407 -0.966016 0 0.258483 -0.966016 0 0.258483 -0.84691 0 0.531735 -0.84691 0 0.531735 -0.652552 0 0.757744 -0.652552 0 0.757744 -0.400211 0 0.916423 -0.400211 0 0.916423 -0.112312 0 0.993673 -0.112312 0 0.993673 0.18557 0 0.982631 0.18557 0 0.982631 0.46696 0 0.884279 0.46696 0 0.884279 0.70686 0 0.707354 0.70686 0 0.707354 0.883953 0 0.467576 0.883953 0 0.467576 0.982501 0 0.186256 0.982501 0 0.186256 0.993751 0 -0.111619 0.993751 0 -0.111619 0.916703 0 -0.399571 0.916703 0 -0.399571 0.7582 0 -0.652022 0.7582 0 -0.652022 0.532326 0 -0.846539 0.532326 0 -0.846539 0.259159 0 -0.965835 0.259159 0 -0.965835 -0.0370449 0 -0.999314 -0.0370449 0 -0.999314 -0.329949 0 -0.943999 -0.329949 0 -0.943999 -0.593537 0 -0.804806 -0.593537 0 -0.804806 -0.804392 0 -0.594099 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 -0.477068 0 -0.878866 -0.477068 0 -0.878866 -0.241053 0 -0.970512 -0.241053 0 -0.970512 0.010416 0 -0.999946 0.010416 0 -0.999946 0.261213 0 -0.965281 0.261213 0 -0.965281 0.495269 0 -0.86874 0.495269 0 -0.86874 0.697577 0 -0.71651 0.697577 0 -0.71651 0.855168 0 -0.51835 0.855168 0 -0.51835 0.957941 0 -0.286965 0.957941 0 -0.286965 0.999309 0 -0.0371821 0.999309 0 -0.0371821 0.976618 0 0.214982 0.976618 0 0.214982 0.891324 0 0.453367 0.891324 0 0.453367 0.748895 0 0.662689 0.748895 0 0.662689 0.558459 0 0.829532 0.558459 0 0.829532 0.332227 0 0.9432 0.332227 0 0.9432 0.0846963 0 0.996407 0.0846963 0 0.996407 -0.168263 0 0.985742 -0.168263 0 0.985742 -0.410437 0 0.911889 -0.410437 0 0.911889 -0.626299 0 0.779583 -0.626299 0 0.779583 0.838481 0 0.54493 0.838481 0 0.54493 0.987634 0 0.15678 0.987634 0 0.15678 0.966016 0 -0.258482 0.966016 0 -0.258482 0.777365 0 -0.629049 0.777365 0 -0.629049 0.454303 0 -0.890847 0.454303 0 -0.890847 0.0526842 0 -0.998611 0.0526842 0 -0.998611 -0.358042 0 -0.933705 -0.358042 0 -0.933705 -0.70686 0 -0.707354 -0.70686 0 -0.707354 -0.933455 0 -0.358694 -0.933455 0 -0.358694 -0.998648 0 0.0519874 -0.998648 0 0.0519874 -0.891164 0 0.453681 -0.891164 0 0.453681 -0.629592 0 0.776926 -0.629592 0 0.776926 -0.259156 0 0.965835 -0.259156 0 0.965835 0.15609 0 0.987743 0.15609 0 0.987743 0.544345 0 0.838862 0.544345 0 0.838862 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |

0 0 1 0 2 0 2 1 1 1 3 1 2 2 3 2 4 2 4 3 3 3 5 3 6 4 7 4 5 4 5 5 7 5 4 5 7 6 6 6 8 6 8 7 6 7 9 7 8 8 9 8 10 8 10 9 9 9 11 9 12 10 13 10 11 10 11 11 13 11 10 11 13 12 12 12 14 12 13 13 14 13 15 13 15 14 14 14 16 14 15 15 16 15 17 15 17 16 16 16 18 16 17 17 18 17 19 17 19 18 18 18 20 18 19 19 20 19 21 19 21 20 20 20 22 20 21 21 22 21 23 21 24 22 25 22 22 22 22 23 25 23 23 23 25 24 24 24 26 24 26 25 24 25 27 25 26 26 27 26 28 26 28 27 27 27 29 27 28 28 29 28 30 28 30 29 29 29 31 29 30 30 31 30 32 30 32 31 31 31 33 31 34 32 35 32 33 32 33 33 35 33 32 33 35 34 34 34 36 34 35 35 36 35 37 35 37 36 36 36 38 36 37 37 38 37 39 37 39 38 38 38 40 38 39 39 40 39 41 39 41 40 40 40 42 40 41 41 42 41 43 41 43 42 42 42 44 42 43 43 44 43 45 43 45 44 44 44 46 44 45 45 46 45 47 45 47 46 46 46 48 46 47 47 48 47 49 47 49 48 48 48 50 48 49 49 50 49 51 49 51 50 50 50 52 50 51 51 52 51 53 51 53 52 52 52 54 52 53 53 54 53 55 53 55 54 54 54 56 54 55 55 56 55 57 55 57 56 56 56 58 56 57 57 58 57 59 57 59 58 58 58 60 58 59 59 60 59 61 59 61 60 60 60 62 60 62 61 60 61 63 61 62 62 63 62 64 62 64 63 63 63 65 63 66 64 67 64 65 64 65 65 67 65 64 65 67 66 66 66 68 66 68 67 66 67 69 67 68 68 69 68 70 68 70 69 69 69 71 69 72 70 73 70 74 70 74 71 73 71 75 71 74 72 75 72 76 72 77 73 78 73 67 73 79 74 80 74 81 74 81 75 80 75 0 75 81 76 0 76 82 76 83 77 84 77 85 77 85 78 84 78 86 78 85 79 86 79 87 79 75 80 88 80 76 80 76 81 88 81 89 81 76 82 89 82 79 82 79 83 89 83 90 83 79 84 90 84 80 84 91 85 92 85 72 85 72 86 92 86 93 86 72 87 93 87 73 87 67 88 68 88 77 88 77 89 68 89 70 89 77 90 70 90 83 90 83 91 70 91 94 91 83 92 94 92 84 92 95 93 96 93 78 93 8 94 97 94 7 94 7 95 97 95 98 95 7 96 98 96 4 96 4 97 98 97 82 97 4 98 82 98 2 98 2 99 82 99 0 99 99 100 100 100 101 100 101 101 100 101 102 101 101 102 102 102 91 102 91 103 102 103 103 103 91 104 103 104 92 104 13 105 25 105 10 105 10 106 25 106 26 106 10 107 26 107 8 107 86 108 104 108 87 108 87 109 104 109 105 109 87 110 105 110 99 110 99 111 105 111 106 111 99 112 106 112 100 112 97 113 107 113 98 113 98 114 107 114 108 114 98 115 108 115 78 115 78 116 108 116 109 116 78 117 109 117 95 117 8 118 26 118 97 118 97 119 26 119 28 119 97 120 28 120 110 120 110 121 28 121 30 121 110 122 30 122 111 122 111 123 30 123 32 123 111 124 32 124 112 124 112 125 32 125 35 125 112 126 35 126 113 126 113 127 35 127 37 127 113 128 37 128 114 128 17 129 19 129 15 129 15 130 19 130 21 130 15 131 21 131 13 131 13 132 21 132 23 132 13 133 23 133 25 133 37 134 39 134 114 134 114 135 39 135 41 135 114 136 41 136 115 136 115 137 41 137 43 137 115 138 43 138 116 138 116 139 43 139 45 139 116 140 45 140 117 140 117 141 45 141 47 141 117 142 47 142 118 142 118 143 47 143 49 143 118 144 49 144 119 144 119 145 49 145 51 145 119 146 51 146 120 146 120 147 51 147 53 147 120 148 53 148 121 148 121 149 53 149 55 149 121 150 55 150 122 150 122 151 55 151 57 151 122 152 57 152 123 152 123 153 57 153 59 153 123 154 59 154 124 154 124 155 59 155 61 155 124 156 61 156 96 156 96 157 61 157 62 157 96 158 62 158 78 158 78 159 62 159 64 159 78 160 64 160 67 160 125 161 126 161 69 161 127 162 128 162 129 162 129 163 128 163 130 163 129 164 130 164 131 164 132 165 29 165 27 165 133 166 134 166 135 166 135 167 134 167 136 167 135 168 136 168 126 168 126 169 136 169 71 169 126 170 71 170 69 170 137 171 5 171 3 171 34 172 33 172 132 172 132 173 33 173 31 173 132 174 31 174 29 174 138 175 139 175 140 175 140 176 139 176 141 176 140 177 141 177 133 177 133 178 141 178 142 178 133 179 142 179 134 179 143 180 144 180 127 180 127 181 144 181 145 181 127 182 145 182 128 182 146 183 147 183 148 183 148 184 147 184 149 184 148 185 149 185 143 185 143 186 149 186 150 186 143 187 150 187 144 187 137 188 3 188 151 188 130 189 152 189 131 189 131 190 152 190 153 190 131 191 153 191 138 191 138 192 153 192 154 192 138 193 154 193 139 193 3 194 1 194 151 194 151 195 1 195 155 195 151 196 155 196 146 196 146 197 155 197 156 197 146 198 156 198 147 198 5 199 137 199 6 199 6 200 137 200 132 200 6 201 132 201 9 201 9 202 132 202 27 202 9 203 27 203 11 203 11 204 27 204 24 204 11 205 24 205 12 205 69 206 66 206 125 206 125 207 66 207 65 207 125 208 65 208 157 208 157 209 65 209 63 209 157 210 63 210 158 210 158 211 63 211 60 211 158 212 60 212 159 212 159 213 60 213 58 213 159 214 58 214 160 214 160 215 58 215 56 215 160 216 56 216 161 216 161 217 56 217 54 217 161 218 54 218 162 218 162 219 54 219 52 219 162 220 52 220 163 220 163 221 52 221 50 221 163 222 50 222 164 222 164 223 50 223 48 223 164 224 48 224 165 224 165 225 48 225 46 225 165 226 46 226 166 226 166 227 46 227 44 227 166 228 44 228 167 228 167 229 44 229 42 229 167 230 42 230 168 230 169 231 170 231 132 231 132 232 170 232 171 232 132 233 171 233 34 233 171 234 172 234 34 234 34 235 172 235 173 235 34 236 173 236 36 236 36 237 173 237 174 237 36 238 174 238 38 238 38 239 174 239 168 239 38 240 168 240 40 240 40 241 168 241 42 241 20 242 18 242 16 242 157 243 175 243 125 243 125 244 175 244 176 244 125 245 176 245 132 245 132 246 176 246 177 246 132 247 177 247 169 247 24 248 22 248 12 248 12 249 22 249 20 249 12 250 20 250 14 250 14 251 20 251 16 251 178 252 179 252 180 252 180 253 179 253 181 253 180 254 181 254 182 254 183 255 184 255 180 255 180 256 184 256 185 256 180 257 185 257 178 257 186 258 187 258 180 258 180 259 187 259 188 259 180 260 188 260 183 260 189 261 190 261 180 261 180 262 190 262 191 262 180 263 191 263 186 263 192 264 193 264 180 264 180 265 193 265 194 265 180 266 194 266 189 266 195 267 196 267 180 267 180 268 196 268 197 268 180 269 197 269 192 269 182 270 198 270 180 270 180 271 198 271 199 271 180 272 199 272 195 272 181 273 164 273 182 273 182 274 164 274 165 274 182 275 165 275 198 275 198 276 165 276 166 276 198 277 166 277 199 277 199 278 166 278 167 278 199 279 167 279 195 279 195 280 167 280 168 280 195 281 168 281 196 281 196 282 168 282 174 282 196 283 174 283 197 283 197 284 174 284 173 284 197 285 173 285 192 285 192 286 173 286 172 286 192 287 172 287 193 287 193 288 172 288 171 288 193 289 171 289 194 289 194 290 171 290 170 290 194 291 170 291 189 291 189 292 170 292 169 292 189 293 169 293 190 293 190 294 169 294 177 294 190 295 177 295 191 295 191 296 177 296 176 296 191 297 176 297 186 297 186 298 176 298 175 298 186 299 175 299 187 299 187 300 175 300 157 300 187 301 157 301 188 301 188 302 157 302 158 302 188 303 158 303 183 303 183 304 158 304 159 304 183 305 159 305 184 305 184 306 159 306 160 306 184 307 160 307 185 307 185 308 160 308 161 308 185 309 161 309 178 309 178 310 161 310 162 310 178 311 162 311 179 311 179 312 162 312 163 312 179 313 163 313 181 313 181 314 163 314 164 314 119 315 200 315 118 315 118 316 200 316 201 316 118 317 201 317 117 317 117 318 201 318 202 318 117 319 202 319 116 319 116 320 202 320 203 320 116 321 203 321 115 321 115 322 203 322 204 322 115 323 204 323 114 323 114 324 204 324 205 324 114 325 205 325 113 325 113 326 205 326 206 326 113 327 206 327 112 327 112 328 206 328 207 328 112 329 207 329 111 329 111 330 207 330 208 330 111 331 208 331 110 331 110 332 208 332 209 332 110 333 209 333 97 333 97 334 209 334 210 334 97 335 210 335 107 335 107 336 210 336 211 336 107 337 211 337 108 337 108 338 211 338 212 338 108 339 212 339 109 339 109 340 212 340 213 340 109 341 213 341 95 341 95 342 213 342 214 342 95 343 214 343 96 343 96 344 214 344 215 344 96 345 215 345 124 345 124 346 215 346 216 346 124 347 216 347 123 347 123 348 216 348 217 348 123 349 217 349 122 349 122 350 217 350 218 350 122 351 218 351 121 351 121 352 218 352 219 352 121 353 219 353 120 353 120 354 219 354 220 354 120 355 220 355 119 355 119 356 220 356 200 356 201 357 200 357 221 357 221 358 200 358 220 358 221 359 220 359 219 359 204 360 203 360 221 360 221 361 203 361 202 361 221 362 202 362 201 362 207 363 206 363 221 363 221 364 206 364 205 364 221 365 205 365 204 365 210 366 209 366 221 366 221 367 209 367 208 367 221 368 208 368 207 368 213 369 212 369 221 369 221 370 212 370 211 370 221 371 211 371 210 371 216 372 215 372 221 372 221 373 215 373 214 373 221 374 214 374 213 374 219 375 218 375 221 375 221 376 218 376 217 376 221 377 217 377 216 377 70 378 71 378 136 378 70 379 136 379 94 379 94 380 136 380 134 380 94 381 134 381 84 381 84 382 134 382 142 382 84 383 142 383 86 383 86 384 142 384 141 384 86 385 141 385 104 385 104 386 141 386 139 386 104 387 139 387 105 387 105 388 139 388 154 388 105 389 154 389 106 389 106 390 154 390 153 390 106 391 153 391 100 391 100 392 153 392 152 392 100 393 152 393 102 393 102 394 152 394 130 394 102 395 130 395 103 395 103 396 130 396 128 396 103 397 128 397 92 397 92 398 128 398 145 398 92 399 145 399 93 399 93 400 145 400 144 400 93 401 144 401 73 401 73 402 144 402 150 402 73 403 150 403 75 403 75 404 150 404 149 404 75 405 149 405 88 405 88 406 149 406 147 406 88 407 147 407 89 407 89 408 147 408 156 408 89 409 156 409 90 409 90 410 156 410 155 410 90 411 155 411 80 411 80 412 155 412 1 412 80 413 1 413 0 413 77 414 126 414 78 414 78 415 126 415 125 415 78 416 125 416 98 416 98 417 125 417 132 417 98 418 132 418 82 418 82 419 132 419 137 419 82 420 137 420 81 420 81 421 137 421 151 421 81 422 151 422 79 422 79 423 151 423 146 423 79 424 146 424 76 424 76 425 146 425 148 425 76 426 148 426 74 426 74 427 148 427 143 427 74 428 143 428 72 428 72 429 143 429 127 429 72 430 127 430 91 430 91 431 127 431 129 431 91 432 129 432 101 432 101 433 129 433 131 433 101 434 131 434 99 434 99 435 131 435 138 435 99 436 138 436 87 436 87 437 138 437 140 437 87 438 140 438 85 438 85 439 140 439 133 439 85 440 133 440 83 440 83 441 133 441 135 441 83 442 135 442 77 442 77 443 135 443 126 443

42 |
43 |
44 |
45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 | -------------------------------------------------------------------------------- /robotiq_85_gripper_description/meshes/2-F-85_1_l.dae: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | VCGLab 6 | VCGLib | MeshLab 7 | 8 | ju. may. 16 10:54:46 2019 GMT 9 | ju. may. 16 10:54:46 2019 GMT 10 | Y_UP 11 | 12 | 13 | 14 | 15 | 16 | 25.7988 -4.5 -8.2687 25.7988 4.5 -8.2687 26.684 -4.5 -8.53101 26.684 4.5 -8.53101 27.4576 -4.5 -9.03517 27.4576 4.5 -9.03517 28.8898 4.5 -9.97202 28.8898 -4.5 -9.97202 30.5282 4.5 -10.4664 30.5282 -4.5 -10.4664 32.2395 4.5 -10.4782 32.2395 -4.5 -10.4782 33.8846 4.5 -10.0063 33.8846 -4.5 -10.0063 35.3295 4.5 -9.08923 35.3295 -4.5 -9.08923 36.4567 4.5 -7.80152 36.4567 -4.5 -7.80152 37.1746 4.5 -6.24795 37.1746 -4.5 -6.24795 37.4246 4.5 -4.55493 37.4246 -4.5 -4.55493 37.1865 4.5 -2.86019 37.1865 -4.5 -2.86019 36.4796 4.5 -1.3016 36.4796 -4.5 -1.3016 35.3615 4.5 -0.00597799 35.3615 -4.5 -0.00597799 33.9231 4.5 0.921277 33.9231 -4.5 0.921277 32.2814 4.5 1.40473 32.2814 -4.5 1.40473 29.5101 4.5 1.80456 29.5101 -4.5 1.80456 28.3328 -4.5 2.22051 28.3328 4.5 2.22051 27.4044 -4.5 3.05532 27.4044 4.5 3.05532 26.8661 -4.5 4.18189 26.8661 4.5 4.18189 26.7998 -4.5 5.42871 26.7998 4.5 5.42871 27.2076 4.5 8.2549 27.2076 -4.5 8.2549 27.1625 4.5 8.79289 27.1625 -4.5 8.79289 26.8861 4.5 9.25668 26.8861 -4.5 9.25668 26.4344 4.5 9.55237 26.4344 -4.5 9.55237 25.8988 4.5 9.62013 25.8988 -4.5 9.62013 25.3877 4.5 9.44623 25.3877 -4.5 9.44623 16.163 4.5 3.72885 16.163 -4.5 3.72885 15.1311 -4.5 3.3163 15.1311 4.5 3.3163 14.0203 -4.5 3.28158 14.0203 4.5 3.28158 7.24652 4.5 4.25887 7.24652 -4.5 4.25887 6.24423 -4.5 4.57816 6.24423 4.5 4.57816 5.39963 -4.5 5.20519 5.39963 4.5 5.20519 4.38364 -4.5 -6.08553 4.38364 4.5 -6.08553 5.49186 -4.5 -5.57411 5.49186 4.5 -5.57411 6.71095 -4.5 -5.51481 6.71095 4.5 -5.51481 0.29081 -4.5 -2.48303 2.71478 -4.5 -6.99142 1.27561 -4.5 -2.15008 2.03984 -4.5 -1.44536 -0.744272 -4.5 -2.38664 -1.02688 -4.5 -7.42937 0.871897 -4.5 -7.44915 -2.27163 -4.5 -1.04387 -5.87002 -4.5 -4.66828 -1.65066 -4.5 -1.87758 -4.50946 -4.5 -5.99289 -2.85983 -4.5 -6.93335 -2.49982 -4.5 -0.0296689 -7.39922 -4.5 -1.2254 -6.85431 -4.5 -3.04442 -1.69476 -4.5 1.83788 -6.2007 -4.5 4.21916 -2.29577 -4.5 0.989667 -7.06159 -4.5 2.52664 -7.46982 -4.5 0.672162 1.22422 -4.5 2.17975 2.18773 -4.5 7.17383 0.231795 -4.5 2.48923 0.315923 -4.5 7.49334 -0.800707 -4.5 2.36831 2.00496 -4.5 1.49336 3.9193 -4.5 6.39446 -1.57613 -4.5 7.33252 -3.36715 -4.5 6.70166 -4.94234 -4.5 5.64122 2.43903 -4.5 0.548766 2.45137 -4.5 -0.49072 31.4076 -4.5 -10.0338 29.7872 -4.5 -9.7844 28.3123 -4.5 -9.0685 27.114 -4.5 -7.94967 26.2986 -4.5 -6.52732 25.9388 -4.5 -4.92784 26.0663 -4.5 -3.29334 26.67 -4.5 -1.76907 33.0295 -4.5 -9.79442 34.5088 -4.5 -9.08765 35.7141 -4.5 -7.97626 36.5382 -4.5 -6.55898 36.908 -4.5 -4.96175 36.7905 -4.5 -3.3265 36.1963 -4.5 -1.79852 35.178 -4.5 -0.513582 33.8263 -4.5 0.414144 32.2612 -4.5 0.902223 30.6217 -4.5 0.907296 29.0536 -4.5 0.4289 27.6962 -4.5 -0.490453 -1.69476 4.5 1.83788 -2.29577 4.5 0.989667 -6.2007 4.5 4.21916 -2.27163 4.5 -1.04387 -7.39922 4.5 -1.2254 -2.49982 4.5 -0.0296689 -7.46982 4.5 0.672162 -7.06159 4.5 2.52664 -4.94234 4.5 5.64122 -3.36715 4.5 6.70166 -0.800707 4.5 2.36831 -1.57613 4.5 7.33252 0.231795 4.5 2.48923 27.6962 4.5 -0.490453 0.315923 4.5 7.49334 2.18773 4.5 7.17383 1.22422 4.5 2.17975 3.9193 4.5 6.39446 2.00496 4.5 1.49336 -1.65066 4.5 -1.87758 -5.87002 4.5 -4.66828 -6.85431 4.5 -3.04442 0.29081 4.5 -2.48303 -1.02688 4.5 -7.42937 -0.744272 4.5 -2.38664 -2.85983 4.5 -6.93335 -4.50946 4.5 -5.99289 1.27561 4.5 -2.15008 2.71478 4.5 -6.99142 0.871897 4.5 -7.44915 25.9388 4.5 -4.92784 2.45137 4.5 -0.49072 26.0663 4.5 -3.29334 2.43903 4.5 0.548766 26.67 4.5 -1.76907 26.2986 4.5 -6.52732 2.03984 4.5 -1.44536 29.0536 4.5 0.4289 31.4076 4.5 -10.0338 29.7872 4.5 -9.7844 28.3123 4.5 -9.0685 27.114 4.5 -7.94967 30.6217 4.5 0.907296 32.2612 4.5 0.902223 33.8263 4.5 0.414144 35.178 4.5 -0.513582 36.1963 4.5 -1.79852 36.7905 4.5 -3.3265 36.908 4.5 -4.96175 36.5382 4.5 -6.55898 35.7141 4.5 -7.97626 34.5088 4.5 -9.08765 33.0295 4.5 -9.79442 27.6962 5.5 -0.490453 29.0536 5.5 0.4289 30.6217 5.5 0.907296 32.2612 5.5 0.902223 33.8263 5.5 0.414144 35.178 5.5 -0.513582 36.1963 5.5 -1.79852 36.7905 5.5 -3.3265 36.908 5.5 -4.96175 36.5382 5.5 -6.55898 35.7141 5.5 -7.97626 34.5088 5.5 -9.08765 33.0295 5.5 -9.79442 31.4076 5.5 -10.0338 29.7872 5.5 -9.7844 28.3123 5.5 -9.0685 27.114 5.5 -7.94967 26.2986 5.5 -6.52732 25.9388 5.5 -4.92784 26.0663 5.5 -3.29334 26.67 5.5 -1.76907 28.9248 5.5 -4.56346 29.1289 5.5 -3.54412 29.7299 5.5 -2.69591 30.6239 5.5 -2.16548 31.6564 5.5 -2.04455 32.6488 5.5 -2.35404 29.774 5.5 -6.41137 29.153 5.5 -5.57766 32.7002 5.5 -6.68386 31.7154 5.5 -7.01681 30.6804 5.5 -6.92042 33.876 5.5 -5.02451 33.4645 5.5 -5.97914 33.4296 5.5 -3.04042 33.8637 5.5 -3.98502 29.0536 -5.5 0.4289 30.6217 -5.5 0.907296 32.2612 -5.5 0.902223 33.8263 -5.5 0.414144 35.178 -5.5 -0.513582 36.1963 -5.5 -1.79852 36.7905 -5.5 -3.3265 36.908 -5.5 -4.96175 36.5382 -5.5 -6.55898 35.7141 -5.5 -7.97626 34.5088 -5.5 -9.08765 33.0295 -5.5 -9.79442 31.4076 -5.5 -10.0338 29.7872 -5.5 -9.7844 28.3123 -5.5 -9.0685 27.114 -5.5 -7.94967 26.2986 -5.5 -6.52732 25.9388 -5.5 -4.92784 26.0663 -5.5 -3.29334 26.67 -5.5 -1.76907 27.6962 -5.5 -0.490453 29.1289 -5.5 -3.54412 28.9248 -5.5 -4.56346 29.153 -5.5 -5.57766 33.4645 -5.5 -5.97914 33.876 -5.5 -5.02451 33.8637 -5.5 -3.98502 33.4296 -5.5 -3.04042 31.7154 -5.5 -7.01681 32.7002 -5.5 -6.68386 29.774 -5.5 -6.41137 30.6804 -5.5 -6.92042 31.6564 -5.5 -2.04455 30.6239 -5.5 -2.16548 29.7299 -5.5 -2.69591 32.6488 -5.5 -2.35404 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -0.284095 0 -0.958796 -0.284095 0 -0.958796 -0.546025 0 -0.837769 -0.546025 0 -0.837769 -0.547423 0 -0.836856 -0.547423 0 -0.836856 -0.288895 0 -0.957361 -0.288895 0 -0.957361 -0.00686758 0 -0.999976 -0.00686758 0 -0.999976 0.275722 0 -0.961237 0.275722 0 -0.961237 0.535879 0 -0.844295 0.535879 0 -0.844295 0.752437 0 -0.658665 0.752437 0 -0.658665 0.90778 0 -0.419448 0.90778 0 -0.419448 0.989269 0 -0.146105 0.989269 0 -0.146105 0.990274 0 0.139128 0.990274 0 0.139128 0.910715 0 0.413035 0.910715 0 0.413035 0.757062 0 0.653343 0.757062 0 0.653343 0.541814 0 0.840498 0.541814 0 0.840498 0.282491 0 0.95927 0.282491 0 0.95927 0.142797 0 0.989752 0.142797 0 0.989752 0.333143 0 0.942876 0.333143 0 0.942876 0.668608 0 0.743615 0.668608 0 0.743615 0.902281 0 0.431149 0.902281 0 0.431149 0.998593 0 0.0530373 0.998593 0 0.0530373 0.989752 0 -0.142797 0.989752 0 -0.142797 0.996506 0 0.0835183 0.996506 0 0.0835183 0.859052 0 0.511888 0.859052 0 0.511888 0.547698 0 0.836676 0.547698 0 0.836676 0.125506 0 0.992093 0.125506 0 0.992093 -0.322111 0 0.946702 -0.322111 0 0.946702 -0.526812 0 0.849982 -0.526812 0 0.849982 -0.37121 0 0.928549 -0.37121 0 0.928549 -0.0312436 0 0.999512 -0.0312436 0 0.999512 0.142797 0 0.989752 0.142797 0 0.989752 0.303532 0 0.952821 0.303532 0 0.952821 0.596088 0 0.802919 0.596088 0 0.802919 0.419017 0 -0.907979 0.419017 0 -0.907979 0.048578 0 -0.998819 0.048578 0 -0.998819 -0.142796 0 -0.989752 -0.142796 0 -0.989752 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 -0.560763 0 0.827976 -0.2918 0 0.956479 -0.2918 0 0.956479 0.00309424 0 0.999995 0.00309424 0 0.999995 0.297707 0 0.954657 0.297707 0 0.954657 0.56587 0 0.824495 0.56587 0 0.824495 0.783755 0 0.62107 0.783755 0 0.62107 0.932 0 0.362458 0.932 0 0.362458 0.99743 0 0.0716467 0.99743 0 0.0716467 0.974235 0 -0.225534 0.974235 0 -0.225534 0.864475 0 -0.502676 0.864475 0 -0.502676 0.677903 0 -0.735151 0.677903 0 -0.735151 0.431096 0 -0.902306 0.431096 0 -0.902306 0.145984 0 -0.989287 0.145984 0 -0.989287 -0.152098 0 -0.988366 -0.152098 0 -0.988366 -0.436666 0 -0.899624 -0.436666 0 -0.899624 -0.682436 0 -0.730945 -0.682436 0 -0.730945 -0.867568 0 -0.497319 -0.867568 0 -0.497319 -0.975611 0 -0.219507 -0.975611 0 -0.219507 -0.996968 0 0.0778136 -0.996968 0 0.0778136 -0.92974 0 0.368217 -0.92974 0 0.368217 -0.779901 0 0.625904 -0.779901 0 0.625904 -0.560763 0 0.827976 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 -0.560763 0 0.827976 -0.2918 0 0.956479 -0.2918 0 0.956479 0.00309424 0 0.999995 0.00309424 0 0.999995 0.297707 0 0.954657 0.297707 0 0.954657 0.56587 0 0.824495 0.56587 0 0.824495 0.783755 0 0.62107 0.783755 0 0.62107 0.932 0 0.362458 0.932 0 0.362458 0.99743 0 0.0716467 0.99743 0 0.0716467 0.974235 0 -0.225534 0.974235 0 -0.225534 0.864475 0 -0.502676 0.864475 0 -0.502676 0.677903 0 -0.735151 0.677903 0 -0.735151 0.431096 0 -0.902306 0.431096 0 -0.902306 0.145984 0 -0.989287 0.145984 0 -0.989287 -0.152098 0 -0.988366 -0.152098 0 -0.988366 -0.436666 0 -0.899624 -0.436666 0 -0.899624 -0.682436 0 -0.730945 -0.682436 0 -0.730945 -0.867568 0 -0.497319 -0.867568 0 -0.497319 -0.975611 0 -0.219507 -0.975611 0 -0.219507 -0.996968 0 0.0778136 -0.996968 0 0.0778136 -0.92974 0 0.368217 -0.92974 0 0.368217 -0.779901 0 0.625904 -0.779901 0 0.625904 -0.560763 0 0.827976 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0.510246 0 -0.860029 0.510246 0 -0.860029 0.116321 0 -0.993212 0.116321 0 -0.993212 -0.297705 0 -0.954658 -0.297705 0 -0.954658 -0.660262 0 -0.751036 -0.660262 0 -0.751036 -0.908657 0 -0.417542 -0.908657 0 -0.417542 -0.99993 0 -0.0118709 -0.99993 0 -0.0118709 -0.91831 0 0.395863 -0.91831 0 0.395863 -0.677903 0 0.735152 -0.677903 0 0.735152 -0.320283 0 0.947322 -0.320283 0 0.947322 0.0927231 0 0.995692 0.0927231 0 0.995692 0.489682 0 0.871901 0.489682 0 0.871901 0.801985 0 0.597344 0.801985 0 0.597344 0.975611 0 0.219507 0.975611 0 0.219507 0.980546 0 -0.196289 0.980546 0 -0.196289 0.815935 0 -0.578144 0.815935 0 -0.578144 0.6263 0 0.779583 0.6263 0 0.779583 0.410437 0 0.911889 0.410437 0 0.911889 0.168263 0 0.985742 0.168263 0 0.985742 -0.0846947 0 0.996407 -0.0846947 0 0.996407 -0.332226 0 0.9432 -0.332226 0 0.9432 -0.558458 0 0.829533 -0.558458 0 0.829533 -0.748894 0 0.66269 -0.748894 0 0.66269 -0.891324 0 0.453367 -0.891324 0 0.453367 -0.976618 0 0.214984 -0.976618 0 0.214984 -0.999309 0 -0.0371824 -0.999309 0 -0.0371824 -0.957941 0 -0.286964 -0.957941 0 -0.286964 -0.855169 0 -0.51835 -0.855169 0 -0.51835 -0.697578 0 -0.716509 -0.697578 0 -0.716509 -0.49527 0 -0.868739 -0.49527 0 -0.868739 -0.261216 0 -0.965281 -0.261216 0 -0.965281 -0.0104173 0 -0.999946 -0.0104173 0 -0.999946 0.241053 0 -0.970512 0.241053 0 -0.970512 0.477066 0 -0.878867 0.477066 0 -0.878867 0.510243 0 -0.86003 0.510243 0 -0.86003 0.116325 0 -0.993211 0.116325 0 -0.993211 -0.297709 0 -0.954657 -0.297709 0 -0.954657 -0.660264 0 -0.751033 -0.660264 0 -0.751033 -0.908653 0 -0.417551 -0.908653 0 -0.417551 -0.99993 0 -0.0118682 -0.99993 0 -0.0118682 -0.918309 0 0.395865 -0.918309 0 0.395865 -0.677903 0 0.735151 -0.677903 0 0.735151 -0.320282 0 0.947322 -0.320282 0 0.947322 0.0927181 0 0.995692 0.0927181 0 0.995692 0.489688 0 0.871898 0.489688 0 0.871898 0.801984 0 0.597345 0.801984 0 0.597345 0.975611 0 0.219507 0.975611 0 0.219507 0.980546 0 -0.196289 0.980546 0 -0.196289 0.815936 0 -0.578143 0.815936 0 -0.578143 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 |

0 0 1 0 2 0 2 1 1 1 3 1 2 2 3 2 4 2 4 3 3 3 5 3 4 4 5 4 6 4 4 5 6 5 7 5 7 6 6 6 8 6 7 7 8 7 9 7 9 8 8 8 10 8 9 9 10 9 11 9 11 10 10 10 12 10 11 11 12 11 13 11 13 12 12 12 14 12 13 13 14 13 15 13 15 14 14 14 16 14 15 15 16 15 17 15 17 16 16 16 18 16 17 17 18 17 19 17 19 18 18 18 20 18 19 19 20 19 21 19 21 20 20 20 22 20 21 21 22 21 23 21 23 22 22 22 24 22 23 23 24 23 25 23 25 24 24 24 26 24 25 25 26 25 27 25 27 26 26 26 28 26 27 27 28 27 29 27 29 28 28 28 30 28 29 29 30 29 31 29 32 30 33 30 30 30 30 31 33 31 31 31 33 32 32 32 34 32 34 33 32 33 35 33 34 34 35 34 36 34 36 35 35 35 37 35 36 36 37 36 38 36 38 37 37 37 39 37 38 38 39 38 40 38 40 39 39 39 41 39 42 40 43 40 41 40 41 41 43 41 40 41 43 42 42 42 44 42 43 43 44 43 45 43 45 44 44 44 46 44 45 45 46 45 47 45 47 46 46 46 48 46 47 47 48 47 49 47 49 48 48 48 50 48 49 49 50 49 51 49 51 50 50 50 52 50 51 51 52 51 53 51 54 52 55 52 52 52 52 53 55 53 53 53 55 54 54 54 56 54 56 55 54 55 57 55 56 56 57 56 58 56 58 57 57 57 59 57 60 58 61 58 59 58 59 59 61 59 58 59 61 60 60 60 62 60 62 61 60 61 63 61 62 62 63 62 64 62 64 63 63 63 65 63 66 64 67 64 68 64 68 65 67 65 69 65 68 66 69 66 70 66 70 67 69 67 71 67 1 68 0 68 71 68 71 69 0 69 70 69 72 70 73 70 74 70 74 71 73 71 66 71 74 72 66 72 75 72 76 73 77 73 72 73 72 74 77 74 78 74 72 75 78 75 73 75 79 76 80 76 81 76 81 77 80 77 82 77 81 78 82 78 76 78 76 79 82 79 83 79 76 80 83 80 77 80 84 81 85 81 79 81 79 82 85 82 86 82 79 83 86 83 80 83 87 84 88 84 89 84 89 85 88 85 90 85 89 86 90 86 84 86 84 87 90 87 91 87 84 88 91 88 85 88 92 89 93 89 94 89 94 90 93 90 95 90 94 91 95 91 96 91 97 92 64 92 92 92 92 93 64 93 98 93 92 94 98 94 93 94 95 95 99 95 96 95 96 96 99 96 100 96 96 97 100 97 87 97 87 98 100 98 101 98 87 99 101 99 88 99 102 100 61 100 97 100 97 101 61 101 62 101 97 102 62 102 64 102 103 103 56 103 102 103 102 104 56 104 58 104 102 105 58 105 61 105 66 106 68 106 75 106 75 107 68 107 70 107 75 108 70 108 103 108 104 109 105 109 7 109 7 110 105 110 4 110 4 111 105 111 106 111 4 112 106 112 2 112 2 113 106 113 107 113 2 114 107 114 0 114 0 115 107 115 108 115 0 116 108 116 70 116 70 117 108 117 109 117 70 118 109 118 103 118 103 119 109 119 110 119 103 120 110 120 111 120 55 121 56 121 38 121 38 122 56 122 103 122 38 123 103 123 36 123 36 124 103 124 111 124 36 125 111 125 34 125 7 126 9 126 104 126 104 127 9 127 11 127 104 128 11 128 112 128 112 129 11 129 13 129 112 130 13 130 113 130 113 131 13 131 15 131 113 132 15 132 114 132 114 133 15 133 17 133 114 134 17 134 115 134 115 135 17 135 19 135 115 136 19 136 116 136 116 137 19 137 21 137 116 138 21 138 117 138 117 139 21 139 23 139 117 140 23 140 118 140 118 141 23 141 25 141 118 142 25 142 119 142 119 143 25 143 27 143 119 144 27 144 120 144 120 145 27 145 29 145 120 146 29 146 121 146 121 147 29 147 31 147 121 148 31 148 122 148 122 149 31 149 33 149 122 150 33 150 123 150 123 151 33 151 34 151 123 152 34 152 124 152 124 153 34 153 111 153 45 154 47 154 43 154 43 155 47 155 49 155 38 156 40 156 55 156 55 157 40 157 43 157 55 158 43 158 53 158 53 159 43 159 49 159 53 160 49 160 51 160 125 161 126 161 127 161 128 162 129 162 130 162 130 163 129 163 131 163 130 164 131 164 126 164 126 165 131 165 132 165 126 166 132 166 127 166 127 167 133 167 125 167 125 168 133 168 134 168 125 169 134 169 135 169 135 170 134 170 136 170 135 171 136 171 137 171 57 172 54 172 138 172 136 173 139 173 137 173 137 174 139 174 140 174 137 175 140 175 141 175 141 176 140 176 142 176 141 177 142 177 143 177 144 178 145 178 128 178 128 179 145 179 146 179 128 180 146 180 129 180 147 181 148 181 149 181 149 182 148 182 150 182 149 183 150 183 144 183 144 184 150 184 151 184 144 185 151 185 145 185 152 186 153 186 147 186 147 187 153 187 154 187 147 188 154 188 148 188 155 189 156 189 157 189 157 190 156 190 158 190 157 191 158 191 159 191 159 192 158 192 138 192 138 193 158 193 59 193 138 194 59 194 57 194 142 195 65 195 143 195 143 196 65 196 63 196 143 197 63 197 158 197 158 198 63 198 60 198 158 199 60 199 59 199 41 200 54 200 42 200 42 201 54 201 52 201 155 202 160 202 156 202 156 203 160 203 71 203 156 204 71 204 161 204 161 205 71 205 69 205 161 206 69 206 152 206 152 207 69 207 67 207 152 208 67 208 153 208 41 209 39 209 54 209 54 210 39 210 37 210 54 211 37 211 138 211 138 212 37 212 35 212 138 213 35 213 162 213 46 214 44 214 48 214 48 215 44 215 42 215 48 216 42 216 50 216 50 217 42 217 52 217 163 218 8 218 164 218 164 219 8 219 6 219 164 220 6 220 165 220 165 221 6 221 5 221 165 222 5 222 166 222 166 223 5 223 3 223 166 224 3 224 160 224 160 225 3 225 1 225 160 226 1 226 71 226 162 227 35 227 167 227 167 228 35 228 32 228 167 229 32 229 168 229 168 230 32 230 30 230 168 231 30 231 169 231 169 232 30 232 28 232 169 233 28 233 170 233 170 234 28 234 26 234 170 235 26 235 171 235 171 236 26 236 24 236 171 237 24 237 172 237 172 238 24 238 22 238 172 239 22 239 173 239 173 240 22 240 20 240 173 241 20 241 174 241 174 242 20 242 18 242 174 243 18 243 175 243 175 244 18 244 16 244 175 245 16 245 176 245 176 246 16 246 14 246 176 247 14 247 177 247 177 248 14 248 12 248 177 249 12 249 163 249 163 250 12 250 10 250 163 251 10 251 8 251 178 252 162 252 179 252 179 253 162 253 167 253 179 254 167 254 180 254 180 255 167 255 168 255 180 256 168 256 181 256 181 257 168 257 169 257 181 258 169 258 182 258 182 259 169 259 170 259 182 260 170 260 183 260 183 261 170 261 171 261 183 262 171 262 184 262 184 263 171 263 172 263 184 264 172 264 185 264 185 265 172 265 173 265 185 266 173 266 186 266 186 267 173 267 174 267 186 268 174 268 187 268 187 269 174 269 175 269 187 270 175 270 188 270 188 271 175 271 176 271 188 272 176 272 189 272 189 273 176 273 177 273 189 274 177 274 190 274 190 275 177 275 163 275 190 276 163 276 191 276 191 277 163 277 164 277 191 278 164 278 192 278 192 279 164 279 165 279 192 280 165 280 193 280 193 281 165 281 166 281 193 282 166 282 194 282 194 283 166 283 160 283 194 284 160 284 195 284 195 285 160 285 155 285 195 286 155 286 196 286 196 287 155 287 157 287 196 288 157 288 197 288 197 289 157 289 159 289 197 290 159 290 198 290 198 291 159 291 138 291 198 292 138 292 178 292 178 293 138 293 162 293 199 294 197 294 200 294 200 295 197 295 198 295 200 296 198 296 201 296 201 297 198 297 178 297 201 298 178 298 202 298 178 299 179 299 202 299 202 300 179 300 180 300 202 301 180 301 203 301 203 302 180 302 181 302 203 303 181 303 204 303 205 304 194 304 206 304 206 305 194 305 195 305 206 306 195 306 199 306 199 307 195 307 196 307 199 308 196 308 197 308 207 309 190 309 208 309 208 310 190 310 191 310 208 311 191 311 209 311 209 312 191 312 192 312 209 313 192 313 205 313 205 314 192 314 193 314 205 315 193 315 194 315 210 316 187 316 211 316 211 317 187 317 188 317 211 318 188 318 207 318 207 319 188 319 189 319 207 320 189 320 190 320 181 321 182 321 204 321 204 322 182 322 183 322 204 323 183 323 212 323 212 324 183 324 184 324 212 325 184 325 213 325 213 326 184 326 185 326 213 327 185 327 210 327 210 328 185 328 186 328 210 329 186 329 187 329 124 330 214 330 123 330 123 331 214 331 215 331 123 332 215 332 122 332 122 333 215 333 216 333 122 334 216 334 121 334 121 335 216 335 217 335 121 336 217 336 120 336 120 337 217 337 218 337 120 338 218 338 119 338 119 339 218 339 219 339 119 340 219 340 118 340 118 341 219 341 220 341 118 342 220 342 117 342 117 343 220 343 221 343 117 344 221 344 116 344 116 345 221 345 222 345 116 346 222 346 115 346 115 347 222 347 223 347 115 348 223 348 114 348 114 349 223 349 224 349 114 350 224 350 113 350 113 351 224 351 225 351 113 352 225 352 112 352 112 353 225 353 226 353 112 354 226 354 104 354 104 355 226 355 227 355 104 356 227 356 105 356 105 357 227 357 228 357 105 358 228 358 106 358 106 359 228 359 229 359 106 360 229 360 107 360 107 361 229 361 230 361 107 362 230 362 108 362 108 363 230 363 231 363 108 364 231 364 109 364 109 365 231 365 232 365 109 366 232 366 110 366 110 367 232 367 233 367 110 368 233 368 111 368 111 369 233 369 234 369 111 370 234 370 124 370 124 371 234 371 214 371 235 372 232 372 236 372 236 373 232 373 231 373 236 374 231 374 237 374 238 375 222 375 239 375 239 376 222 376 221 376 239 377 221 377 240 377 240 378 221 378 220 378 240 379 220 379 241 379 242 380 225 380 243 380 243 381 225 381 224 381 243 382 224 382 238 382 238 383 224 383 223 383 238 384 223 384 222 384 231 385 230 385 237 385 237 386 230 386 229 386 237 387 229 387 244 387 244 388 229 388 228 388 244 389 228 389 245 389 245 390 228 390 227 390 245 391 227 391 242 391 242 392 227 392 226 392 242 393 226 393 225 393 246 394 215 394 247 394 247 395 215 395 214 395 247 396 214 396 248 396 248 397 214 397 234 397 248 398 234 398 235 398 235 399 234 399 233 399 235 400 233 400 232 400 220 401 219 401 241 401 241 402 219 402 218 402 241 403 218 403 249 403 249 404 218 404 217 404 249 405 217 405 246 405 246 406 217 406 216 406 246 407 216 407 215 407 248 408 201 408 247 408 247 409 201 409 202 409 247 410 202 410 246 410 246 411 202 411 203 411 246 412 203 412 249 412 249 413 203 413 204 413 249 414 204 414 241 414 241 415 204 415 212 415 241 416 212 416 240 416 240 417 212 417 213 417 240 418 213 418 239 418 239 419 213 419 210 419 239 420 210 420 238 420 238 421 210 421 211 421 238 422 211 422 243 422 243 423 211 423 207 423 243 424 207 424 242 424 242 425 207 425 208 425 242 426 208 426 245 426 245 427 208 427 209 427 245 428 209 428 244 428 244 429 209 429 205 429 244 430 205 430 237 430 237 431 205 431 206 431 237 432 206 432 236 432 236 433 206 433 199 433 236 434 199 434 235 434 235 435 199 435 200 435 235 436 200 436 248 436 248 437 200 437 201 437 64 438 65 438 142 438 64 439 142 439 98 439 98 440 142 440 140 440 98 441 140 441 93 441 93 442 140 442 139 442 93 443 139 443 95 443 95 444 139 444 136 444 95 445 136 445 99 445 99 446 136 446 134 446 99 447 134 447 100 447 100 448 134 448 133 448 100 449 133 449 101 449 101 450 133 450 127 450 101 451 127 451 88 451 88 452 127 452 132 452 88 453 132 453 90 453 90 454 132 454 131 454 90 455 131 455 91 455 91 456 131 456 129 456 91 457 129 457 85 457 85 458 129 458 146 458 85 459 146 459 86 459 86 460 146 460 145 460 86 461 145 461 80 461 80 462 145 462 151 462 80 463 151 463 82 463 82 464 151 464 150 464 82 465 150 465 83 465 83 466 150 466 148 466 83 467 148 467 77 467 77 468 148 468 154 468 77 469 154 469 78 469 78 470 154 470 153 470 78 471 153 471 73 471 73 472 153 472 67 472 73 473 67 473 66 473 87 474 125 474 96 474 96 475 125 475 135 475 96 476 135 476 94 476 94 477 135 477 137 477 94 478 137 478 92 478 92 479 137 479 141 479 92 480 141 480 97 480 97 481 141 481 143 481 97 482 143 482 102 482 102 483 143 483 158 483 102 484 158 484 103 484 103 485 158 485 156 485 103 486 156 486 75 486 75 487 156 487 161 487 75 488 161 488 74 488 74 489 161 489 152 489 74 490 152 490 72 490 72 491 152 491 147 491 72 492 147 492 76 492 76 493 147 493 149 493 76 494 149 494 81 494 81 495 149 495 144 495 81 496 144 496 79 496 79 497 144 497 128 497 79 498 128 498 84 498 84 499 128 499 130 499 84 500 130 500 89 500 89 501 130 501 126 501 89 502 126 502 87 502 87 503 126 503 125 503

42 |
43 |
44 |
45 |
46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 |
57 | --------------------------------------------------------------------------------