You can find an introduction and the citation information of RangedIK in the README of RelaxedIK Core which is a submodule of this repo. It is recommended to look at RelaxedIK Core before working with this wrapper.
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 |
readchar:
sudo pip install readchar
Pyyaml:
sudo pip install PyYaml
To use this wrapper, you will first need to install Rust. Please go to https://www.rust-lang.org/learn/get-started for more infomation.
-
Compile relaxed_ik_core
-
Download mesh files for robots:
UR5: https://github.com/ros-industrial/universal_robot
Sawyer: https://github.com/RethinkRobotics/sawyer_robot
Spot arm: https://github.com/heuristicus/spot_ros
-
catkin_make
-
Start a demo with the Sawyer robot
roslaunch relaxed_ik_ros1 demo.launch
if you want use a different robot, pass the absolute path to the setting file as an argument
roslaunch relaxed_ik_ros1 demo.launch setting_file_path:=<your absolute path to the setting file>
5a. To move the robot using keyboard, open a new terminal
rosrun relaxed_ik_ros1 keyboard_input.py
And then use the folloing commands to move the robot.
c - kill the controller controller script
w - move chain 1 along +X
x - move chain 1 along -X
a - move chain 1 along +Y
d - move chain 1 along -Y
q - move chain 1 along +Z
z - move chain 1 along -Z
1 - rotate chain 1 around +X
2 - rotate chain 1 around -X
3 - rotate chain 1 around +Y
4 - rotate chain 1 around -Y
5 - rotate chain 1 around +Z
6 rotate chain 1 around -Z
5b. To trace a predefined trajectory
rosrun relaxed_ik_ros1 line_tracing.py _tolerances:=[0,0,0,0,0,999]
which allows the end-effector to freely rotate allow the z axis.
If you don't want to use tolerances, set the _tolerances arguments to all zeros.
The script use ROS service by default. To use ROS topic, set parameter _use_topic_not_service:=True