• Stars
    star
    183
  • Rank 210,154 (Top 5 %)
  • Language
    Python
  • License
    MIT License
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

RelaxedIK Solver

relaxed_ik

πŸ“Œ We provide a seperate repository called relaxed_ik_core, which is complitable with more recent Rust version and Ubuntu 20.04 / ROS Noetic.

Development update 10/26/21

Hi all, we are excited to share some updates to our relaxed_ik library. Apologies for the delay, I have been attending to many unforeseen circumstances over the past few months.

  • The original RelaxedIK code was written as somewhat messy β€œresearch code” in 2016, and each iteration of the code after that focused on code cleanup and computation speed (e.g., the port to Julia, and subsequently to Rust). This long-term development on a single codebase has been nice for some use cases, e.g., everything is connected well with ROS, everything has maintained compatibility with legacy code in Python and Julia, etc, but this large monolithic structure has also made it difficult to port the RelaxedIK solver to other applications in a lightweight manner. Thus, much of our recent development has focused on improving the portability of RelaxedIK. To this end, we introduce a new repository called relaxed_ik_core which contains just the central kernel of the RelaxedIK runtime without the extra ROS and robot setup baggage. The relaxed_ik_core repo comes prepackaged with a common set of pre-compiled and pre-trained robot models (UR5, Sawyer, etc.), allowing users with one of those robots to completely skip the setup steps. We are also hoping to grow that set of pre-compiled robots in that repo, so feel free to make pull requests with additional robot info files. The lightweight relaxed_ik_core package has allowed us to port the code to other applications and languates, such as the Unity game engine, Mujoco, CoppeliaSim, Python 2 & 3, ROS1, and ongoing development for ROS2. Note that going forward, this current repository (i.e., github/uwgraphics/relaxed_ik) should ONLY be used for robot setup and compilation or to maintain any older legacy setups. For anything else, it is essentially deprecated and further development will shift over to relaxed_ik_core. For additional information, please consult the documentation

  • We recently presented a paper at ICRA 2021 on a new method called CollisionIK (video). CollisionIK is a per-instant pose optimization method that can generate configurations that achieve specified pose or motion objectives as best as possible over a sequence of solutions, while also simultaneously avoiding collisions with static or dynamic obstacles in the environment. This is in contrast to RelaxedIK, which could only avoid self-collisions. The current research code for CollisionIK is available on relaxed_ik_core, and I am also working on an improved implementation of collisionIK that will be released in the coming months. The citation for this paper is:

@article{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},
  journal={arXiv preprint arXiv:2102.13187},
  year={2021}
}

Please email or post here if any questions come up!


Development update 1/3/20

RelaxedIK has been substantially rewritten in the Rust programming language. Everything is still completely ROS compatible and should serve as a drop-in replacement for older versions of the solver.

The Rust relaxedIK solver is MUCH faster than its python and julia alternatives. Testing on my laptop has indicated that the solver can run at over 3000Hz for single arm robots (tested on ur3, ur5, jaco, sawyer, panda, kuka iiwa, etc) and about 2500Hz for bimanual robots (tested on ABB Yumi and Rainbow Robotics DRC-Hubo+). All of the new code has been pushed to the Development branch, and will be pushed to the main branch after a brief testing phase. It is highly recommended that the development branch be used at this point, as it has many more features and options than the main branch.

 git clone -b dev https://github.com/uwgraphics/relaxed_ik.git 

If you are working with an older version of relaxedIK, note that you will have to start from a fresh repo and go through the start_here.py procedures again to work with the Rust version of the solver.

If you have any comments or questions on any of this, or if you encounter any bugs in the new rust version of the solver, feel free to post an issue or email me directly at [email protected]


RelaxedIK Solver

Welcome to RelaxedIK! This solver implements the methods discussed in our paper RelaxedIK: Real-time Synthesis of Accurate and Feasible Robot Arm Motion (http://www.roboticsproceedings.org/rss14/p43.html)

Video of presentation at RSS 2018 (RelaxedIK part starts around 12:00) : https://youtu.be/bih5e9MHc88?t=737

Video explaining relaxedIK https://youtu.be/AhsQFJzB8WQ

RelaxedIK is an inverse kinematics (IK) solver designed for robot platforms such that the conversion between Cartesian end-effector pose goals (such as "move the robot's right arm end-effector to position X, while maintaining an end-effector orientation Y") to Joint-Space (i.e., the robot's rotation values for each joint degree-of-freedom at a particular time-point) is done both ACCURATELY and FEASIBLY. By this, we mean that RelaxedIK attempts to find the closest possible solution to the desired end-effector pose goals without exhibiting negative effects such as self-collisions, environment collisions, kinematic-singularities, or joint-space discontinuities.

To start using the solver, please follow the step-by-step instructions in the file start_here.py (in the root directory)

If anything with the solver is not working as expected, or if you have any feedback, feel free to let us know! (email: [email protected], website: http://pages.cs.wisc.edu/~rakita) We are actively supporting and extending this code, so we are interested to hear about how the solver is being used and any positive or negative experiences in using it.

Citation

If you use our solver, please cite our RSS paper RelaxedIK: Real-time Synthesis of Accurate and Feasible Robot Arm Motion http://www.roboticsproceedings.org/rss14/p43.html

@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 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 https://dl.acm.org/citation.cfm?id=3020254

@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}
}

An Autonomous Dynamic Camera Method for Effective Remote Teleoperation https://dl.acm.org/citation.cfm?id=3171221.3171279

@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}
}

