├── README.md ├── pro_moveit_config ├── .setup_assistant ├── CMakeLists.txt ├── config │ ├── fake_controllers.yaml │ ├── joint_limits.yaml │ ├── kinematics.yaml │ ├── ompl_planning.yaml │ └── swiftpro.srdf ├── launch │ ├── default_warehouse_db.launch │ ├── demo.launch │ ├── fake_moveit_controller_manager.launch.xml │ ├── joystick_control.launch │ ├── move_group.launch │ ├── moveit.rviz │ ├── moveit_rviz.launch │ ├── ompl_planning_pipeline.launch.xml │ ├── planning_context.launch │ ├── planning_pipeline.launch.xml │ ├── run_benchmark_ompl.launch │ ├── sensor_manager.launch.xml │ ├── setup_assistant.launch │ ├── swiftpro_moveit_controller_manager.launch.xml │ ├── swiftpro_moveit_sensor_manager.launch.xml │ ├── trajectory_execution.launch.xml │ ├── warehouse.launch │ └── warehouse_settings.launch.xml └── package.xml ├── swift_moveit_config ├── .setup_assistant ├── CMakeLists.txt ├── config │ ├── fake_controllers.yaml │ ├── joint_limits.yaml │ ├── kinematics.yaml │ ├── ompl_planning.yaml │ └── swiftpro.srdf ├── launch │ ├── default_warehouse_db.launch │ ├── demo.launch │ ├── fake_moveit_controller_manager.launch.xml │ ├── joystick_control.launch │ ├── move_group.launch │ ├── moveit.rviz │ ├── moveit_rviz.launch │ ├── ompl_planning_pipeline.launch.xml │ ├── planning_context.launch │ ├── planning_pipeline.launch.xml │ ├── run_benchmark_ompl.launch │ ├── sensor_manager.launch.xml │ ├── setup_assistant.launch │ ├── swiftpro_moveit_controller_manager.launch.xml │ ├── swiftpro_moveit_sensor_manager.launch.xml │ ├── trajectory_execution.launch.xml │ ├── warehouse.launch │ └── warehouse_settings.launch.xml └── package.xml └── swiftpro ├── CMakeLists.txt ├── launch ├── pro_control.launch ├── pro_display.launch ├── swift_control.launch └── swift_display.launch ├── msg ├── SwiftproState.msg ├── angle4th.msg ├── position.msg └── status.msg ├── package.xml ├── src ├── swiftpro_moveit_node.cpp ├── swiftpro_read_node.cpp ├── swiftpro_rviz_node.cpp └── swiftpro_write_node.cpp └── urdf ├── pro_links ├── Base.STL ├── Gripper.STL ├── Link1.STL ├── Link2.STL ├── Link3.STL ├── Link4.STL ├── Link5.STL ├── Link6.STL ├── Link7.STL ├── Link9.STL └── Suction.STL ├── pro_model.xacro ├── swift_links ├── Base.STL ├── Gripper.STL ├── Link1.STL ├── Link2.STL ├── Link3.STL ├── Link4.STL ├── Link5.STL ├── Link6.STL ├── Link7.STL ├── Link9.STL └── Suction.STL └── swift_model.xacro /README.md: -------------------------------------------------------------------------------- 1 | # SwiftAndProForROS 2 | This is the swift and swiftpro ROS package designed by Roger Cui(roger@ufactory.cc) and David Long (xiaokun.long@ufactory.cc). 3 | These packages support Moveit!, RViz and serial communication with swift and swiftpro. 4 | 5 | ## 1. Download and install 6 | Download ros packages for uarm swift pro 7 | ```bash 8 | $ cd ~/catkin_ws/src 9 | $ git clone https://github.com/uArm-Developer/RosForSwiftAndSwiftPro.git 10 | ``` 11 | then manually copy package folders *swiftpro* *swift_moveit_config* and *pro_moveit_config* into a catkin_ws/src. 12 | 13 | Install ros serial package 14 | ```bash 15 | $ sudo apt-get install ros-kinetic-serial 16 | ``` 17 | 18 | Compile 19 | ```bash 20 | $ catkin_make 21 | ``` 22 | 23 | ## 2. Set up enviroment 24 | Source all setup.bash files to set up your enviroment. 25 | ```bash 26 | # System configure ROS environment variables automatically every time you open a ternimal 27 | echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc 28 | echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc 29 | source ~/.bashrc 30 | ``` 31 | 32 | ## 3. Simulation 33 | Connect your swift/swiftpro to computer and get USB permission to access uArm 34 | ```bash 35 | $ sudo chmod 666 /dev/ttyACM0 36 | ``` 37 | 38 | ### 3.1 Display mode: Get data from swiftpro 39 | Get data from serial and simulate swiftpro in RViz. 40 | ```bash 41 | roslaunch swiftpro pro_display.launch 42 | ``` 43 | right now, you can drag your swiftpro and it will simulate in Rviz. 44 | 45 | ### 3.2 Control Mode: Send data to swiftpro 46 | Connect swiftpro, send data though serial. 47 | ```bash 48 | roslaunch swiftpro pro_control.launch 49 | ``` 50 | Open another ternimal to get joint angles from Moveit!. 51 | ```bash 52 | roslaunch pro_moveit_config demo.launch 53 | ``` 54 | right now, you can do trajectory planning or grasping in moveIt!. 55 | 56 | ### 3.3 Display mode: Get data from swift 57 | Get data from serial and simulate swift in RViz. 58 | ```bash 59 | roslaunch swiftpro swift_display.launch 60 | ``` 61 | right now, you can drag your swift and it will simulate in Rviz. 62 | 63 | ### 3.4 Control Mode: Send data to swift 64 | Connect swift, send data though serial. 65 | ```bash 66 | roslaunch swiftpro swift_control.launch 67 | ``` 68 | Open another ternimal to get joint angles from Moveit!. 69 | ```bash 70 | roslaunch swift_moveit_config demo.launch 71 | ``` 72 | right now, you can do trajectory planning or grasping in moveIt!. 73 | 74 | ### 3.5 About nodes and topics 75 | 76 | 77 | ### 3.6 About message 78 | SwiftproState.msg: includes all data about swiftpro 79 | ```bash 80 | float64 motor_angle1 81 | float64 motor_angle2 82 | float64 motor_angle3 83 | float64 motor_angle4 84 | float64 x 85 | float64 y 86 | float64 z 87 | uint8 pump 88 | uint8 swiftpro_status 89 | uint8 gripper 90 | ``` 91 | position.msg: includes x, y, z information(mm) 92 | ```bash 93 | float64 x 94 | float64 y 95 | float64 z 96 | ``` 97 | angle4th.msg: 4th motor angle(degree) 98 | ```bash 99 | float64 angle4th 100 | ``` 101 | status.msg: work if 1; otherwise 0 102 | ```bash 103 | uint8 status 104 | ``` 105 | -------------------------------------------------------------------------------- /pro_moveit_config/.setup_assistant: -------------------------------------------------------------------------------- 1 | moveit_setup_assistant_config: 2 | URDF: 3 | package: swiftpro 4 | relative_path: urdf/pro_model.xacro 5 | SRDF: 6 | relative_path: config/swiftpro.srdf 7 | CONFIG: 8 | author_name: roger 9 | author_email: roger@ufactory.cc 10 | generated_timestamp: 1508989522 -------------------------------------------------------------------------------- /pro_moveit_config/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(pro_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 | -------------------------------------------------------------------------------- /pro_moveit_config/config/fake_controllers.yaml: -------------------------------------------------------------------------------- 1 | controller_list: 2 | - name: fake_arm_controller 3 | joints: 4 | - Joint1 5 | - Joint2 6 | - Joint3 7 | - Joint8 -------------------------------------------------------------------------------- /pro_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: false 7 | max_velocity: 0 8 | has_acceleration_limits: false 9 | max_acceleration: 0 10 | Joint2: 11 | has_velocity_limits: false 12 | max_velocity: 0 13 | has_acceleration_limits: false 14 | max_acceleration: 0 15 | Joint3: 16 | has_velocity_limits: false 17 | max_velocity: 0 18 | has_acceleration_limits: false 19 | max_acceleration: 0 20 | Joint8: 21 | has_velocity_limits: false 22 | max_velocity: 0 23 | has_acceleration_limits: false 24 | max_acceleration: 0 -------------------------------------------------------------------------------- /pro_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: 10 -------------------------------------------------------------------------------- /pro_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 -------------------------------------------------------------------------------- /pro_moveit_config/config/swiftpro.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 | 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 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/default_warehouse_db.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /pro_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 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/fake_moveit_controller_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/joystick_control.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /pro_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 | -------------------------------------------------------------------------------- /pro_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/Scene Geometry1 8 | - /MotionPlanning1/Scene Robot1 9 | - /MotionPlanning1/Planning Request1 10 | - /MotionPlanning1/Planning Metrics1 11 | - /MotionPlanning1/Planned Path1 12 | Splitter Ratio: 0.742560029 13 | Tree Height: 102 14 | - Class: rviz/Help 15 | Name: Help 16 | - Class: rviz/Views 17 | Expanded: 18 | - /Current View1 19 | Name: Views 20 | Splitter Ratio: 0.5 21 | Visualization Manager: 22 | Class: "" 23 | Displays: 24 | - Alpha: 0.5 25 | Cell Size: 1 26 | Class: rviz/Grid 27 | Color: 160; 160; 164 28 | Enabled: true 29 | Line Style: 30 | Line Width: 0.0299999993 31 | Value: Lines 32 | Name: Grid 33 | Normal Cell Count: 0 34 | Offset: 35 | X: 0 36 | Y: 0 37 | Z: 0 38 | Plane: XY 39 | Plane Cell Count: 10 40 | Reference Frame: 41 | Value: true 42 | - Class: moveit_rviz_plugin/MotionPlanning 43 | Enabled: true 44 | Move Group Namespace: "" 45 | MoveIt_Goal_Tolerance: 0 46 | MoveIt_Planning_Attempts: 10 47 | MoveIt_Planning_Time: 5 48 | MoveIt_Use_Constraint_Aware_IK: true 49 | MoveIt_Warehouse_Host: 127.0.0.1 50 | MoveIt_Warehouse_Port: 33829 51 | MoveIt_Workspace: 52 | Center: 53 | X: 0 54 | Y: 0 55 | Z: 0 56 | Size: 57 | X: 2 58 | Y: 2 59 | Z: 2 60 | Name: MotionPlanning 61 | Planned Path: 62 | Color Enabled: false 63 | Interrupt Display: false 64 | Links: 65 | All Links Enabled: true 66 | Base: 67 | Alpha: 1 68 | Show Axes: false 69 | Show Trail: false 70 | Value: true 71 | Expand Joint Details: false 72 | Expand Link Details: false 73 | Expand Tree: false 74 | Link Tree Style: Links in Alphabetic Order 75 | Link1: 76 | Alpha: 1 77 | Show Axes: false 78 | Show Trail: false 79 | Value: true 80 | Link2: 81 | Alpha: 1 82 | Show Axes: false 83 | Show Trail: false 84 | Value: true 85 | Link3: 86 | Alpha: 1 87 | Show Axes: false 88 | Show Trail: false 89 | Value: true 90 | Link4: 91 | Alpha: 1 92 | Show Axes: false 93 | Show Trail: false 94 | Value: true 95 | Link5: 96 | Alpha: 1 97 | Show Axes: false 98 | Show Trail: false 99 | Value: true 100 | Link6: 101 | Alpha: 1 102 | Show Axes: false 103 | Show Trail: false 104 | Value: true 105 | Link7: 106 | Alpha: 1 107 | Show Axes: false 108 | Show Trail: false 109 | Value: true 110 | Link8: 111 | Alpha: 1 112 | Show Axes: false 113 | Show Trail: false 114 | Value: true 115 | Link9: 116 | Alpha: 1 117 | Show Axes: false 118 | Show Trail: false 119 | Value: true 120 | Loop Animation: true 121 | Robot Alpha: 0.5 122 | Robot Color: 150; 50; 150 123 | Show Robot Collision: false 124 | Show Robot Visual: true 125 | Show Trail: false 126 | State Display Time: 0.05 s 127 | Trail Step Size: 1 128 | Trajectory Topic: move_group/display_planned_path 129 | Planning Metrics: 130 | Payload: 1 131 | Show Joint Torques: false 132 | Show Manipulability: false 133 | Show Manipulability Index: false 134 | Show Weight Limit: false 135 | TextHeight: 0.0799999982 136 | Planning Request: 137 | Colliding Link Color: 255; 0; 0 138 | Goal State Alpha: 1 139 | Goal State Color: 250; 128; 0 140 | Interactive Marker Size: 0 141 | Joint Violation Color: 255; 0; 255 142 | Planning Group: arm 143 | Query Goal State: true 144 | Query Start State: false 145 | Show Workspace: false 146 | Start State Alpha: 1 147 | Start State Color: 0; 255; 0 148 | Planning Scene Topic: move_group/monitored_planning_scene 149 | Robot Description: robot_description 150 | Scene Geometry: 151 | Scene Alpha: 1 152 | Scene Color: 50; 230; 50 153 | Scene Display Time: 0.200000003 154 | Show Scene Geometry: true 155 | Voxel Coloring: Z-Axis 156 | Voxel Rendering: Occupied Voxels 157 | Scene Robot: 158 | Attached Body Color: 150; 50; 150 159 | Links: 160 | All Links Enabled: true 161 | Base: 162 | Alpha: 1 163 | Show Axes: false 164 | Show Trail: false 165 | Value: true 166 | Expand Joint Details: false 167 | Expand Link Details: false 168 | Expand Tree: false 169 | Link Tree Style: Links in Alphabetic Order 170 | Link1: 171 | Alpha: 1 172 | Show Axes: false 173 | Show Trail: false 174 | Value: true 175 | Link2: 176 | Alpha: 1 177 | Show Axes: false 178 | Show Trail: false 179 | Value: true 180 | Link3: 181 | Alpha: 1 182 | Show Axes: false 183 | Show Trail: false 184 | Value: true 185 | Link4: 186 | Alpha: 1 187 | Show Axes: false 188 | Show Trail: false 189 | Value: true 190 | Link5: 191 | Alpha: 1 192 | Show Axes: false 193 | Show Trail: false 194 | Value: true 195 | Link6: 196 | Alpha: 1 197 | Show Axes: false 198 | Show Trail: false 199 | Value: true 200 | Link7: 201 | Alpha: 1 202 | Show Axes: false 203 | Show Trail: false 204 | Value: true 205 | Link8: 206 | Alpha: 1 207 | Show Axes: false 208 | Show Trail: false 209 | Value: true 210 | Link9: 211 | Alpha: 1 212 | Show Axes: false 213 | Show Trail: false 214 | Value: true 215 | Robot Alpha: 0.5 216 | Show Robot Collision: false 217 | Show Robot Visual: true 218 | Value: true 219 | - Alpha: 1 220 | Class: rviz/RobotModel 221 | Collision Enabled: false 222 | Enabled: true 223 | Links: 224 | All Links Enabled: true 225 | Base: 226 | Alpha: 1 227 | Show Axes: false 228 | Show Trail: false 229 | Value: true 230 | Expand Joint Details: false 231 | Expand Link Details: false 232 | Expand Tree: false 233 | Link Tree Style: Links in Alphabetic Order 234 | Link1: 235 | Alpha: 1 236 | Show Axes: false 237 | Show Trail: false 238 | Value: true 239 | Link2: 240 | Alpha: 1 241 | Show Axes: false 242 | Show Trail: false 243 | Value: true 244 | Link3: 245 | Alpha: 1 246 | Show Axes: false 247 | Show Trail: false 248 | Value: true 249 | Link4: 250 | Alpha: 1 251 | Show Axes: false 252 | Show Trail: false 253 | Value: true 254 | Link5: 255 | Alpha: 1 256 | Show Axes: false 257 | Show Trail: false 258 | Value: true 259 | Link6: 260 | Alpha: 1 261 | Show Axes: false 262 | Show Trail: false 263 | Value: true 264 | Link7: 265 | Alpha: 1 266 | Show Axes: false 267 | Show Trail: false 268 | Value: true 269 | Link8: 270 | Alpha: 1 271 | Show Axes: false 272 | Show Trail: false 273 | Value: true 274 | Link9: 275 | Alpha: 1 276 | Show Axes: false 277 | Show Trail: false 278 | Value: true 279 | Name: RobotModel 280 | Robot Description: robot_description 281 | TF Prefix: "" 282 | Update Interval: 0 283 | Value: true 284 | Visual Enabled: true 285 | Enabled: true 286 | Global Options: 287 | Background Color: 48; 48; 48 288 | Fixed Frame: Base 289 | Frame Rate: 30 290 | Name: root 291 | Tools: 292 | - Class: rviz/Interact 293 | Hide Inactive Objects: true 294 | - Class: rviz/MoveCamera 295 | - Class: rviz/Select 296 | Value: true 297 | Views: 298 | Current: 299 | Class: rviz/XYOrbit 300 | Distance: 1.20490241 301 | Enable Stereo Rendering: 302 | Stereo Eye Separation: 0.0599999987 303 | Stereo Focal Distance: 1 304 | Swap Stereo Eyes: false 305 | Value: false 306 | Focal Point: 307 | X: 0.334676594 308 | Y: 0.0392795652 309 | Z: 4.47040662e-08 310 | Focal Shape Fixed Size: true 311 | Focal Shape Size: 0.0500000007 312 | Invert Z Axis: false 313 | Name: Current View 314 | Near Clip Distance: 0.00999999978 315 | Pitch: 0.509796977 316 | Target Frame: Base 317 | Value: XYOrbit (rviz) 318 | Yaw: 5.65994978 319 | Saved: ~ 320 | Window Geometry: 321 | Displays: 322 | collapsed: false 323 | Height: 798 324 | Help: 325 | collapsed: false 326 | Hide Left Dock: false 327 | Hide Right Dock: false 328 | MotionPlanning: 329 | collapsed: false 330 | MotionPlanning - Slider: 331 | collapsed: false 332 | QMainWindow State: 000000ff00000000fd0000000100000000000002b8000002d8fc0200000007fb000000100044006900730070006c0061007900730100000028000000fb000000dd00fffffffb0000000800480065006c00700000000342000000bb0000007600fffffffb0000000a0056006900650077007300000003b0000000b0000000b000fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000000000000000fb0000002e004d006f00740069006f006e0050006c0061006e006e0069006e00670020002d00200053006c00690064006500720000000000ffffffff0000004a00fffffffb0000001c004d006f00740069006f006e0050006c0061006e006e0069006e00670100000129000001d7000001cc00ffffff000003bd000002d800000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 333 | Views: 334 | collapsed: false 335 | Width: 1659 336 | X: 65 337 | Y: 24 338 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/moveit_rviz.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /pro_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 | -------------------------------------------------------------------------------- /pro_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 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/planning_pipeline.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /pro_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 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/sensor_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/setup_assistant.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/swiftpro_moveit_controller_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/swiftpro_moveit_sensor_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /pro_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 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/warehouse.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /pro_moveit_config/launch/warehouse_settings.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /pro_moveit_config/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | pro_moveit_config 4 | 0.3.0 5 | 6 | An automatically generated package with all the configuration and launch files for using the swiftpro with the MoveIt! Motion Planning Framework 7 | 8 | roger 9 | roger 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_kinematics 21 | moveit_planners_ompl 22 | moveit_ros_visualization 23 | joint_state_publisher 24 | robot_state_publisher 25 | xacro 26 | 27 | 28 | swiftpro 29 | swiftpro 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /swift_moveit_config/.setup_assistant: -------------------------------------------------------------------------------- 1 | moveit_setup_assistant_config: 2 | URDF: 3 | package: swiftpro 4 | relative_path: urdf/swift_model.xacro 5 | SRDF: 6 | relative_path: config/swiftpro.srdf 7 | CONFIG: 8 | author_name: roger 9 | author_email: roger@ufactory.cc 10 | generated_timestamp: 1508990885 -------------------------------------------------------------------------------- /swift_moveit_config/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(swift_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 | -------------------------------------------------------------------------------- /swift_moveit_config/config/fake_controllers.yaml: -------------------------------------------------------------------------------- 1 | controller_list: 2 | - name: fake_arm_controller 3 | joints: 4 | - Joint1 5 | - Joint2 6 | - Joint3 7 | - Joint8 -------------------------------------------------------------------------------- /swift_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: false 7 | max_velocity: 0 8 | has_acceleration_limits: false 9 | max_acceleration: 0 10 | Joint2: 11 | has_velocity_limits: false 12 | max_velocity: 0 13 | has_acceleration_limits: false 14 | max_acceleration: 0 15 | Joint3: 16 | has_velocity_limits: false 17 | max_velocity: 0 18 | has_acceleration_limits: false 19 | max_acceleration: 0 20 | Joint8: 21 | has_velocity_limits: false 22 | max_velocity: 0 23 | has_acceleration_limits: false 24 | max_acceleration: 0 -------------------------------------------------------------------------------- /swift_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: 10 -------------------------------------------------------------------------------- /swift_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 -------------------------------------------------------------------------------- /swift_moveit_config/config/swiftpro.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 | 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 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/default_warehouse_db.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /swift_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 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/fake_moveit_controller_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/joystick_control.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /swift_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 | -------------------------------------------------------------------------------- /swift_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 | Splitter Ratio: 0.74256 9 | Tree Height: 664 10 | - Class: rviz/Help 11 | Name: Help 12 | - Class: rviz/Views 13 | Expanded: 14 | - /Current View1 15 | Name: Views 16 | Splitter Ratio: 0.5 17 | Visualization Manager: 18 | Class: "" 19 | Displays: 20 | - Alpha: 0.5 21 | Cell Size: 1 22 | Class: rviz/Grid 23 | Color: 160; 160; 164 24 | Enabled: true 25 | Line Style: 26 | Line Width: 0.03 27 | Value: Lines 28 | Name: Grid 29 | Normal Cell Count: 0 30 | Offset: 31 | X: 0 32 | Y: 0 33 | Z: 0 34 | Plane: XY 35 | Plane Cell Count: 10 36 | Reference Frame: 37 | Value: true 38 | - Class: moveit_rviz_plugin/MotionPlanning 39 | Enabled: true 40 | MoveIt_Goal_Tolerance: 0 41 | MoveIt_Planning_Time: 5 42 | MoveIt_Use_Constraint_Aware_IK: true 43 | MoveIt_Warehouse_Host: 127.0.0.1 44 | MoveIt_Warehouse_Port: 33829 45 | Name: MotionPlanning 46 | Planned Path: 47 | Links: 48 | base_bellow_link: 49 | Alpha: 1 50 | Show Axes: false 51 | Show Trail: false 52 | Value: true 53 | base_footprint: 54 | Alpha: 1 55 | Show Axes: false 56 | Show Trail: false 57 | Value: true 58 | base_link: 59 | Alpha: 1 60 | Show Axes: false 61 | Show Trail: false 62 | Value: true 63 | bl_caster_l_wheel_link: 64 | Alpha: 1 65 | Show Axes: false 66 | Show Trail: false 67 | Value: true 68 | bl_caster_r_wheel_link: 69 | Alpha: 1 70 | Show Axes: false 71 | Show Trail: false 72 | Value: true 73 | bl_caster_rotation_link: 74 | Alpha: 1 75 | Show Axes: false 76 | Show Trail: false 77 | Value: true 78 | br_caster_l_wheel_link: 79 | Alpha: 1 80 | Show Axes: false 81 | Show Trail: false 82 | Value: true 83 | br_caster_r_wheel_link: 84 | Alpha: 1 85 | Show Axes: false 86 | Show Trail: false 87 | Value: true 88 | br_caster_rotation_link: 89 | Alpha: 1 90 | Show Axes: false 91 | Show Trail: false 92 | Value: true 93 | double_stereo_link: 94 | Alpha: 1 95 | Show Axes: false 96 | Show Trail: false 97 | Value: true 98 | fl_caster_l_wheel_link: 99 | Alpha: 1 100 | Show Axes: false 101 | Show Trail: false 102 | Value: true 103 | fl_caster_r_wheel_link: 104 | Alpha: 1 105 | Show Axes: false 106 | Show Trail: false 107 | Value: true 108 | fl_caster_rotation_link: 109 | Alpha: 1 110 | Show Axes: false 111 | Show Trail: false 112 | Value: true 113 | fr_caster_l_wheel_link: 114 | Alpha: 1 115 | Show Axes: false 116 | Show Trail: false 117 | Value: true 118 | fr_caster_r_wheel_link: 119 | Alpha: 1 120 | Show Axes: false 121 | Show Trail: false 122 | Value: true 123 | fr_caster_rotation_link: 124 | Alpha: 1 125 | Show Axes: false 126 | Show Trail: false 127 | Value: true 128 | head_mount_kinect_ir_link: 129 | Alpha: 1 130 | Show Axes: false 131 | Show Trail: false 132 | Value: true 133 | head_mount_kinect_rgb_link: 134 | Alpha: 1 135 | Show Axes: false 136 | Show Trail: false 137 | Value: true 138 | head_mount_link: 139 | Alpha: 1 140 | Show Axes: false 141 | Show Trail: false 142 | Value: true 143 | head_mount_prosilica_link: 144 | Alpha: 1 145 | Show Axes: false 146 | Show Trail: false 147 | Value: true 148 | head_pan_link: 149 | Alpha: 1 150 | Show Axes: false 151 | Show Trail: false 152 | Value: true 153 | head_plate_frame: 154 | Alpha: 1 155 | Show Axes: false 156 | Show Trail: false 157 | Value: true 158 | head_tilt_link: 159 | Alpha: 1 160 | Show Axes: false 161 | Show Trail: false 162 | Value: true 163 | l_elbow_flex_link: 164 | Alpha: 1 165 | Show Axes: false 166 | Show Trail: false 167 | Value: true 168 | l_forearm_link: 169 | Alpha: 1 170 | Show Axes: false 171 | Show Trail: false 172 | Value: true 173 | l_forearm_roll_link: 174 | Alpha: 1 175 | Show Axes: false 176 | Show Trail: false 177 | Value: true 178 | l_gripper_l_finger_link: 179 | Alpha: 1 180 | Show Axes: false 181 | Show Trail: false 182 | Value: true 183 | l_gripper_l_finger_tip_link: 184 | Alpha: 1 185 | Show Axes: false 186 | Show Trail: false 187 | Value: true 188 | l_gripper_motor_accelerometer_link: 189 | Alpha: 1 190 | Show Axes: false 191 | Show Trail: false 192 | Value: true 193 | l_gripper_palm_link: 194 | Alpha: 1 195 | Show Axes: false 196 | Show Trail: false 197 | Value: true 198 | l_gripper_r_finger_link: 199 | Alpha: 1 200 | Show Axes: false 201 | Show Trail: false 202 | Value: true 203 | l_gripper_r_finger_tip_link: 204 | Alpha: 1 205 | Show Axes: false 206 | Show Trail: false 207 | Value: true 208 | l_shoulder_lift_link: 209 | Alpha: 1 210 | Show Axes: false 211 | Show Trail: false 212 | Value: true 213 | l_shoulder_pan_link: 214 | Alpha: 1 215 | Show Axes: false 216 | Show Trail: false 217 | Value: true 218 | l_upper_arm_link: 219 | Alpha: 1 220 | Show Axes: false 221 | Show Trail: false 222 | Value: true 223 | l_upper_arm_roll_link: 224 | Alpha: 1 225 | Show Axes: false 226 | Show Trail: false 227 | Value: true 228 | l_wrist_flex_link: 229 | Alpha: 1 230 | Show Axes: false 231 | Show Trail: false 232 | Value: true 233 | l_wrist_roll_link: 234 | Alpha: 1 235 | Show Axes: false 236 | Show Trail: false 237 | Value: true 238 | laser_tilt_mount_link: 239 | Alpha: 1 240 | Show Axes: false 241 | Show Trail: false 242 | Value: true 243 | r_elbow_flex_link: 244 | Alpha: 1 245 | Show Axes: false 246 | Show Trail: false 247 | Value: true 248 | r_forearm_link: 249 | Alpha: 1 250 | Show Axes: false 251 | Show Trail: false 252 | Value: true 253 | r_forearm_roll_link: 254 | Alpha: 1 255 | Show Axes: false 256 | Show Trail: false 257 | Value: true 258 | r_gripper_l_finger_link: 259 | Alpha: 1 260 | Show Axes: false 261 | Show Trail: false 262 | Value: true 263 | r_gripper_l_finger_tip_link: 264 | Alpha: 1 265 | Show Axes: false 266 | Show Trail: false 267 | Value: true 268 | r_gripper_motor_accelerometer_link: 269 | Alpha: 1 270 | Show Axes: false 271 | Show Trail: false 272 | Value: true 273 | r_gripper_palm_link: 274 | Alpha: 1 275 | Show Axes: false 276 | Show Trail: false 277 | Value: true 278 | r_gripper_r_finger_link: 279 | Alpha: 1 280 | Show Axes: false 281 | Show Trail: false 282 | Value: true 283 | r_gripper_r_finger_tip_link: 284 | Alpha: 1 285 | Show Axes: false 286 | Show Trail: false 287 | Value: true 288 | r_shoulder_lift_link: 289 | Alpha: 1 290 | Show Axes: false 291 | Show Trail: false 292 | Value: true 293 | r_shoulder_pan_link: 294 | Alpha: 1 295 | Show Axes: false 296 | Show Trail: false 297 | Value: true 298 | r_upper_arm_link: 299 | Alpha: 1 300 | Show Axes: false 301 | Show Trail: false 302 | Value: true 303 | r_upper_arm_roll_link: 304 | Alpha: 1 305 | Show Axes: false 306 | Show Trail: false 307 | Value: true 308 | r_wrist_flex_link: 309 | Alpha: 1 310 | Show Axes: false 311 | Show Trail: false 312 | Value: true 313 | r_wrist_roll_link: 314 | Alpha: 1 315 | Show Axes: false 316 | Show Trail: false 317 | Value: true 318 | sensor_mount_link: 319 | Alpha: 1 320 | Show Axes: false 321 | Show Trail: false 322 | Value: true 323 | torso_lift_link: 324 | Alpha: 1 325 | Show Axes: false 326 | Show Trail: false 327 | Value: true 328 | Loop Animation: true 329 | Robot Alpha: 0.5 330 | Show Robot Collision: false 331 | Show Robot Visual: true 332 | Show Trail: false 333 | State Display Time: 0.05 s 334 | Trajectory Topic: move_group/display_planned_path 335 | Planning Metrics: 336 | Payload: 1 337 | Show Joint Torques: false 338 | Show Manipulability: false 339 | Show Manipulability Index: false 340 | Show Weight Limit: false 341 | Planning Request: 342 | Colliding Link Color: 255; 0; 0 343 | Goal State Alpha: 1 344 | Goal State Color: 250; 128; 0 345 | Interactive Marker Size: 0 346 | Joint Violation Color: 255; 0; 255 347 | Planning Group: left_arm 348 | Query Goal State: true 349 | Query Start State: false 350 | Show Workspace: false 351 | Start State Alpha: 1 352 | Start State Color: 0; 255; 0 353 | Planning Scene Topic: move_group/monitored_planning_scene 354 | Robot Description: robot_description 355 | Scene Geometry: 356 | Scene Alpha: 1 357 | Scene Color: 50; 230; 50 358 | Scene Display Time: 0.2 359 | Show Scene Geometry: true 360 | Voxel Coloring: Z-Axis 361 | Voxel Rendering: Occupied Voxels 362 | Scene Robot: 363 | Attached Body Color: 150; 50; 150 364 | Links: 365 | base_bellow_link: 366 | Alpha: 1 367 | Show Axes: false 368 | Show Trail: false 369 | Value: true 370 | base_footprint: 371 | Alpha: 1 372 | Show Axes: false 373 | Show Trail: false 374 | Value: true 375 | base_link: 376 | Alpha: 1 377 | Show Axes: false 378 | Show Trail: false 379 | Value: true 380 | bl_caster_l_wheel_link: 381 | Alpha: 1 382 | Show Axes: false 383 | Show Trail: false 384 | Value: true 385 | bl_caster_r_wheel_link: 386 | Alpha: 1 387 | Show Axes: false 388 | Show Trail: false 389 | Value: true 390 | bl_caster_rotation_link: 391 | Alpha: 1 392 | Show Axes: false 393 | Show Trail: false 394 | Value: true 395 | br_caster_l_wheel_link: 396 | Alpha: 1 397 | Show Axes: false 398 | Show Trail: false 399 | Value: true 400 | br_caster_r_wheel_link: 401 | Alpha: 1 402 | Show Axes: false 403 | Show Trail: false 404 | Value: true 405 | br_caster_rotation_link: 406 | Alpha: 1 407 | Show Axes: false 408 | Show Trail: false 409 | Value: true 410 | double_stereo_link: 411 | Alpha: 1 412 | Show Axes: false 413 | Show Trail: false 414 | Value: true 415 | fl_caster_l_wheel_link: 416 | Alpha: 1 417 | Show Axes: false 418 | Show Trail: false 419 | Value: true 420 | fl_caster_r_wheel_link: 421 | Alpha: 1 422 | Show Axes: false 423 | Show Trail: false 424 | Value: true 425 | fl_caster_rotation_link: 426 | Alpha: 1 427 | Show Axes: false 428 | Show Trail: false 429 | Value: true 430 | fr_caster_l_wheel_link: 431 | Alpha: 1 432 | Show Axes: false 433 | Show Trail: false 434 | Value: true 435 | fr_caster_r_wheel_link: 436 | Alpha: 1 437 | Show Axes: false 438 | Show Trail: false 439 | Value: true 440 | fr_caster_rotation_link: 441 | Alpha: 1 442 | Show Axes: false 443 | Show Trail: false 444 | Value: true 445 | head_mount_kinect_ir_link: 446 | Alpha: 1 447 | Show Axes: false 448 | Show Trail: false 449 | Value: true 450 | head_mount_kinect_rgb_link: 451 | Alpha: 1 452 | Show Axes: false 453 | Show Trail: false 454 | Value: true 455 | head_mount_link: 456 | Alpha: 1 457 | Show Axes: false 458 | Show Trail: false 459 | Value: true 460 | head_mount_prosilica_link: 461 | Alpha: 1 462 | Show Axes: false 463 | Show Trail: false 464 | Value: true 465 | head_pan_link: 466 | Alpha: 1 467 | Show Axes: false 468 | Show Trail: false 469 | Value: true 470 | head_plate_frame: 471 | Alpha: 1 472 | Show Axes: false 473 | Show Trail: false 474 | Value: true 475 | head_tilt_link: 476 | Alpha: 1 477 | Show Axes: false 478 | Show Trail: false 479 | Value: true 480 | l_elbow_flex_link: 481 | Alpha: 1 482 | Show Axes: false 483 | Show Trail: false 484 | Value: true 485 | l_forearm_link: 486 | Alpha: 1 487 | Show Axes: false 488 | Show Trail: false 489 | Value: true 490 | l_forearm_roll_link: 491 | Alpha: 1 492 | Show Axes: false 493 | Show Trail: false 494 | Value: true 495 | l_gripper_l_finger_link: 496 | Alpha: 1 497 | Show Axes: false 498 | Show Trail: false 499 | Value: true 500 | l_gripper_l_finger_tip_link: 501 | Alpha: 1 502 | Show Axes: false 503 | Show Trail: false 504 | Value: true 505 | l_gripper_motor_accelerometer_link: 506 | Alpha: 1 507 | Show Axes: false 508 | Show Trail: false 509 | Value: true 510 | l_gripper_palm_link: 511 | Alpha: 1 512 | Show Axes: false 513 | Show Trail: false 514 | Value: true 515 | l_gripper_r_finger_link: 516 | Alpha: 1 517 | Show Axes: false 518 | Show Trail: false 519 | Value: true 520 | l_gripper_r_finger_tip_link: 521 | Alpha: 1 522 | Show Axes: false 523 | Show Trail: false 524 | Value: true 525 | l_shoulder_lift_link: 526 | Alpha: 1 527 | Show Axes: false 528 | Show Trail: false 529 | Value: true 530 | l_shoulder_pan_link: 531 | Alpha: 1 532 | Show Axes: false 533 | Show Trail: false 534 | Value: true 535 | l_upper_arm_link: 536 | Alpha: 1 537 | Show Axes: false 538 | Show Trail: false 539 | Value: true 540 | l_upper_arm_roll_link: 541 | Alpha: 1 542 | Show Axes: false 543 | Show Trail: false 544 | Value: true 545 | l_wrist_flex_link: 546 | Alpha: 1 547 | Show Axes: false 548 | Show Trail: false 549 | Value: true 550 | l_wrist_roll_link: 551 | Alpha: 1 552 | Show Axes: false 553 | Show Trail: false 554 | Value: true 555 | laser_tilt_mount_link: 556 | Alpha: 1 557 | Show Axes: false 558 | Show Trail: false 559 | Value: true 560 | r_elbow_flex_link: 561 | Alpha: 1 562 | Show Axes: false 563 | Show Trail: false 564 | Value: true 565 | r_forearm_link: 566 | Alpha: 1 567 | Show Axes: false 568 | Show Trail: false 569 | Value: true 570 | r_forearm_roll_link: 571 | Alpha: 1 572 | Show Axes: false 573 | Show Trail: false 574 | Value: true 575 | r_gripper_l_finger_link: 576 | Alpha: 1 577 | Show Axes: false 578 | Show Trail: false 579 | Value: true 580 | r_gripper_l_finger_tip_link: 581 | Alpha: 1 582 | Show Axes: false 583 | Show Trail: false 584 | Value: true 585 | r_gripper_motor_accelerometer_link: 586 | Alpha: 1 587 | Show Axes: false 588 | Show Trail: false 589 | Value: true 590 | r_gripper_palm_link: 591 | Alpha: 1 592 | Show Axes: false 593 | Show Trail: false 594 | Value: true 595 | r_gripper_r_finger_link: 596 | Alpha: 1 597 | Show Axes: false 598 | Show Trail: false 599 | Value: true 600 | r_gripper_r_finger_tip_link: 601 | Alpha: 1 602 | Show Axes: false 603 | Show Trail: false 604 | Value: true 605 | r_shoulder_lift_link: 606 | Alpha: 1 607 | Show Axes: false 608 | Show Trail: false 609 | Value: true 610 | r_shoulder_pan_link: 611 | Alpha: 1 612 | Show Axes: false 613 | Show Trail: false 614 | Value: true 615 | r_upper_arm_link: 616 | Alpha: 1 617 | Show Axes: false 618 | Show Trail: false 619 | Value: true 620 | r_upper_arm_roll_link: 621 | Alpha: 1 622 | Show Axes: false 623 | Show Trail: false 624 | Value: true 625 | r_wrist_flex_link: 626 | Alpha: 1 627 | Show Axes: false 628 | Show Trail: false 629 | Value: true 630 | r_wrist_roll_link: 631 | Alpha: 1 632 | Show Axes: false 633 | Show Trail: false 634 | Value: true 635 | sensor_mount_link: 636 | Alpha: 1 637 | Show Axes: false 638 | Show Trail: false 639 | Value: true 640 | torso_lift_link: 641 | Alpha: 1 642 | Show Axes: false 643 | Show Trail: false 644 | Value: true 645 | Robot Alpha: 0.5 646 | Show Scene Robot: true 647 | Value: true 648 | Enabled: true 649 | Global Options: 650 | Background Color: 48; 48; 48 651 | Fixed Frame: /Base 652 | Name: root 653 | Tools: 654 | - Class: rviz/Interact 655 | Hide Inactive Objects: true 656 | - Class: rviz/MoveCamera 657 | - Class: rviz/Select 658 | Value: true 659 | Views: 660 | Current: 661 | Class: rviz/XYOrbit 662 | Distance: 2.9965 663 | Focal Point: 664 | X: 0.113567 665 | Y: 0.10592 666 | Z: 2.23518e-07 667 | Name: Current View 668 | Near Clip Distance: 0.01 669 | Pitch: 0.509797 670 | Target Frame: /Base 671 | Value: XYOrbit (rviz) 672 | Yaw: 5.65995 673 | Saved: ~ 674 | Window Geometry: 675 | Displays: 676 | collapsed: false 677 | Height: 1337 678 | Help: 679 | collapsed: false 680 | Hide Left Dock: false 681 | Hide Right Dock: false 682 | Motion Planning: 683 | collapsed: false 684 | QMainWindow State: 000000ff00000000fd0000000100000000000002a2000004bcfc0200000005fb000000100044006900730070006c00610079007301000000410000032d000000dd00fffffffb0000000800480065006c00700000000342000000bb0000007600fffffffb0000000a0056006900650077007300000003b0000000b0000000b000fffffffb0000000c00430061006d00650072006100000002ff000001610000000000000000fb0000001e004d006f00740069006f006e00200050006c0061006e006e0069006e00670100000374000001890000017400ffffff0000047a000004bc00000001000000020000000100000002fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 685 | Views: 686 | collapsed: false 687 | Width: 1828 688 | X: 459 689 | Y: -243 690 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/moveit_rviz.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /swift_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 | -------------------------------------------------------------------------------- /swift_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 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/planning_pipeline.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /swift_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 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/sensor_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/setup_assistant.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/swiftpro_moveit_controller_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/swiftpro_moveit_sensor_manager.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /swift_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 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/warehouse.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /swift_moveit_config/launch/warehouse_settings.launch.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /swift_moveit_config/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | swift_moveit_config 4 | 0.3.0 5 | 6 | An automatically generated package with all the configuration and launch files for using the swiftpro with the MoveIt! Motion Planning Framework 7 | 8 | roger 9 | roger 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_kinematics 21 | moveit_planners_ompl 22 | moveit_ros_visualization 23 | joint_state_publisher 24 | robot_state_publisher 25 | xacro 26 | 27 | 28 | swiftpro 29 | swiftpro 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /swiftpro/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(swiftpro) 3 | 4 | ## Compile as C++11, supported in ROS Kinetic and newer 5 | # add_compile_options(-std=c++11) 6 | 7 | ## Find catkin macros and libraries 8 | ## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) 9 | ## is used, also find other catkin packages 10 | find_package(catkin REQUIRED COMPONENTS 11 | roscpp 12 | rospy 13 | serial 14 | std_msgs 15 | tf 16 | sensor_msgs 17 | message_generation 18 | ) 19 | 20 | ## System dependencies are found with CMake's conventions 21 | # find_package(Boost REQUIRED COMPONENTS system) 22 | 23 | 24 | ## Uncomment this if the package has a setup.py. This macro ensures 25 | ## modules and global scripts declared therein get installed 26 | ## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html 27 | # catkin_python_setup() 28 | 29 | ################################################ 30 | ## Declare ROS messages, services and actions ## 31 | ################################################ 32 | 33 | ## To declare and build messages, services or actions from within this 34 | ## package, follow these steps: 35 | ## * Let MSG_DEP_SET be the set of packages whose message types you use in 36 | ## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...). 37 | ## * In the file package.xml: 38 | ## * add a build_depend tag for "message_generation" 39 | ## * add a build_depend and a run_depend tag for each package in MSG_DEP_SET 40 | ## * If MSG_DEP_SET isn't empty the following dependency has been pulled in 41 | ## but can be declared for certainty nonetheless: 42 | ## * add a run_depend tag for "message_runtime" 43 | ## * In this file (CMakeLists.txt): 44 | ## * add "message_generation" and every package in MSG_DEP_SET to 45 | ## find_package(catkin REQUIRED COMPONENTS ...) 46 | ## * add "message_runtime" and every package in MSG_DEP_SET to 47 | ## catkin_package(CATKIN_DEPENDS ...) 48 | ## * uncomment the add_*_files sections below as needed 49 | ## and list every .msg/.srv/.action file to be processed 50 | ## * uncomment the generate_messages entry below 51 | ## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...) 52 | 53 | ## Generate messages in the 'msg' folder 54 | add_message_files( 55 | FILES 56 | SwiftproState.msg 57 | position.msg 58 | angle4th.msg 59 | status.msg 60 | ) 61 | 62 | ## Generate services in the 'srv' folder 63 | # add_service_files( 64 | # FILES 65 | # fk.srv 66 | # Service2.srv 67 | # ) 68 | 69 | ## Generate actions in the 'action' folder 70 | # add_action_files( 71 | # FILES 72 | # Action1.action 73 | # Action2.action 74 | # ) 75 | 76 | ## Generate added messages and services with any dependencies listed here 77 | generate_messages( 78 | DEPENDENCIES 79 | std_msgs 80 | ) 81 | 82 | ################################################ 83 | ## Declare ROS dynamic reconfigure parameters ## 84 | ################################################ 85 | ## To declare and build dynamic reconfigure parameters within this 86 | ## package, follow these steps: 87 | ## * In the file package.xml: 88 | ## * add a build_depend and a run_depend tag for "dynamic_reconfigure" 89 | ## * In this file (CMakeLists.txt): 90 | ## * add "dynamic_reconfigure" to 91 | ## find_package(catkin REQUIRED COMPONENTS ...) 92 | ## * uncomment the "generate_dynamic_reconfigure_options" section below 93 | ## and list every .cfg file to be processed 94 | 95 | ## Generate dynamic reconfigure parameters in the 'cfg' folder 96 | # generate_dynamic_reconfigure_options( 97 | # cfg/DynReconf1.cfg 98 | # cfg/DynReconf2.cfg 99 | # ) 100 | 101 | ################################### 102 | ## catkin specific configuration ## 103 | ################################### 104 | ## The catkin_package macro generates cmake config files for your package 105 | ## Declare things to be passed to dependent projects 106 | ## INCLUDE_DIRS: uncomment this if you package contains header files 107 | ## LIBRARIES: libraries you create in this project that dependent projects also need 108 | ## CATKIN_DEPENDS: catkin_packages dependent projects also need 109 | ## DEPENDS: system dependencies of this project that dependent projects also need 110 | catkin_package( 111 | # INCLUDE_DIRS include 112 | LIBRARIES swiftpro 113 | CATKIN_DEPENDS roscpp rospy std_msgs tf sensor_msgs message_runtime 114 | # DEPENDS system_lib 115 | ) 116 | 117 | ########### 118 | ## Build ## 119 | ########### 120 | 121 | ## Specify additional locations of header files 122 | ## Your package locations should be listed before other locations 123 | include_directories( 124 | # include 125 | ${catkin_INCLUDE_DIRS} 126 | ) 127 | 128 | ## Declare a C++ library 129 | # add_library(${PROJECT_NAME} 130 | # src/${PROJECT_NAME}/swiftpro.cpp 131 | # ) 132 | 133 | ## Add cmake target dependencies of the library 134 | ## as an example, code may need to be generated before libraries 135 | ## either from message generation or dynamic reconfigure 136 | # add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) 137 | 138 | ## Declare a C++ executable 139 | ## With catkin_make all packages are built within a single CMake context 140 | ## The recommended prefix ensures that target names across packages don't collide 141 | # add_executable(${PROJECT_NAME}_node src/swiftpro_node.cpp) 142 | add_executable(swiftpro_write_node src/swiftpro_write_node.cpp) 143 | add_executable(swiftpro_moveit_node src/swiftpro_moveit_node.cpp) 144 | add_executable(swiftpro_rviz_node src/swiftpro_rviz_node.cpp) 145 | add_executable(swiftpro_read_node src/swiftpro_read_node.cpp) 146 | 147 | ## Rename C++ executable without prefix 148 | ## The above recommended prefix causes long target names, the following renames the 149 | ## target back to the shorter version for ease of user use 150 | ## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node" 151 | # set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "") 152 | #set_target_properties(swiftpro_write_node PROPERTIES OUTPUT_NAME write PREFIX "") 153 | #set_target_properties(swiftpro_moveit_node PROPERTIES OUTPUT_NAME moveit PREFIX "") 154 | #set_target_properties(swiftpro_rviz_node PROPERTIES OUTPUT_NAME rviz PREFIX "") 155 | #set_target_properties(swiftpro_read_node PROPERTIES OUTPUT_NAME read PREFIX "") 156 | 157 | ## Add cmake target dependencies of the executable 158 | ## same as for the library above 159 | # add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) 160 | add_dependencies(swiftpro_write_node swiftpro_generate_messages_cpp) 161 | add_dependencies(swiftpro_moveit_node swiftpro_generate_messages_cpp) 162 | add_dependencies(swiftpro_rviz_node swiftpro_generate_messages_cpp) 163 | add_dependencies(swiftpro_read_node swiftpro_generate_messages_cpp) 164 | 165 | ## Specify libraries to link a library or executable target against 166 | # target_link_libraries(${PROJECT_NAME}_node 167 | # ${catkin_LIBRARIES} 168 | # ) 169 | target_link_libraries(swiftpro_write_node ${catkin_LIBRARIES}) 170 | target_link_libraries(swiftpro_moveit_node ${catkin_LIBRARIES}) 171 | target_link_libraries(swiftpro_rviz_node ${catkin_LIBRARIES}) 172 | target_link_libraries(swiftpro_read_node ${catkin_LIBRARIES}) 173 | 174 | ############# 175 | ## Install ## 176 | ############# 177 | 178 | # all install targets should use catkin DESTINATION variables 179 | # See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html 180 | 181 | ## Mark executable scripts (Python etc.) for installation 182 | ## in contrast to setup.py, you can choose the destination 183 | # install(PROGRAMS 184 | # scripts/my_python_script 185 | # DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 186 | # ) 187 | 188 | ## Mark executables and/or libraries for installation 189 | # install(TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_node 190 | # ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 191 | # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 192 | # RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 193 | # ) 194 | 195 | ## Mark cpp header files for installation 196 | # install(DIRECTORY include/${PROJECT_NAME}/ 197 | # DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} 198 | # FILES_MATCHING PATTERN "*.h" 199 | # PATTERN ".svn" EXCLUDE 200 | # ) 201 | 202 | ## Mark other files for installation (e.g. launch and bag files, etc.) 203 | # install(FILES 204 | # # myfile1 205 | # # myfile2 206 | # DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} 207 | # ) 208 | 209 | ############# 210 | ## Testing ## 211 | ############# 212 | 213 | ## Add gtest based cpp test target and link libraries 214 | # catkin_add_gtest(${PROJECT_NAME}-test test/test_swiftpro.cpp) 215 | # if(TARGET ${PROJECT_NAME}-test) 216 | # target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME}) 217 | # endif() 218 | 219 | ## Add folders to be run by python nosetests 220 | # catkin_add_nosetests(test) 221 | 222 | include_directories(include/swiftpro) 223 | #add_library(MyRobot src/MyRobot.cpp) 224 | #add_executable(MyRobot src/MyRobot.cpp) 225 | #target_link_libraries(MyRobot ${catkin_LIBRARIES}) 226 | 227 | #link_directories(src) 228 | #install(TARGETS MyRobot 229 | # LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}) 230 | -------------------------------------------------------------------------------- /swiftpro/launch/pro_control.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /swiftpro/launch/pro_display.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /swiftpro/launch/swift_control.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /swiftpro/launch/swift_display.launch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /swiftpro/msg/SwiftproState.msg: -------------------------------------------------------------------------------- 1 | float64 motor_angle1 2 | float64 motor_angle2 3 | float64 motor_angle3 4 | float64 motor_angle4 5 | float64 x 6 | float64 y 7 | float64 z 8 | uint8 pump 9 | uint8 swiftpro_status 10 | uint8 gripper 11 | 12 | -------------------------------------------------------------------------------- /swiftpro/msg/angle4th.msg: -------------------------------------------------------------------------------- 1 | float64 angle4th 2 | -------------------------------------------------------------------------------- /swiftpro/msg/position.msg: -------------------------------------------------------------------------------- 1 | float64 x 2 | float64 y 3 | float64 z 4 | -------------------------------------------------------------------------------- /swiftpro/msg/status.msg: -------------------------------------------------------------------------------- 1 | uint8 status 2 | -------------------------------------------------------------------------------- /swiftpro/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | swiftpro 4 | 0.0.0 5 | The swiftpro package 6 | 7 | 8 | 9 | 10 | uf 11 | 12 | 13 | 14 | 15 | 16 | TODO 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 | catkin 43 | roscpp 44 | rospy 45 | std_msgs 46 | message_generation 47 | sensor_msgs 48 | tf 49 | roscpp 50 | rospy 51 | std_msgs 52 | message_runtime 53 | sensor_msgs 54 | tf 55 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /swiftpro/src/swiftpro_moveit_node.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Software License Agreement (BSD License) 3 | * Copyright (c) 2017, UFactory, Inc. 4 | * All rights reserved. 5 | * Author: Roger Cui 6 | */ 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #define MATH_PI 3.141592653589793238463 14 | #define MATH_TRANS 57.2958 15 | #define MATH_L1 106.6 16 | #define MATH_L2 13.2 17 | #define MATH_LOWER_ARM 142.07 18 | #define MATH_UPPER_ARM 158.81 19 | 20 | float motor_angle[3] = {90.0, 90.0, 0.0}; 21 | 22 | /* 23 | * Description: forward kinematics of swift pro 24 | * Inputs: angle[3] 3 motor angles(degree) 25 | * Outputs: position[3] 3 cartesian coordinates: x, y, z(mm) 26 | */ 27 | void swift_fk(float angle[3], float position[3]) 28 | { 29 | double stretch = MATH_LOWER_ARM * cos(angle[1] / MATH_TRANS) 30 | + MATH_UPPER_ARM * cos(angle[2] / MATH_TRANS) + MATH_L2 + 56.55; 31 | 32 | double height = MATH_LOWER_ARM * sin(angle[1] / MATH_TRANS) 33 | - MATH_UPPER_ARM * sin(angle[2] / MATH_TRANS) + MATH_L1; 34 | 35 | position[0] = stretch * sin(angle[0] / MATH_TRANS); 36 | position[1] = -stretch * cos(angle[0] / MATH_TRANS); 37 | position[2] = height - 74.55; 38 | } 39 | 40 | 41 | /* 42 | * Description: callback when receive data from move_group/fake_controller_joint_states 43 | * Inputs: msg 3 necessary joints for kinematic chain(degree) 44 | * Outputs: motor_angle[3] 3 motor angles(degree) 45 | */ 46 | void joint_Callback(const sensor_msgs::JointState& msg) 47 | { 48 | motor_angle[0] = msg.position[0] * 57.2958 + 90; 49 | motor_angle[1] = 90 - msg.position[1] * 57.2958; 50 | motor_angle[2] = (msg.position[1] + msg.position[2]) * 57.2958; 51 | } 52 | 53 | 54 | /* 55 | * Node name: 56 | * swiftpro_moveit_node 57 | * 58 | * Topic publish: (rate = 20Hz, queue size = 1) 59 | * position_write_topic 60 | * 61 | * Topic subscribe: (queue size = 1) 62 | * move_group/fake_controller_joint_states 63 | */ 64 | int main(int argc, char **argv) 65 | { 66 | float position[3]; 67 | swiftpro::position pos; 68 | 69 | ros::init(argc, argv, "swiftpro_moveit_node"); 70 | ros::NodeHandle n; 71 | 72 | ros::Subscriber sub = n.subscribe("move_group/fake_controller_joint_states", 1, joint_Callback); 73 | ros::Publisher pub = n.advertise("position_write_topic", 1); 74 | ros::Rate loop_rate(20); 75 | 76 | while (ros::ok()) 77 | { 78 | swift_fk(motor_angle, position); 79 | pos.x = position[0]; 80 | pos.y = position[1]; 81 | pos.z = position[2]; 82 | pub.publish(pos); 83 | 84 | ros::spinOnce(); 85 | loop_rate.sleep(); 86 | } 87 | return 0; 88 | } 89 | 90 | -------------------------------------------------------------------------------- /swiftpro/src/swiftpro_read_node.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Software License Agreement (BSD License) 3 | * Copyright (c) 2017, UFactory, Inc. 4 | * All rights reserved. 5 | * Author: Roger Cui 6 | * David Long 7 | */ 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | serial::Serial _serial; // serial object 16 | float position[4] = {0.0}; // 3 cartesian coordinates: x, y, z(mm) and 1 angle(degree) 17 | char strdata[2048]; // global variables for handling string 18 | 19 | 20 | void handlestr() 21 | { 22 | char *pch = strtok(strdata, " "); 23 | float value[8]; 24 | int index = 0; 25 | 26 | while (pch != NULL && index < 5) 27 | { 28 | value[index] = atof(pch+1); 29 | pch = strtok(NULL, " "); 30 | index++; 31 | } 32 | position[0] = value[1]; 33 | position[1] = value[2]; 34 | position[2] = value[3]; 35 | position[3] = value[4]; 36 | } 37 | 38 | 39 | void handlechar(char c) 40 | { 41 | static int index = 0; 42 | 43 | switch(c) 44 | { 45 | case '\r': 46 | break; 47 | 48 | case '\n': 49 | strdata[index] = '\0'; 50 | handlestr(); 51 | index = 0; 52 | break; 53 | 54 | default: 55 | strdata[index++] = c; 56 | break; 57 | } 58 | } 59 | 60 | /* 61 | * Node name: 62 | * swiftpro_read_node 63 | * 64 | * Topic publish: (rate = 20Hz, queue size = 1) 65 | * position_read_topic 66 | */ 67 | int main(int argc, char** argv) 68 | { 69 | ros::init(argc, argv, "swiftpro_read_node"); 70 | ros::NodeHandle nh; 71 | swiftpro::SwiftproState swiftpro_state; 72 | std_msgs::String result; 73 | 74 | ros::Publisher pub = nh.advertise("SwiftproState_topic", 1); 75 | ros::Rate loop_rate(20); 76 | 77 | try 78 | { 79 | _serial.setPort("/dev/ttyACM0"); 80 | _serial.setBaudrate(115200); 81 | serial::Timeout to = serial::Timeout::simpleTimeout(1000); 82 | _serial.setTimeout(to); 83 | _serial.open(); 84 | ROS_INFO_STREAM("Port has been open successfully"); 85 | } 86 | catch (serial::IOException& e) 87 | { 88 | ROS_ERROR_STREAM("Unable to open port"); 89 | return -1; 90 | } 91 | 92 | if (_serial.isOpen()) 93 | { 94 | ros::Duration(3.0).sleep(); // wait 3s 95 | _serial.write("M2019\r\n"); // detach 96 | ros::Duration(0.5).sleep(); // wait 0.5s 97 | _serial.write("M2120 V0.05\r\n"); // report position per 0.05s 98 | ROS_INFO_STREAM("Start to report data"); 99 | } 100 | 101 | while (ros::ok()) // publish positionesian coordinates 102 | { 103 | if (_serial.available()) 104 | { 105 | result.data = _serial.read(_serial.available()); 106 | // ROS_INFO_STREAM("Read:" << result.data); 107 | for (int i = 0; i < result.data.length(); i++) 108 | handlechar(result.data.c_str()[i]); 109 | 110 | swiftpro_state.pump = 0; 111 | swiftpro_state.gripper = 0; 112 | swiftpro_state.swiftpro_status = 0; 113 | swiftpro_state.motor_angle1 = 0.0; 114 | swiftpro_state.motor_angle2 = 0.0; 115 | swiftpro_state.motor_angle3 = 0.0; 116 | swiftpro_state.motor_angle4 = position[3]; 117 | swiftpro_state.x = position[0]; 118 | swiftpro_state.y = position[1]; 119 | swiftpro_state.z = position[2]; 120 | pub.publish(swiftpro_state); 121 | ROS_INFO("position: %.2f %.2f %.2f %.2f", position[0], position[1], position[2], position[3]); 122 | } 123 | ros::spinOnce(); 124 | loop_rate.sleep(); 125 | } 126 | } 127 | 128 | 129 | -------------------------------------------------------------------------------- /swiftpro/src/swiftpro_rviz_node.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Software License Agreement (BSD License) 3 | * Copyright (c) 2017, UFactory, Inc. 4 | * All rights reserved. 5 | * Author: Roger Cui 6 | */ 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #define MATH_PI 3.141592653589793238463 15 | #define MATH_TRANS 57.2958 16 | #define MATH_L1 106.6 17 | #define MATH_L2 13.2 18 | #define MATH_LOWER_ARM 142.07 19 | #define MATH_UPPER_ARM 158.81 20 | #define MATH_UPPER_LOWER (MATH_UPPER_ARM / MATH_LOWER_ARM) 21 | 22 | #define LOWER_ARM_MAX_ANGLE 135.6 23 | #define LOWER_ARM_MIN_ANGLE 0 24 | #define UPPER_ARM_MAX_ANGLE 100.7 25 | #define UPPER_ARM_MIN_ANGLE 0 26 | #define LOWER_UPPER_MAX_ANGLE 151 27 | #define LOWER_UPPER_MIN_ANGLE 10 28 | 29 | float joint_angle[9] = {0.0}; // 9 joint angles of swiftpro(degree) 30 | 31 | /* 32 | * Description: Get 9 joint angles from 3 motor angles 33 | * Inputs: angle[3] 3 motor angles(degree) 34 | * Outputs: joint_angle[9] 9 joint angles(degree) 35 | */ 36 | void all_joints_state(float angle[3]) 37 | { 38 | double alpha2; 39 | double alpha3; 40 | 41 | alpha2 = angle[1]; 42 | alpha3 = angle[2] - 3.8; 43 | 44 | // 3 necessary joints for kinematic chain 45 | joint_angle[0] = angle[0] - 90; 46 | joint_angle[1] = 90 - alpha2; 47 | joint_angle[5] = alpha3; 48 | 49 | // 6 passive joints for display 50 | joint_angle[2] = (alpha2 + alpha3) - 176.11 + 90; 51 | joint_angle[3] = -90 + alpha2; 52 | joint_angle[4] = joint_angle[1]; 53 | joint_angle[6] = 90 - (alpha2 + alpha3); 54 | joint_angle[7] = 176.11 - 180 - alpha3; 55 | joint_angle[8] = 48.39 + alpha3 - 44.55; 56 | } 57 | 58 | 59 | /* 60 | * Description: inverse kinematics of swift pro 61 | * Inputs: position[3] 3 cartesian coordinates: x, y, z(mm) 62 | * Outputs: angle[3] 3 motor angles(degree) 63 | */ 64 | bool swiftpro_ik(float position[3], float angle[3]) 65 | { 66 | float x = position[0]; 67 | float y = position[1]; 68 | float z = position[2]; 69 | float xIn, zIn, phi, rightAll, sqrtZX = 0.0; 70 | float angleRot, angleLeft, angleRight = 0.0; 71 | 72 | z += 74.55; 73 | zIn = (z - MATH_L1) / MATH_LOWER_ARM; 74 | 75 | if (x < 0.1) 76 | x = 0.1; 77 | 78 | // calculate value of theta1: the rotation angle 79 | if (y == 0) 80 | angleRot = 90; 81 | else if (y < 0) 82 | angleRot = -atan(x / y) * MATH_TRANS; 83 | else if (y > 0) 84 | angleRot = 180 - atan(x / y) * MATH_TRANS; 85 | 86 | xIn = (x / sin(angleRot / MATH_TRANS) - MATH_L2 - 56.55) / MATH_LOWER_ARM; 87 | phi = atan(zIn / xIn) * MATH_TRANS; 88 | sqrtZX = sqrt(zIn * zIn + xIn * xIn); 89 | rightAll = (sqrtZX * sqrtZX + MATH_UPPER_LOWER * MATH_UPPER_LOWER - 1) 90 | / (2 * MATH_UPPER_LOWER * sqrtZX); 91 | angleRight = acos(rightAll) * MATH_TRANS; 92 | 93 | // calculate value of theta2 and theta3 94 | rightAll = (sqrtZX * sqrtZX + 1 - MATH_UPPER_LOWER * MATH_UPPER_LOWER ) / (2 * sqrtZX); 95 | angleLeft = acos(rightAll) * MATH_TRANS; 96 | angleLeft = angleLeft + phi; 97 | angleRight = angleRight - phi; 98 | 99 | if (isnan(angleRot) || isnan(angleLeft) || isnan(angleRight)) 100 | return false; 101 | 102 | angle[0] = angleRot; 103 | angle[1] = angleLeft; 104 | angle[2] = angleRight; 105 | return true; 106 | } 107 | 108 | 109 | /* 110 | * Description: callback when receive data from position_read_topic 111 | * Inputs: msg(SwiftproState) data about swiftpro 112 | * Outputs: joint_angle[9] 9 joint angles(degree) 113 | */ 114 | void SwiftproState_Callback(const swiftpro::SwiftproState& msg) 115 | { 116 | float position[3]; 117 | float angle[3]; 118 | 119 | position[0] = msg.x; 120 | position[1] = msg.y; 121 | position[2] = msg.z; 122 | 123 | if ( swiftpro_ik(position, angle) ) 124 | all_joints_state(angle); 125 | else 126 | ROS_ERROR("Inverse kinematic is wrong"); 127 | } 128 | 129 | 130 | /* 131 | * Node name: 132 | * swiftpro_rviz_node 133 | * 134 | * Topic publish: (rate = 20Hz, queue size = 1) 135 | * joint_states 136 | * 137 | * Topic subscribe: (queue size = 1) 138 | * SwiftproState_topic 139 | */ 140 | int main(int argc, char **argv) 141 | { 142 | ros::init(argc, argv, "swiftpro_rviz_node"); 143 | ros::NodeHandle n; 144 | 145 | ros::Subscriber sub = n.subscribe("SwiftproState_topic", 1, SwiftproState_Callback); 146 | ros::Publisher pub = n.advertise("joint_states", 1); 147 | ros::Rate loop_rate(20); 148 | 149 | tf::TransformBroadcaster broadcaster; 150 | sensor_msgs::JointState joint_state; 151 | geometry_msgs::TransformStamped odom_trans; 152 | 153 | odom_trans.header.frame_id = "odom"; 154 | odom_trans.child_frame_id = "Base"; 155 | 156 | while (ros::ok()) 157 | { 158 | joint_state.header.stamp = ros::Time::now(); 159 | joint_state.name.resize(9); 160 | joint_state.position.resize(9); 161 | joint_state.name[0] = "Joint1"; 162 | joint_state.position[0] = joint_angle[0] / 57.2958; 163 | joint_state.name[1] = "Joint2"; 164 | joint_state.position[1] = joint_angle[1] / 57.2958; 165 | joint_state.name[2] = "Joint3"; 166 | joint_state.position[2] = joint_angle[2] / 57.2958; 167 | joint_state.name[3] = "Joint4"; 168 | joint_state.position[3] = joint_angle[3] / 57.2958; 169 | joint_state.name[4] = "Joint5"; 170 | joint_state.position[4] = joint_angle[4] / 57.2958; 171 | joint_state.name[5] = "Joint6"; 172 | joint_state.position[5] = joint_angle[5] / 57.2958; 173 | joint_state.name[6] = "Joint7"; 174 | joint_state.position[6] = joint_angle[6] / 57.2958; 175 | joint_state.name[7] = "Joint8"; 176 | joint_state.position[7] = joint_angle[7] / 57.2958; 177 | joint_state.name[8] = "Joint9"; 178 | joint_state.position[8] = joint_angle[8] / 57.2958; 179 | 180 | odom_trans.header.stamp = ros::Time::now(); 181 | odom_trans.transform.translation.x = 0; 182 | odom_trans.transform.translation.y = 0; 183 | odom_trans.transform.translation.z = 0.0; 184 | odom_trans.transform.rotation = tf::createQuaternionMsgFromYaw(10); 185 | 186 | pub.publish(joint_state); 187 | broadcaster.sendTransform(odom_trans); 188 | 189 | ros::spinOnce(); 190 | loop_rate.sleep(); 191 | } 192 | return 0; 193 | } 194 | 195 | -------------------------------------------------------------------------------- /swiftpro/src/swiftpro_write_node.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | * Software License Agreement (BSD License) 3 | * Copyright (c) 2017, UFactory, Inc. 4 | * All rights reserved. 5 | * Author: Roger Cui 6 | */ 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | 17 | serial::Serial _serial; // serial object 18 | swiftpro::SwiftproState pos; 19 | 20 | /* 21 | * Description: callback when receive data from position_write_topic 22 | * Inputs: msg(float) 3 cartesian coordinates: x, y, z(mm) 23 | * Outputs: Gcode send gcode to control swift pro 24 | */ 25 | void position_write_callback(const swiftpro::position& msg) 26 | { 27 | std::string Gcode = ""; 28 | std_msgs::String result; 29 | char x[10]; 30 | char y[10]; 31 | char z[10]; 32 | 33 | pos.x = msg.x; 34 | pos.y = msg.y; 35 | pos.z = msg.z; 36 | sprintf(x, "%.2f", msg.x); 37 | sprintf(y, "%.2f", msg.y); 38 | sprintf(z, "%.2f", msg.z); 39 | Gcode = (std::string)"G0 X" + x + " Y" + y + " Z" + z + " F10000" + "\r\n"; 40 | ROS_INFO("%s", Gcode.c_str()); 41 | _serial.write(Gcode.c_str()); 42 | result.data = _serial.read(_serial.available()); 43 | } 44 | 45 | 46 | /* 47 | * Description: callback when receive data from angle4th_topic 48 | * Inputs: msg(float) angle of 4th motor(degree) 49 | * Outputs: Gcode send gcode to control swift pro 50 | */ 51 | void angle4th_callback(const swiftpro::angle4th& msg) 52 | { 53 | std::string Gcode = ""; 54 | std_msgs::String result; 55 | char m4[10]; 56 | 57 | pos.motor_angle4 = msg.angle4th; 58 | sprintf(m4, "%.2f", msg.angle4th); 59 | Gcode = (std::string)"G2202 N3 V" + m4 + "\r\n"; 60 | ROS_INFO("%s", Gcode.c_str()); 61 | _serial.write(Gcode.c_str()); 62 | result.data = _serial.read(_serial.available()); 63 | } 64 | 65 | 66 | /* 67 | * Description: callback when receive data from swiftpro_status_topic 68 | * Inputs: msg(uint8) status of gripper: attach if 1; detach if 0 69 | * Outputs: Gcode send gcode to control swift pro 70 | */ 71 | void swiftpro_status_callback(const swiftpro::status& msg) 72 | { 73 | std::string Gcode = ""; 74 | std_msgs::String result; 75 | 76 | if (msg.status == 1) 77 | Gcode = (std::string)"M17\r\n"; // attach 78 | else if (msg.status == 0) 79 | Gcode = (std::string)"M2019\r\n"; 80 | else 81 | { 82 | ROS_INFO("Error:Wrong swiftpro status input"); 83 | return; 84 | } 85 | 86 | pos.swiftpro_status = msg.status; 87 | ROS_INFO("%s", Gcode.c_str()); 88 | _serial.write(Gcode.c_str()); 89 | result.data = _serial.read(_serial.available()); 90 | } 91 | 92 | 93 | /* 94 | * Description: callback when receive data from gripper_topic 95 | * Inputs: msg(uint8) status of gripper: work if 1; otherwise 0 96 | * Outputs: Gcode send gcode to control swift pro 97 | */ 98 | void gripper_callback(const swiftpro::status& msg) 99 | { 100 | std::string Gcode = ""; 101 | std_msgs::String result; 102 | 103 | if (msg.status == 1) 104 | Gcode = (std::string)"M2232 V1" + "\r\n"; 105 | else if (msg.status == 0) 106 | Gcode = (std::string)"M2232 V0" + "\r\n"; 107 | else 108 | { 109 | ROS_INFO("Error:Wrong gripper status input"); 110 | return; 111 | } 112 | 113 | pos.gripper = msg.status; 114 | ROS_INFO("%s", Gcode.c_str()); 115 | _serial.write(Gcode.c_str()); 116 | result.data = _serial.read(_serial.available()); 117 | } 118 | 119 | 120 | /* 121 | * Description: callback when receive data from pump_topic 122 | * Inputs: msg(uint8) status of pump: work if 1; otherwise 0 123 | * Outputs: Gcode send gcode to control swift pro 124 | */ 125 | void pump_callback(const swiftpro::status& msg) 126 | { 127 | std::string Gcode = ""; 128 | std_msgs::String result; 129 | 130 | if (msg.status == 1) 131 | Gcode = (std::string)"M2231 V1" + "\r\n"; 132 | else if (msg.status == 0) 133 | Gcode = (std::string)"M2231 V0" + "\r\n"; 134 | else 135 | { 136 | ROS_INFO("Error:Wrong pump status input"); 137 | return; 138 | } 139 | 140 | pos.pump = msg.status; 141 | ROS_INFO("%s", Gcode.c_str()); 142 | _serial.write(Gcode.c_str()); 143 | result.data = _serial.read(_serial.available()); 144 | } 145 | 146 | 147 | /* 148 | * Node name: 149 | * swiftpro_write_node 150 | * 151 | * Topic publish: (rate = 20Hz, queue size = 1) 152 | * swiftpro_state_topic 153 | * 154 | * Topic subscribe: (queue size = 1) 155 | * position_write_topic 156 | * swiftpro_status_topic 157 | * angle4th_topic 158 | * gripper_topic 159 | * pump_topic 160 | */ 161 | int main(int argc, char** argv) 162 | { 163 | ros::init(argc, argv, "swiftpro_write_node"); 164 | ros::NodeHandle nh; 165 | swiftpro::SwiftproState swiftpro_state; 166 | 167 | ros::Subscriber sub1 = nh.subscribe("position_write_topic", 1, position_write_callback); 168 | ros::Subscriber sub2 = nh.subscribe("swiftpro_status_topic", 1, swiftpro_status_callback); 169 | ros::Subscriber sub3 = nh.subscribe("angle4th_topic", 1, angle4th_callback); 170 | ros::Subscriber sub4 = nh.subscribe("gripper_topic", 1, gripper_callback); 171 | ros::Subscriber sub5 = nh.subscribe("pump_topic", 1, pump_callback); 172 | ros::Publisher pub = nh.advertise("SwiftproState_topic", 1); 173 | ros::Rate loop_rate(20); 174 | 175 | try 176 | { 177 | _serial.setPort("/dev/ttyACM0"); 178 | _serial.setBaudrate(115200); 179 | serial::Timeout to = serial::Timeout::simpleTimeout(1000); 180 | _serial.setTimeout(to); 181 | _serial.open(); 182 | ROS_INFO_STREAM("Port has been open successfully"); 183 | } 184 | catch (serial::IOException& e) 185 | { 186 | ROS_ERROR_STREAM("Unable to open port"); 187 | return -1; 188 | } 189 | 190 | if (_serial.isOpen()) 191 | { 192 | ros::Duration(3.5).sleep(); // wait 3.5s 193 | _serial.write("M2120 V0\r\n"); // stop report position 194 | ros::Duration(0.1).sleep(); // wait 0.1s 195 | _serial.write("M17\r\n"); // attach 196 | ros::Duration(0.1).sleep(); // wait 0.1s 197 | ROS_INFO_STREAM("Attach and wait for commands"); 198 | } 199 | 200 | while (ros::ok()) 201 | { 202 | pub.publish(pos); 203 | ros::spinOnce(); 204 | loop_rate.sleep(); 205 | } 206 | 207 | return 0; 208 | } 209 | 210 | 211 | -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Base.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Base.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Gripper.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Gripper.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Link1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Link1.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Link2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Link2.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Link3.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Link3.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Link4.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Link4.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Link5.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Link5.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Link6.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Link6.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Link7.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Link7.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Link9.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Link9.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_links/Suction.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/pro_links/Suction.STL -------------------------------------------------------------------------------- /swiftpro/urdf/pro_model.xacro: -------------------------------------------------------------------------------- 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 | 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 | 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 | 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 | 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 | 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 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Base.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Base.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Gripper.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Gripper.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Link1.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Link1.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Link2.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Link2.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Link3.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Link3.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Link4.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Link4.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Link5.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Link5.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Link6.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Link6.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Link7.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Link7.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Link9.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Link9.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_links/Suction.STL: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/uArm-Developer/RosForSwiftAndSwiftPro/a735297d586a1120f410ff9c1ea4ecdc21dcbb86/swiftpro/urdf/swift_links/Suction.STL -------------------------------------------------------------------------------- /swiftpro/urdf/swift_model.xacro: -------------------------------------------------------------------------------- 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 | 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 | 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 | 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 | 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 | 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 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | --------------------------------------------------------------------------------