This repository contains all the information required to start remote controlling the Franka Emika 7-dof robot arm.
Prerequisites are
Also, you require to install libfranka as well as franka_ros. Check out the offcial webpage for further information. You will notice that the instructions require you to install a realtime kernel. Therefore checkout your current kernel version with
uname -r
and choose a realtime kernel closest to your current one. The kernel version and major revision number should be the same. Also, since kernel version 5, you require to set
CONFIG_SYSTEM_TRUSTED_KEYS=""
within the hidden .config file within your realtime kernel folder (ctrl+H to show the hidden files). In order to be able to control the robot you have to enable the Franka Control Interface (FCI) on your robot. Therefore, go to the Franka World website and log in. Then check the FCI addon for your robot and download it onto the robot (https://yourRobotsIP/admin/world). For tracking your movements for remote control you need a tracking system, e.g. Optitrack. In order to send the data into the ROS system, the OptiTrack system has to be within the same network and the vrpn_client_ros package is required. Also make sure that vrpn data streaming is enabled within Motive. Finally, we need to install moveit by following the instructions stated here.
For installing the ROS package for remote control of the Franka Emika robot, generate a catkin workspace and go into the source folder
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
Clone the repository to the source folder and build it.
git clone https://github.com/ai-lab-science/Franka-ROS-TRAIN
cd ~/catkin_ws
catkin build
We need to find a transformation from the Optitrack coordinate system to the robot coordinate system. Therefore, we use hand-eye calibration as proposed here. Before running the calibration, make sure that the Optitrack system is set properly and is connected within the same network as the panda robot. Configure in the calibration.launch
file the IP addresses
...
<include file="$(find vrpn_client_ros)/launch/sample.launch">
<arg name="server" value="OPTITRACK_IP_ADDRESS"/>
</include>
...
<include file="$(find franka_control)/launch/franka_control.launch">
<arg name="robot_ip" value="ROBOT_IP_ADDRESS"/>
<arg name="load_gripper" value="$(arg load_gripper)"/>
</include>
...
and connect the tracking object to the robot's flange. Make sure that you defined the tracking object as RigidBody1
object in the Optitrack system. Now you can start the calibration by sourcing the environment and starting the calibration.launch
file.
cd ~/catkin_ws
source devel/setup.bash
roslaunch franka_ros_train_controllers calibration.launch
After the calibration finished, there should appear a calibration file base2tracking.txt
in the config folder. This file contains now the transformation information between the robot's base and the Optitrack system.
For remote control of the Franka Emika robot, just disconnect the tracking object from the robot's flange and take it into your hand. Now reconfigure the remoteControl.launch
such that the correct IP addresses are set (similar as for the calibration.launch
file). Start the remote control.
roslaunch franka_ros_train_controllers remoteControl.launch