This exercise will show you how to run and re-configure a "standard" reach study, which involves a robot reaching target poses on a workpiece
Evaluate the reachability of a Motoman SIA20D for inspection of a vehicle hood panel
-
Run the "setup" launch file, which loads the URDF and starts the ancillary ROS nodes (Rviz, joint state publisher, etc.)
ros2 launch reach_ros setup.launch.py
-
Run the reach study, loading pre-generated results
ros2 launch reach_ros start.launch.py
-
Left-click on the interactive markers to see the robot pose at each Cartesian target
-
Right-click on the interactive markers to see the score of the robot
2. Run the reach_ros
demo again using the same configuration file, but generate the results from scratch to a new destination
-
With the "setup" launch file still active, re-run the "start" launch file with new arguments
ros2 launch reach_ros start.launch.py results_dir:=/tmp config_name:=study_2
How many iterations did it take the study to converge?
-
Open the reach study database (
/tmp/study_2/reach.db.xml
) and introspect its contents
-
Use this script to generate a heat map for the results of a reach study
python3 heat_map_generator.py /tmp/study_2/reach.db.xml `ros2 pkg prefix reach_ros`/share/reach_ros/demo/config/part.ply
Note: this script can be found in
reach
repository, however there is small bug with the current version. See this issue.Note: the generalized command for this script is
python3 heat_map_generator.py <reach database file> <workpiece mesh file>
Note: the mesh provided to this script should be the same mesh from which the reach study target poses were generated
In the case that our reach study only requires that the tool z-axis to align with the surface normal (e.g., for processes like sanding, painting, inspection, etc.), we would like to relax that constraint in the reach study and see how it affects the results. We have a few options for doing this:
- (recommended) Use the provided
DiscretizedMoveItIKSolverFactory
as the REACH IK plugin. This involves modifying the reach study configuration YAML file.Note: The
DiscretizedMoveItIKSolverFactory
plugin has been renamed toDiscretizedMoveItIKSolver
after version1.4.0
ofreach_ros2
- Use a different MoveIK solver plugin that allows orientation constraints to be set.
An example is this modification to the trac_ik MoveIt plugin.
This change involves a modification to the MoveIt
kinematics.yaml
file, like the one here. - Create a custom implementation of the
TargetPoseGenerator
interface that creates multiple orientations (each rotated about the surface normal) for each target position. This is essentially the same as option 1, but requires that we create a new class.
Maybe maximizing "raw" manipulability and distance from nearest collision are not objectives that we care about. Instead, change the objectives such that the reach study:
- Maximizes the ratio of manipulability for position only
- This effectively means that we want the robot to be able to translate in all directions equally effectively
- Tries to keep the joints as centered in their joint range as possible
This changes involves modifying the reach study configuration YAML file. Check out the description of the existing evaluator plugins to figure out which plugins accomplish the objectives defined above. Re-run the reach study, saving the results to a new file, and see how the results differ from the first reach study