Git Product home page Git Product logo

pnc's Introduction

Planning and Control Algorithms for Robotics

PnC is a C++ library designed for generating trajectories for a robot system and stabilizing the system over the trajectories.

Installation

  • Install cmake:
    source scripts/install/install_cmake.sh
  • Install doxygen:
    source scripts/install/install_doxygen.sh
  • Install zmq and cppzmq:
    source scripts/install/install_zmq.sh
  • Install protobuf:
    source scripts/install/install_protobuf.sh
  • Install plotjuggler:
    source scripts/install/install_plotjuggler.sh
  • Install dart:
    source scripts/install/install_dart.sh
  • Install anaconda
  • Install python dependancies:
    conda env create -f pnc.yml
  • Clone the repository:
    git clone https://github.com/junhyeokahn/PnC.git

Compile and Run the Code

  • Initiate python env:
    conda activate pnc
  • Compile:
    mkdir build && cd build && cmake.. && make -j4
  • Run dart sim:
    ./build/bin/run_atlas
  • Run pybullet sim:
    python simulator/pybullet/draco_main.py

API documentation

  • Create doxygen:
    mkdir build && cd build && cmake.. && make view_docs

Citation

@article{10.3389/frobt.2021.712239,
	author = {Ahn, Junhyeok and Jorgensen, Steven Jens and Bang, Seung Hyeon and Sentis, Luis},
	journal = {Frontiers in Robotics and AI},
	pages = {257},
	title = {Versatile Locomotion Planning and Control for Humanoid Robots},
	volume = {8},
	year = {2021}}

pnc's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pnc's Issues

last commit breaks up all pybullet demos

Hello Junhyeokahn and thank you for a great repo!
It seems that ad8d19e breaks all the demos.
At this commit Draco3 demo is falling through the floor just after the simulation starts.
Both Atlas demos (dart/pybullet) fails to run with Error reading parameter [n_steps] at file: [PnC/pnc/whole_body_controllers/managers/dcm_trajectory_manager.cpp]
At 2ddaa6e the situation is better - Atlas demo works as expected, and Draco3 demo is at least able to walk but very unstable leading to a fall after several steps

Trim down dependencies for easier C++ installation. Example provided.

@junhyeokahn I was wondering if we can provide a more lean (easier) approach to compiling the code and make everything else optional? The documentation implies that everything needs to be installed for PnC to work. Which is not the case.

Essentially, the C++ example only needs dart to run the code.

But when installing dart using the install script install_dart.sh , it's strange to install liboctomap-dev which we don't even use.

From the official dart install instructions, we can instead reduce the dependencies to the core requirements:

sudo apt-get install build-essential cmake pkg-config git
sudo apt-get install libeigen3-dev libassimp-dev libccd-dev libfcl-dev libboost-regex-dev libboost-system-dev
sudo apt-get install libopenscenegraph-dev

After dart, it seems that the CMakeLists makes pybind11 a hard requirement along with other python dependencies.

I do like the anaconda approach since the repo with python dependencies will be self contained

For the atlas walking, this was the simplest set of install instructions

  1. git clone the PnC repo
  2. source install dart by: git cloning the dart repo, and git checkout the desired version number (release-6.11)
  3. install anaconda by following https://docs.anaconda.com/anaconda/install/linux/
  4. activate and install anaconda dependencies by cd'ing to the PnC repo, and install python dependencies
 conda env create -f pnc.yml
 conda activate pnc
  1. Compile as before
 mkdir build && cd build && cmake.. && make -j4 

Now we can run the atlas example:

 ./build/bin/run_atlas

Press spacebar to start the sim. Press WASDEQX keys to get the robot walking around.

But, this is not enough to get the example python simulator working.

 python simulator/pybullet/draco_main.py

since it complains about the draco_interface not being available. It's not clear to me how to debug this one.

option to specify angular momentum w.r.t root frame.

Hi Junhyeok,

void RobotSystem::_updateCentroidFrame(const Eigen::VectorXd& q_,

Currently the momentum equations are w.r.t world frame. We probably should include the option to represent momentum w.r.t the root frame orientation.

For example, when running, we may want to only control the body pitch direction of angular momentum and allow some yaw or roll rotations. If we represent angular momentum w.r.t root frame, the selection matrix will only be 1s and 0s. But since the angular momentum is represented in the world frame , the selection matrix will need a rotation matrix to properly enforce only controlling the pitch angular momentum control.

Perhaps the easiest is to use the root frame orientation as the CoM's orientation by modifying this line:

R_gl = bn->getWorldTransform().linear();

What do you think?

complie issue with Eigen version

In the master branch, "util.cpp" utilizes "Eigen::CompleteOrthogonalDecompositionEigen::MatrixXd" This expression of the class is valid only in Eigen 3.3.X ( I tried to complie this code in Eigen 3.2.X and Eigen 3.4.X. But I can see compile errors related to this construction.) please inform that users using Ubuntu 16.04 need to specify the Eigen version. Because "sudo apt-get install libeigen3-dev" provides Eigen 3.2.X in Ubuntu 16.04.

Pinocchio re-integration?

It seems that a previous commit had pinocchio support, but why did we remove it?

source scripts/install/install_pinocchio.sh

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.