Skip to content

plancherb1/fast-rbd-gradients

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

[!] We have released a full URDF parsing GPU-accelerated Rigid Body Dynamics Libaray - GRiD!

Accelerating Robot Dynamics Gradients on a CPU, GPU, and FPGA

This repository contains the code associated with the paper "Accelerating Robot Dynamics Gradients on a CPU, GPU, and FPGA", accepted to RA-L 2021. It is available under the open source MIT license and can be cited as shown below:

@article{plancher2021fastrbdgrad,
  title={Accelerating Robot Dynamics Gradients on a CPU, GPU, and FPGA},
  author={Plancher, Brian and Neuman, Sabrina M. and Bourgeat, Thomas and Kuindersma, Scott and Devadas, Srini and Reddi, Vijay Janapa},
  journal={Robotics and Automation Letters (RA-L)},
  year={2021},
  publisher={IEEE}
}

Timing tests and code for the CPU and GPU.

The baseline code (and compilation instructions) are:

time_CPU_pinnochip.cpp # /utils
clang++-10 -std=c++11 -o pinnochio_timing.exe time_CPU_pinnochio.cpp -O3 -DPINOCCHIO_URDFDOM_TYPEDEF_SHARED_PTR -DPINOCCHIO_WITH_URDFDOM -lboost_system -L/opt/openrobots/lib -lpinocchio -lurdfdom_model -lpthread

time_GPU_WAFR.cu       # /utils, /helpers_WAFR
nvcc -std=c++11 -o WAFR_timing.exe time_GPU_WAFR.cu -gencode arch=compute_75,code=sm_75 -O3

Our accelerated implementations (and compilation instructions) are:

time_CPU.cpp           # /utils, /helpers_CPU
g++ -std=c++11 -o CPU_timing.exe time_CPU.cpp -lpthread -O3 -march=native -mavx

time_GPU.cu            # /utils, /helpers_GPU
nvcc -std=c++11 -o GPU_timing.exe time_GPU.cu -gencode arch=compute_75,code=sm_75 -O3

Installing the neccessary software dependencies (for the CPU and GPU timing files)

Dependencies for the various packages

sudo apt-get update
sudo apt-get -y install git build-essential libglib2.0-dev dkms xorg xorg-dev cpufrequtils net-tools linux-headers-$(uname -r) meld apt-transport-https cmake libboost-all-dev

Clang/LLVM

sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"

Eigen

Download and install

cd ~/Downloads
wget -q http://bitbucket.org/eigen/eigen/get/3.3.7.tar.bz2
tar -xf 3.3.7.tar.bz2
cd eigen*
mkdir build && cd build
cmake ..
sudo make install

Add symlinks

sudo ln -s /usr/local/include/eigen3/Eigen /usr/local/include/Eigen
sudo ln -s /usr/local/include/eigen3/unsupported /usr/local/include/unsupported

Pinnochio

Download and install

sudo apt install -qqy lsb-release gnupg2 curl
echo "deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg" | sudo tee /etc/apt/sources.list.d/robotpkg.list
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -
sudo apt-get update
sudo apt install -qqy robotpkg-py27-pinocchio

Add to bashrc

echo #Pinnochio >> ~/.bashrc
echo export PATH=/opt/openrobots/bin:$PATH >> ~/.bashrc
echo export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH >> ~/.bashrc
echo export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH >> ~/.bashrc
echo export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH >> ~/.bashrc
echo export CMAKE_PREFIX_PATH=/opt/openrobots:$CMAKE_PREFIX_PATH >> ~/.bashrc
echo export C_INCLUDE_PATH=/opt/openrobots/include:$C_INCLUDE_PATH >> ~/.bashrc
echo export CPLUS_INCLUDE_PATH=/opt/openrobots/include:$CPLUS_INCLUDE_PATH >> ~/.bashrc

CUDA

Download and set things up

sudo echo blacklist nouveau > /etc/modprobe.d/blacklist-nouveau.conf
sudo echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nouveau.conf
cd ~/Downloads
wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda_11.0.2_450.51.05_linux.run
sudo update-initramfs -u

If you get errors on missing firmware do this: https://askubuntu.com/questions/832524/possible-missing-frmware-lib-firmware-i915

Go into headless mode for rest of CUDA install -- GPU MUST BE INSTALLED FOR THIS

sudo service lightdm stop # Or Cntrl+Alt+F3 Or boot via recovery mode and enter the root command line
cd ~/Downloads
sudo sh cuda_11.0.2_450.51.05_linux.run

When running it choose to install the drivers and cuda toolkit (no need for the samples or doc)

sudo serivce lightdm start # Or Cntrl+Alt+F2 Or Cntrl+d and resume normal boot

Add to bashrc

Note that cuda below might be cuda-version. In that case update the below or symlink.

echo #CUDA >> ~/.bashrc
echo export PATH="usr/local/cuda/bin:$PATH" >> ~/.bashrc
echo export LD_LIBRARY_PATH=":usr/local/cuda/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc

Releases

No releases published

Packages

No packages published