Code Monkey home page Code Monkey logo

relaxed_ik_core's Introduction

RangedIK Core

Implementation of our ICRA'23 paper: RangedIK: An Optimization-Based Robot Motion Generation Method for Ranged-Goal Tasks

[Pre-print] [Supplementary Video] [Presentation Video] [Poster]

Introduction

RangedIK is a real-time motion synthesis method that exploits range flexibility to satisfy multiple kinematic requirements. RangedIK is particularly suitable for applications that allow some tolerance, such as wielding where the tool is allowed to rotate along its principle axis. For more information, please refer to our paper.

The RelaxedIK Family

RangedIK extends RelaxedIK by leveraging the flexibility afforded by tolerances. Also, RangedIK is recently maintained and works with more recent rust versions.

CollisionIK extends RelaxedIK by avoiding collisions with static or dynamic obstacles in the environment.

We provide a series of wrappers for our tools to be used in various platform or software.

ROS1 ROS2 WebAssembly Coppeliasim Mujoco
RangedIK link link link x x
CollisionIK link x x x x
RelaxedIK link x x link link

Getting Started

  1. Install Rust
  2. Compile:
    cargo build
    The compiled library is at /target/debug/librelaxed_ik_lib.so
  3. Run a small demo:
    cargo run --bin relaxed_ik_bin

Use your own robot

  1. Place your robot's URDF under configs/urdfs/
  2. Make a setting file. Examples are under configs/example_settings

Python wrapper

wrappers/python_wrapper.py provides a python wrapper, which is used by both the ROS 1 wrapper and ROS 2 wrapper. relaxed_ik_ros1/scripts/relaxed_ik_rust.py provides an example of using the python wrapper.

JavaScript (WebAssembly) wrapper

Online demo

  1. Install Rust
  2. cargo install wasm-pack
    • if there is a linker 'cc' not found error, run sudo apt install gcc
    • if it complains about openssl, on Ubuntu install it by sudo apt-get install libssl-dev pkg-config openssl. For windows, download and install perl.
  3. Compile to WebAssembly
    wasm-pack build --target web
    
  4. relaxed-ik-web-demo provides an example of running relaxed-ik in browser.

Supplementary Video

YouTube video link

Citation

If you use RangedIK, please cite our ICRA paper: RangedIK: An Optimization-based Robot Motion Generation Method for Ranged-Goal Tasks