Dependencies

kdl urdf parser:

>> sudo apt-get install ros-[your ros distro]-urdfdom-py
>> sudo apt-get install ros-[your ros distro]-kdl-parser-py
>> sudo apt-get install ros-[your ros distro]-kdl-conversions

fcl collision library: https://github.com/BerkeleyAutomation/python-fcl

scikit learn: http://scikit-learn.org/stable/index.html

Tutorial

For full setup and usage details, please refer to start_here.py in the src directory.

More Repositories

1

ProximityPlanarRecovery

Official Demo Code for "Unlocking the Performance of Proximity Sensors by Utilizing Transient Histograms"
C
90
star
2

relaxed_ik_core

Rust
85
star
3

splatterjs

A WebGL/JavaScript implementation of the Splatterplot research project.
JavaScript
38
star
4

SerendipSlim

SerendipSlim is a visualization tool for exploring topic models built on large collections of text documents.
JavaScript
36
star
5

relaxed_ik_ros1

Public Repository for the Wrappers for ROS1 for RelaxedIK
Python
17
star
6

d3-twodim

A D3.v3.js module for creating 2D representations of data
JavaScript
14
star
7

Leap

Animation and behavior toolkit for virtual characters and conversational agents
C#
11
star
8

Ubiqu-Ity

Tool for tagging texts in a corpus using the Docuscope Dictionary. Provides metadata in the form of cumulative csvs, individual token files, and rule csvs.
HTML
10
star
9

PhysicsBasedModeling-Demos

Class Demos for CS839 Physics-Based Modeling
C++
10
star
10

stampede

Julia
8
star
11

viswordembeddings

Demo implementations of visual designs for interactive word embedding exploration and analysis.
JavaScript
8
star
12

IKLink

Implementation of ICRA'24 paper: IKLink: End-Effector Trajectory Tracking with Minimal Reconfigurations
Rust
8
star
13

lynx

Rust
7
star
14

CooccurViewer

Visualization prototype for identifying co-occurring observations regarding events in a sequence.
JavaScript
7
star
15

Release-TextDNA

Trying to fix the weirdness going on
Python
7
star
16

SketchQuery

Sketch-based queries of time series data
TeX
6
star
17

VEP-pipeline

Text processing pipeline that extracts and standardizes plain text from XML files of Early Modern Digital texts.
Python
5
star
18

MotionComparator

TypeScript
5
star
19

relaxed_ik_ros2

Python
5
star
20

LCSPCData

Dataset of measurements from a low-cost single-photon camera used in our CVPR 2024 paper "Towards 3D Vision with Low-Cost Single-Photon Cameras"
4
star
21

CoRL2018Constraint

Code for CoRL2018: Inferring geometric constraints in human demonstrations
Python
4
star
22

hierarchicaldd

A series of demos for using the hierarchical domain decomposition algorithm on various platforms.
C++
4
star
23

CellOViewer

An interactive viewer for cell network data.
Vue
3
star
24

VEP_TMScripts

A collection of Python scripts for creating topic models for Serendip. Uses Mallet and Gensim
Python
3
star
25

VEP-corpora

Master metadata sheets for Visualizing English Print corpora
3
star
26

RelaxedIK

Python
3
star
27

relaxed_ik_mujoco

C++
3
star
28

Relaxed_IK_Solver

Relaxed inverse kinematics solver. Takes in any robot urdf, and allows for specificing general state, motion, and action goals in robot arm teleoperation or motion planning
Python
2
star
29

SPD-Geometric-Calibration

Single Pixel Depth Sensor Geometric Calibration
Python
2
star
30

SkinFlaps

C++
2
star
31

cs765-dc3-data-and-code

Python
1
star
32

BoxerRelease2020

Boxer Classifier Comparison System - Public, Open Source Release
Vue
1
star
33

camera_viewpoint_interface

C++
1
star
34

relaxed_ik_coppeliasim

C++
1
star
35

PhysicsBasedModeling-Core

Core library (derived from PhysBAM) for Physics-Based Modeling Grad class
C++
1
star
36

layercake

Visualization of variation in viral sequence data
Processing
1
star
37

trajectoryoptimizer-public

Repository for the Python trajectory optimizer for legible arm motion
Python
1
star
38

ConfusionMatrixViewer

Confusion Matrix Viewer from Luke Hartman's Honors Project
Vue
1
star
39

pastavis

spaghetti plots, color ramp displays, and single line plots
JavaScript
1
star
40

relaxed_ik_unity

C#
1
star
41

HRI2019Tongs

Construction plans for instrumented tongs, introduced in the HRI 2019 paper, Characterizing Input Methods for Human-to-robot Demonstrations
1
star
42

flexibleSubsetSelection

A Python package for flexible subset selection for data visualization.
Jupyter Notebook
1
star
43

VEP2_TCP_SimpleText

Simpletext files (.txt) for the entire TCP corpus
1
star