Package: robotic
Robotic Control Interface & Manipulation Planning LibraryA python library to operate a real or simulated robot, work with
robot/world configurations, compute differentiable features, formulate
and solve constrained optimization problems (for inverse kinematics,
path optimization, and manipulation planning), and interfacing to
various physical simulation engines.These python bindings were developed for easier access to theuderlying C++ code base, esp. for teaching and students. This code base is how we (in
theLearning & Intelligent Systems
Lab) operate our robots.Documentation & Tutorials:https://marctoussaint.github.io/robotic/Sources:https://github.com/MarcToussaint/robotic/Pypi:https://pypi.org/project/robotic/Installation via pip (simulation only, no real Franka & realsense support)The pip package was compiled for python3.6 .. 3.11, and most of the dependencies statically linked. A few are still loaded dynamically, which requires installing on Ubuntu:sudo apt install liblapack3 freeglut3 libglew-dev python3 python3-pippip-install roboticpip install roboticTests:python3 -c 'import robotic as ry; print("ry version:", ry.__version__, ry.compiled());'python3 -c 'import robotic as ry; ry.test.RndScene()'Installation from source with real Franka & realsense supportThis assumes a standard Ubuntu 20.04 (or 18.04) machine.Install Ubuntu and python packages:sudo apt install --yes \
  g++ clang make gnupg cmake git wget \
  liblapack-dev libf2c2-dev libqhull-dev libeigen3-dev libann-dev libccd-dev \
  libjsoncpp-dev libyaml-cpp-dev libpoco-dev libboost-system-dev portaudio19-dev libusb-1.0-0-dev \
  libx11-dev libglu1-mesa-dev libglfw3-dev libglew-dev freeglut3-dev libpng-dev libassimp-dev \
  python3-dev python3 python3-pip

python3 -m pip install --user numpy pybind11 pybind11-stubgenInstall some external libs by source. You can skip librealsense and
libfranka if you disable below. (To speed up compilation, e.g., setexport MAKEFLAGS="-j $(command nproc --ignore 2)"To standardize installations, I use a basic script:wget https://github.com/MarcToussaint/rai-extern/raw/main/install.sh; chmod a+x install.sh
./install.sh fcl
./install.sh physx
./install.sh librealsense
./install.sh libfranka  ## for OLD frankas instead:   ./install.sh -v 0.7.1 libfrankaClone, compile and install this repo (note the USE_REALSENSE and USE_LIBFRANKA options!):cd $HOME/git
git clone --recursive https://github.com/MarcToussaint/robotic.git
cd robotic
cp _build_utils/CMakeLists-ubuntu.txt CMakeLists.txt
export PY_VERSION=`python3 -c "import sys; print(str(sys.version_info[0])+'.'+str(sys.version_info[1]))"`
cmake -DPY_VERSION=$PY_VERSION -DUSE_REALSENSE=ON -DUSE_LIBFRANKA=ON . -B build
make -C build _robotic install(Docstrings could be made withmake docstrings, but this is not yet robust across distributions.)This should install everything in .local/lib/python*/site-packages/robotic. Test:cd $HOME
python3 -c 'import robotic as ry; print("ry version:", ry.__version__, ry.compiled());'
python3 -c 'import robotic as ry; ry.test.RndScene()'Recall that the user needs to be part of therealtimeanddialoutunix group:sudo usermod -a -G realtime <username>
sudo usermod -a -G dialout <username>You need to log out and back in (or even reboot) for this to take
effect. Check withgroupsin a terminal. Test the "real robot"
tutorial.Building the wheels within a manylinux dockerBuild the docker_build_utils/build-docker.shRun docker and compile wheels inside_build_utils/run-docker.sh
## inside docker:
cd local #this mounts robotic/
_build_utils/build-wheels.sh
exitOutside of docker, install locally with pip or push wheels to pypipython3.8 -m pip install --user dist/robotic-*cp38*.whl --force-reinstall
python3.10 -m pip install --user dist/robotic-*cp310*.whl --force-reinstall
# or
twine upload dist/*.whl --repository robotic