├── img ├── rviz.png ├── cr750.jpg ├── rqt_1.png ├── rqt_2.png ├── rqt_3.png ├── rtt_1.png ├── rtt_2.png ├── rtt_3.png ├── rtt_4.png ├── rtt_5.png ├── rtt_6.png ├── rtt_7.png ├── moveit_rv4fl.png └── moveit_rv7fl.png ├── rv4fl_moveit_config ├── launch │ ├── rv4fl_moveit_sensor_manager.launch.xml │ ├── rv4fl_moveit_controller_manager.launch.xml │ ├── planning_pipeline.launch.xml │ ├── fake_moveit_controller_manager.launch.xml │ ├── chomp_planning_pipeline.launch.xml │ ├── warehouse.launch │ ├── setup_assistant.launch │ ├── joystick_control.launch │ ├── moveit_rviz.launch │ ├── ros_controllers.launch │ ├── warehouse_settings.launch.xml │ ├── default_warehouse_db.launch │ ├── sensor_manager.launch.xml │ ├── run_benchmark_ompl.launch │ ├── ompl_planning_pipeline.launch.xml │ ├── planning_context.launch │ ├── trajectory_execution.launch.xml │ ├── demo.launch │ ├── move_group.launch │ └── moveit.rviz ├── config │ ├── sensors_3d.yaml │ ├── fake_controllers.yaml │ ├── kinematics.yaml │ ├── chomp_planning.yaml │ ├── ros_controllers.yaml │ ├── joint_limits.yaml │ ├── rv4fl.srdf │ └── ompl_planning.yaml ├── CMakeLists.txt ├── .setup_assistant ├── CHANGELOG.rst └── package.xml ├── rv7fl_moveit_config ├── launch │ ├── rv7fl_moveit_sensor_manager.launch.xml │ ├── rv7fl_moveit_controller_manager.launch.xml │ ├── planning_pipeline.launch.xml │ ├── fake_moveit_controller_manager.launch.xml │ ├── chomp_planning_pipeline.launch.xml │ ├── warehouse.launch │ ├── setup_assistant.launch │ ├── joystick_control.launch │ ├── sensor_manager.launch.xml │ ├── moveit_rviz.launch │ ├── ros_controllers.launch │ ├── warehouse_settings.launch.xml │ ├── default_warehouse_db.launch │ ├── run_benchmark_ompl.launch │ ├── ompl_planning_pipeline.launch.xml │ ├── moveit_planning_execution.launch │ ├── planning_context.launch │ ├── trajectory_execution.launch.xml │ ├── demo.launch │ ├── move_group.launch │ └── moveit.rviz ├── config │ ├── sensors_3d.yaml │ ├── fake_controllers.yaml │ ├── kinematics.yaml │ ├── rv7fl_controllers.yaml │ ├── chomp_planning.yaml │ ├── ros_controllers.yaml │ ├── joint_limits.yaml │ ├── rv7fl.srdf │ └── ompl_planning.yaml ├── CMakeLists.txt ├── .setup_assistant ├── CHANGELOG.rst └── package.xml ├── melfa_description ├── mesh │ ├── rv4fl │ │ ├── L0.rsdoc │ │ ├── L0.stl │ │ ├── L1.rsdoc │ │ ├── L1.stl │ │ ├── L2.rsdoc │ │ ├── L2.stl │ │ ├── L3.rsdoc │ │ ├── L3.stl │ │ ├── L4.rsdoc │ │ ├── L4.stl │ │ ├── L5.rsdoc │ │ ├── L5.stl │ │ ├── L6.rsdoc │ │ ├── L6.stl │ │ ├── test.launch │ │ └── L6.stp │ └── rv7fl │ │ ├── L0.stl │ │ ├── L1.stl │ │ ├── L2.stl │ │ ├── L3.stl │ │ ├── L4.stl │ │ ├── L5.stl │ │ └── L6.stl ├── README.md ├── urdf │ ├── rv4fl.urdf.xacro │ ├── rv7fl.urdf.xacro │ ├── rv4fl.xacro │ ├── rv7fl.xacro │ └── rv4fl_yoods.yrdf.xacro ├── CMakeLists.txt ├── launch │ ├── rviz.launch │ └── melfa_description.rviz ├── package.xml └── CHANGELOG.rst ├── melfa_robot ├── CMakeLists.txt ├── CHANGELOG.rst └── package.xml ├── melfa_driver ├── test │ ├── joint_trajectory_controller.test │ └── test_joint_trajectory_controller.py ├── package.xml ├── CMakeLists.txt ├── config │ └── controller.yaml ├── launch │ └── melfa_driver.launch ├── include │ └── melfa_driver │ │ ├── melfa_hardware_interface.h │ │ └── strdef.h ├── CHANGELOG.rst └── src │ ├── melfa_driver_node.cpp │ ├── melfa_hardware_interface.cpp │ └── melfa_loopback_node.cpp ├── .gitignore ├── .travis.yml ├── README.md └── LICENSE /img/rviz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rviz.png -------------------------------------------------------------------------------- /img/cr750.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/cr750.jpg -------------------------------------------------------------------------------- /img/rqt_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rqt_1.png -------------------------------------------------------------------------------- /img/rqt_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rqt_2.png -------------------------------------------------------------------------------- /img/rqt_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rqt_3.png -------------------------------------------------------------------------------- /img/rtt_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rtt_1.png -------------------------------------------------------------------------------- /img/rtt_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rtt_2.png -------------------------------------------------------------------------------- /img/rtt_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rtt_3.png -------------------------------------------------------------------------------- /img/rtt_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rtt_4.png -------------------------------------------------------------------------------- /img/rtt_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rtt_5.png -------------------------------------------------------------------------------- /img/rtt_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rtt_6.png -------------------------------------------------------------------------------- /img/rtt_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/rtt_7.png -------------------------------------------------------------------------------- /img/moveit_rv4fl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/moveit_rv4fl.png -------------------------------------------------------------------------------- /img/moveit_rv7fl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/img/moveit_rv7fl.png -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/rv4fl_moveit_sensor_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/rv7fl_moveit_sensor_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/rv4fl_moveit_controller_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L0.rsdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L0.rsdoc -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L0.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L1.rsdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L1.rsdoc -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L1.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L2.rsdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L2.rsdoc -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L2.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L3.rsdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L3.rsdoc -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L3.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L4.rsdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L4.rsdoc -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L4.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L5.rsdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L5.rsdoc -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L5.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L6.rsdoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L6.rsdoc -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv4fl/L6.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv7fl/L0.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv7fl/L0.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv7fl/L1.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv7fl/L1.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv7fl/L2.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv7fl/L2.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv7fl/L3.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv7fl/L3.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv7fl/L4.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv7fl/L4.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv7fl/L5.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv7fl/L5.stl -------------------------------------------------------------------------------- /melfa_description/mesh/rv7fl/L6.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tork-a/melfa_robot/HEAD/melfa_description/mesh/rv7fl/L6.stl -------------------------------------------------------------------------------- /melfa_robot/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(melfa_robot) 3 | find_package(catkin REQUIRED) 4 | catkin_metapackage() 5 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/config/sensors_3d.yaml: -------------------------------------------------------------------------------- 1 | # The name of this file shouldn't be changed, or else the Setup Assistant won't detect it 2 | sensors: 3 | - {} -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/sensors_3d.yaml: -------------------------------------------------------------------------------- 1 | # The name of this file shouldn't be changed, or else the Setup Assistant won't detect it 2 | sensors: 3 | - {} -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/fake_controllers.yaml: -------------------------------------------------------------------------------- 1 | controller_list: 2 | - name: fake_arm_controller 3 | joints: 4 | - joint1 5 | - joint2 6 | - joint3 7 | - joint4 8 | - joint5 9 | - joint6 -------------------------------------------------------------------------------- /rv4fl_moveit_config/config/fake_controllers.yaml: -------------------------------------------------------------------------------- 1 | controller_list: 2 | - name: fake_manipulator_controller 3 | joints: 4 | - joint1 5 | - joint2 6 | - joint3 7 | - joint4 8 | - joint5 9 | - joint6 -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/kinematics.yaml: -------------------------------------------------------------------------------- 1 | arm: 2 | kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin 3 | kinematics_solver_search_resolution: 0.005 4 | kinematics_solver_timeout: 0.005 5 | kinematics_solver_attempts: 3 -------------------------------------------------------------------------------- /rv4fl_moveit_config/config/kinematics.yaml: -------------------------------------------------------------------------------- 1 | manipulator: 2 | kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin 3 | kinematics_solver_search_resolution: 0.005 4 | kinematics_solver_timeout: 0.005 5 | kinematics_solver_attempts: 3 -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/rv7fl_moveit_controller_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(rv4fl_moveit_config) 3 | 4 | find_package(catkin REQUIRED) 5 | 6 | catkin_package() 7 | 8 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 9 | PATTERN "setup_assistant.launch" EXCLUDE) 10 | install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 11 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(rv7fl_moveit_config) 3 | 4 | find_package(catkin REQUIRED) 5 | 6 | catkin_package() 7 | 8 | install(DIRECTORY launch DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 9 | PATTERN "setup_assistant.launch" EXCLUDE) 10 | install(DIRECTORY config DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 11 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/rv7fl_controllers.yaml: -------------------------------------------------------------------------------- 1 | controller_manager_ns: controller_manager 2 | controller_list: 3 | - name: joint_trajectory_controller 4 | action_ns: follow_joint_trajectory 5 | type: FollowJointTrajectory 6 | default: true 7 | joints: 8 | - joint1 9 | - joint2 10 | - joint3 11 | - joint4 12 | - joint5 13 | - joint6 14 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/.setup_assistant: -------------------------------------------------------------------------------- 1 | moveit_setup_assistant_config: 2 | URDF: 3 | package: melfa_description 4 | relative_path: urdf/rv7fl.urdf.xacro 5 | SRDF: 6 | relative_path: config/rv7fl.srdf 7 | CONFIG: 8 | author_name: Tokyo Opensource Robotics Kyokai (TORK) Developer Team 9 | author_email: dev@opensource-robotics.tokyo.jp 10 | generated_timestamp: 1523416016 -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/test.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/planning_pipeline.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/.setup_assistant: -------------------------------------------------------------------------------- 1 | moveit_setup_assistant_config: 2 | URDF: 3 | package: melfa_description 4 | relative_path: urdf/rv4fl.urdf.xacro 5 | xacro_args: "--inorder " 6 | SRDF: 7 | relative_path: config/rv4fl.srdf 8 | CONFIG: 9 | author_name: Tokyo Opensource Robotics Kyokai(TORK) Developer Team 10 | author_email: dev@opensource-robotics.tokyo.jp 11 | generated_timestamp: 1542689465 -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/planning_pipeline.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /melfa_description/README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | This package contains URDF and mesh files for MELFA industrial robot 4 | arms. 5 | 6 | These robots are Supported: 7 | 8 | - RV4FL 9 | - RV7FL 10 | 11 | # How to show the robot model 12 | 13 | Launch as: 14 | 15 | ``` 16 | $ roslaunch melfa_description rviz.launch robot:=rv4fl 17 | ``` 18 | 19 | or 20 | 21 | ``` 22 | $ roslaunch melfa_description rviz.launch robot:=rv7fl 23 | ``` 24 | -------------------------------------------------------------------------------- /melfa_robot/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package melfa_robot 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.0.2 (2018-12-16) 6 | ------------------ 7 | 8 | 0.0.4 (2019-02-26) 9 | ------------------ 10 | 11 | 0.0.1 (2018-12-14) 12 | ------------------ 13 | * Switch to industrial-ci(`#16 `_) 14 | * Add melfa_robot metapackage 15 | * Contributors: Ryosuke Tajima 16 | -------------------------------------------------------------------------------- /melfa_driver/test/joint_trajectory_controller.test: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/fake_moveit_controller_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/fake_moveit_controller_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package rv4fl_moveit_config 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.0.2 (2018-12-16) 6 | ------------------ 7 | 8 | 0.0.4 (2019-02-26) 9 | ------------------ 10 | 11 | 0.0.1 (2018-12-14) 12 | ------------------ 13 | * rename melfa_ros to melfa_robot 14 | * Add rv4fl_moveit_config package(`#12 `_) 15 | * Contributors: Ryosuke Tajima 16 | -------------------------------------------------------------------------------- /melfa_description/urdf/rv4fl.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /melfa_description/urdf/rv7fl.urdf.xacro: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/config/chomp_planning.yaml: -------------------------------------------------------------------------------- 1 | planning_time_limit: 10.0 2 | max_iterations: 200 3 | max_iterations_after_collision_free: 5 4 | smoothness_cost_weight: 0.1 5 | obstacle_cost_weight: 1.0 6 | learning_rate: 0.01 7 | smoothness_cost_velocity: 0.0 8 | smoothness_cost_acceleration: 1.0 9 | smoothness_cost_jerk: 0.0 10 | ridge_factor: 0.01 11 | use_pseudo_inverse: false 12 | pseudo_inverse_ridge_factor: 1e-4 13 | joint_update_limit: 0.1 14 | collision_clearence: 0.2 15 | collision_threshold: 0.07 16 | use_stochastic_descent: true 17 | enable_failure_recovery: true 18 | max_recovery_attempts: 5 -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/chomp_planning.yaml: -------------------------------------------------------------------------------- 1 | planning_time_limit: 10.0 2 | max_iterations: 200 3 | max_iterations_after_collision_free: 5 4 | smoothness_cost_weight: 0.1 5 | obstacle_cost_weight: 1.0 6 | learning_rate: 0.01 7 | smoothness_cost_velocity: 0.0 8 | smoothness_cost_acceleration: 1.0 9 | smoothness_cost_jerk: 0.0 10 | ridge_factor: 0.01 11 | use_pseudo_inverse: false 12 | pseudo_inverse_ridge_factor: 1e-4 13 | joint_update_limit: 0.1 14 | collision_clearence: 0.2 15 | collision_threshold: 0.07 16 | use_stochastic_descent: true 17 | enable_failure_recovery: true 18 | max_recovery_attempts: 5 -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/chomp_planning_pipeline.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/chomp_planning_pipeline.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/warehouse.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/warehouse.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package rv7fl_moveit_config 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.0.2 (2018-12-16) 6 | ------------------ 7 | 8 | 0.0.4 (2019-02-26) 9 | ------------------ 10 | 11 | 0.0.1 (2018-12-14) 12 | ------------------ 13 | * Add additional joints(`#13 `_) 14 | - Update rv7fl_moveit_config for urdf update 15 | * Add moveit configuration files(`#2 `_) 16 | - Confirmed to work with RT-ToolBox 17 | * Contributors: Ryosuke Tajima 18 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/setup_assistant.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/setup_assistant.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | bin/ 3 | lib/ 4 | msg_gen/ 5 | srv_gen/ 6 | msg/*Action.msg 7 | msg/*ActionFeedback.msg 8 | msg/*ActionGoal.msg 9 | msg/*ActionResult.msg 10 | msg/*Feedback.msg 11 | msg/*Goal.msg 12 | msg/*Result.msg 13 | msg/_*.py 14 | 15 | # Generated by dynamic reconfigure 16 | *.cfgc 17 | /cfg/cpp/ 18 | /cfg/*.py 19 | 20 | # Ignore generated docs 21 | *.dox 22 | *.wikidoc 23 | 24 | # eclipse stuff 25 | .project 26 | .cproject 27 | 28 | # qcreator stuff 29 | CMakeLists.txt.user 30 | 31 | srv/_*.py 32 | *.pcd 33 | *.pyc 34 | qtcreator-* 35 | *.user 36 | 37 | /planning/cfg 38 | /planning/docs 39 | /planning/src 40 | 41 | *~ 42 | 43 | # Emacs 44 | .#* 45 | 46 | # Catkin custom files 47 | CATKIN_IGNORE 48 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/joystick_control.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/joystick_control.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/sensor_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/moveit_rviz.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/moveit_rviz.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/ros_controllers.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /melfa_description/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(melfa_description) 3 | 4 | find_package(catkin REQUIRED COMPONENTS 5 | rviz 6 | xacro 7 | ) 8 | 9 | catkin_package() 10 | 11 | ############# 12 | ## Install ## 13 | ############# 14 | 15 | ## Mark executables and/or libraries for installation 16 | install(DIRECTORY launch mesh urdf 17 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 18 | 19 | ############# 20 | ## Testing ## 21 | ############# 22 | 23 | if(CATKIN_ENABLE_TESTING) 24 | find_package(roslaunch REQUIRED) 25 | file(GLOB LAUNCH_FILES launch/*.launch) 26 | foreach(LAUNCH_FILE ${LAUNCH_FILES}) 27 | message(status "Testing ${LAUNCH_FILE}") 28 | roslaunch_add_file_check(${LAUNCH_FILE}) 29 | endforeach() 30 | endif() 31 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/ros_controllers.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/warehouse_settings.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/warehouse_settings.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/default_warehouse_db.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/default_warehouse_db.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /melfa_description/launch/rviz.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 18 | 19 | 20 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/sensor_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /melfa_description/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | melfa_description 4 | 0.0.4 5 | The melfa_description package 6 | 7 | Ryosuke Tajima 8 | Tokyo Opensource Robotics Kyokai(TORK) Developer Team 9 | Apache License 2.0 10 | CC-BY-SA 11 | 12 | http://wiki.ros.org/melfa_description 13 | 14 | catkin 15 | rviz 16 | xacro 17 | joint_state_publisher 18 | robot_state_publisher 19 | roslaunch 20 | rostest 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /melfa_robot/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | melfa_robot 4 | 0.0.4 5 | The melfa_robot meta package 6 | 7 | Tokyo Opensource Robotics Kyokai (TORK) Developer Team 8 | 9 | Apache License 2.0 10 | CC-BY-SA 11 | 12 | http://wiki.ros.org/melfa_robot 13 | https://github.com/tork-a/melfa_robot 14 | https://github.com/tork-a/melfa_robot/issues 15 | 16 | catkin 17 | melfa_description 18 | melfa_driver 19 | rv4fl_moveit_config 20 | rv7fl_moveit_config 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/run_benchmark_ompl.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/run_benchmark_ompl.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/ompl_planning_pipeline.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/ompl_planning_pipeline.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | dist: trusty 3 | language: generic 4 | compiler: 5 | - gcc 6 | notifications: 7 | email: 8 | on_success: always 9 | on_failure: always 10 | env: 11 | matrix: 12 | - USE_DEB=true ROS_DISTRO="kinetic" ROS_REPOSITORY_PATH=http://packages.ros.org/ros/ubuntu 13 | - USE_DEB=true ROS_DISTRO="kinetic" ROS_REPOSITORY_PATH=http://packages.ros.org/ros-shadow-fixed/ubuntu 14 | - USE_DEB=true ROS_DISTRO="melodic" ROS_REPOSITORY_PATH=http://packages.ros.org/ros/ubuntu 15 | - USE_DEB=true ROS_DISTRO="melodic" ROS_REPOSITORY_PATH=http://packages.ros.org/ros-shadow-fixed/ubuntu 16 | matrix: 17 | allow_failures: 18 | - env: USE_DEB=true ROS_DISTRO="kinetic" ROS_REPOSITORY_PATH=http://packages.ros.org/ros-shadow-fixed/ubuntu 19 | - env: USE_DEB=true ROS_DISTRO="melodic" ROS_REPOSITORY_PATH=http://packages.ros.org/ros-shadow-fixed/ubuntu 20 | install: 21 | - git clone https://github.com/ros-industrial/industrial_ci.git .ci_config 22 | script: 23 | - source .ci_config/travis.sh 24 | # - source ./travis.sh # Enable this when you have a package-local script 25 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/moveit_planning_execution.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/ros_controllers.yaml: -------------------------------------------------------------------------------- 1 | rv7fl: 2 | # MoveIt-specific simulation settings 3 | moveit_sim_hw_interface: 4 | joint_model_group: controllers_initial_group_ 5 | joint_model_group_pose: controllers_initial_pose_ 6 | # Settings for ros_control control loop 7 | generic_hw_control_loop: 8 | loop_hz: 300 9 | cycle_time_error_threshold: 0.01 10 | # Settings for ros_control hardware interface 11 | hardware_interface: 12 | joints: 13 | - joint1 14 | - joint2 15 | - joint3 16 | - joint4 17 | - joint5 18 | - joint6 19 | sim_control_mode: 1 # 0: position, 1: velocity 20 | # Publish all joint states 21 | # Creates the /joint_states topic necessary in ROS 22 | joint_state_controller: 23 | type: joint_state_controller/JointStateController 24 | publish_rate: 50 25 | controller_list: 26 | - name: arm_controller 27 | action_ns: follow_joint_trajectory 28 | default: True 29 | type: FollowJointTrajectory 30 | joints: 31 | - joint1 32 | - joint2 33 | - joint3 34 | - joint4 35 | - joint5 36 | - joint6 -------------------------------------------------------------------------------- /rv4fl_moveit_config/config/ros_controllers.yaml: -------------------------------------------------------------------------------- 1 | rv4fl: 2 | # MoveIt-specific simulation settings 3 | moveit_sim_hw_interface: 4 | joint_model_group: controllers_initial_group_ 5 | joint_model_group_pose: controllers_initial_pose_ 6 | # Settings for ros_control control loop 7 | generic_hw_control_loop: 8 | loop_hz: 300 9 | cycle_time_error_threshold: 0.01 10 | # Settings for ros_control hardware interface 11 | hardware_interface: 12 | joints: 13 | - joint1 14 | - joint2 15 | - joint3 16 | - joint4 17 | - joint5 18 | - joint6 19 | sim_control_mode: 1 # 0: position, 1: velocity 20 | # Publish all joint states 21 | # Creates the /joint_states topic necessary in ROS 22 | joint_state_controller: 23 | type: joint_state_controller/JointStateController 24 | publish_rate: 50 25 | controller_list: 26 | - name: manipulator_controller 27 | action_ns: follow_joint_trajectory 28 | default: True 29 | type: FollowJointTrajectory 30 | joints: 31 | - joint1 32 | - joint2 33 | - joint3 34 | - joint4 35 | - joint5 36 | - joint6 -------------------------------------------------------------------------------- /rv4fl_moveit_config/config/joint_limits.yaml: -------------------------------------------------------------------------------- 1 | # joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed 2 | # Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration] 3 | # Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits] 4 | joint_limits: 5 | joint1: 6 | has_velocity_limits: true 7 | max_velocity: 7.33 8 | has_acceleration_limits: false 9 | max_acceleration: 0 10 | joint2: 11 | has_velocity_limits: true 12 | max_velocity: 5.864 13 | has_acceleration_limits: false 14 | max_acceleration: 0 15 | joint3: 16 | has_velocity_limits: true 17 | max_velocity: 4.363 18 | has_acceleration_limits: false 19 | max_acceleration: 0 20 | joint4: 21 | has_velocity_limits: true 22 | max_velocity: 9.425000000000001 23 | has_acceleration_limits: false 24 | max_acceleration: 0 25 | joint5: 26 | has_velocity_limits: true 27 | max_velocity: 10.875 28 | has_acceleration_limits: false 29 | max_acceleration: 0 30 | joint6: 31 | has_velocity_limits: true 32 | max_velocity: 12.566 33 | has_acceleration_limits: false 34 | max_acceleration: 0 -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/joint_limits.yaml: -------------------------------------------------------------------------------- 1 | # joint_limits.yaml allows the dynamics properties specified in the URDF to be overwritten or augmented as needed 2 | # Specific joint properties can be changed with the keys [max_position, min_position, max_velocity, max_acceleration] 3 | # Joint limits can be turned off with [has_velocity_limits, has_acceleration_limits] 4 | joint_limits: 5 | joint1: 6 | has_velocity_limits: true 7 | max_velocity: 5.02654824574 8 | has_acceleration_limits: false 9 | max_acceleration: 0 10 | joint2: 11 | has_velocity_limits: true 12 | max_velocity: 5.6025068989 13 | has_acceleration_limits: false 14 | max_acceleration: 0 15 | joint3: 16 | has_velocity_limits: true 17 | max_velocity: 6.28318530718 18 | has_acceleration_limits: false 19 | max_acceleration: 0 20 | joint4: 21 | has_velocity_limits: true 22 | max_velocity: 5.88175957922 23 | has_acceleration_limits: false 24 | max_acceleration: 0 25 | joint5: 26 | has_velocity_limits: true 27 | max_velocity: 7.85398163397 28 | has_acceleration_limits: false 29 | max_acceleration: 0 30 | joint6: 31 | has_velocity_limits: true 32 | max_velocity: 12.5663706144 33 | has_acceleration_limits: false 34 | max_acceleration: 0 -------------------------------------------------------------------------------- /melfa_driver/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | melfa_driver 4 | 0.0.4 5 | The melfa_driver package 6 | Ryosuke Tajima 7 | Tokyo Opensource Robotics Kyokai (TORK) Developer Team 8 | 9 | Apache License 2.0 10 | 11 | http://wiki.ros.org/melfa_driver 12 | https://github.com/tork-a/melfa_robot 13 | https://github.com/tork-a/melfa_robot/issues 14 | 15 | catkin 16 | controller_manager 17 | diagnostic_updater 18 | hardware_interface 19 | roscpp 20 | joint_state_controller 21 | joint_trajectory_controller 22 | position_controllers 23 | robot_state_publisher 24 | roslaunch 25 | roslint 26 | rostest 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/planning_context.launch: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/planning_context.launch: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/trajectory_execution.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/trajectory_execution.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | rv7fl_moveit_config 4 | 0.0.4 5 | 6 | An automatically generated package with all the configuration and launch files for using the rv7fl with the MoveIt! Motion Planning Framework 7 | 8 | Tokyo Opensource Robotics Kyokai (TORK) Developer Team 9 | Tokyo Opensource Robotics Kyokai (TORK) Developer Team 10 | 11 | BSD 12 | 13 | http://moveit.ros.org/ 14 | https://github.com/ros-planning/moveit/issues 15 | https://github.com/ros-planning/moveit 16 | 17 | catkin 18 | 19 | moveit_ros_move_group 20 | moveit_fake_controller_manager 21 | moveit_kinematics 22 | moveit_planners_ompl 23 | moveit_ros_visualization 24 | joint_state_publisher 25 | robot_state_publisher 26 | xacro 27 | 28 | 29 | melfa_description 30 | melfa_description 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | rv4fl_moveit_config 4 | 0.0.4 5 | 6 | An automatically generated package with all the configuration and launch files for using the rv4fl with the MoveIt! Motion Planning Framework 7 | 8 | Tokyo Opensource Robotics Kyokai(TORK) Developer Team 9 | Tokyo Opensource Robotics Kyokai(TORK) Developer Team 10 | 11 | BSD 12 | 13 | http://moveit.ros.org/ 14 | https://github.com/ros-planning/moveit/issues 15 | https://github.com/ros-planning/moveit 16 | 17 | catkin 18 | 19 | moveit_ros_move_group 20 | moveit_fake_controller_manager 21 | moveit_kinematics 22 | moveit_planners_ompl 23 | moveit_ros_visualization 24 | moveit_setup_assistant 25 | joint_state_publisher 26 | robot_state_publisher 27 | xacro 28 | 29 | 30 | melfa_description 31 | melfa_description 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /melfa_driver/test/test_joint_trajectory_controller.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | import math 4 | import sys 5 | import actionlib 6 | from control_msgs.msg import ( 7 | FollowJointTrajectoryAction, 8 | FollowJointTrajectoryActionGoal) 9 | import rospy 10 | import rostest 11 | import rosnode 12 | from sensor_msgs.msg import JointState 13 | from trajectory_msgs.msg import JointTrajectory 14 | import time 15 | import unittest 16 | 17 | 18 | class TestJointTrajectoryController(unittest.TestCase): 19 | @classmethod 20 | def setUpClass(cls): 21 | rospy.init_node('test_joint_trajectory_controller_node') 22 | 23 | def setUp(self): 24 | self.joint_states_list = [] 25 | 26 | rospy.Subscriber('joint_states', 27 | JointState, self.cb_joint_states, queue_size=10) 28 | 29 | self.pub = rospy.Publisher( 30 | 'joint_trajectory_controller/command', 31 | JointTrajectory, 32 | queue_size=10) 33 | 34 | self.client = actionlib.SimpleActionClient( 35 | 'joint_trajectory_controller/follow_joint_trajectory', 36 | FollowJointTrajectoryAction) 37 | self.client.wait_for_server() 38 | 39 | def cb_joint_states(self, msg): 40 | self.joint_states_list.append(msg) 41 | 42 | def test_joint_states(self): 43 | # try for 30 s 44 | for i in range(30): 45 | if not self.joint_states_list: 46 | time.sleep(1.0) 47 | self.assertTrue(self.joint_states_list) 48 | 49 | if __name__ == '__main__': 50 | rostest.rosrun('melfa_driver', 51 | 'test_joint_trajectory_controller', 52 | TestJointTrajectoryController) 53 | -------------------------------------------------------------------------------- /melfa_description/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package melfa_description 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.0.2 (2018-12-16) 6 | ------------------ 7 | * Add LICENSE and notification on source code(`#18 `_ ) 8 | * Contributors: Ryosuke Tajima 9 | 10 | 0.0.4 (2019-02-26) 11 | ------------------ 12 | 13 | 0.0.1 (2018-12-14) 14 | ------------------ 15 | * Remove catkin_lint error from melfa_description 16 | * Add copyright holder of mesh files in README.md 17 | * Reorganize URDF for RV4FL to be re-usable 18 | * Add additional joints(`#13 `_) 19 | * Organize rv7fl.urdf.xacro using xacro 20 | * Add use_joint7 and use_joint8 parameters 21 | - Remove dummy joints from rv7fl.urdf.xacro 22 | * Add RV4FL mesh data(`#11 `_) 23 | * Add missing dependencies 24 | * Add mesh license and README.md 25 | * Modify the package meta files 26 | * Add mesh files for RV7FL 27 | - They are modified its origin, rotation in mesh 28 | - Scale are modified in URDF 29 | * Modify URDF to adopt the package structure 30 | - Add robot argument to specify target robot 31 | * Add RV4FL mesh data 32 | * Pull request for the first delivery(`#5 `_) 33 | * Remove mesh related files from melfa_description 34 | * Add dummy joint7 and joint8 for actual robot 35 | * Add use_gui argument and default is false 36 | * Add URDF and mesh files (`#1 `_) 37 | * Modify joint limits to fit the spec sheet 38 | * Fix mesh orientation, colors 39 | * Change driver to use melfa_description 40 | * Fix mesh size unit, urdf 41 | * Contributors: KazukiHiraizumi, Ryosuke Tajima 42 | -------------------------------------------------------------------------------- /melfa_driver/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(melfa_driver) 3 | 4 | add_compile_options(-std=c++11) 5 | 6 | find_package(catkin REQUIRED COMPONENTS 7 | controller_manager 8 | diagnostic_updater 9 | hardware_interface 10 | roscpp) 11 | 12 | find_package(Boost REQUIRED COMPONENTS system thread) 13 | 14 | # catkin_python_setup() 15 | 16 | catkin_package( 17 | CATKIN_DEPENDS roscpp 18 | INCLUDE_DIRS include 19 | ) 20 | 21 | include_directories(include ${catkin_INCLUDE_DIRS}) 22 | 23 | add_executable(melfa_driver_node 24 | src/melfa_driver_node.cpp src/melfa_hardware_interface.cpp) 25 | 26 | add_executable(melfa_loopback_node src/melfa_loopback_node.cpp) 27 | 28 | target_link_libraries(melfa_driver_node ${catkin_LIBRARIES}) 29 | 30 | target_link_libraries(melfa_loopback_node ${catkin_LIBRARIES}) 31 | 32 | install(TARGETS melfa_driver_node melfa_loopback_node 33 | RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 34 | ) 35 | 36 | install(DIRECTORY config launch 37 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}) 38 | 39 | install(DIRECTORY test 40 | DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 41 | USE_SOURCE_PERMISSIONS) 42 | 43 | install(DIRECTORY include/${PROJECT_NAME}/ 44 | DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}) 45 | 46 | if(CATKIN_ENABLE_TESTING) 47 | find_package(roslint REQUIRED) 48 | set(ROSLINT_CPP_OPTS "--filter=-runtime/references,-runtime/int") 49 | # roslint_cpp(src/melfa_hardware_interface.cpp src/melfa_driver_node.cpp src/melfa_loopback_node.cpp) 50 | set(ROSLINT_PYTHON_OPTS "--max-line-length=180") 51 | # roslint_python(test/test_joint_trajectory_controller.py) 52 | # add_dependencies(tests roslint) 53 | 54 | find_package(roslaunch REQUIRED) 55 | find_package(rostest REQUIRED) 56 | file(GLOB LAUNCH_FILES launch/*.launch) 57 | foreach(LAUNCH_FILE ${LAUNCH_FILES}) 58 | message(STATUS "Testing ${LAUNCH_FILE}") 59 | roslaunch_add_file_check(${LAUNCH_FILE}) 60 | endforeach() 61 | 62 | add_rostest(test/joint_trajectory_controller.test) 63 | endif() 64 | -------------------------------------------------------------------------------- /melfa_driver/config/controller.yaml: -------------------------------------------------------------------------------- 1 | joint_state_controller: 2 | type: joint_state_controller/JointStateController 3 | publish_rate: 50 4 | 5 | joint1_position_controller: 6 | type: position_controllers/JointPositionController 7 | publish_rate: 50 8 | base_frame_id: base_link 9 | joint : joint1 10 | 11 | joint2_position_controller: 12 | type: position_controllers/JointPositionController 13 | publish_rate: 50 14 | base_frame_id: base_link 15 | joint : joint2 16 | 17 | joint3_position_controller: 18 | type: position_controllers/JointPositionController 19 | publish_rate: 50 20 | base_frame_id: base_link 21 | joint : joint3 22 | 23 | joint4_position_controller: 24 | type: position_controllers/JointPositionController 25 | publish_rate: 50 26 | base_frame_id: base_link 27 | joint : joint4 28 | 29 | joint5_position_controller: 30 | type: position_controllers/JointPositionController 31 | publish_rate: 50 32 | base_frame_id: base_link 33 | joint : joint5 34 | 35 | joint6_position_controller: 36 | type: position_controllers/JointPositionController 37 | publish_rate: 50 38 | base_frame_id: base_link 39 | joint : joint6 40 | 41 | joint_trajectory_controller: 42 | type: position_controllers/JointTrajectoryController 43 | joints: 44 | - joint1 45 | - joint2 46 | - joint3 47 | - joint4 48 | - joint5 49 | - joint6 50 | constraints: 51 | goal_time: 2.0 # Defaults to zero 52 | stopped_velocity_tolerance: 0.1 # Defaults to 0.01 53 | joint1: 54 | trajectory: 0 55 | goal: 0.2 56 | joint2: 57 | trajectory: 0 58 | goal: 0.2 59 | joint3: 60 | trajectory: 0 61 | goal: 0.2 62 | joint4: 63 | trajectory: 0 64 | goal: 0.2 65 | joint5: 66 | trajectory: 0 67 | goal: 0.2 68 | joint6: 69 | trajectory: 0 70 | goal: 0.2 71 | 72 | state_publish_rate: 50 # Defaults to 50 73 | action_monitor_rate: 20 # Defaults to 20 74 | #hold_trajectory_duration: 0 # Defaults to 0.5 75 | 76 | 77 | -------------------------------------------------------------------------------- /melfa_driver/launch/melfa_driver.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 41 | 42 | 43 | 47 | 48 | 50 | 51 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /melfa_driver/include/melfa_driver/melfa_hardware_interface.h: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Tokyo Opensource Robotics Kyokai Association (TORK) 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include "melfa_driver/strdef.h" 26 | 27 | #define JOINT_NUM (8) 28 | 29 | 30 | class MelfaHW:public hardware_interface::RobotHW 31 | { 32 | public: 33 | MelfaHW (double period); 34 | void update (void); 35 | void write (void); 36 | void read (void); 37 | void write_first (void); 38 | void diagnose(diagnostic_updater::DiagnosticStatusWrapper &stat); 39 | 40 | inline ros::Duration getPeriod() 41 | { 42 | return ros::Duration(period_); 43 | } 44 | private: 45 | double period_; 46 | ros::Time time_now_; 47 | ros::Time time_old_; 48 | 49 | std::string robot_ip_; 50 | int socket_; 51 | struct sockaddr_in addr_; 52 | 53 | MXTCMD send_buff_; 54 | MXTCMD recv_buff_; 55 | int counter_; 56 | 57 | // true if use joint7 58 | bool use_joint7_; 59 | // true if use joint8 60 | bool use_joint8_; 61 | // true if joint7 is linear joint 62 | bool joint7_is_linear_; 63 | // true if joint8 is linear joint 64 | bool joint8_is_linear_; 65 | 66 | hardware_interface::JointStateInterface joint_state_interface; 67 | hardware_interface::PositionJointInterface joint_pos_interface; 68 | 69 | double cmd[JOINT_NUM]; 70 | double pos[JOINT_NUM]; 71 | double vel[JOINT_NUM]; 72 | double eff[JOINT_NUM]; 73 | }; 74 | -------------------------------------------------------------------------------- /melfa_driver/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package melfa_driver 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | 0.0.2 (2018-12-16) 6 | ------------------ 7 | * Add LICENSE and notification on source code(`#18 `_) 8 | * Contributors: Ryosuke Tajima 9 | 10 | 0.0.4 (2019-02-26) 11 | ------------------ 12 | * Fix wrong install location(`#25 `_) 13 | - Reserve test permissions 14 | * Fix minor typo(`#20 `_) 15 | * Contributors: Ryosuke Tajima, Wolf Vollprecht 16 | 17 | 0.0.1 (2018-12-14) 18 | ------------------ 19 | * Remove check.sh for eliminating catkin_lint warning 20 | * Add jointx_is_linear parameter for the linear base(`#17 `_) 21 | * rename melfa_ros to melfa_robot 22 | * Add additional joints(`#13 `_) 23 | * Add use_joint7 and use_joint8 parameters 24 | - Remove dummy joints from rv7fl.urdf.xacro 25 | * Pull request for the first delivery(`#5 `_) 26 | * Change author email 27 | * Expand joint number to 8 only for acutal robot check 28 | * Add realtime feature and docs(`#3 `_) 29 | * Improve driver and loopback node, add diagnostics 30 | - Make loopback node periodic considering the hardware specs 31 | - Add diagnotics to see period over-run 32 | * Disable realtime in tests 33 | * Make loopback node realtime 34 | * Add realtime feature and docs 35 | * Change test to wait topic for 30s 36 | * Add more dependencies 37 | * Check node list before test 38 | * Add package dependencies 39 | * Add .travis.yml for CI 40 | * Add moveit configuration files(`#2 `_) 41 | - Confirmed to work with RT-ToolBox 42 | * Add URDF and mesh files(`#1 `_) 43 | * Change driver to use melfa_description 44 | * Add ROS_INFO for robot_ip 45 | * Improve UDP error handling not to abort 46 | * Add first test 47 | * Fix integer size incompatibility of the packet 48 | * Add melfa_loopback\node for test 49 | * First commit 50 | - Proof of function 51 | - This can control RT-Toolbox3 simulator 52 | - All parameters are hard-coded 53 | * Contributors: Ryosuke Tajima 54 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/demo.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | [move_group/fake_controller_joint_states] 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 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/demo.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | [/move_group/fake_controller_joint_states] 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 | -------------------------------------------------------------------------------- /melfa_driver/src/melfa_driver_node.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Tokyo Opensource Robotics Kyokai Association (TORK) 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /** 16 | * @file melfa_driver_node.cpp 17 | * 18 | * Driver node for MELFA robot controller 19 | */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include "melfa_driver/melfa_hardware_interface.h" 30 | 31 | /** 32 | * @brief Main function 33 | */ 34 | int main (int argc, char **argv) 35 | { 36 | // init ROS node 37 | ros::init (argc, argv, "melfa_driver"); 38 | ros::NodeHandle nh; 39 | 40 | // Parameters 41 | bool realtime; 42 | ros::param::param("~realtime", realtime, false); 43 | double period; 44 | ros::param::param("~period", period, 0.0071); 45 | 46 | // create hardware interface 47 | MelfaHW robot(period); 48 | controller_manager::ControllerManager cm (&robot, nh); 49 | 50 | // diagnostic_updater 51 | diagnostic_updater::Updater updater; 52 | updater.setHardwareID("melfa_driver"); 53 | updater.add("diagnose", &robot, &MelfaHW::diagnose); 54 | 55 | // Setup realtime scheduler 56 | if (realtime) 57 | { 58 | struct sched_param param; 59 | memset(¶m, 0, sizeof(param)); 60 | int policy = SCHED_FIFO; 61 | param.sched_priority = sched_get_priority_max(policy); 62 | 63 | ROS_WARN("Setting up Realtime scheduler"); 64 | if (sched_setscheduler(0, policy, ¶m) < 0) { 65 | ROS_ERROR("sched_setscheduler: %s", strerror(errno)); 66 | ROS_ERROR("Please check you are using PREEMPT_RT kernel and set /etc/security/limits.conf"); 67 | exit (1); 68 | } 69 | if (mlockall(MCL_CURRENT|MCL_FUTURE) < 0) 70 | { 71 | ROS_ERROR("mlockall: %s", strerror(errno)); 72 | exit (1); 73 | } 74 | } 75 | // set spin rate 76 | ros::Rate rate (1.0 / robot.getPeriod().toSec()); 77 | ros::AsyncSpinner spinner (1); 78 | spinner.start (); 79 | 80 | // write first setting packet 81 | robot.write_first (); 82 | 83 | while (ros::ok ()) 84 | { 85 | // Wait for reciving a packet 86 | robot.read (); 87 | cm.update (ros::Time::now(), robot.getPeriod()); 88 | robot.write (); 89 | 90 | // Update diagnostics 91 | updater.update(); 92 | 93 | rate.sleep (); 94 | } 95 | spinner.stop (); 96 | return 0; 97 | } 98 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/rv7fl.srdf: -------------------------------------------------------------------------------- 1 | 2 | 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 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/config/rv4fl.srdf: -------------------------------------------------------------------------------- 1 | 2 | 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 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/move_group.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 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 | 56 | 57 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/move_group.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 32 | 33 | 34 | 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 | -------------------------------------------------------------------------------- /melfa_driver/include/melfa_driver/strdef.h: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Tokyo Opensource Robotics Kyokai Association (TORK) 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | //*************************************************************** 16 | // リアルタイム制御サンプルプログラム 17 | // 通信パケットデータ構造体定義ヘッダーファイル 18 | //*************************************************************** 19 | // strdef.h 20 | #include 21 | #define VER_H7 22 | /********************************************************/ 23 | /* 関節座標系 (未使用軸は0にします) */ 24 | /* 各成分の詳細は、各ロボット付属の取扱説明書を */ 25 | /* 参照してください */ 26 | /********************************************************/ 27 | typedef struct{ 28 | float j1; // J1軸角度 (ラジアン) 29 | float j2; // J2軸角度 (ラジアン) 30 | float j3; // J3軸角度 (ラジアン) 31 | float j4; // J4軸角度 (ラジアン) 32 | float j5; // J5軸角度 (ラジアン) 33 | float j6; // J6軸角度 (ラジアン) 34 | float j7; // 付加軸1(J7軸角度) (ラジアン) 35 | float j8; // 付加軸2(J8軸角度) (ラジアン) 36 | } JOINT; 37 | /********************************************************/ 38 | /* 直交座標系 (未使用軸は0にします) */ 39 | /* 各成分の詳細は、各ロボット付属の取扱説明書を */ 40 | /* 参照してください */ 41 | /********************************************************/ 42 | typedef struct{ 43 | float x; // X軸座標値(mm) 44 | float y; // Y軸座標値(mm) 45 | float z; // Z軸座標値(mm) 46 | float a; // A軸座標値(ラジアン) 47 | float b; // B軸座標値(ラジアン) 48 | float c; // C軸座標値(ラジアン) 49 | float l1; // 付加軸1(mm またはラジアン) 50 | float l2; // 付加軸2(mm またはラジアン) 51 | } WORLD; 52 | typedef struct{ 53 | WORLD w; 54 | uint32_t sflg1; // 構造フラグ1 55 | uint32_t sflg2; // 構造フラグ2 56 | } POSE; 57 | 58 | /********************************************************/ 59 | /* パルス座標系 (未使用軸は0にします) */ 60 | /* 各関節をモータパルス値で表した座標です */ 61 | /********************************************************/ 62 | typedef struct{ 63 | int32_t p1; // モータ1軸 64 | int32_t p2; // モータ2軸 65 | int32_t p3; // モータ3軸 66 | int32_t p4; // モータ4軸 67 | int32_t p5; // モータ5軸 68 | int32_t p6; // モータ6軸 69 | int32_t p7; // 付加軸1(モータ7軸) 70 | int32_t p8; // 付加軸2(モータ8軸) 71 | } PULSE; 72 | /****************************************/ 73 | /* リアルタイム機能通信データパケット */ 74 | /****************************************/ 75 | typedef struct enet_rtcmd_str { 76 | uint16_t Command; // コマンド 77 | #define MXT_CMD_NULL 0 // リアルタイム外部指令なし 78 | #define MXT_CMD_MOVE 1 // リアルタイム外部指令あり 79 | #define MXT_CMD_END 255 // リアルタイム外部指令終了 80 | uint16_t SendType; // 指令データタイプ指定 81 | uint16_t RecvType; // モニタデータタイプ指定 82 | 83 | //////////// 指令またはモニタデータタイプ // 84 | 85 | #define MXT_TYP_NULL 0 // データなし 86 | 87 | // 指令用およびモニタ用 //////////////////// 88 | 89 | #define MXT_TYP_POSE 1 // 直交データ(指令値) 90 | #define MXT_TYP_JOINT 2 // 関節データ(指令値) 91 | #define MXT_TYP_PULSE 3 // パルスデータ(指令値) 92 | 93 | // 位置関連モニタ用 //////////////////////// 94 | #define MXT_TYP_FPOSE 4 // 直交データ(指令値フィルタ処理後) 95 | #define MXT_TYP_FJOINT 5 // 関節データ(指令値フィルタ処理後) 96 | #define MXT_TYP_FPULSE 6 // パルスデータ(指令値フィルタ処理後) 97 | #define MXT_TYP_FB_POSE 7 // 直交データ(エンコーダフィードバック値) 98 | #define MXT_TYP_FB_JOINT 8 // 関節データ(エンコーダフィードバック値) 99 | #define MXT_TYP_FB_PULSE 9 // パルスデータ(エンコーダフィードバック値) 100 | // 電流関連モニタ用 /////////////////////// 101 | 102 | #define MXT_TYP_CMDCUR 10 // 電流指令 103 | #define MXT_TYP_FBKCUR 11 // 電流フィードバック 104 | union rtdata { // 指令データ 105 | POSE pos; // 直交タイプ[mm/rad] 106 | JOINT jnt; // 関節タイプ[rad] 107 | PULSE pls; // パルスタイプ[pls] 108 | int32_t lng[8]; // 整数タイプ[%/無単位など] 109 | } dat; 110 | uint16_t SendIOType; // 送信入出力信号データ指定 111 | uint16_t RecvIOType; // 返信入出力信号データ指定 112 | #define MXT_IO_NULL 0 // データなし 113 | #define MXT_IO_OUT 1 // 出力信号 114 | #define MXT_IO_IN 2 // 入力信号 115 | uint16_t BitTop; // 先頭ビット番号 116 | uint16_t BitMask; // 送信用ビットマスクパターン指定(0x0001-0xffff) 117 | uint16_t IoData; // 入出力信号データ(0x0000-0xffff) 118 | uint16_t TCount; // タイムアウト時間のカウンタ値 119 | uint32_t CCount; // 通信データ用のカウンタ値 120 | uint16_t RecvType1; // 返信データタイプ指定1 121 | union rtdata1 { // モニタデータ1 122 | POSE pos1; // 直交タイプ[mm/rad] 123 | JOINT jnt1; // 関節タイプ[rad] 124 | PULSE pls1; // パルスタイプ[pls] 125 | int32_t lng1[8]; // 整数タイプ[%/無単位など] 126 | } dat1; 127 | uint16_t RecvType2; // 返信データタイプ指定2 128 | union rtdata2 { // モニタデータ2 129 | POSE pos2; // 直交タイプ[mm/rad] 130 | JOINT jnt2; // 関節タイプ[rad] 131 | PULSE pls2; // パルスタイプ[pls]または整数タイプ[%/無単位など] 132 | int32_t lng2[8]; // 整数タイプ[%/無単位など] 133 | } dat2; 134 | uint16_t RecvType3; // 返信データタイプ指定3 135 | union rtdata3 { // モニタデータ3 136 | POSE pos3; // 直交タイプ[mm/rad] 137 | JOINT jnt3; // 関節タイプ[rad] 138 | PULSE pls3; // パルスタイプ[pls]または整数タイプ[%/無単位など] 139 | int32_t lng3[8]; // 整数タイプ[%/無単位など] 140 | } dat3; 141 | } MXTCMD; 142 | -------------------------------------------------------------------------------- /melfa_description/urdf/rv4fl.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 | 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 | 81 | 82 | 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 | 109 | 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 | 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 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | -------------------------------------------------------------------------------- /melfa_description/urdf/rv7fl.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 | 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 | 81 | 82 | 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 | 109 | 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 | 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 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | -------------------------------------------------------------------------------- /melfa_description/launch/melfa_description.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 | - /TF1 11 | Splitter Ratio: 0.5 12 | Tree Height: 726 13 | - Class: rviz/Selection 14 | Name: Selection 15 | - Class: rviz/Tool Properties 16 | Expanded: 17 | - /2D Pose Estimate1 18 | - /2D Nav Goal1 19 | - /Publish Point1 20 | Name: Tool Properties 21 | Splitter Ratio: 0.588679016 22 | - Class: rviz/Views 23 | Expanded: 24 | - /Current View1 25 | Name: Views 26 | Splitter Ratio: 0.5 27 | - Class: rviz/Time 28 | Experimental: false 29 | Name: Time 30 | SyncMode: 0 31 | SyncSource: "" 32 | Visualization Manager: 33 | Class: "" 34 | Displays: 35 | - Alpha: 0.5 36 | Cell Size: 1 37 | Class: rviz/Grid 38 | Color: 160; 160; 164 39 | Enabled: true 40 | Line Style: 41 | Line Width: 0.0299999993 42 | Value: Lines 43 | Name: Grid 44 | Normal Cell Count: 0 45 | Offset: 46 | X: 0 47 | Y: 0 48 | Z: 0 49 | Plane: XY 50 | Plane Cell Count: 10 51 | Reference Frame: 52 | Value: true 53 | - Alpha: 1 54 | Class: rviz/RobotModel 55 | Collision Enabled: false 56 | Enabled: true 57 | Links: 58 | All Links Enabled: true 59 | Expand Joint Details: false 60 | Expand Link Details: false 61 | Expand Tree: false 62 | Link Tree Style: Links in Alphabetic Order 63 | base_link: 64 | Alpha: 1 65 | Show Axes: false 66 | Show Trail: false 67 | Value: true 68 | dummy1: 69 | Alpha: 1 70 | Show Axes: false 71 | Show Trail: false 72 | dummy2: 73 | Alpha: 1 74 | Show Axes: false 75 | Show Trail: false 76 | link1: 77 | Alpha: 1 78 | Show Axes: false 79 | Show Trail: false 80 | Value: true 81 | link2: 82 | Alpha: 1 83 | Show Axes: false 84 | Show Trail: false 85 | Value: true 86 | link3: 87 | Alpha: 1 88 | Show Axes: false 89 | Show Trail: false 90 | Value: true 91 | link4: 92 | Alpha: 1 93 | Show Axes: false 94 | Show Trail: false 95 | Value: true 96 | link5: 97 | Alpha: 1 98 | Show Axes: false 99 | Show Trail: false 100 | Value: true 101 | link6: 102 | Alpha: 1 103 | Show Axes: false 104 | Show Trail: false 105 | Value: true 106 | Name: RobotModel 107 | Robot Description: robot_description 108 | TF Prefix: "" 109 | Update Interval: 0 110 | Value: true 111 | Visual Enabled: true 112 | - Class: rviz/TF 113 | Enabled: true 114 | Frame Timeout: 15 115 | Frames: 116 | All Enabled: true 117 | base_link: 118 | Value: true 119 | dummy1: 120 | Value: true 121 | dummy2: 122 | Value: true 123 | link1: 124 | Value: true 125 | link2: 126 | Value: true 127 | link3: 128 | Value: true 129 | link4: 130 | Value: true 131 | link5: 132 | Value: true 133 | link6: 134 | Value: true 135 | Marker Scale: 0.5 136 | Name: TF 137 | Show Arrows: true 138 | Show Axes: true 139 | Show Names: true 140 | Tree: 141 | base_link: 142 | dummy1: 143 | {} 144 | dummy2: 145 | {} 146 | link1: 147 | link2: 148 | link3: 149 | link4: 150 | link5: 151 | link6: 152 | {} 153 | Update Interval: 0 154 | Value: true 155 | Enabled: true 156 | Global Options: 157 | Background Color: 48; 48; 48 158 | Default Light: true 159 | Fixed Frame: base_link 160 | Frame Rate: 30 161 | Name: root 162 | Tools: 163 | - Class: rviz/Interact 164 | Hide Inactive Objects: true 165 | - Class: rviz/MoveCamera 166 | - Class: rviz/Select 167 | - Class: rviz/FocusCamera 168 | - Class: rviz/Measure 169 | - Class: rviz/SetInitialPose 170 | Topic: /initialpose 171 | - Class: rviz/SetGoal 172 | Topic: /move_base_simple/goal 173 | - Class: rviz/PublishPoint 174 | Single click: true 175 | Topic: /clicked_point 176 | Value: true 177 | Views: 178 | Current: 179 | Class: rviz/Orbit 180 | Distance: 2.85199118 181 | Enable Stereo Rendering: 182 | Stereo Eye Separation: 0.0599999987 183 | Stereo Focal Distance: 1 184 | Swap Stereo Eyes: false 185 | Value: false 186 | Focal Point: 187 | X: -0.461950988 188 | Y: -0.62640506 189 | Z: 0.661512554 190 | Focal Shape Fixed Size: true 191 | Focal Shape Size: 0.0500000007 192 | Invert Z Axis: false 193 | Name: Current View 194 | Near Clip Distance: 0.00999999978 195 | Pitch: 0.259797662 196 | Target Frame: 197 | Value: Orbit (rviz) 198 | Yaw: 0.898549199 199 | Saved: ~ 200 | Window Geometry: 201 | Displays: 202 | collapsed: false 203 | Height: 1050 204 | Hide Left Dock: false 205 | Hide Right Dock: false 206 | QMainWindow State: 000000ff00000000fd00000004000000000000019f00000374fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006700fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003100000374000000e600fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000012900000374fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003100000374000000c500fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000072f00000048fc0100000002fb0000000800540069006d006501000000000000072f0000040a00fffffffb0000000800540069006d00650100000000000004500000000000000000000004570000037400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 207 | Selection: 208 | collapsed: false 209 | Time: 210 | collapsed: false 211 | Tool Properties: 212 | collapsed: false 213 | Views: 214 | collapsed: false 215 | Width: 1839 216 | X: 81 217 | Y: 1110 218 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # melfa_robot [![Build Status](https://travis-ci.com/tork-a/melfa_robot.svg?token=Eg7EHKJ8kwE5VZs6TwDp&branch=master)](https://travis-ci.com/tork-a/melfa_robot) 2 | 3 | This package is to control the MELFA's robot arms using ROS. 4 | 5 | # Supported hardware 6 | 7 | ## Robot controllers 8 | 9 | Currently `melfa_driver` is checked with the following MELFA robot 10 | controller. 11 | 12 | CR750-Q 13 | 14 | ## Robot arms 15 | 16 | Currently `melfa_description` contains the models of following MELFA robots. 17 | 18 | RV4FL 19 | 20 | RV7FL 21 | 22 | # How to Install 23 | 24 | Use apt to install the packages. 25 | 26 | ``` 27 | apt install ros-kinetic-melfa-robot 28 | ``` 29 | 30 | # Quick start with the loop back node 31 | 32 | `melfa_driver/melfa_driver_node` is the controller node, providing 33 | `hardware_interface::RobotHW`. This controller communicates with the 34 | actual robot controller, or the simulator named `RT Toolbox3` on 35 | Windows via Ethernet(TCP/IP). 36 | 37 | In case that you don't have both of the controller and simulator, the 38 | package contains the `loop-back(dummy) node` mimicking the robot 39 | controller. It is `melfa_driver/melfa_loopback_node`. This node set 40 | the current joint angle identical to commanded value, and return them 41 | as current state. 42 | 43 | When you want to use the loopback node, launch the system as: 44 | 45 | ``` 46 | $ roslaunch melfa_driver melfa_driver.launch loopback:=true 47 | ``` 48 | 49 | Go to [the section](#check-the-system-works) to check it works. 50 | 51 | # Quick start with the RT ToolBox3 52 | 53 | If you have `RT ToolBox 3`, the optional software of MELFA robot, you 54 | can use this package with it in the simulation mode. 55 | 56 | - [RT ToolBox3](http://www.mitsubishielectric.com/fa/products/rbt/robot/smerit/rt3/index.html) 57 | 58 | You have to place your ROS PC and RT ToolBox3 (Windows) PC in the same 59 | network. 60 | 61 | ## Run RT ToolBox3 62 | 63 | Bring up the RT Toolbox3 by double clicking. You would see the screen 64 | like this: 65 | 66 | ![RT Toolbox3 bring up](img/rtt_1.png) 67 | 68 | ## Create a new project file (need only once) 69 | 70 | By pressing `New` button to create a new project file. In the 71 | following wizard screen, push `Next`. 72 | 73 | ![RT Toolbox3 Wizard](img/rtt_2.png) 74 | 75 | In `2. Robot Model`, choose your robot. In this case, we choose `FD 76 | Series CR750-D` and `RV-7FL-D`. Push `Next` button. 77 | 78 | ![RT Toolbox3 Wizard 2](img/rtt_3.png) 79 | 80 | In `3. Communication`, enter the IP address and gateway address of the 81 | Windows PC. Just using `Copy the setting of this machine` will 82 | work. In this example, `192.168.0.23` is the address of the Windows 83 | PC. 84 | 85 | ![RT Toolbox3 Wizard 3](img/rtt_4.png) 86 | 87 | ## Program for real-time external control 88 | 89 | The ROS package expects the controller is running in `Real time 90 | external control mode`, which receive the continuous TCP/IP packet 91 | from external machine. You have to create a program file in the 92 | Program folder in the Workspace. 93 | 94 | ``` 95 | Open "ENET:192.168.0.12" As #1 96 | Mxt 1,1 97 | End 98 | ``` 99 | 100 | In this example, `192.168.0.12` is the IP address of ROS PC. Make sure 101 | it is correct, or the controller cannot receive the packet. 102 | 103 | ![RT Toolbox3 Program](img/rtt_5.png) 104 | 105 | ## Switch to the simulation mode 106 | 107 | Push `Simulation` button under `Home` tab to switch into the 108 | simulation mode. You would see your robot model and the controller 109 | panel on the screen. 110 | 111 | ![RT Toolbox3 Simulation Mode](img/rtt_6.png) 112 | 113 | ## Run the program 114 | 115 | Push the `Select` button on the right side of `Program:` to select the 116 | program file name which we formally created. 117 | 118 | ![RT Toolbox3 Select the program](img/rtt_7.png) 119 | 120 | Push the `Run` button on the controller panel. 121 | 122 | ## Start ROS Controller 123 | 124 | Now bring up the ROS controller node with the launch file. `robot_ip` 125 | parameter should be the address of the PC on which the simulator is 126 | running. 127 | 128 | ``` 129 | $ roslaunch melfa_driver melfa_driver.launch \ 130 | robot_ip:=192.168.0.23 --screen 131 | ``` 132 | 133 | Go to [the section](#check-the-system-works) to check it works. 134 | 135 | # Quick start with actual robot controller 136 | 137 | The actual robot should work as same as the simulator... but **BE 138 | CAREFUL!!** The robot will move out of your intention. It may collide 139 | with the environment or human beings. Please make sure you can do 140 | experiments safely with your robot. 141 | 142 | You have to place your ROS PC and the controller in the same network. 143 | 144 | ## Program for real time external control 145 | 146 | You need the program for real time external control as same as in the 147 | simulator. Create the following program with the pendant (or just 148 | transfer the file from RT Toolbox3). 149 | 150 | ``` 151 | Ovrd 10 152 | Open "ENET:192.168.0.12" As #1 153 | Mxt 1,1 154 | End 155 | ``` 156 | 157 | `Ovrd 10` is limiting the joint velocity for safety. In this example, 158 | `192.168.0.12` is the IP address of ROS PC. Make sure it is correct, 159 | or the controller cannot receive the packet. 160 | 161 | Check the IP address of the controller to use it afterwards. 162 | 163 | ## Run the program 164 | 165 | Run the program with the pendant. It will be same as usual usage. 166 | 167 | ## Start ROS Controller 168 | 169 | Now bring up the ROS controller node with the launch file. `robot_ip` 170 | parameter should be the address of the robot controller. 171 | 172 | ``` 173 | $ roslaunch melfa_driver melfa_driver.launch \ 174 | robot_ip:=192.168.0.23 --screen 175 | ``` 176 | 177 | Go to [the section](#check-the-system-works) to check it works. 178 | 179 | # Check the system works 180 | 181 | Once the system is brought up, the way to command the robot is same in 182 | the either way. 183 | 184 | If you don't have the view of the robot model in Rviz and you want it, 185 | launch rviz as: 186 | 187 | ``` 188 | $ roslaunch melfa_description rviz.launch use_gui:=false 189 | ``` 190 | 191 | ## With rqt plugin 192 | 193 | You can use rqt plug-in `JointTrajctoryController` to control the 194 | robot joint angle using slider GUI. 195 | 196 | ``` 197 | $ rqt -s rqt_joint_trajectory_controller/JointTrajectoryController 198 | ``` 199 | 200 | rqt_joint_trajectory_controller 201 | 202 | ## MoveIt! 203 | 204 | You can try MoveIt! Rviz plug-in. 205 | 206 | ``` 207 | $ roslaunch rv7fl_moveit_config moveit_planning_execution.launch 208 | ``` 209 | 210 | Currently there are moveit_config packages for the following robot. 211 | 212 | RV4FL 213 | 214 | RV7FL 215 | 216 | # License 217 | 218 | - [YOODS Inc.](https://www.yoods.co.jp/) holds the copyright of all 219 | mesh files in ``melfa_description/mesh`` directory which are 220 | licensed under a Creative Commons Attribution-ShareAlike 4.0 221 | International License. 222 | - These MoveIt! configuration packages are licensed under BSD License, 223 | which are basically auto generated by MoveIt! setup assistant 224 | package. 225 | - ``rv4fl_moveit_config`` 226 | - ``rv7fl_moveit_config`` 227 | - Other parts are licensed under Apache License 2.0. 228 | -------------------------------------------------------------------------------- /melfa_driver/src/melfa_hardware_interface.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Tokyo Opensource Robotics Kyokai Association (TORK) 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include "melfa_driver/melfa_hardware_interface.h" 16 | 17 | MelfaHW::MelfaHW (double period) 18 | : counter_(0), period_(period), 19 | use_joint7_(false), use_joint8_(false), 20 | joint7_is_linear_(false), joint8_is_linear_(false) 21 | { 22 | // initialize UDP socket 23 | socket_ = socket (AF_INET, SOCK_DGRAM, 0); 24 | if (socket_ < 0) 25 | { 26 | ROS_ERROR ("Cannot open socket"); 27 | exit(1); 28 | } 29 | // set IP and port 30 | ros::param::param("~robot_ip", robot_ip_, "127.0.0.1"); 31 | // Usage of additional joints 32 | ros::param::param("~use_joint7", use_joint7_, false); 33 | ros::param::param("~use_joint8", use_joint8_, false); 34 | ros::param::param("~joint7_is_linear", joint7_is_linear_, false); 35 | ros::param::param("~joint8_is_linear", joint8_is_linear_, false); 36 | 37 | addr_.sin_family = AF_INET; 38 | addr_.sin_port = htons (10000); 39 | addr_.sin_addr.s_addr = inet_addr (robot_ip_.c_str()); 40 | 41 | memset (&send_buff_, 0, sizeof (send_buff_)); 42 | memset (&recv_buff_, 0, sizeof (recv_buff_)); 43 | 44 | std::string joint_names[JOINT_NUM] = 45 | { 46 | "joint1", "joint2", "joint3", "joint4", 47 | "joint5", "joint6", "joint7", "joint8" 48 | }; 49 | // connect and register the joint state interface 50 | for (int i = 0; i < JOINT_NUM; i++) 51 | { 52 | // Skip unused joints 53 | if (i==6 and not use_joint7_) 54 | { 55 | continue; 56 | } 57 | if (i==7 and not use_joint8_) 58 | { 59 | continue; 60 | } 61 | hardware_interface::JointStateHandle state_handle (joint_names[i], &pos[i], &vel[i], &eff[i]); 62 | joint_state_interface.registerHandle (state_handle); 63 | } 64 | registerInterface (&joint_state_interface); 65 | 66 | // connect and register the joint position interface 67 | for (int i = 0; i < JOINT_NUM; i++) 68 | { 69 | // Skip unused joints 70 | if (i==6 and not use_joint7_) 71 | { 72 | continue; 73 | } 74 | if (i==7 and not use_joint8_) 75 | { 76 | continue; 77 | } 78 | hardware_interface::JointHandle joint_pos_handle (joint_state_interface.getHandle (joint_names[i]), &cmd[i]); 79 | joint_pos_interface.registerHandle (joint_pos_handle); 80 | } 81 | registerInterface (&joint_pos_interface); 82 | } 83 | 84 | void MelfaHW::write_first (void) 85 | { 86 | memset (&send_buff_, 0, sizeof (send_buff_)); 87 | // Get current joint angles in 88 | send_buff_.Command = MXT_CMD_NULL; 89 | send_buff_.SendType = MXT_TYP_NULL; 90 | send_buff_.RecvType = MXT_TYP_JOINT; 91 | send_buff_.SendIOType = MXT_IO_NULL; 92 | send_buff_.RecvIOType = MXT_IO_NULL; 93 | send_buff_.BitTop = 0; 94 | send_buff_.BitMask = 0; 95 | send_buff_.IoData = 0; 96 | send_buff_.CCount = 0; 97 | 98 | int size = sendto (socket_, (char *) &send_buff_, sizeof (send_buff_), 0, (struct sockaddr *) &addr_, sizeof (addr_)); 99 | if (size != sizeof (send_buff_)) 100 | { 101 | ROS_ERROR ("Connot send packet to MELFA controller. Check the configuration."); 102 | exit (1); 103 | } 104 | } 105 | 106 | void MelfaHW::write (void) 107 | { 108 | // Send MOVE command 109 | memset (&send_buff_, 0, sizeof (send_buff_)); 110 | send_buff_.Command = MXT_CMD_MOVE; 111 | send_buff_.SendType = MXT_TYP_JOINT; 112 | send_buff_.RecvType = MXT_TYP_JOINT; 113 | send_buff_.RecvType1 = MXT_TYP_FJOINT; 114 | send_buff_.RecvType2 = MXT_TYP_FB_JOINT; 115 | send_buff_.RecvType3 = MXT_TYP_FBKCUR; 116 | 117 | send_buff_.SendIOType = MXT_IO_NULL; 118 | send_buff_.RecvIOType = MXT_IO_NULL; 119 | send_buff_.BitTop = 0; 120 | send_buff_.BitMask = 0; 121 | send_buff_.IoData = 0; 122 | send_buff_.dat.jnt.j1 = cmd[0]; 123 | send_buff_.dat.jnt.j2 = cmd[1]; 124 | send_buff_.dat.jnt.j3 = cmd[2]; 125 | send_buff_.dat.jnt.j4 = cmd[3]; 126 | send_buff_.dat.jnt.j5 = cmd[4]; 127 | send_buff_.dat.jnt.j6 = cmd[5]; 128 | if (joint7_is_linear_) 129 | { 130 | // Convert unit to mm 131 | send_buff_.dat.jnt.j7 = cmd[6] * 1000.0; 132 | } 133 | else 134 | { 135 | send_buff_.dat.jnt.j7 = cmd[6]; 136 | } 137 | if (joint8_is_linear_) 138 | { 139 | // Convert unit to [mm] 140 | send_buff_.dat.jnt.j8 = cmd[7] * 1000.0; 141 | } 142 | else 143 | { 144 | send_buff_.dat.jnt.j8 = cmd[7]; 145 | } 146 | send_buff_.CCount = counter_; 147 | 148 | int size = sendto (socket_, (char *) &send_buff_, sizeof (send_buff_), 0, (struct sockaddr *) &addr_, sizeof (addr_)); 149 | if (size != sizeof (send_buff_)) 150 | { 151 | ROS_ERROR ("Connot send packet to MELFA controller. Check the configuration."); 152 | exit (1); 153 | } 154 | } 155 | 156 | void MelfaHW::read (void) 157 | { 158 | fd_set fds; 159 | timeval time; 160 | 161 | // Record time 162 | time_old_ = time_now_; 163 | time_now_ = ros::Time::now(); 164 | 165 | memset (&recv_buff_, 0, sizeof (recv_buff_)); 166 | 167 | FD_ZERO (&fds); 168 | FD_SET (socket_, &fds); 169 | 170 | time.tv_sec = 0; 171 | time.tv_usec = 2 * period_ * 1000000; 172 | 173 | int status = select (socket_+1, &fds, (fd_set *) NULL, (fd_set *) NULL, &time); 174 | if (status < 0) 175 | { 176 | ROS_ERROR ("Cannot receive packet"); 177 | } 178 | if ((status > 0) && FD_ISSET (socket_, &fds)) 179 | { 180 | int size = recvfrom (socket_, &recv_buff_, sizeof (recv_buff_), 0, NULL, NULL); 181 | if (size < 0) 182 | { 183 | ROS_ERROR ("recvfrom failed"); 184 | exit (1); 185 | } 186 | JOINT *joint = (JOINT *) & recv_buff_.dat; 187 | pos[0] = joint->j1; 188 | pos[1] = joint->j2; 189 | pos[2] = joint->j3; 190 | pos[3] = joint->j4; 191 | pos[4] = joint->j5; 192 | pos[5] = joint->j6; 193 | 194 | if (joint7_is_linear_) 195 | { 196 | // Convert unit to [m] 197 | pos[6] = joint->j7 / 1000.0; 198 | } 199 | else 200 | { 201 | pos[6] = joint->j7; 202 | } 203 | 204 | if (joint8_is_linear_) 205 | { 206 | // Convert unit to [m] 207 | pos[7] = joint->j8 / 1000.0; 208 | } 209 | else 210 | { 211 | pos[7] = joint->j8; 212 | } 213 | // Set current position when it starts 214 | if (counter_ == 0) 215 | { 216 | for (int i = 0; i < JOINT_NUM; i++) 217 | { 218 | cmd[i] = pos[i]; 219 | } 220 | } 221 | counter_++; 222 | } 223 | else 224 | { 225 | ROS_WARN ("Failed to receive packet."); 226 | } 227 | } 228 | 229 | void MelfaHW::diagnose(diagnostic_updater::DiagnosticStatusWrapper &stat) 230 | { 231 | stat.add ("Counter", counter_); 232 | 233 | double diff = (time_now_ - time_old_).toSec(); 234 | // Check over-run 235 | if (diff > period_ * 1.2) 236 | { 237 | stat.summary(diagnostic_msgs::DiagnosticStatus::WARN, 238 | "Periodic time exceeds 120%"); 239 | } 240 | else 241 | { 242 | stat.summary(diagnostic_msgs::DiagnosticStatus::OK, 243 | "Periodic time is normal"); 244 | } 245 | stat.add ("Period", diff); 246 | } 247 | -------------------------------------------------------------------------------- /melfa_driver/src/melfa_loopback_node.cpp: -------------------------------------------------------------------------------- 1 | // Copyright 2018 Tokyo Opensource Robotics Kyokai Association (TORK) 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /** 16 | * @file melfa_loopback_node.cpp 17 | * 18 | * Loopback node to test melfa_driver_node 19 | */ 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | #include "melfa_driver/strdef.h" 35 | 36 | ros::Time g_time_now, g_time_old; 37 | 38 | class LoopbackNode 39 | { 40 | private: 41 | /// Packet counter 42 | int counter_; 43 | 44 | /// Periodic time [s] 45 | double period_; 46 | 47 | int socket_; 48 | struct sockaddr_in addr_; 49 | 50 | MXTCMD send_buff_; 51 | MXTCMD recv_buff_; 52 | 53 | ros::Time time_now_; 54 | ros::Time time_old_; 55 | 56 | public: 57 | LoopbackNode(double period) 58 | : counter_(0), period_(period) 59 | { 60 | socket_ = socket(AF_INET, SOCK_DGRAM, 0); 61 | addr_.sin_family = AF_INET; 62 | addr_.sin_port = htons(10000); 63 | addr_.sin_addr.s_addr = inet_addr ("127.0.0.1"); 64 | 65 | bind(socket_, (struct sockaddr *)&addr_, sizeof(addr_)); 66 | } 67 | ~LoopbackNode() 68 | { 69 | close(socket_); 70 | } 71 | /** 72 | * @param timeout Timeout for reciving a packet [s] 73 | */ 74 | bool update(double timeout=0.06) 75 | { 76 | fd_set fds; 77 | timeval time; 78 | 79 | // Record called time 80 | time_old_ = time_now_; 81 | time_now_ = ros::Time::now(); 82 | 83 | FD_ZERO (&fds); 84 | FD_SET (socket_, &fds); 85 | 86 | time.tv_sec = 0; 87 | time.tv_usec = timeout * 1000; 88 | 89 | int r = select (socket_ + 1, &fds, NULL, NULL, &time); 90 | if (r < 0) 91 | { 92 | ROS_ERROR ("select error: %s", strerror(errno)); 93 | ros::shutdown(); 94 | } 95 | if (r > 0 && FD_ISSET (socket_, &fds)) 96 | { 97 | struct sockaddr_in recv_addr; 98 | socklen_t len; 99 | 100 | int size = recvfrom (socket_, 101 | &recv_buff_, sizeof (recv_buff_), 102 | 0, (struct sockaddr *)&recv_addr, &len); 103 | ROS_INFO("recv from: %s, size=%d", inet_ntoa(recv_addr.sin_addr), size); 104 | counter_ ++; 105 | // print recv packet 106 | print_mxt_packet(recv_buff_); 107 | 108 | // loopback 109 | send_buff_.Command = MXT_CMD_MOVE; 110 | send_buff_.SendType = MXT_TYP_JOINT; 111 | send_buff_.RecvType = MXT_TYP_JOINT; 112 | send_buff_.RecvType1 = MXT_TYP_FJOINT; 113 | send_buff_.RecvType2 = MXT_TYP_FB_JOINT; 114 | send_buff_.RecvType3 = MXT_TYP_FBKCUR; 115 | 116 | send_buff_.dat.jnt.j1 = recv_buff_.dat.jnt.j1; 117 | send_buff_.dat.jnt.j2 = recv_buff_.dat.jnt.j2; 118 | send_buff_.dat.jnt.j3 = recv_buff_.dat.jnt.j3; 119 | send_buff_.dat.jnt.j4 = recv_buff_.dat.jnt.j4; 120 | send_buff_.dat.jnt.j5 = recv_buff_.dat.jnt.j5; 121 | send_buff_.dat.jnt.j6 = recv_buff_.dat.jnt.j6; 122 | send_buff_.dat.jnt.j7 = recv_buff_.dat.jnt.j7; 123 | send_buff_.dat.jnt.j8 = recv_buff_.dat.jnt.j8; 124 | 125 | size = sendto (socket_, 126 | (char *) &send_buff_, sizeof (send_buff_), 127 | 0, (struct sockaddr *) &recv_addr, sizeof (recv_addr)); 128 | if (size != sizeof (send_buff_)) 129 | { 130 | ROS_WARN ("Failed to send packet."); 131 | } 132 | } 133 | } 134 | void print_mxt_packet(MXTCMD& mxt) 135 | { 136 | ROS_INFO("mxt.Command: %d", mxt.Command); 137 | ROS_INFO("mxt.SendType: %d", mxt.SendType); 138 | ROS_INFO("mxt.RecvType: %d", mxt.RecvType); 139 | ROS_INFO("mxt.RecvType1: %d", mxt.RecvType1); 140 | ROS_INFO("mxt.RecvType2: %d", mxt.RecvType2); 141 | ROS_INFO("mxt.RecvType3: %d", mxt.RecvType3); 142 | if (mxt.RecvType == MXT_TYP_JOINT) 143 | { 144 | ROS_INFO("mxt.dat.jnt: % 4.3f % 4.3f % 4.3f % 4.3f % 4.3f % 4.3f % 4.3f % 4.3f", 145 | mxt.dat.jnt.j1, 146 | mxt.dat.jnt.j2, 147 | mxt.dat.jnt.j3, 148 | mxt.dat.jnt.j4, 149 | mxt.dat.jnt.j5, 150 | mxt.dat.jnt.j6, 151 | mxt.dat.jnt.j7, 152 | mxt.dat.jnt.j8); 153 | } 154 | else 155 | { 156 | ROS_ERROR("Invalid mxt.RecvType"); 157 | } 158 | } 159 | void diagnose(diagnostic_updater::DiagnosticStatusWrapper &stat) 160 | { 161 | stat.add ("Counter", counter_); 162 | 163 | double diff = (time_now_ - time_old_).toSec(); 164 | // Check over-run 165 | if (diff > period_ * 1.2) 166 | { 167 | stat.summary(diagnostic_msgs::DiagnosticStatus::WARN, 168 | "Periodic time exceeds 120%"); 169 | } 170 | else 171 | { 172 | stat.summary(diagnostic_msgs::DiagnosticStatus::OK, 173 | "Periodic time is normal"); 174 | } 175 | stat.add ("Period", diff); 176 | } 177 | }; 178 | 179 | void loop_diagnostic(diagnostic_updater::DiagnosticStatusWrapper &stat) 180 | { 181 | double time_dif = (g_time_now - g_time_old).toSec(); 182 | stat.summary(diagnostic_msgs::DiagnosticStatus::OK, "Periodic time is normal"); 183 | stat.add ("Period", time_dif); 184 | } 185 | 186 | /** 187 | * @brief Main function 188 | */ 189 | int main (int argc, char **argv) 190 | { 191 | // init ROS node 192 | ros::init (argc, argv, "melfa_loopback"); 193 | ros::NodeHandle nh; 194 | // Parameters 195 | bool realtime; 196 | ros::param::param("~realtime", realtime, false); 197 | double period; 198 | ros::param::param("~period", period, 0.0071); 199 | 200 | // Loopback node 201 | LoopbackNode node(period); 202 | 203 | // Diagnostics 204 | diagnostic_updater::Updater updater; 205 | updater.setHardwareID("melfa_loopback"); 206 | updater.add("diagnose", &node, &LoopbackNode::diagnose); 207 | 208 | // Setup realtime scheduler 209 | if (realtime) 210 | { 211 | struct sched_param param; 212 | memset(¶m, 0, sizeof(param)); 213 | int policy = SCHED_FIFO; 214 | param.sched_priority = sched_get_priority_max(policy); 215 | 216 | ROS_WARN("Setting up Realtime scheduler"); 217 | if (sched_setscheduler(0, policy, ¶m) < 0) { 218 | ROS_ERROR("sched_setscheduler: %s", strerror(errno)); 219 | ROS_ERROR("Please check you are using PREEMPT_RT kernel and set /etc/security/limits.conf"); 220 | exit (1); 221 | } 222 | if (mlockall(MCL_CURRENT|MCL_FUTURE) < 0) 223 | { 224 | ROS_ERROR("mlockall: %s", strerror(errno)); 225 | exit (1); 226 | } 227 | } 228 | // Set spin rate frequency 229 | ros::Rate rate (1.0 / period); 230 | while (ros::ok ()) 231 | { 232 | // Recieve and response 233 | node.update(); 234 | // Update diagnostics 235 | updater.update(); 236 | // Sleep for next cycle 237 | rate.sleep(); 238 | } 239 | return 0; 240 | } 241 | -------------------------------------------------------------------------------- /rv7fl_moveit_config/launch/moveit.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 84 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /MotionPlanning1 8 | - /MotionPlanning1/Planned Path1 9 | Splitter Ratio: 0.742560029 10 | Tree Height: 478 11 | - Class: rviz/Help 12 | Name: Help 13 | - Class: rviz/Views 14 | Expanded: 15 | - /Current View1 16 | Name: Views 17 | Splitter Ratio: 0.5 18 | Visualization Manager: 19 | Class: "" 20 | Displays: 21 | - Alpha: 0.5 22 | Cell Size: 1 23 | Class: rviz/Grid 24 | Color: 160; 160; 164 25 | Enabled: true 26 | Line Style: 27 | Line Width: 0.0299999993 28 | Value: Lines 29 | Name: Grid 30 | Normal Cell Count: 0 31 | Offset: 32 | X: 0 33 | Y: 0 34 | Z: 0 35 | Plane: XY 36 | Plane Cell Count: 10 37 | Reference Frame: 38 | Value: true 39 | - Class: moveit_rviz_plugin/MotionPlanning 40 | Enabled: true 41 | Move Group Namespace: "" 42 | MoveIt_Goal_Tolerance: 0 43 | MoveIt_Planning_Attempts: 10 44 | MoveIt_Planning_Time: 5 45 | MoveIt_Use_Constraint_Aware_IK: true 46 | MoveIt_Warehouse_Host: 127.0.0.1 47 | MoveIt_Warehouse_Port: 33829 48 | MoveIt_Workspace: 49 | Center: 50 | X: 0 51 | Y: 0 52 | Z: 0 53 | Size: 54 | X: 2 55 | Y: 2 56 | Z: 2 57 | Name: MotionPlanning 58 | Planned Path: 59 | Color Enabled: false 60 | Interrupt Display: false 61 | Links: 62 | All Links Enabled: true 63 | Expand Joint Details: false 64 | Expand Link Details: false 65 | Expand Tree: false 66 | Link Tree Style: Links in Alphabetic Order 67 | base_link: 68 | Alpha: 1 69 | Show Axes: false 70 | Show Trail: false 71 | Value: true 72 | link1: 73 | Alpha: 1 74 | Show Axes: false 75 | Show Trail: false 76 | Value: true 77 | link2: 78 | Alpha: 1 79 | Show Axes: false 80 | Show Trail: false 81 | Value: true 82 | link3: 83 | Alpha: 1 84 | Show Axes: false 85 | Show Trail: false 86 | Value: true 87 | link4: 88 | Alpha: 1 89 | Show Axes: false 90 | Show Trail: false 91 | Value: true 92 | link5: 93 | Alpha: 1 94 | Show Axes: false 95 | Show Trail: false 96 | Value: true 97 | link6: 98 | Alpha: 1 99 | Show Axes: false 100 | Show Trail: false 101 | Loop Animation: false 102 | Robot Alpha: 0.5 103 | Robot Color: 150; 50; 150 104 | Show Robot Collision: false 105 | Show Robot Visual: true 106 | Show Trail: false 107 | State Display Time: 0.05 s 108 | Trail Step Size: 1 109 | Trajectory Topic: move_group/display_planned_path 110 | Planning Metrics: 111 | Payload: 1 112 | Show Joint Torques: false 113 | Show Manipulability: false 114 | Show Manipulability Index: false 115 | Show Weight Limit: false 116 | TextHeight: 0.0799999982 117 | Planning Request: 118 | Colliding Link Color: 255; 0; 0 119 | Goal State Alpha: 1 120 | Goal State Color: 250; 128; 0 121 | Interactive Marker Size: 0 122 | Joint Violation Color: 255; 0; 255 123 | Planning Group: arm 124 | Query Goal State: true 125 | Query Start State: false 126 | Show Workspace: false 127 | Start State Alpha: 1 128 | Start State Color: 0; 255; 0 129 | Planning Scene Topic: move_group/monitored_planning_scene 130 | Robot Description: robot_description 131 | Scene Geometry: 132 | Scene Alpha: 1 133 | Scene Color: 50; 230; 50 134 | Scene Display Time: 0.200000003 135 | Show Scene Geometry: true 136 | Voxel Coloring: Z-Axis 137 | Voxel Rendering: Occupied Voxels 138 | Scene Robot: 139 | Attached Body Color: 150; 50; 150 140 | Links: 141 | All Links Enabled: true 142 | Expand Joint Details: false 143 | Expand Link Details: false 144 | Expand Tree: false 145 | Link Tree Style: Links in Alphabetic Order 146 | base_link: 147 | Alpha: 1 148 | Show Axes: false 149 | Show Trail: false 150 | Value: true 151 | link1: 152 | Alpha: 1 153 | Show Axes: false 154 | Show Trail: false 155 | Value: true 156 | link2: 157 | Alpha: 1 158 | Show Axes: false 159 | Show Trail: false 160 | Value: true 161 | link3: 162 | Alpha: 1 163 | Show Axes: false 164 | Show Trail: false 165 | Value: true 166 | link4: 167 | Alpha: 1 168 | Show Axes: false 169 | Show Trail: false 170 | Value: true 171 | link5: 172 | Alpha: 1 173 | Show Axes: false 174 | Show Trail: false 175 | Value: true 176 | link6: 177 | Alpha: 1 178 | Show Axes: false 179 | Show Trail: false 180 | Robot Alpha: 0.5 181 | Show Robot Collision: false 182 | Show Robot Visual: true 183 | Value: true 184 | Enabled: true 185 | Global Options: 186 | Background Color: 48; 48; 48 187 | Default Light: true 188 | Fixed Frame: base_link 189 | Frame Rate: 30 190 | Name: root 191 | Tools: 192 | - Class: rviz/Interact 193 | Hide Inactive Objects: true 194 | - Class: rviz/MoveCamera 195 | - Class: rviz/Select 196 | Value: true 197 | Views: 198 | Current: 199 | Class: rviz/XYOrbit 200 | Distance: 2.48828292 201 | Enable Stereo Rendering: 202 | Stereo Eye Separation: 0.0599999987 203 | Stereo Focal Distance: 1 204 | Swap Stereo Eyes: false 205 | Value: false 206 | Focal Point: 207 | X: 0.193632841 208 | Y: -0.0525687188 209 | Z: -2.53319172e-07 210 | Focal Shape Fixed Size: true 211 | Focal Shape Size: 0.0500000007 212 | Invert Z Axis: false 213 | Name: Current View 214 | Near Clip Distance: 0.00999999978 215 | Pitch: 0.499796987 216 | Target Frame: base_link 217 | Value: XYOrbit (rviz) 218 | Yaw: 0.21177721 219 | Saved: ~ 220 | Window Geometry: 221 | Displays: 222 | collapsed: false 223 | Height: 1337 224 | Help: 225 | collapsed: false 226 | Hide Left Dock: false 227 | Hide Right Dock: false 228 | MotionPlanning: 229 | collapsed: false 230 | MotionPlanning - Slider: 231 | collapsed: false 232 | QMainWindow State: 000000ff00000000fd00000001000000000000037f000004e3fc0200000007fb000000100044006900730070006c006100790073010000003100000282000000e600fffffffb0000000800480065006c00700000000342000000bb0000007f00fffffffb0000000a0056006900650077007300000003b0000000b0000000c500fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb0000002e004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d00200053006c00690064006500720000000000ffffffff0000005600fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e006701000002bb000002590000024c00ffffff00000537000004e300000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 233 | Views: 234 | collapsed: false 235 | Width: 2238 236 | X: 1469 237 | Y: 79 238 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/launch/moveit.rviz: -------------------------------------------------------------------------------- 1 | Panels: 2 | - Class: rviz/Displays 3 | Help Height: 84 4 | Name: Displays 5 | Property Tree Widget: 6 | Expanded: 7 | - /Global Options1 8 | - /Status1 9 | - /MotionPlanning1 10 | Splitter Ratio: 0.742560029 11 | Tree Height: 547 12 | - Class: rviz/Help 13 | Name: Help 14 | - Class: rviz/Views 15 | Expanded: 16 | - /Current View1 17 | Name: Views 18 | Splitter Ratio: 0.5 19 | Visualization Manager: 20 | Class: "" 21 | Displays: 22 | - Alpha: 0.5 23 | Cell Size: 1 24 | Class: rviz/Grid 25 | Color: 160; 160; 164 26 | Enabled: true 27 | Line Style: 28 | Line Width: 0.0299999993 29 | Value: Lines 30 | Name: Grid 31 | Normal Cell Count: 0 32 | Offset: 33 | X: 0 34 | Y: 0 35 | Z: 0 36 | Plane: XY 37 | Plane Cell Count: 10 38 | Reference Frame: 39 | Value: true 40 | - Acceleration_Scaling_Factor: 1 41 | Class: moveit_rviz_plugin/MotionPlanning 42 | Enabled: true 43 | Move Group Namespace: "" 44 | MoveIt_Allow_Approximate_IK: false 45 | MoveIt_Allow_External_Program: false 46 | MoveIt_Allow_Replanning: false 47 | MoveIt_Allow_Sensor_Positioning: false 48 | MoveIt_Goal_Tolerance: 0 49 | MoveIt_Planning_Attempts: 10 50 | MoveIt_Planning_Time: 5 51 | MoveIt_Use_Constraint_Aware_IK: true 52 | MoveIt_Warehouse_Host: 127.0.0.1 53 | MoveIt_Warehouse_Port: 33829 54 | MoveIt_Workspace: 55 | Center: 56 | X: 0 57 | Y: 0 58 | Z: 0 59 | Size: 60 | X: 2 61 | Y: 2 62 | Z: 2 63 | Name: MotionPlanning 64 | Planned Path: 65 | Color Enabled: false 66 | Interrupt Display: false 67 | Links: 68 | All Links Enabled: true 69 | Expand Joint Details: false 70 | Expand Link Details: false 71 | Expand Tree: false 72 | Link Tree Style: Links in Alphabetic Order 73 | base_link: 74 | Alpha: 1 75 | Show Axes: false 76 | Show Trail: false 77 | link0: 78 | Alpha: 1 79 | Show Axes: false 80 | Show Trail: false 81 | Value: true 82 | link1: 83 | Alpha: 1 84 | Show Axes: false 85 | Show Trail: false 86 | Value: true 87 | link2: 88 | Alpha: 1 89 | Show Axes: false 90 | Show Trail: false 91 | Value: true 92 | link3: 93 | Alpha: 1 94 | Show Axes: false 95 | Show Trail: false 96 | Value: true 97 | link4: 98 | Alpha: 1 99 | Show Axes: false 100 | Show Trail: false 101 | Value: true 102 | link5: 103 | Alpha: 1 104 | Show Axes: false 105 | Show Trail: false 106 | Value: true 107 | link6: 108 | Alpha: 1 109 | Show Axes: false 110 | Show Trail: false 111 | Value: true 112 | Loop Animation: true 113 | Robot Alpha: 0.5 114 | Robot Color: 150; 50; 150 115 | Show Robot Collision: false 116 | Show Robot Visual: true 117 | Show Trail: false 118 | State Display Time: 0.05 s 119 | Trail Step Size: 1 120 | Trajectory Topic: move_group/display_planned_path 121 | Planning Metrics: 122 | Payload: 1 123 | Show Joint Torques: false 124 | Show Manipulability: false 125 | Show Manipulability Index: false 126 | Show Weight Limit: false 127 | TextHeight: 0.0799999982 128 | Planning Request: 129 | Colliding Link Color: 255; 0; 0 130 | Goal State Alpha: 1 131 | Goal State Color: 250; 128; 0 132 | Interactive Marker Size: 0 133 | Joint Violation Color: 255; 0; 255 134 | Planning Group: manipulator 135 | Query Goal State: true 136 | Query Start State: false 137 | Show Workspace: false 138 | Start State Alpha: 1 139 | Start State Color: 0; 255; 0 140 | Planning Scene Topic: move_group/monitored_planning_scene 141 | Robot Description: robot_description 142 | Scene Geometry: 143 | Scene Alpha: 1 144 | Scene Color: 50; 230; 50 145 | Scene Display Time: 0.200000003 146 | Show Scene Geometry: true 147 | Voxel Coloring: Z-Axis 148 | Voxel Rendering: Occupied Voxels 149 | Scene Robot: 150 | Attached Body Color: 150; 50; 150 151 | Links: 152 | All Links Enabled: true 153 | Expand Joint Details: false 154 | Expand Link Details: false 155 | Expand Tree: false 156 | Link Tree Style: Links in Alphabetic Order 157 | base_link: 158 | Alpha: 1 159 | Show Axes: false 160 | Show Trail: false 161 | link0: 162 | Alpha: 1 163 | Show Axes: false 164 | Show Trail: false 165 | Value: true 166 | link1: 167 | Alpha: 1 168 | Show Axes: false 169 | Show Trail: false 170 | Value: true 171 | link2: 172 | Alpha: 1 173 | Show Axes: false 174 | Show Trail: false 175 | Value: true 176 | link3: 177 | Alpha: 1 178 | Show Axes: false 179 | Show Trail: false 180 | Value: true 181 | link4: 182 | Alpha: 1 183 | Show Axes: false 184 | Show Trail: false 185 | Value: true 186 | link5: 187 | Alpha: 1 188 | Show Axes: false 189 | Show Trail: false 190 | Value: true 191 | link6: 192 | Alpha: 1 193 | Show Axes: false 194 | Show Trail: false 195 | Value: true 196 | Robot Alpha: 0.5 197 | Show Robot Collision: false 198 | Show Robot Visual: true 199 | Value: true 200 | Velocity_Scaling_Factor: 1 201 | Enabled: true 202 | Global Options: 203 | Background Color: 48; 48; 48 204 | Default Light: true 205 | Fixed Frame: base_link 206 | Frame Rate: 30 207 | Name: root 208 | Tools: 209 | - Class: rviz/Interact 210 | Hide Inactive Objects: true 211 | - Class: rviz/MoveCamera 212 | - Class: rviz/Select 213 | Value: true 214 | Views: 215 | Current: 216 | Class: rviz/XYOrbit 217 | Distance: 2.99650002 218 | Enable Stereo Rendering: 219 | Stereo Eye Separation: 0.0599999987 220 | Stereo Focal Distance: 1 221 | Swap Stereo Eyes: false 222 | Value: false 223 | Focal Point: 224 | X: 0.113567002 225 | Y: 0.105920002 226 | Z: 2.23518001e-07 227 | Focal Shape Fixed Size: true 228 | Focal Shape Size: 0.0500000007 229 | Invert Z Axis: false 230 | Name: Current View 231 | Near Clip Distance: 0.00999999978 232 | Pitch: 0.424797058 233 | Target Frame: world 234 | Value: XYOrbit (rviz) 235 | Yaw: 0.711778104 236 | Saved: ~ 237 | Window Geometry: 238 | Displays: 239 | collapsed: false 240 | Height: 1337 241 | Help: 242 | collapsed: false 243 | Hide Left Dock: false 244 | Hide Right Dock: false 245 | MotionPlanning: 246 | collapsed: false 247 | MotionPlanning - Trajectory Slider: 248 | collapsed: false 249 | QMainWindow State: 000000ff00000000fd000000010000000000000363000004c5fc0200000007fb000000100044006900730070006c0061007900730100000050000002c5000000e400fffffffb0000000800480065006c00700000000342000000bb0000007e00fffffffb0000000a0056006900650077007300000003b0000000b0000000c200fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb00000044004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d0020005400720061006a006500630074006f0072007900200053006c00690064006500720000000000ffffffff0000005500fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e0067010000031d000001f8000001d900ffffff000003b9000004c500000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 250 | Views: 251 | collapsed: false 252 | Width: 1828 253 | X: 459 254 | Y: 33 255 | -------------------------------------------------------------------------------- /rv4fl_moveit_config/config/ompl_planning.yaml: -------------------------------------------------------------------------------- 1 | planner_configs: 2 | SBL: 3 | type: geometric::SBL 4 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 5 | EST: 6 | type: geometric::EST 7 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0 setup() 8 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 9 | LBKPIECE: 10 | type: geometric::LBKPIECE 11 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 12 | border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 13 | min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5 14 | BKPIECE: 15 | type: geometric::BKPIECE 16 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 17 | border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 18 | failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5 19 | min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5 20 | KPIECE: 21 | type: geometric::KPIECE 22 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 23 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 24 | border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 (0.0,1.] 25 | failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5 26 | min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5 27 | RRT: 28 | type: geometric::RRT 29 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 30 | goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05 31 | RRTConnect: 32 | type: geometric::RRTConnect 33 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 34 | RRTstar: 35 | type: geometric::RRTstar 36 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 37 | goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05 38 | delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1 39 | TRRT: 40 | type: geometric::TRRT 41 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 42 | goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05 43 | max_states_failed: 10 # when to start increasing temp. default: 10 44 | temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0 45 | min_temperature: 10e-10 # lower limit of temp change. default: 10e-10 46 | init_temperature: 10e-6 # initial temperature. default: 10e-6 47 | frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup() 48 | frountierNodeRatio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1 49 | k_constant: 0.0 # value used to normalize expresssion. default: 0.0 set in setup() 50 | PRM: 51 | type: geometric::PRM 52 | max_nearest_neighbors: 10 # use k nearest neighbors. default: 10 53 | PRMstar: 54 | type: geometric::PRMstar 55 | FMT: 56 | type: geometric::FMT 57 | num_samples: 1000 # number of states that the planner should sample. default: 1000 58 | radius_multiplier: 1.1 # multiplier used for the nearest neighbors search radius. default: 1.1 59 | nearest_k: 1 # use Knearest strategy. default: 1 60 | cache_cc: 1 # use collision checking cache. default: 1 61 | heuristics: 0 # activate cost to go heuristics. default: 0 62 | extended_fmt: 1 # activate the extended FMT*: adding new samples if planner does not finish successfully. default: 1 63 | BFMT: 64 | type: geometric::BFMT 65 | num_samples: 1000 # number of states that the planner should sample. default: 1000 66 | radius_multiplier: 1.0 # multiplier used for the nearest neighbors search radius. default: 1.0 67 | nearest_k: 1 # use the Knearest strategy. default: 1 68 | balanced: 0 # exploration strategy: balanced true expands one tree every iteration. False will select the tree with lowest maximum cost to go. default: 1 69 | optimality: 1 # termination strategy: optimality true finishes when the best possible path is found. Otherwise, the algorithm will finish when the first feasible path is found. default: 1 70 | heuristics: 1 # activates cost to go heuristics. default: 1 71 | cache_cc: 1 # use the collision checking cache. default: 1 72 | extended_fmt: 1 # Activates the extended FMT*: adding new samples if planner does not finish successfully. default: 1 73 | PDST: 74 | type: geometric::PDST 75 | STRIDE: 76 | type: geometric::STRIDE 77 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 78 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 79 | use_projected_distance: 0 # whether nearest neighbors are computed based on distances in a projection of the state rather distances in the state space itself. default: 0 80 | degree: 16 # desired degree of a node in the Geometric Near-neightbor Access Tree (GNAT). default: 16 81 | max_degree: 18 # max degree of a node in the GNAT. default: 12 82 | min_degree: 12 # min degree of a node in the GNAT. default: 12 83 | max_pts_per_leaf: 6 # max points per leaf in the GNAT. default: 6 84 | estimated_dimension: 0.0 # estimated dimension of the free space. default: 0.0 85 | min_valid_path_fraction: 0.2 # Accept partially valid moves above fraction. default: 0.2 86 | BiTRRT: 87 | type: geometric::BiTRRT 88 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 89 | temp_change_factor: 0.1 # how much to increase or decrease temp. default: 0.1 90 | init_temperature: 100 # initial temperature. default: 100 91 | frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup() 92 | frountier_node_ratio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1 93 | cost_threshold: 1e300 # the cost threshold. Any motion cost that is not better will not be expanded. default: inf 94 | LBTRRT: 95 | type: geometric::LBTRRT 96 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 97 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 98 | epsilon: 0.4 # optimality approximation factor. default: 0.4 99 | BiEST: 100 | type: geometric::BiEST 101 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 102 | ProjEST: 103 | type: geometric::ProjEST 104 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 105 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 106 | LazyPRM: 107 | type: geometric::LazyPRM 108 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 109 | LazyPRMstar: 110 | type: geometric::LazyPRMstar 111 | SPARS: 112 | type: geometric::SPARS 113 | stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0 114 | sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25 115 | dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001 116 | max_failures: 1000 # maximum consecutive failure limit. default: 1000 117 | SPARStwo: 118 | type: geometric::SPARStwo 119 | stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0 120 | sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25 121 | dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001 122 | max_failures: 5000 # maximum consecutive failure limit. default: 5000 123 | manipulator: 124 | default_planner_config: RRTConnect 125 | planner_configs: 126 | - SBL 127 | - EST 128 | - LBKPIECE 129 | - BKPIECE 130 | - KPIECE 131 | - RRT 132 | - RRTConnect 133 | - RRTstar 134 | - TRRT 135 | - PRM 136 | - PRMstar 137 | - FMT 138 | - BFMT 139 | - PDST 140 | - STRIDE 141 | - BiTRRT 142 | - LBTRRT 143 | - BiEST 144 | - ProjEST 145 | - LazyPRM 146 | - LazyPRMstar 147 | - SPARS 148 | - SPARStwo 149 | projection_evaluator: joints(joint1,joint2) 150 | longest_valid_segment_fraction: 0.005 -------------------------------------------------------------------------------- /rv7fl_moveit_config/config/ompl_planning.yaml: -------------------------------------------------------------------------------- 1 | planner_configs: 2 | SBLkConfigDefault: 3 | type: geometric::SBL 4 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 5 | ESTkConfigDefault: 6 | type: geometric::EST 7 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0 setup() 8 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 9 | LBKPIECEkConfigDefault: 10 | type: geometric::LBKPIECE 11 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 12 | border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 13 | min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5 14 | BKPIECEkConfigDefault: 15 | type: geometric::BKPIECE 16 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 17 | border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 18 | failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5 19 | min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5 20 | KPIECEkConfigDefault: 21 | type: geometric::KPIECE 22 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 23 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 24 | border_fraction: 0.9 # Fraction of time focused on boarder default: 0.9 (0.0,1.] 25 | failed_expansion_score_factor: 0.5 # When extending motion fails, scale score by factor. default: 0.5 26 | min_valid_path_fraction: 0.5 # Accept partially valid moves above fraction. default: 0.5 27 | RRTkConfigDefault: 28 | type: geometric::RRT 29 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 30 | goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05 31 | RRTConnectkConfigDefault: 32 | type: geometric::RRTConnect 33 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 34 | RRTstarkConfigDefault: 35 | type: geometric::RRTstar 36 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 37 | goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05 38 | delay_collision_checking: 1 # Stop collision checking as soon as C-free parent found. default 1 39 | TRRTkConfigDefault: 40 | type: geometric::TRRT 41 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 42 | goal_bias: 0.05 # When close to goal select goal, with this probability? default: 0.05 43 | max_states_failed: 10 # when to start increasing temp. default: 10 44 | temp_change_factor: 2.0 # how much to increase or decrease temp. default: 2.0 45 | min_temperature: 10e-10 # lower limit of temp change. default: 10e-10 46 | init_temperature: 10e-6 # initial temperature. default: 10e-6 47 | frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup() 48 | frountierNodeRatio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1 49 | k_constant: 0.0 # value used to normalize expresssion. default: 0.0 set in setup() 50 | PRMkConfigDefault: 51 | type: geometric::PRM 52 | max_nearest_neighbors: 10 # use k nearest neighbors. default: 10 53 | PRMstarkConfigDefault: 54 | type: geometric::PRMstar 55 | FMTkConfigDefault: 56 | type: geometric::FMT 57 | num_samples: 1000 # number of states that the planner should sample. default: 1000 58 | radius_multiplier: 1.1 # multiplier used for the nearest neighbors search radius. default: 1.1 59 | nearest_k: 1 # use Knearest strategy. default: 1 60 | cache_cc: 1 # use collision checking cache. default: 1 61 | heuristics: 0 # activate cost to go heuristics. default: 0 62 | extended_fmt: 1 # activate the extended FMT*: adding new samples if planner does not finish successfully. default: 1 63 | BFMTkConfigDefault: 64 | type: geometric::BFMT 65 | num_samples: 1000 # number of states that the planner should sample. default: 1000 66 | radius_multiplier: 1.0 # multiplier used for the nearest neighbors search radius. default: 1.0 67 | nearest_k: 1 # use the Knearest strategy. default: 1 68 | balanced: 0 # exploration strategy: balanced true expands one tree every iteration. False will select the tree with lowest maximum cost to go. default: 1 69 | optimality: 1 # termination strategy: optimality true finishes when the best possible path is found. Otherwise, the algorithm will finish when the first feasible path is found. default: 1 70 | heuristics: 1 # activates cost to go heuristics. default: 1 71 | cache_cc: 1 # use the collision checking cache. default: 1 72 | extended_fmt: 1 # Activates the extended FMT*: adding new samples if planner does not finish successfully. default: 1 73 | PDSTkConfigDefault: 74 | type: geometric::PDST 75 | STRIDEkConfigDefault: 76 | type: geometric::STRIDE 77 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 78 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 79 | use_projected_distance: 0 # whether nearest neighbors are computed based on distances in a projection of the state rather distances in the state space itself. default: 0 80 | degree: 16 # desired degree of a node in the Geometric Near-neightbor Access Tree (GNAT). default: 16 81 | max_degree: 18 # max degree of a node in the GNAT. default: 12 82 | min_degree: 12 # min degree of a node in the GNAT. default: 12 83 | max_pts_per_leaf: 6 # max points per leaf in the GNAT. default: 6 84 | estimated_dimension: 0.0 # estimated dimension of the free space. default: 0.0 85 | min_valid_path_fraction: 0.2 # Accept partially valid moves above fraction. default: 0.2 86 | BiTRRTkConfigDefault: 87 | type: geometric::BiTRRT 88 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 89 | temp_change_factor: 0.1 # how much to increase or decrease temp. default: 0.1 90 | init_temperature: 100 # initial temperature. default: 100 91 | frountier_threshold: 0.0 # dist new state to nearest neighbor to disqualify as frontier. default: 0.0 set in setup() 92 | frountier_node_ratio: 0.1 # 1/10, or 1 nonfrontier for every 10 frontier. default: 0.1 93 | cost_threshold: 1e300 # the cost threshold. Any motion cost that is not better will not be expanded. default: inf 94 | LBTRRTkConfigDefault: 95 | type: geometric::LBTRRT 96 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 97 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 98 | epsilon: 0.4 # optimality approximation factor. default: 0.4 99 | BiESTkConfigDefault: 100 | type: geometric::BiEST 101 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 102 | ProjESTkConfigDefault: 103 | type: geometric::ProjEST 104 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 105 | goal_bias: 0.05 # When close to goal select goal, with this probability. default: 0.05 106 | LazyPRMkConfigDefault: 107 | type: geometric::LazyPRM 108 | range: 0.0 # Max motion added to tree. ==> maxDistance_ default: 0.0, if 0.0, set on setup() 109 | LazyPRMstarkConfigDefault: 110 | type: geometric::LazyPRMstar 111 | SPARSkConfigDefault: 112 | type: geometric::SPARS 113 | stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0 114 | sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25 115 | dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001 116 | max_failures: 1000 # maximum consecutive failure limit. default: 1000 117 | SPARStwokConfigDefault: 118 | type: geometric::SPARStwo 119 | stretch_factor: 3.0 # roadmap spanner stretch factor. multiplicative upper bound on path quality. It does not make sense to make this parameter more than 3. default: 3.0 120 | sparse_delta_fraction: 0.25 # delta fraction for connection distance. This value represents the visibility range of sparse samples. default: 0.25 121 | dense_delta_fraction: 0.001 # delta fraction for interface detection. default: 0.001 122 | max_failures: 5000 # maximum consecutive failure limit. default: 5000 123 | arm: 124 | planner_configs: 125 | - SBLkConfigDefault 126 | - ESTkConfigDefault 127 | - LBKPIECEkConfigDefault 128 | - BKPIECEkConfigDefault 129 | - KPIECEkConfigDefault 130 | - RRTkConfigDefault 131 | - RRTConnectkConfigDefault 132 | - RRTstarkConfigDefault 133 | - TRRTkConfigDefault 134 | - PRMkConfigDefault 135 | - PRMstarkConfigDefault 136 | - FMTkConfigDefault 137 | - BFMTkConfigDefault 138 | - PDSTkConfigDefault 139 | - STRIDEkConfigDefault 140 | - BiTRRTkConfigDefault 141 | - LBTRRTkConfigDefault 142 | - BiESTkConfigDefault 143 | - ProjESTkConfigDefault 144 | - LazyPRMkConfigDefault 145 | - LazyPRMstarkConfigDefault 146 | - SPARSkConfigDefault 147 | - SPARStwokConfigDefault 148 | projection_evaluator: joints(joint1,joint2) 149 | longest_valid_segment_fraction: 0.005 -------------------------------------------------------------------------------- /melfa_description/urdf/rv4fl_yoods.yrdf.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 | 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 | 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 | 81 | 84 | 85 | 86 | 87 | 88 | 89 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 109 | 110 | 111 | 112 | 113 | 114 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 133 | 134 | 135 | 136 | 137 | 138 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 157 | 158 | 159 | 160 | 161 | 162 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 181 | 182 | 183 | 184 | 185 | 186 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 205 | 206 | 207 | 208 | 209 | 210 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 243 | 244 | 245 | 246 | 247 | 248 | 251 | 252 | 253 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright 2018 Tokyo Opensource Robotics Kyokai Association (TORK) 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /melfa_description/mesh/rv4fl/L6.stp: -------------------------------------------------------------------------------- 1 | ISO-10303-21; 2 | HEADER; 3 | FILE_DESCRIPTION(('STEP AP214'),'1'); 4 | FILE_NAME('L6.stp','2018-11-09T00:32:12',(' '),(' '),'Spatial InterOp 3D',' ',' '); 5 | FILE_SCHEMA(('automotive_design')); 6 | ENDSEC; 7 | DATA; 8 | #1=MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION(' ',(#10,#11,#12,#13,#14,#15,#16,#17),#6); 9 | #2=PRODUCT_DEFINITION_CONTEXT('',#18,'design'); 10 | #3=APPLICATION_PROTOCOL_DEFINITION('INTERNATIONAL STANDARD','automotive_design',1994,#18); 11 | #4=PRODUCT_CATEGORY_RELATIONSHIP('NONE','NONE',#19,#20); 12 | #5=SHAPE_DEFINITION_REPRESENTATION(#21,#22); 13 | #6= (GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#25))GLOBAL_UNIT_ASSIGNED_CONTEXT((#27,#28,#29))REPRESENTATION_CONTEXT('NONE','WORKSPACE')); 14 | #10=STYLED_ITEM('',(#31),#32); 15 | #11=STYLED_ITEM('',(#33),#34); 16 | #12=STYLED_ITEM('',(#35),#36); 17 | #13=STYLED_ITEM('',(#37),#38); 18 | #14=STYLED_ITEM('',(#39),#40); 19 | #15=STYLED_ITEM('',(#41),#42); 20 | #16=STYLED_ITEM('',(#43),#44); 21 | #17=STYLED_ITEM('',(#45),#46); 22 | #18=APPLICATION_CONTEXT(' '); 23 | #19=PRODUCT_CATEGORY('part','NONE'); 24 | #20=PRODUCT_RELATED_PRODUCT_CATEGORY('detail',' ',(#47)); 25 | #21=PRODUCT_DEFINITION_SHAPE('NONE','NONE',#48); 26 | #22=ADVANCED_BREP_SHAPE_REPRESENTATION('1',(#46,#49),#6); 27 | #25=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.0E-008),#27,'',''); 28 | #27= (CONVERSION_BASED_UNIT('METRE',#52)LENGTH_UNIT()NAMED_UNIT(#55)); 29 | #28= (NAMED_UNIT(#57)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.)); 30 | #29= (NAMED_UNIT(#57)SOLID_ANGLE_UNIT()SI_UNIT($,.STERADIAN.)); 31 | #31=PRESENTATION_STYLE_ASSIGNMENT((#63)); 32 | #32=ADVANCED_FACE('',(#64),#65,.T.); 33 | #33=PRESENTATION_STYLE_ASSIGNMENT((#66)); 34 | #34=ADVANCED_FACE('',(#67),#68,.T.); 35 | #35=PRESENTATION_STYLE_ASSIGNMENT((#69)); 36 | #36=ADVANCED_FACE('0:102',(#70),#71,.T.); 37 | #37=PRESENTATION_STYLE_ASSIGNMENT((#72)); 38 | #38=ADVANCED_FACE('0:82',(#73,#74),#75,.F.); 39 | #39=PRESENTATION_STYLE_ASSIGNMENT((#76)); 40 | #40=ADVANCED_FACE('0:48',(#77),#78,.T.); 41 | #41=PRESENTATION_STYLE_ASSIGNMENT((#79)); 42 | #42=ADVANCED_FACE('0:54',(#80),#81,.T.); 43 | #43=PRESENTATION_STYLE_ASSIGNMENT((#82)); 44 | #44=ADVANCED_FACE('0:85',(#83),#84,.F.); 45 | #45=PRESENTATION_STYLE_ASSIGNMENT((#85)); 46 | #46=MANIFOLD_SOLID_BREP('1',#86); 47 | #47=PRODUCT('1','1','PART-1-DESC',(#87)); 48 | #48=PRODUCT_DEFINITION('NONE','NONE',#88,#2); 49 | #49=AXIS2_PLACEMENT_3D('',#89,#90,#91); 50 | #52=LENGTH_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.0),#92); 51 | #55=DIMENSIONAL_EXPONENTS(1.0,0.0,0.0,0.0,0.0,0.0,0.0); 52 | #57=DIMENSIONAL_EXPONENTS(0.0,0.0,0.0,0.0,0.0,0.0,0.0); 53 | #63=SURFACE_STYLE_USAGE(.BOTH.,#93); 54 | #64=FACE_OUTER_BOUND('',#94,.T.); 55 | #65=CYLINDRICAL_SURFACE('',#95,0.0329999994438773); 56 | #66=SURFACE_STYLE_USAGE(.BOTH.,#96); 57 | #67=FACE_OUTER_BOUND('',#97,.T.); 58 | #68=CYLINDRICAL_SURFACE('',#98,0.019745942627448); 59 | #69=SURFACE_STYLE_USAGE(.BOTH.,#99); 60 | #70=FACE_OUTER_BOUND('',#100,.T.); 61 | #71=CYLINDRICAL_SURFACE('',#101,0.019745942627448); 62 | #72=SURFACE_STYLE_USAGE(.BOTH.,#102); 63 | #73=FACE_BOUND('',#103,.T.); 64 | #74=FACE_OUTER_BOUND('',#104,.T.); 65 | #75=PLANE('',#105); 66 | #76=SURFACE_STYLE_USAGE(.BOTH.,#106); 67 | #77=FACE_OUTER_BOUND('',#107,.T.); 68 | #78=CYLINDRICAL_SURFACE('',#108,0.0329999994438773); 69 | #79=SURFACE_STYLE_USAGE(.BOTH.,#109); 70 | #80=FACE_OUTER_BOUND('',#110,.T.); 71 | #81=PLANE('',#111); 72 | #82=SURFACE_STYLE_USAGE(.BOTH.,#112); 73 | #83=FACE_OUTER_BOUND('',#113,.T.); 74 | #84=PLANE('',#114); 75 | #85=SURFACE_STYLE_USAGE(.BOTH.,#115); 76 | #86=CLOSED_SHELL('',(#32,#34,#36,#38,#40,#42,#44)); 77 | #87=PRODUCT_CONTEXT('',#18,'mechanical'); 78 | #88=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE(' ','NONE',#47,.NOT_KNOWN.); 79 | #89=CARTESIAN_POINT('',(0.0,0.0,0.0)); 80 | #90=DIRECTION('',(0.0,0.0,1.0)); 81 | #91=DIRECTION('',(1.0,0.0,0.0)); 82 | #92= (NAMED_UNIT(#55)LENGTH_UNIT()SI_UNIT($,.METRE.)); 83 | #93=SURFACE_SIDE_STYLE('',(#117)); 84 | #94=EDGE_LOOP('',(#118,#119,#120,#121)); 85 | #95=AXIS2_PLACEMENT_3D('',#122,#123,#124); 86 | #96=SURFACE_SIDE_STYLE('',(#125)); 87 | #97=EDGE_LOOP('',(#126,#127,#128,#129)); 88 | #98=AXIS2_PLACEMENT_3D('',#130,#131,#132); 89 | #99=SURFACE_SIDE_STYLE('',(#133)); 90 | #100=EDGE_LOOP('',(#134,#135,#136,#137)); 91 | #101=AXIS2_PLACEMENT_3D('',#138,#139,#140); 92 | #102=SURFACE_SIDE_STYLE('',(#141)); 93 | #103=EDGE_LOOP('',(#142,#143)); 94 | #104=EDGE_LOOP('',(#144,#145)); 95 | #105=AXIS2_PLACEMENT_3D('',#146,#147,#148); 96 | #106=SURFACE_SIDE_STYLE('',(#149)); 97 | #107=EDGE_LOOP('',(#150,#151,#152,#153)); 98 | #108=AXIS2_PLACEMENT_3D('',#154,#155,#156); 99 | #109=SURFACE_SIDE_STYLE('',(#157)); 100 | #110=EDGE_LOOP('',(#158,#159)); 101 | #111=AXIS2_PLACEMENT_3D('',#160,#161,#162); 102 | #112=SURFACE_SIDE_STYLE('',(#163)); 103 | #113=EDGE_LOOP('',(#164,#165)); 104 | #114=AXIS2_PLACEMENT_3D('',#166,#167,#168); 105 | #115=SURFACE_SIDE_STYLE('',(#169)); 106 | #117=SURFACE_STYLE_FILL_AREA(#170); 107 | #118=ORIENTED_EDGE('',*,*,#171,.F.); 108 | #119=ORIENTED_EDGE('',*,*,#172,.F.); 109 | #120=ORIENTED_EDGE('',*,*,#173,.F.); 110 | #121=ORIENTED_EDGE('',*,*,#174,.T.); 111 | #122=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.09500002861023)); 112 | #123=DIRECTION('',(0.0,-0.0,1.0)); 113 | #124=DIRECTION('',(-1.0,0.0,0.0)); 114 | #125=SURFACE_STYLE_FILL_AREA(#175); 115 | #126=ORIENTED_EDGE('',*,*,#176,.F.); 116 | #127=ORIENTED_EDGE('',*,*,#177,.F.); 117 | #128=ORIENTED_EDGE('',*,*,#178,.F.); 118 | #129=ORIENTED_EDGE('',*,*,#179,.T.); 119 | #130=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.1139999628067)); 120 | #131=DIRECTION('',(0.0,-0.0,1.0)); 121 | #132=DIRECTION('',(1.0,0.0,-0.0)); 122 | #133=SURFACE_STYLE_FILL_AREA(#180); 123 | #134=ORIENTED_EDGE('',*,*,#176,.T.); 124 | #135=ORIENTED_EDGE('',*,*,#181,.T.); 125 | #136=ORIENTED_EDGE('',*,*,#178,.T.); 126 | #137=ORIENTED_EDGE('',*,*,#182,.F.); 127 | #138=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.1139999628067)); 128 | #139=DIRECTION('',(0.0,-0.0,1.0)); 129 | #140=DIRECTION('',(1.0,0.0,-0.0)); 130 | #141=SURFACE_STYLE_FILL_AREA(#183); 131 | #142=ORIENTED_EDGE('',*,*,#179,.F.); 132 | #143=ORIENTED_EDGE('',*,*,#181,.F.); 133 | #144=ORIENTED_EDGE('',*,*,#184,.F.); 134 | #145=ORIENTED_EDGE('',*,*,#174,.F.); 135 | #146=CARTESIAN_POINT('',(0.0531442128665179,0.0141777212284688,1.1139999628067)); 136 | #147=DIRECTION('',(0.0,0.0,-1.0)); 137 | #148=DIRECTION('',(-1.0,0.0,0.0)); 138 | #149=SURFACE_STYLE_FILL_AREA(#185); 139 | #150=ORIENTED_EDGE('',*,*,#171,.T.); 140 | #151=ORIENTED_EDGE('',*,*,#184,.T.); 141 | #152=ORIENTED_EDGE('',*,*,#173,.T.); 142 | #153=ORIENTED_EDGE('',*,*,#186,.F.); 143 | #154=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.09500002861023)); 144 | #155=DIRECTION('',(0.0,-0.0,1.0)); 145 | #156=DIRECTION('',(-1.0,0.0,0.0)); 146 | #157=SURFACE_STYLE_FILL_AREA(#187); 147 | #158=ORIENTED_EDGE('',*,*,#186,.T.); 148 | #159=ORIENTED_EDGE('',*,*,#172,.T.); 149 | #160=CARTESIAN_POINT('',(0.0531442128665179,0.0141777212284688,1.09500002861023)); 150 | #161=DIRECTION('',(0.0,0.0,-1.0)); 151 | #162=DIRECTION('',(-1.0,0.0,0.0)); 152 | #163=SURFACE_STYLE_FILL_AREA(#188); 153 | #164=ORIENTED_EDGE('',*,*,#177,.T.); 154 | #165=ORIENTED_EDGE('',*,*,#182,.T.); 155 | #166=CARTESIAN_POINT('',(0.0531442128665179,0.0141777212284688,1.12000000476837)); 156 | #167=DIRECTION('',(0.0,0.0,-1.0)); 157 | #168=DIRECTION('',(-1.0,0.0,0.0)); 158 | #169=SURFACE_STYLE_FILL_AREA(#189); 159 | #170=FILL_AREA_STYLE('',(#190)); 160 | #171=EDGE_CURVE('',#191,#192,#193,.T.); 161 | #172=EDGE_CURVE('',#194,#191,#195,.T.); 162 | #173=EDGE_CURVE('',#196,#194,#197,.T.); 163 | #174=EDGE_CURVE('',#196,#192,#198,.T.); 164 | #175=FILL_AREA_STYLE('',(#199)); 165 | #176=EDGE_CURVE('',#200,#201,#202,.T.); 166 | #177=EDGE_CURVE('0:106',#203,#200,#204,.F.); 167 | #178=EDGE_CURVE('',#205,#203,#206,.T.); 168 | #179=EDGE_CURVE('0:109',#205,#201,#207,.T.); 169 | #180=FILL_AREA_STYLE('',(#208)); 170 | #181=EDGE_CURVE('',#201,#205,#209,.T.); 171 | #182=EDGE_CURVE('',#200,#203,#210,.F.); 172 | #183=FILL_AREA_STYLE('',(#211)); 173 | #184=EDGE_CURVE('0:57',#192,#196,#212,.T.); 174 | #185=FILL_AREA_STYLE('',(#213)); 175 | #186=EDGE_CURVE('0:60',#191,#194,#214,.T.); 176 | #187=FILL_AREA_STYLE('',(#215)); 177 | #188=FILL_AREA_STYLE('',(#216)); 178 | #189=FILL_AREA_STYLE('',(#217)); 179 | #190=FILL_AREA_STYLE_COLOUR('',#218); 180 | #191=VERTEX_POINT('',#219); 181 | #192=VERTEX_POINT('',#220); 182 | #193=LINE('',#221,#222); 183 | #194=VERTEX_POINT('',#223); 184 | #195=CIRCLE('',#224,0.0329999994438773); 185 | #196=VERTEX_POINT('',#225); 186 | #197=LINE('',#226,#227); 187 | #198=CIRCLE('',#228,0.0329999994438773); 188 | #199=FILL_AREA_STYLE_COLOUR('',#229); 189 | #200=VERTEX_POINT('',#230); 190 | #201=VERTEX_POINT('',#231); 191 | #202=LINE('',#232,#233); 192 | #203=VERTEX_POINT('',#234); 193 | #204=CIRCLE('',#235,0.019745942627448); 194 | #205=VERTEX_POINT('',#236); 195 | #206=LINE('',#237,#238); 196 | #207=CIRCLE('',#239,0.019745942627448); 197 | #208=FILL_AREA_STYLE_COLOUR('',#240); 198 | #209=CIRCLE('',#241,0.019745942627448); 199 | #210=CIRCLE('',#242,0.019745942627448); 200 | #211=FILL_AREA_STYLE_COLOUR('',#243); 201 | #212=CIRCLE('',#244,0.0329999994438773); 202 | #213=FILL_AREA_STYLE_COLOUR('',#245); 203 | #214=CIRCLE('',#246,0.0329999994438773); 204 | #215=FILL_AREA_STYLE_COLOUR('',#247); 205 | #216=FILL_AREA_STYLE_COLOUR('',#248); 206 | #217=FILL_AREA_STYLE_COLOUR('',#249); 207 | #218=COLOUR_RGB('',0.560784339904785,0.686274528503418,0.560784339904785); 208 | #219=CARTESIAN_POINT('',(0.0170000003698582,-3.77308888126204E-010,1.09500002861023)); 209 | #220=CARTESIAN_POINT('',(0.0170000003698582,-3.77308888126204E-010,1.1139999628067)); 210 | #221=CARTESIAN_POINT('',(0.0170000003698582,-3.7730888408487E-010,1.09500002861023)); 211 | #222=VECTOR('',#250,1.0); 212 | #223=CARTESIAN_POINT('',(0.0829999992576128,-3.77308892167539E-010,1.09500002861023)); 213 | #224=AXIS2_PLACEMENT_3D('',#251,#252,#253); 214 | #225=CARTESIAN_POINT('',(0.0829999992576128,-3.77308892167539E-010,1.1139999628067)); 215 | #226=CARTESIAN_POINT('',(0.0829999992576128,-3.77308892167539E-010,1.09500002861023)); 216 | #227=VECTOR('',#254,1.0); 217 | #228=AXIS2_PLACEMENT_3D('',#255,#256,#257); 218 | #229=COLOUR_RGB('',0.560784339904785,0.686274528503418,0.560784339904785); 219 | #230=CARTESIAN_POINT('',(0.0302540571862875,-3.77308885708024E-010,1.12000000476837)); 220 | #231=CARTESIAN_POINT('',(0.0302540571862875,-3.77308885708024E-010,1.1139999628067)); 221 | #232=CARTESIAN_POINT('',(0.0302540571862875,-3.77308885708024E-010,1.1139999628067)); 222 | #233=VECTOR('',#258,1.0); 223 | #234=CARTESIAN_POINT('',(0.0697459424411834,-3.77308888126204E-010,1.12000000476837)); 224 | #235=AXIS2_PLACEMENT_3D('',#259,#260,#261); 225 | #236=CARTESIAN_POINT('',(0.0697459424411834,-3.77308888126204E-010,1.1139999628067)); 226 | #237=CARTESIAN_POINT('',(0.0697459424411834,-3.77308890544385E-010,1.1139999628067)); 227 | #238=VECTOR('',#262,1.0); 228 | #239=AXIS2_PLACEMENT_3D('',#263,#264,#265); 229 | #240=COLOUR_RGB('',0.560784339904785,0.686274528503418,0.560784339904785); 230 | #241=AXIS2_PLACEMENT_3D('',#266,#267,#268); 231 | #242=AXIS2_PLACEMENT_3D('',#269,#270,#271); 232 | #243=COLOUR_RGB('',0.560784339904785,0.686274528503418,0.560784339904785); 233 | #244=AXIS2_PLACEMENT_3D('',#272,#273,#274); 234 | #245=COLOUR_RGB('',0.560784339904785,0.686274528503418,0.560784339904785); 235 | #246=AXIS2_PLACEMENT_3D('',#275,#276,#277); 236 | #247=COLOUR_RGB('',0.560784339904785,0.686274528503418,0.560784339904785); 237 | #248=COLOUR_RGB('',0.560784339904785,0.686274528503418,0.560784339904785); 238 | #249=COLOUR_RGB('',0.560784339904785,0.686274528503418,0.560784339904785); 239 | #250=DIRECTION('',(-0.0,0.0,1.0)); 240 | #251=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.09500002861023)); 241 | #252=DIRECTION('',(0.0,0.0,-1.0)); 242 | #253=DIRECTION('',(-1.0,0.0,0.0)); 243 | #254=DIRECTION('',(-0.0,0.0,-1.0)); 244 | #255=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.1139999628067)); 245 | #256=DIRECTION('',(0.0,0.0,-1.0)); 246 | #257=DIRECTION('',(-1.0,0.0,0.0)); 247 | #258=DIRECTION('',(-0.0,-0.0,-1.0)); 248 | #259=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.12000000476837)); 249 | #260=DIRECTION('',(0.0,0.0,-1.0)); 250 | #261=DIRECTION('',(1.0,0.0,0.0)); 251 | #262=DIRECTION('',(0.0,-0.0,1.0)); 252 | #263=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.1139999628067)); 253 | #264=DIRECTION('',(0.0,-0.0,1.0)); 254 | #265=DIRECTION('',(1.0,0.0,-0.0)); 255 | #266=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.1139999628067)); 256 | #267=DIRECTION('',(0.0,-0.0,1.0)); 257 | #268=DIRECTION('',(1.0,0.0,-0.0)); 258 | #269=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.12000000476837)); 259 | #270=DIRECTION('',(0.0,0.0,-1.0)); 260 | #271=DIRECTION('',(1.0,0.0,0.0)); 261 | #272=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.1139999628067)); 262 | #273=DIRECTION('',(0.0,0.0,-1.0)); 263 | #274=DIRECTION('',(-1.0,0.0,0.0)); 264 | #275=CARTESIAN_POINT('',(0.0499999998137355,-3.77308888126204E-010,1.09500002861023)); 265 | #276=DIRECTION('',(0.0,0.0,-1.0)); 266 | #277=DIRECTION('',(-1.0,0.0,0.0)); 267 | #278=PRESENTATION_LAYER_ASSIGNMENT('\X2\FF9AFF72FF94\X0\0','',(#46)); 268 | ENDSEC; 269 | END-ISO-10303-21; 270 | --------------------------------------------------------------------------------