differentiable_rmap
differentiable_rmap

eval-all.gif
eval-all

Summary

This is a ROS package for representing the kinematic reachability of robots: differentiable reachability map.

This is a scalar-valued function in task space that is positive only in the region reachable by the robot's end-effector. The main feature is that the scalar-valued function is continuous and differentiable with respect to task-space coordinates. This allows us to formulate the reachability conditions of the robot's end-effectors using reachability maps in continuous optimization for motion planning. The differentiable reachability map is learned using a support vector machine from a sample set of end-effector poses generated from a robot kinematic model.

Install

Dependencies

Packages not supported by rosdep

Packages supported by rosdep

Installation procedure

It is assumed that ROS is installed.

  1. Install mc_rtc Installation via apt is recommended. See here.
  2. Install jrl-qp
    $ git clone https://github.com/jrl-umi3218/jrl-qp -b topic/BlockStructure --recursive
    $ mkdir build
    $ cd build
    $ cmake .. -DBUILD_TESTING=OFF -DBUILD_BENCHMARKS=OFF
    $ make
    $ make install
  3. Setup catkin workspace and build
    $ mkdir -p ~/ros/ws_differentiable_rmap/src
    $ cd ~/ros/ws_differentiable_rmap
    $ wstool init src
    $ wstool set -t src isri-aist/optmotiongen git@github.com:isri-aist/optmotiongen.git -v ver2 --git -y
    $ wstool set -t src isri-aist/differentiable_rmap git@github.com:isri-aist/differentiable_rmap.git --git -y
    $ wstool update -t src
    $ source /opt/ros/${ROS_DISTRO}/setup.bash
    $ rosdep install -y -r --from-paths src --ignore-src
    $ catkin build -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_JRLQP=ON

Example with simple 2D manipulator

You can reproduce the results of this video.

Sample set generation

Run either FK-based or IK-based sampling.

FK-based sampling:

$ roslaunch differentiable_rmap rmap_sampling_simple_2dof_manipulator.launch

IK-based sampling:

$ roslaunch differentiable_rmap rmap_sampling_simple_2dof_manipulator.launch use_ik:=true

### Reachability map learning

$ roslaunch differentiable_rmap rmap_training.launch sampling_space:=R2

### Saving a grid set of reachability map

$ roslaunch differentiable_rmap rmap_visualization.launch sampling_space:=R2

### Optimization with reachability constraint

$ roslaunch differentiable_rmap rmap_planning.launch sampling_space:=R2

## Standalone script for scalar field learning examples

$ rosrun differentiable_rmap JointSpaceUniformSampling.py
$ rosrun differentiable_rmap TaskSpaceDensityEstimation.py

The following image will be displayed.

TaskSpaceDensityEstimation.png
TaskSpaceDensityEstimation