This package includes a set of lean controllers for Franka-Emika's Panda robot arms
Features:
- Joint space PD controller with full gains matrices
- integration of gripper into robot state (7+1 DoFs)#
- integration of a wrist F/T sensor into the control loop
- control and monitoring topics interface to ROS
- automatic enable/disable using the activation button
- Watchdog: goes into a gravity-compensation mode if no goals are received for some time
- soft joint limits: add repulsive forces to avoid violating joint limits during compliant motion
- compensate torque bias, stiction and friction, load values from yaml based on MAC address (per-robot config)
- partially compensate inertias / decouple inertias of joints
- no compile/runtime dependency on franka_ros, only needs libfranka installed
- Include dynamics parameters from IROS'19 system identification paper
In Ubuntu 20.04, the package of PyKDL 1.4.0-7 is broken (exception on unicode string conversion), and subsequently, kdl_parser_py is missing in the noetic distribution
Until things are fixed, one can work around though by installing debian's updated package:
wget http://ftp.debian.org/debian/pool/main/o/orocos-kdl/liborocos-kdl1.4_1.4.0-9_amd64.deb
sudo dpkg --install liborocos-kdl1.4_1.4.0-9_amd64.deb
wget http://ftp.debian.org/debian/pool/main/o/orocos-kdl/liborocos-kdl-dev_1.4.0-9_amd64.deb
sudo dpkg --install liborocos-kdl-dev1.4_1.4.0-9_amd64.deb
wget http://ftp.debian.org/debian/pool/main/o/orocos-kdl/python3-pykdl_1.4.0-9_amd64.deb
sudo dpkg --install python3-pykdl_1.4.0-9_amd64.deb
One also has to install the ros package kdl_parser_py manually until it is distributed properly within noetic. # In your workspace's src/, do:
apt-get download ros-noetic-urdfdom-py
sudo dpkg -i ros-noetic-urdfdom-py_*.deb
cd yourworkspace/src
git clone -b noetic-devel https://github.com/ros/kdl_parser
rm kdl_parser/kdl_parser_py/CATKIN_IGNORE
catkin build
The controller package contains several controllers that combine different hardware setups
pdcontroller: Controls only the robot arm gripper: Also manage gripper netft: Also read in netft data
Contains the ROS message API to the PD controller node.
We use monolithic, custom robot status and pd control goal messages, so all data of a time step are sent together for simpler sychronization.
To convert robot status messages to standard ROS joint messages (e.g. to convert those to link frames), use controller2jointstatemsgspublisher node from controller_panda_mti
Contains a URDF model annotated with dynamics parameters, and a small python class to compute Jacobians, Inertia matrices etc.
Package containing the meshes and URDFs for the Panda robot
Note: This package is derived from Franka-Emika's fanka_ros, because of this it uses a different licence (Apache) than all the other packages in this repository (BSD)
Differences to franka_ros: - Support for multiple robot arms / multiple poses of the robot arm - Added dynamics parameters to URDF - copy avoids dependency on the complete franka_ros stack
Package to identify friction parameters of an arm automatically
- get the mac address of the robot you want to calibrate.
arp -a panda | awk '{print $4}' | sed s/://g | tr -d '\n'
-
Go to /controller/config/ and open corresponding config file
-
Run controller
roslaunch controller_panda_mti test_pdcontroller.launch
-
Adjust torque Bias
a) Check whether there is constant movement in any joint. b) Adjust corresponding joint value higher or lower opposing motion. c) Reapeat until robot does not move at all.
-
Adjust torque_stiction
a) Move every joint by hand and check whether there is to much frictional force opposing the motion. b) Increase or decrease corresponding joint value c) Repeat until every joint is easy to move by hand.
Please note that the subdirectory franka_description_mti is dervied from franka_ros https://github.com/frankaemika/franka_ros/ . It is licenced under Apache 2.0, wheras the rest of the repository is licenced under a BSD license (see LICENCE for details)