loco-3d / linear-feedback-controller

RosControl linear feedback controller with pal base estimator and RosTopics external interface.
BSD 2-Clause "Simplified" License
3 stars 3 forks source link

pre-commit.ci status

linear feedback controller

This repository is aimed to be used with its public API the linear_feedback_controller_msgs.

These two package are under the license BSD-2 license.

The current versions of this 2 package can be found in their respective package.xml file.

Follows a quick description of these package.

The linear_feedback_controller

In this package we implement a roscontrol controller. It is based on the pal_base_ros_controller package.

We implement a RosTopic publisher that sends the state of the robot:

We then subscribe to a RosTopic that sends us controls for the robot:

This allows us, for example,to use it on the Talos (1 and 3) robots with a remote controller using a whole body model predictive control based on croccodyl

Please check the README.md of the package for more details.

The linear_feedback_controller_msgs

This package contains the external user interface to the linear_feedback_controller package. It describes the sensor data exchanged in the previously cited RosTopics.

And in particular it offers a very simple ROS/Eigen conversion. This is made to facilitate further computations with the Sensor data. And ease to fill in the Control message.

Please check the README.md of the package for more details.

Example of usage

Requirements

For this example you need to have access to the dockers in https://gitlab.laas.fr/gsaurel/docker-pal/. This is a private repository so one need to be part of the LAAS-CNRS french laboratory. Further development will provide a new public image in order to use this code in simulation.

Build the repository using ROS and docker.

First of all build or pull the docker from https://gitlab.laas.fr/gsaurel/docker-pal/ using the branch gsaurel.

docker pull gitlab.laas.fr:4567/gsaurel/docker-pal:gsaurel

Then run the docker and mount (-v docker option) the src and build folder of your workspace in order to get some cache between to run of the container:

    chown -R :gepetto $(YOUR_WS)  # you might need sudo if you get errors here
    chmod -R g+rwX  $(YOUR_WS)    # you might need sudo if you get errors here
    xhost +local:
    docker run --rm -v $(YOUR_WS)/src:/ws/src -v $(PWD)/Makefile:/ws/Makefile -v /home/$(USER)/devel:/home/user/devel -v $(YOUR_WS)/build:/ws/build --gpus all --net host -e DISPLAY -it gitlab.laas.fr:4567/gsaurel/docker-pal:gsaurel

If you need another terminal to connect to the last docker container ran you can use:

docker exec --workdir=/ws -u user -it `docker ps --latest --quiet` bash

Once connected to docker with multiple terminal (5) please run in order:

The next paragraph is the same procedure except one can use the Makefile that is in the root of this repos to do so.

Build the repository using make

There is also Makefile to ease the usage of docker and ROS instructions in order to execute the demo.

Copyrights and License

See the BSD-2 LICENSE file. For the main authors see the github repository for the main recent contributors.

Here is the list of the historical main authors:

Main maintainers