/mc_franka

Interface between mc_rtc and libfranka

Primary LanguageC++BSD 2-Clause "Simplified" LicenseBSD-2-Clause

mc_franka

License CI

Interface between libfranka and mc_rtc. It provides multi-robot support and connect mc_panda devices to their libfranka counterpart.

Dependencies

This package requires:

You will also need the linux-libc-dev package on Ubuntu and Debian systems.

Usage

  1. Make sure the system is setup properly to work with the robot
  2. Install this project's dependencies
  3. Install this project (cmake/make/make install)
  4. Make sure your user account has sufficient memory limits

For that last point, you want to edit /etc/security/limits.conf and add the following line:

USERNAME - memlock 1000000000

Then log-out and log-in, you can confirm the new limit is active by running:

ulimit -l

Your mc_rtc configuration file (typically ~/.config/mc_rtc/mc_rtc.yaml) should contain the following lines:

# General mc_rtc configuration to run a panda controller at 1kHz
MainRobot: PandaDefault # Or PandaHand/PandaFoot/PandaPump according to the end-effector installed on the robot
Enabled: YourController
Timestep: 0.001

# Set a LogPolicy suitable for real-time
LogPolicy: threaded

# Franka specific configuration
Franka:
  ControlMode: Position # Can be: Position/Velocity/Torque
  panda_default: # Name of the robot in the controller
    ip: 172.16.0.2 # IP of the robot
  panda_2: # Name of an extra panda in the controller
    ip: 172.16.1.2
  # Actuated robots that are not controlled via mc_franka
  ignored: [env/door, env/box]

Run the program:

MCFrankaControl

You can also provide an additional configuration file (to swap between different network configurations easily for example):

MCFrankaControl -f conf.yaml

Known issues

  • MCFrankaControl will not pick up on newly installed libraries. To work-around this issue, run the following command after installing a new module:
sudo ldconfig
  • MCFrankaControl will not pick up ROS libraries. If you're using mc_rtc's ROS plugin, create a file /etc/ld.so.conf.d/ros.conf with content:
/opt/ros/noetic/lib

It seems that this change will only be picked up after reboot.

Video presentation

A video demonstrating panda motion generation and simultaneous pump actuation employing this implementation is available here:

Video presentation

Reference

Writing code takes time. If this implementation is useful for your research, please cite the related publication:

@INPROCEEDINGS{Dehio2021ICRA,
  title={Robot-Safe Impacts with Soft Contacts Based on Learned Deformations}, 
  author={Dehio, Niels and Kheddar, Abderrahmane},
  booktitle={IEEE Int. Conf. on Robotics and Automation},
  pages={1357-1363},
  year={2021},
  pdf = {https://hal.archives-ouvertes.fr/hal-02973947/document},
  url = {https://hal.archives-ouvertes.fr/hal-02973947}
}

I.AM.Logo

This work was partially supported by the Research Project I.AM. through the European Union H2020 program under GA 871899.