API for robotic manipulators based on:
Docker for building required environment can be found here.
For building ROS 2 packages and moveit, it is neccessary to use colcon.
Aditional dependencies are:
With arm_api
as precursor, which was intended to provide simple ROS interfacing with
robot manipulators with the help of MoveIt! and ROS.
This repository arm_api2
is intended to provide interfacing support for robot manipulators for ROS 2 and MoveIt2!.
Create API simple to run and maintain that supports working with different robot manipulators out of the box.
Robot manipulators of interest are:
- Franka Emika
- UR
- Kinova
- Kuka
Wanted arm functionalities:
go_to_pose
grasp
release
push
<something_else?>
Change robot state:
- srv:
/arm_api2_msgs/srv/ChangeState.srv
- values
JOINT_TRAJ_CTL || CART_TRAJ_CTL || SERVO_CTL
Command robot pose:
- msg:
geometry_msgs/msg/PoseStamped.msg
Command cartesian path:
- msg:
arm_api2_msgs/msg/CartesianWaypoints.msg
Get current end effector pose:
- msg:
geometry_msgs/msg/PoseStamped.msg
Currently implemented and available robot states are:
JOINT_TRAJ_CTL
, which is used for joint controlCART_TRAJ_CTL
, which is used for cartesian controlSERVO_CTL
, which is used for the end effector servoing
Build in ROS 2 workspace. Build just one package with:
colcon build --packages-select arm_api2
Build with the compile commands (enable autocomplete):
colcon build --symlink-install --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
Building with --symlink-install
causes it to fail often because of already built ROS 2 packages, you can run:
colcon build --symlink-install --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON --continue-on-error
Full verbose build command:
colcon build --symlink-install --packages-select moveit2_tutorials --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_VERBOSE_MAKEFILE=ON
Copy to ~/.bashrc
and source it.
alias cbp="colcon build --symlink-install --packages-select"
alias panda_sim="ros2 launch panda gz.launch.py"
alias kinova_sim="ros2 launch kortex_bringup kortex_sim_control.launch.py dof:=7 use_sim_time:=true launch_rviz:=false"
Build arm_api2
package as:
cbp arm_api2
Start franka with:
franka_sim
Start kinova with:
kinova_sim
In order to change state call following command:
ros2 service call /change_state arm_api2_msgs/srv/ChangeState "{state: JOINT_TRAJ_CTL}
Launch ign simulation with following command:
ros2 launch panda ign.launch.py
You can run kinova in simulation by executing following commands:
ros2 launch kortex_bringup kortex_sim_control.launch.py dof:=7 use_sim_time:=true launch_rviz:=false
or
kinova_sim
if alias has been added.
After that run move_group
node as follows:
ros2 launch kinova_gen3_7dof_robotiq_2f_85_moveit_config sim.launch.py
After that run arm_api2
moveit2_iface
node as follows:
ros2 launch arm_api2 moveit2_iface.launch.py
How to setup kinova here.
- Test with real robot manipulators
- Create standardized joystick class [full]
- Discuss potential SW patterns that can be used
- Update and fix documentation