Show EOL distros:
Ubuntu install of Diamondback
We are building Debian packages for several Ubuntu platforms, listed below. These packages are more efficient than source-based builds and are our preferred installation method for Ubuntu.
If you need to install from source, please see source (download-and-compile) installation instructions.
Contents
Installation
Configure your Ubuntu repositories
Configure your Ubuntu repositories to allow "restricted," "universe," and "multiverse." You can follow the Ubuntu guide for instructions on doing this.
Setup your sources.list
Setup your computer to accept software from ROS.org.
Ubuntu 10.04 (Lucid)
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu lucid main" > /etc/apt/sources.list.d/ros-latest.list'
Ubuntu 10.10 (Maverick)
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu maverick main" > /etc/apt/sources.list.d/ros-latest.list'
Ubuntu 11.04 (Natty)
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu natty main" > /etc/apt/sources.list.d/ros-latest.list'
Set up your keys
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
Installation
Make sure you have re-indexed the ROS.org server:
sudo apt-get update
There are many different libraries and tools in ROS. We provided four default configurations to get you started. You can also install ROS stacks individually.
Desktop-Full Install: (Recommended): ROS, rx, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
sudo apt-get install ros-diamondback-desktop-full
or click here
Desktop Install: ROS, rx, rviz, and robot-generic libraries
sudo apt-get install ros-diamondback-desktop
or click here
ROS-Base: (Bare Bones) ROS package, build, and communication libraries. No GUI tools.
sudo apt-get install ros-diamondback-ros-base
or click here
Individual Stack: You can also install a specific ROS stack (replace underscores with dashes of the stack name):
sudo apt-get install ros-diamondback-STACK
e.g.sudo apt-get install ros-diamondback-slam-gmapping
Environment setup
It's convenient if the ROS environment variables are automatically added to your bash session every time a new shell is launched:
echo "source /opt/ros/diamondback/setup.bash" >> ~/.bashrc . ~/.bashrc
If you have more than one ROS distribution installed, ~/.bashrc must only source the setup.bash for the version you are currently using.
If you just want to change the environment of your current shell, you can type:
source /opt/ros/diamondback/setup.bash
Slackware Installation
The following instructions have not been tested for Electric
Due to its simple vanilla-linux setup and highly customizable design Slackware is a great distribution to pair with ROS when building a custom robot. Unfortunately, it will require a little more setup work from the end-user due to the lack of a proper package-management system. ROS assumes we have multiple non-standard packages installed already, many which Slackware does not currently include. These instructions should help you get past the major initial hurdles. After completing these steps you should be able to run through the ROS/Tutorials without any compile or run-time errors.
Contents
SVN Based Install (download-and-compile)
Pre-installation
- install mercurial? (need some details on this new step for electric)
Get super-user access. You will need your system administrator to give you sudo access. If you can login as root yourself you can add sudo access to your account by running:
echo 'your_username ALL=(ALL) ALL' >> /etc/sudoers
- Install libyaml from source
cd /opt sudo wget http://pyyaml.org/download/libyaml/yaml-0.1.3.tar.gz sudo tar -xzf yaml-0.1.3.tar.gz cd ./yaml-0.1.3 && sudo ./configure && sudo make && sudo make install
You can now sudo rm /opt/yaml-0.1.3.tar.gz if you want to.
- Build and install python-setuptools from source:
cd /opt sudo wget http://slackbuilds.org/slackbuilds/13.1/development/pysetuptools.tar.gz sudo tar -xzf pysetuptools.tar.gz cd pysetuptools sudo wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz sudo chmod +x pysetuptools.SlackBuild sudo ./pysetuptools.SlackBuild
The output you see from building should end with something like: Slackware package /tmp/pysetuptools-0.6c11-i486-1_SBo.tgz created. Now create a directory where you will keep your compiled packages, and move this created package there for safekeeping and install it:
sudo mkdir /opt/installed_tgz sudo mv /tmp/pysetuptools-0.6c11-i486-1_SBo.tgz /opt/installed_tgz/ sudo /sbin/installpkg /opt/installed_tgz/pysetuptools-0.6c11-i486-1_SBo.tgz
You can now sudo rm -rf /opt/pysetuptools and the tar.gz file if you want to.
- Build and install logcxx from source:
cd /opt sudo wget http://www.gtlib.gatech.edu/pub/apache//logging/log4cxx/0.10.0/apache-log4cxx-0.10.0.tar.gz sudo tar -xzf apache-log4cxx-0.10.0.tar.gz cd apache-log4cxx-0.10.0
Unfortunately there are some issues currently between logcxx and the most recent version of gcc that Slackware uses. We will need to modify the logcxx code as follows.
First download the following two patch files to your log4cxx directory and apply them by issuing these commands:
sudo wget https://issues.apache.org/jira/secure/attachment/12439514/exampleFolder_stringInclude.patch --no-check-certificate sudo wget https://issues.apache.org/jira/secure/attachment/12439513/cppFolder_stringInclude.patch --no-check-certificate sudo patch -p1 -i cppFolder_stringInclude.patch sudo patch -p1 -i exampleFolder_stringInclude.patch
Now you will need to prepend one line that the makers of log4cxx forgot to include in one of the example header files. Do this with the little trick below, or just use your text editor:
sudo touch console_temp.cpp && sudo chmod 777 console_temp.cpp && echo "#include <stdio.h>" | sudo tac src/examples/cpp/console.cpp - | sudo tac > console_temp.cpp && sudo mv console_temp.cpp src/examples/cpp/console.cpp
Now, finally we can build and install log4cxx:
sudo ./configure --prefix=/usr sudo make sudo make install
You can now rm the .tar.gz file we downloaded if you want to.
- easyinstall pyyaml
sudo easy_install pyyaml
Build and install wxWidgets (Optional). Many of the ROS graphical tools (turtlesim,rviz,gazebo,pr2_dashboard) assume you have a working installation of wxWidgets. In order to compile and use these tools build and install wxWidgets as follows:
cd /opt sudo wget http://slackbuilds.org/slackbuilds/13.1/libraries/wxPython.tar.gz sudo tar xvf wxPython.tar.gz cd wxPython sudo wget http://downloads.sourceforge.net/wxpython/wxPython-src-2.8.11.0.tar.bz2 sudo chmod +x wxPython.SlackBuild sudo ./wxPython.SlackBuild sudo mv /tmp/wxPython-2.8.11.0-i486-1_SBo.tgz /opt/installed_tgz/ sudo /sbin/installpkg /opt/installed_tgz/wxPython-2.8.11.0-i486-1_SBo.tgz
You can now sudo rm -rf /opt/wxPython and the .tar.gz file if you want to.
rosinstall
The following lines will download the ROS source code using the rosinstall tool, and bootstrap the installation. The installation downloads all ROS stacks in subdirectories inside the ~/ros directory, one subdirectory for each stack in the rosinstall file.
First install rosinstall:
sudo easy_install -U rosinstall
There are many different libraries and tools in ROS. We provided four default configurations to get you started.
Desktop-Full Install: (Recommended): ROS Full, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
rosinstall -n ~/ros "http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=electric&variant=desktop-full&overlay=no"
Desktop Install: : ROS Full, rviz, and robot-generic libraries
rosinstall -n ~/ros "http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=electric&variant=desktop&overlay=no"
ROS-Full: ROS package, build, communication, and graphical tools.
rosinstall -n ~/ros "http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=electric&variant=ros-full&overlay=no"
ROS-Base: (Bare Bones) ROS package, build, and communication libraries.
rosinstall -n ~/ros "http://packages.ros.org/cgi-bin/gen_rosinstall.py?rosdistro=electric&variant=ros-base&overlay=no"
NOTE: the instructions above download all stacks inside the ~/ros folder. If you prefer a different location, simply change the ~/ros in the commands above.
Environment Setup
You'll now need to update your environment. You can do this by typing:
source ~/ros/setup.bash
It's convenient if the ROS environment variables are automatically added to your bash session every time a new shell is launched, which you can do with the command below:
echo "source ~/ros/setup.bash" >> ~/.bashrc . ~/.bashrc
For Zsh users, change the last line of ~/ros/setup.zsh to
source $ROS_ROOT/tools/rosbash/roszsh
before running source ~/ros/setup.zsh Similarly, have the setup script called at the start of each new shell session with
echo "source ~/ros/setup.zsh" >> ~/.zshrc . ~/.zshrc
Building Packages
Since rosdep cannnot detect the Slackware OS any rosmake commands will will throw dependency errors. You will need to build packages manually without dependencies using the --no-rosdep flag like in the example below. Compiling rostest and many other simple packages should work for you at this point:
rosmake --no-rosdep rostest
NOT SUPPORTED
Install ROS Kinetic on Slackware 14.2
This guide has been written and tested for Slackware 14.2 and a ROS Kinetic Desktop Install. If you have a different version of Slackware, steps might be slightly different.
Some other useful references are:
The official repo where I host the following instructions and the custom scripts you need: https://github.com/nikonikolov/ROS-Slackware
Install ROS from source: http://wiki.ros.org/Installation/Source
Another guide for installing on Slackware 14.2: http://barelywalking.com/?p=13
A guide for installing on Slackware 14.1: http://barelywalking.com/?p=5
Note: ROS still primarily uses Python 2.7 and you should use that version of python for the installation.
Prerequisites
Install pip if you don't already have it
wget https://bootstrap.pypa.io/get-pip.py sudo python get-pip.py
Install ROS tools
Note that for rosdep you need to use the master branch as the latest release does not include some important bug fixes.
git clone https://github.com/ros-infrastructure/rosdep.git cd rosdep sudo pip install -U .
sudo pip install -U rosinstall rosinstall_generator wstool
Initialize rosdep
sudo rosdep init rosdep update
Installing SlackWare package manager
Install sbotools
If you already have sbotools go to the next step
The Slackware installer that ROS uses is sbotools. This installer automates the process of installing packages from SlackBuilds - a third party repository for Slackware Linux. If you don't wish to isntall sbotools you will have to manually install all dependencies.
To install sbotools:
wget https://pink-mist.github.io/sbotools/downloads/sbotools-2.0.tar.gz sudo installpkg sbotools-2.0.tar.gz
Update your list of packages
Make sure to execute this step as some of the dependencies were submitted on SlackBuilds very recently.
sudo sbocheck
Initialize your workspace
mkdir ~/ros_catkin_ws cd ~/ros_catkin_ws
Desktop-Full Install:
ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
This guide has been tested for this installation.
rosinstall_generator desktop_full --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-full-wet.rosinstall wstool init -j8 src kinetic-desktop-full-wet.rosinstall
Desktop Install (recommended):
ROS, rqt, rviz, and robot-generic libraries
This guide has been tested for this installation.
rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall wstool init -j8 src kinetic-desktop-wet.rosinstall
ROS-Comm:
(Bare Bones) ROS package, build, and communication libraries. No GUI tools.
Although not tested for this kind of installation, this guide should work for it as all dependencies should be satisfied.
rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall wstool init -j8 src kinetic-desktop-wet.rosinstall
Install remaining dependencies
We should now install the rest of the dependencies for Slackware. We can do that using rosdep which will invoke sbotools and pip to install the missing dependencies.
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y
Be careful here. For each SlackBuilds package you will be prompted to confirm installation and optionally install SlackBuilds dependencies of the package. Ideally, you should be fine if you just select the defaults by pressing Enter for all prompts. There is one exception though: when installing VTK and prompted if you want to pass options to the SlackBuild script, select y and pass the option JAVA=yes
If you don't want to use sbotools and pip to install dependencies, instead of the above you can execute
rosdep install --from-paths src --ignore-src --rosdistro kinetic -y -s
This will output a list of commands that rosdep would have otherwise executed. In that list you can find the dependencies that you are missing. It will look like:
#[sbotools] Installation commands: sudo -H sboinstall -r protobuf sudo -H sboinstall -r sbcl ... #[pip] Installation commands: sudo -H pip install -U empy ...
Build the catkin workspace
Now that we have satisfied all dependencies we are almost ready to go. There are a few issues we need to fix before building.
Set PYTHONPATH
Execute these commands in your current terminal:
PYTHONPATH=$PYTHONPATH:~/ros_catkin_ws/src/catkin/python/catkin PYTHONPATH=$PYTHONPATH:~/ros_catkin_ws/install_isolated/lib64/python2.7/site-packages PYTHONPATH=$PYTHONPATH:~/ros_catkin_ws/install_isolated/lib/python2.7/site-packages export PYTHONPATH
Fix build issues
If we try to build the workspace now, we will run in build erros due to Slackware managing some packages differently. We are going to fix them by applying a custom-made patch. It makes some slight changes in the source files to fix cmake linking errors and make sure qt5 is used.
Navigate to the ROS-Slackware repo you cloned previously. From there execute the script which will apply the patch. Note that the script expects you to have your workspace in ~/ros_catkin_ws:
./patch.sh
Note you might run into some errors if you did not choose desktop-full installation. Just ignore them.
Build the workspace
We are now ready to build our workspace
cd ~/ros_catkin_ws ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
Wait for ages until it is done.
Desktop-full install
If you are going for the desktop-full install and you have a 64bit version of Slackware, you are going to run into a build error which will look something like this:
==> Processing catkin package: 'gazebo_plugins' ... Traceback (most recent call last): File "/home/niko/ros_catkin_ws/src/gazebo_ros_pkgs/gazebo_plugins/cfg/GazeboRosCamera.cfg", line 6, in <module> from dynamic_reconfigure.msg import SensorLevels ImportError: No module named msg CMakeFiles/gazebo_plugins_gencfg.dir/build.make:87: recipe for target '/home/niko/ros_catkin_ws/devel_isolated/gazebo_plugins/include/gazebo_plugins/GazeboRosCameraConfig.h' failed make[2]: *** [/home/niko/ros_catkin_ws/devel_isolated/gazebo_plugins/include/gazebo_plugins/GazeboRosCameraConfig.h] Error 1 CMakeFiles/Makefile2:1489: recipe for target 'CMakeFiles/gazebo_plugins_gencfg.dir/all' failed make[1]: *** [CMakeFiles/gazebo_plugins_gencfg.dir/all] Error 2 ... <== Failed to process package 'gazebo_plugins': Command '['/home/niko/ros_catkin_ws/install_isolated/env.sh', 'make', '-j8', '-l8']' returned non-zero exit status 2
This error cannot be prevented beforehand because of a bug in the catkin build system which is currently being fixed. In the meantime, fix the error by navigating to the ROS-Slackware repo you cloned beforehand and execute:
./fixmodules.sh
Note that the script expects you to have your workspace in ~/ros_catkin_ws.
Now get back to the ROS workspace and continue:
cd ~/ros_catkin_ws ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
Everything should install successfully
Finalize installation
source ~/ros_catkin_ws/install_isolated/setup.bash
You are recommended to place this command in your ~/.bashrc to make the changes permanent:
echo "~/ros_catkin_ws/install_isolated/setup.bash" >> ~/.bashrc
Fix a possible build bug
If you are on a Slackware 64bit system, you must fix a future runtime problem which is result of a bug in the catkin build system (currently being fixed). In particular some packages with the same name but different modules were built in both install_isolated/lib64/python2.7/site-packages and install_isolated/lib/python2.7/site-packages. This is incorrect as it causes python errors later.
Navigate to the ROS-Slackware repo you cloned previously and execute from there:
./fixmodules.sh
The script will simply move all modules in install_isolated/lib64/python2.7/site-packages
Enjoy ROS
Issues
Make sure to check the known issues list and possible solutions in my repo https://github.com/nikonikolov/ROS-Slackware.
NOT SUPPORTED
rosinstall
The following lines will download the ROS source code using the rosinstall tool, and bootstrap the installation. The installation downloads all ROS stacks in subdirectories inside the ~/ros directory, one subdirectory for each stack in the rosinstall file.
First install rosinstall using pip (advanced options for pip):
There are many different libraries and tools in ROS. We provided four default configurations to get you started.
Desktop-Full Install: (Recommended): ROS Full, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
Desktop Install: : ROS Full, rviz, and robot-generic libraries
ROS-Full: ROS package, build, communication, and graphical tools.
ROS-Base: (Bare Bones) ROS package, build, and communication libraries.
NOTE: the instructions above download all stacks inside the ~/ros folder. If you prefer a different location, simply change the ~/ros in the commands above.
Please reference REP 113 for description of other available configurations.
Environment Setup
Shell language: Bash Zsh
You'll now need to update your environment. You can do this by typing:
It's convenient if the ROS environment variables are automatically added to your bash session every time a new shell is launched, which you can do with the command below:
For Zsh users, change the last line of ~/ros/setup.zsh to
before running source ~/ros/setup.zsh Similarly, have the setup script called at the start of each new shell session with