/differentiable_rmap

Differentiable reachability map

Primary LanguageC++BSD 2-Clause "Simplified" LicenseBSD-2-Clause

differentiable_rmap

CI Documentation

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
  1. 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