@article{wang2023rangedik,
  title={RangedIK: An Optimization-based Robot Motion Generation Method for Ranged-Goal Tasks},
  author={Wang, Yeping and Praveena, Pragathi and Rakita, Daniel and Gleicher, Michael},
  booktitle={2023 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={9700-9706},
  year={2023}
}

If you use RelaxedIK, please cite our RSS paper: RelaxedIK: Real-time Synthesis of Accurate and Feasible Robot Arm Motion

@INPROCEEDINGS{Rakita-RSS-18, 
    AUTHOR    = {Daniel Rakita AND Bilge Mutlu AND Michael Gleicher}, 
    TITLE     = {{RelaxedIK: Real-time Synthesis of Accurate and Feasible Robot Arm Motion}}, 
    BOOKTITLE = {Proceedings of Robotics: Science and Systems}, 
    YEAR      = {2018}, 
    ADDRESS   = {Pittsburgh, Pennsylvania}, 
    MONTH     = {June}, 
    DOI       = {10.15607/RSS.2018.XIV.043} 
}

If you use CollisionIK (RelaxedIK with environment collision avoidance), please cite our ICRA paper: CollisionIK: A Per-Instant Pose Optimization Method for Generating Robot Motions with Environment Collision Avoidance

@inproceedings{rakita2021collisionik,
  title={Collisionik: A per-instant pose optimization method for generating robot motions with environment collision avoidance},
  author={Rakita, Daniel and Shi, Haochen and Mutlu, Bilge and Gleicher, Michael},
  booktitle={2021 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={9995--10001},
  year={2021},
  organization={IEEE}
}

If you use our solver for a robot teleoperation interface, also consider citing our prior work that shows the effectiveness of RelaxedIK in this setting: A Motion Retargeting Method for Effective Mimicry-based Teleoperation of Robot Arms

@inproceedings{rakita2017motion,
  title={A motion retargeting method for effective mimicry-based teleoperation of robot arms},
  author={Rakita, Daniel and Mutlu, Bilge and Gleicher, Michael},
  booktitle={Proceedings of the 2017 ACM/IEEE International Conference on Human-Robot Interaction},
  pages={361--370},
  year={2017},
  organization={ACM}
}

or An Autonomous Dynamic Camera Method for Effective Remote Teleoperation

@inproceedings{rakita2018autonomous,
  title={An autonomous dynamic camera method for effective remote teleoperation},
  author={Rakita, Daniel and Mutlu, Bilge and Gleicher, Michael},
  booktitle={Proceedings of the 2018 ACM/IEEE International Conference on Human-Robot Interaction},
  pages={325--333},
  year={2018},
  organization={ACM}
}

relaxed_ik_core's People

Contributors

djrakita avatar hshi74 avatar yepw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

relaxed_ik_core's Issues

relaxed IK into moveit

Hello,

I am trying to include relaxed IK into my move-it planner for ROS1 Noetic. I followed the instructions for setting up for Franka emika panda robot. I can see IK solvers like TrackIK have a plugin. Is it anything additional I need to do in order to include in a moveit ?

Groove loss derivative

Hello,

I found that groove loss derivative calculation maybe incorrect in your code.

The groove function is written as -( (-(x_val - t).powi(d)) / (2.0 * c.powi(2) ) ).exp() + f * (x_val - t).powi(g). The second term of the derivate should be g as f64 * f * (x_val - t).powi(g-1) but is g as f64 * f * (x_val - t) in your code.

Setup Questions

Couple of questions on setting this up on a new robot. I'm trying to create the necessary files for the fetch robot. On this step:

4 Rust neural network files <sawyer_nn, sawyer_nn.yaml, sawyer_nn_jointpoint, sawyer_nn_jointpoint.yaml> in the collision_nn_rust folder

How do I generate those files?

Also, when I do step 5c and generate the relaxedIK.config file, do I need to put that in a folder in relaxed_ik_core before running cargo build?

I cannot compile Cargo.toml

Hi,
I cloned in my catkin workspace the relaxed_ik_ros1 code (link) and the relaxed_ik_core. After sending the comand cargo build from terminal something went wrong: the compilation stopped and showed the following error. I don't know how to solve this issue. Have you any suggestion? Thank you for your time.
Screenshot from 2022-11-21 15-15-15

Failed to run custom build command for `nlopt v0.5.4`

Got cmake errors when running cargo build in ubuntu 18.04

 Compiling nlopt v0.5.4
error: failed to run custom build command for `nlopt v0.5.4`

Caused by:
  process didn't exit successfully: `/home/yeping/jaco_ws/src/kinova_optimization/kinova_optimization_core/target/debug/build/nlopt-4cf505d1ab4714f4/build-script-build` (exit status: 101)
  --- stdout
  CMAKE_TOOLCHAIN_FILE_x86_64-unknown-linux-gnu = None
  CMAKE_TOOLCHAIN_FILE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-unknown-linux-gnu = None
  CMAKE_GENERATOR_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  CMAKE_PREFIX_PATH_x86_64-unknown-linux-gnu = None
  CMAKE_PREFIX_PATH_x86_64_unknown_linux_gnu = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-unknown-linux-gnu = None
  CMAKE_x86_64_unknown_linux_gnu = None
  HOST_CMAKE = None
  CMAKE = None
  running: "cmake" "/home/yeping/.cargo/registry/src/github.com-1ecc6299db9ec823/nlopt-0.5.4/./nlopt-2.5.0" "-DBUILD_SHARED_LIBS=OFF" "-DCMAKE_CXX_COMPILER=c++" "-DNLOPT_CXX=OFF" "-DNLOPT_PYTHON=OFF" "-DNLOPT_OCTAVE=OFF" "-DNLOPT_MATLAB=OFF" "-DNLOPT_GUILE=OFF" "-DNLOPT_SWIG=OFF" "-DNLOPT_LINK_PYTHON=OFF" "-DCMAKE_INSTALL_PREFIX=/home/yeping/jaco_ws/src/kinova_optimization/kinova_optimization_core/target/debug/build/nlopt-157a26e76a43bef0/out" "-DCMAKE_C_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_C_COMPILER=/usr/bin/cc" "-DCMAKE_CXX_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_FLAGS= -ffunction-sections -fdata-sections -fPIC -m64" "-DCMAKE_ASM_COMPILER=/usr/bin/cc" "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
  -- NLopt version 2.5.0
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /home/yeping/jaco_ws/src/kinova_optimization/kinova_optimization_core/target/debug/build/nlopt-157a26e76a43bef0/out/build
  running: "cmake" "--build" "." "--target" "install" "--config" "RelWithDebInfo" "--parallel" "8"

  --- stderr
  Unknown argument --parallel
  Unknown argument 8
  Usage: cmake --build <dir> [options] [-- [native-options]]
  Options:
    <dir>          = Project binary directory to be built.
    --target <tgt> = Build <tgt> instead of default targets.
                     May only be specified once.
    --config <cfg> = For multi-configuration tools, choose <cfg>.
    --clean-first  = Build target 'clean' first, then build.
                     (To clean only, use --target 'clean'.)
    --use-stderr   = Ignored.  Behavior is default in CMake >= 3.0.
    --             = Pass remaining options to the native tool.
  thread 'main' panicked at '
  command did not execute successfully, got: exit status: 1

  build script failed, must exit now', /home/yeping/.cargo/registry/src/github.com-1ecc6299db9ec823/cmake-0.1.48/src/lib.rs:975:5

C++ and python?

Hi, will there be C++ and python versions in the future?

I think most researchers are more familiar with these two languages compared to Rust.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.