This is an old revision of the document!


Setting up PyCRAM

The setup of PyCRAM can be differentiated in four steps:

  • Install ROS
  • Installing Dependencies
  • Cloning the PyCRAM repo
  • Building your ROS workspace

All dependencies are available via PyPi

PyCRAM is developed and tested with Python3.8, Ubuntu 20.04 and ROS Melodic.

Installing ROS

PyCRAM uses ROS for a variety of functionality, for this reason you need a working ROS installation on your machine. For information on how to install ROS please referee to the offical documentation here.

Dependencies

To install PyCRAM firstly the required packages must be installed. These are:

  • Pip
  • CRAM/kdl_ik_service
  • pybullet
  • Pathlib
  • numpy
  • urdfpy
  • graphviz
  • urdf-parser-py

Firstly Pip needs to be installed, on Ubuntu this can be done vie the following command:

sudo apt-get install python3-pip

PyCRAM uses the the KDL Inverse Kinematic service of CRAM, to use the IK service CRAM needs to be installed. For instructions on how to install CRAM click here.

The rest can be installed using Pip by typing the following command into a terminal:

pip3 install <DEPENDENCY> 

PyCRAM

To get PyCRAM simply clone the repository with the following command into your ROS workspace:

cd <Path to your ROS workspace>
cd src/
git clone https://github.com/cram2/pycram.git
cd pycram/
git submodule init
git submodule update

The cloned repository contains the source code for PyCRAM as well as two short demos which demonstrate how to use it.

Building your ROS workspace

Building and sourcing your ROS workspace using catkin compiles all ROS packages and manages the appending to the respective PATH variables. This is necessary to be able to import PyCRAM via the Python import system and to find the robot descriptions in the launch file.

You can build your ROS workspace with the following commands:

cd <Path to your ROS workspace>
catkin_make
source devel/local_setup.bash

PyCRAM on Ubuntu 18.04

To be able to use PyCRAM on Ubuntu 18.04 you need a few extra steps because ROS melodic doesn't fully support Python 3. The first thing you need to do is install Python3 pip.

 
apt-get install python3-pip

Next you need to install the Python dependencies using pip

pip3 install rospkg empy numpy

So far you should be able to import rospy in Python and use all features but for PyCRAM to function you also need the ROS tf package which is unfortunately not available in Python 3. To be able to use the tf package we will compile it our self for Python 3.

Build Tf for Python 3

Firstly you need to clone the geometry and geometry2 repos into your ROS workspace and select the melodic branches.

 
cd ur_ros_ws/src
git clone git@github.com:ros/geometry.git
cd geometry
git checkout melodic-devel
cd ..
git clone git@github.com:ros/geometry2.git 
git checkout melodic-devel

Now all you need to do is source ROS and build your workspace using for Python 3.

source /opt/ros/melodic/setup.bash
cd ur_ros_ws/
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3.6

This should build the Tf package for Python 3. Now you can source your workspace and use the Tf package.

In order to use ROS and the Python3 Tf package you have to pay attention to a little thing when sourcing ROS. It is not enough to just source your workspace, you need to source the '/opt/ros/melodic/setup.bash' before hand to be able to use roslaunch.

The easiest way is to add the two sourcing commands to your .bashrc like so.

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc && echo "source $(pwd)/devel/setup.bash" >> ~/.bashrc