No version for distro humble. Known supported distros are highlighted in the buttons above.
No version for distro jazzy. Known supported distros are highlighted in the buttons above.
No version for distro rolling. Known supported distros are highlighted in the buttons above.

step_up_planner package from variable-height-double-pendulum repo

step_up_planner

Package Summary

Tags No category tags.
Version 0.0.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description Code for the paper "Non-Linear Trajectory Optimization for Large Step-Ups: Application to the Humanoid Robot Atlas"
Checkout URI https://github.com/s-dafarra/variable-height-double-pendulum.git
VCS Type git
VCS Version master
Last Updated 2021-03-03
Dev Status UNKNOWN
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Node for the communication with the StepUpPlanner

Additional Links

No additional links.

Maintainers

  • Stefano Dafarra

Authors

  • Stefano Dafarra

Large Step-Ups Planner

This repo contains the code used to generate the trajectories for large step-ups. It consists of a library which exploits CasADi to solve an optimal control problem, plus a ROS2 node to communicate with the robot.

Citing

This code is related to the paper “Non-Linear Trajectory Optimization for Large Step-Ups: Application to the Humanoid Robot Atlas”. Paper: https://ieeexplore.ieee.org/document/9341587 Arxiv: https://arxiv.org/abs/2004.12083

To cite this work, please add the following to your publication

S. Dafarra, S. Bertrand, R. J. Griffin, G. Metta, D. Pucci and J. Pratt, "Non-Linear Trajectory Optimization for Large Step-Ups: Application to the Humanoid Robot Atlas," 2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Las Vegas, NV, USA, 2020, pp. 3884-3891, doi: 10.1109/IROS45743.2020.9341587.

Bibtex:

@INPROCEEDINGS{9341587,  author={S. {Dafarra} and S. {Bertrand} and R. J. {Griffin} and G. {Metta} and D. {Pucci} and J. {Pratt}},  booktitle={2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},   title={Non-Linear Trajectory Optimization for Large Step-Ups: Application to the Humanoid Robot Atlas},   year={2020},  volume={},  number={},  pages={3884-3891},  doi={10.1109/IROS45743.2020.9341587}}

Dependencies

If the CMake option BUILD_INTERFACE is ON (it is ON by default), you also need

Linux Installation Instructions

The following instructions have been tested on Ubuntu 16.04. It is also assumed that no other ROS2 installation is already present on the system.

Install system dependencies

Run the following command to install gcc, cmake and Ipopt from apt.

sudo apt install gcc g++ gfortran git cmake liblapack-dev pkg-config coinor-libipopt-dev --install-recommends

Install CasADi

