Skip to content

marip8/reach

 
 

Repository files navigation

REACH

Robotic Evaluation And Comparison Heuristic

Robot Reach Study

Reach Study Heat Map

Description

The REACH repository is a tool that allows users to visualize and quantitatively evaluate the reach capability of a robot system for a given workpiece.

The package is comprised of several packages:

  • reach_msgs
    • Message definitions for the reach study
  • reach_core
    • Core code to operate the reach study
    • Interfaces for plugins
      • Inverse kinematics solver
      • Robot pose evaluator
      • Reach Display
  • moveit_reach_plugins
    • Implementations of the plugin interfaces built on the MoveIt! planning framework

Installation

cd ~/catkin_ws/src
git clone https://github.com/ros-industrial/reach.git
cd ..
rosdep install --from-paths src --ignore-src -r -y
catkin build

Demo

A simple demonstration of the capability of this repository is provided in the reach_demo package. See the instructions for details on how to run the demo.

Usage

  1. Create a URDF of your robot system
  2. Create a launch file to load the URDF, SRDF, and other required parameters (e.g. related to kinematics, joint, limits) to the parameter server
  3. Create a mesh model of the workpiece
  4. Create a point cloud of the target points on the workpiece
    • This point cloud can be generated using a command line tool from PCL 1.8:
      pcl_mesh_sampling <workpiece_mesh>.ply <output_cloud>.pcd -n_samples <number of samples> -leaf_size <leaf_size> -write_normals true
      
  5. Create a configuration YAML file (see example in config directory)
  6. Run the setup launch file
    roslaunch reach_core setup.launch robot:=<load_robot_parameters>.launch
    
  7. Run the reach study analysis
    roslaunch reach_core start.launch config_file:=<config_file.yaml> config_name:=<arbitrary_config>
    

The algorithm searches for alignment of the TCP Z-axis with the pointcloud normals.

Hints

  1. Ensure the object mesh scale and the point cloud scale match and are correct in RViz. It is common to be off by a factor of 1000.
  2. If it is OK for a robot link to collide with the mesh, add the link to "touch_links" fields in the config file.
  3. A different IK solver may yield better results than the default. A good choice is TracIK. Typically this is configured in kinematics.yaml.
  4. reach_core has some options for programmatically querying the reachability database.

Languages

  • C++ 86.5%
  • Python 7.1%
  • CMake 6.3%
  • Shell 0.1%