dairlib can be built with many different external packages and solvers. Installation instructions are detailed here (some may be out of date)
To integrate with ROS (tested on ROS Noetic with 20.04), the following steps are required.
Drake no longer supports Ubuntu 20.04. It is possible to compile against an older version of Drake, but there is not guarantee that all branches of dairlib will be compatible. There is ongoing work on some experimental branches to support ROS2.
- Install ROS http://wiki.ros.org/ROS/Installation
- Do not forget to setup your environment. For instance, add these lines to
~/.bashrc
export ROS_MASTER_URI=http://localhost:11311
source /opt/ros/noetic/setup.bash
- Install additional dependencies
sudo apt install python3-rosinstall-generator python-catkin-tools python3-vcstool
- Build the ROS workspace using catkin. From
dairlib/
,
sudo ./tools/workspace/ros/compile_ros_workspace.sh
- Set the environment variable
DAIRLIB_WITH_ROS
toON
. For instance, add to~/.bashrc
export DAIRLIB_WITH_ROS=ON
Download and setup SNOPT
dairlib, by default, assumes that users have access to SNOPT(https://web.stanford.edu/group/SOL/snopt.htm), though it is not required. If you do not have SNOPT, you will need to edit .bazelrc
and change build --define=WITH_SNOPT=ON
to build --define=WITH_SNOPT=OFF
For users at Penn, download SNOPT (https://www.seas.upenn.edu/~posa/snopt/snopt7.6.tar.gz) and add the following line to your ~/.bashrc
export SNOPT_PATH=<the directory you downloaded to>/snopt7.6.tar.gz
There is no need to extract the tar.
Download and setup GUROBI, currently tested with gurobi1003
export GUROBI_HOME=<gurobi_directory>
add the line build --define=WITH_GUROBI=ON
to the .bazelrc
The library is meant to be built with Drake (see http://drake.mit.edu/ for more details). Often, we will use an older version of drake with the commit defined in the WORKSPACE file or using the environment variable DAIRLIB_LOCAL_DRAKE_PATH
set to the root of the drake repository.
For example:
export DAIRLIB_LOCAL_DRAKE_PATH=/home/user/my-workspace/drake
State Estimation for Cassie is done using contact-aided invariant-EKF. invariant-ekf
is an external repository forked from Ross Hartley's repository of the same name. By default, a pegged version of this forked repository is used i.e. the bazel
branch of DAIR lab's fork of invariant-ekf
is automatically downloaded and used. However, to make changes to the files, the DAIR Lab's fork of invariant-ekf can be cloned as a local repository.
To use local version of invariant-ekf
, set the environment variable DAIRLIB_LOCAL_INEKF_PATH
, e.g.
export DAIRLIB_LOCAL_INEKF_PATH=/home/user/my-workspace/invariant-ekf
Docker support is currently experimental. See install/bionic/Dockerfile
for an Ubuntu Dockerfile. Docker is being used in conjuction with Cirrus Continuous Integration, and should be better supported in the future.