(These instructions have been adapted from https://github.com/casadi/casadi/wiki/InstallationLinux#building-casadi-from-sources)

  • Move to the directory where you want to download CasADi, e.g. ~/dev/large_step_ups.
cd ~/dev/large_step_ups

  • Clone the repository
git clone https://github.com/casadi/casadi.git

  • Install CasADi. In order to avoid polluting system directories, it is suggested to specify an installation directory different from /usr/local. In this case we create an install folder inside the build folder.
mkdir build
cd build
mkdir install
export NEW_INSTALL_DIR=$(pwd)/install
cmake -DWITH_IPOPT=ON -DCMAKE_INSTALL_PREFIX=$NEW_INSTALL_DIR ..
make install -j4

  • Modify the .bashrc exporting the casadi_DIR variable. In this way CasADi can be easily found by cmake projects. Add the following line.
casadi_DIR=/path/to/casadi/install

In our case

casadi_DIR=~/dev/large_step_ups/casadi/build/install

It is then necessary to source the modified .bashrc in order to apply the changes.

Install ROS2

(These instructions have been adapted from https://index.ros.org/doc/ros2/Installation/Crystal/Linux-Development-Setup/)

  • Install ROS2 system dependencies
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  python3-colcon-common-extensions \
  python3-lark-parser \
  python3-pip \
  python-rosdep \
  python3-vcstool \
  wget

python3 -m pip install -U \
  argcomplete \
  flake8 \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \
  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  pytest-repeat \
  pytest-rerunfailures \
  pytest \
  pytest-cov \
  pytest-runner \
  setuptools

sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev

  • Create a ROS2 workspace and retrieve the code.
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
wget https://raw.githubusercontent.com/ros2/ros2/crystal/ros2.repos
vcs import src < ros2.repos

  • Install ROS2 dependencies via rosdep
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro crystal -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 python3-lark-parser rti-connext-dds-5.3.1 urdfdom_headers"
python3 -m pip install -U lark-parser

  • Compile ROS2
cd ~/ros2_ws
colcon build --symlink-install --packages-ignore qt_gui_cpp rqt_gui_cpp

Compile the controller messages C++ interface

Here we assume that the following messages are available in the ihmc-open-robotics-software/ihmc-interfaces/src/main/messages/ihmc_interfaces/controller_msgs/msg folder:

  • StepUpPlannerControlElement.msg
  • StepUpPlannerCostWeights.msg
  • StepUpPlannerErrorMessage.msg
  • StepUpPlannerParametersMessage.msg
  • StepUpPlannerPhase.msg
  • StepUpPlannerPhaseParameters.msg
  • StepUpPlannerPhaseResult.msg
  • StepUpPlannerRequestMessage.msg
  • StepUpPlannerRespondMessage.msg
  • StepUpPlannerStepParameters.msg
  • StepUpPlannerVector2.msg

If not, you may checkout the branch feature/largeStepUps of ihmc-open-robotics-software. Now we assume the ihmc-open-robotics-software to be in the path ~/dev/atlas/ihmc-open-robotics-software/.

  • Create a controller_msgs workspace
mkdir -p ~/dev/large_step_ups/controller_msgs_ws/src

  • Create a symbolic link to the controller_msgs folder
ln -s ~/dev/atlas/ihmc-open-robotics-software/ihmc-interfaces/src/main/messages/ihmc_interfaces/controller_msgs/ ~/dev/large_step_ups/controller_msgs_ws/src/controller_msgs

Alternatively, it is possible to exploit the ihmc_interfaces repo. In this case it would be enough to clone the repo in the ~/dev/large_step_ups/controller_msgs_ws/src folder (make sure that the messages listed above are available).

  • Compile the message workspace
cd ~/dev/large_step_ups/controller_msgs_ws
source ~/ros2_ws/install/local_setup.sh
colcon build --symlink-install

Clone and compile this repo

  • Clone this repo
cd ~/dev/large_step_ups
git clone https://bitbucket.ihmc.us/scm/icsl/large-step-ups-planner.git

  • Source the ROS setup files to make sure that all the enviromental variables are set.
source ~/ros2_ws/install/local_setup.sh
source ~/dev/large_step_ups/controller_msgs_ws/install/local_setup.sh

  • Compile the code
cd large-step-ups-planner/
mkdir build
cmake ../
make

Run the responder node.

This node waits for a StepUpPlannerParametersMessage and a StepUpPlannerRequestMessage. The first is used to setup the planner. It returns a StepUpPlannerErrorMessage as an acknowledgement. Depending on the error code, the parameters may be have been successfully set or refused. Some info are provided in the message about what is wrong. After the parameters are set, it is possible to send requests. The node will respond with a StepUpPlannerRespondMessage containing the solution.

In order to run, the node needs all the ROS2 variables set up. To this end, it is suggested to add the following alias to the .bashrc

alias LARGE_STEP_UPS_SETUP='export ROS_DOMAIN_ID=8 && source ~/ros2_ws/install/local_setup.sh && source ~/dev/large_step_ups/controller_msgs_ws/install/local_setup.sh && export PATH=$PATH:~/dev/large_step_ups/large-step-ups-planner/build/bin'

In this way, it is possible to run the node with the following commands:

LARGE_STEP_UPS_SETUP
step_up_planner_responder

The output should look like

[INFO] [StepUpPlannerResponder]: Running...


StepUpPlannerParametersMessage

It is necessary to send a StepUpPlannerParametersMessage the first time a trajectory has to be computed or in case the following values need to change:

  • number of phases
  • phase settings
    • phase type
    • foot vertexes
    • foot scale
    • center offset
  • number of instants per phase
  • solver verbosity
  • max leg length parameter
  • min leg length parameter
  • Ipopt linear solver
  • portion of the final phase used to weight the final error
  • static friction coefficient
  • torsional friction coefficient
  • cost weights
  • whether to include or not the CenterOfMassTrajectoryMessage, the PelvisHeightTrajectoryMessage and/or the FootstepDataListMessage into the solution message.
  • whether or not to send directly to the walking controller he CenterOfMassTrajectoryMessage, the PelvisHeightTrajectoryMessage and/or the FootstepDataListMessage, and their respective topic name.
  • delta to be used when creating a PelvisHeightTrajectoryMessage from the CoM height profile.
  • number of data points per message.

In particular, when sending or including the CenterOfMassTrajectoryMessage and the PelvisHeightTrajectoryMessage a different message per phase is created. Multiple messages per phase are created if the number of data points per message is lower than the number of instants per phase.

If a StepUpPlannerParametersMessage has already been sent and successfully set, and none of the above parameters need to change, then it is not necessary to send such message again.

StepUpPlannerRequestMessage

Is the message to be sent every time a new trajectory has to be computed.

Tests on the robot.

Tests on the robot have been performed by launching the node as specified above and by launching the AtlasStepUpPlannerDemo defined in ihmc-open-robotics-software.

CHANGELOG
No CHANGELOG found.

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

No direct system dependencies.

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged step_up_planner at Robotics Stack Exchange

No version for distro noetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro foxy. Known supported distros are highlighted in the buttons above.
No version for distro iron. Known supported distros are highlighted in the buttons above.
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.