ROS — установка


Начинаем знакомство с Операционной Системой для Роботов — ROS.

UPD установка и принципы работы новых версий ROS существенно не отличаются, но строка команды установки будет зависить от устанавливаемой версии ROS
http://www.ros.org/wiki/ROS/Installation
UPD 2011-11-27 ROS Electric — обзор и установка

Установка ROS — версия C turtle

Итак, шаг первый — установка.
Для первых экспериментов вполне подойдёт установленная OC Ubuntu Linux под виртуальной машиной.
Как и в экспериментах над роутером — я буду использовать VirtualBox.

Как помним, установка Ubuntu Linux на виртуальную машину особых вопросов не вызывает. Устанавливаем Ubuntu 10.10, но необходимо учесть, что для ROS потребуется не менее 6Гб свободного места на жёстком диске, так что выбирайте динамически-расширяемый образ и задайте размер не менее 20Gb.

Установка ROS под Ubuntu расписана здесь и никаких трудностей не представляет!
Итак, нам потребуются:
1. ПК(сойдёт и виртуальная машина) под управлением OC Ubuntu Linux 10.10,
2. безлимитный интернет (во время установки потребуется загрузить около полутора Гигабайт пакетов, которые займут около 5 Гигабайт жёсткого диска)

Для установки ROS, нужно выполнить следующие пять простых шагов:

1. нужно настроить sources.list , добавив туда адрес сервера ROS, чтобы менеджер пакетов знал откуда брать пакеты
под Ubuntu 10.10 (Maverick) команда:

sudo sh -c 'echo "deb http://code.ros.org/packages/ros/ubuntu maverick main" > /etc/apt/sources.list.d/ros-latest.list'

2. получить ключи

wget http://code.ros.org/packages/ros.key -O - | sudo apt-key add -

3. убедиться, что сервер ROS.org проиндексирован

sudo apt-get update

4. установить ROS (параметр команды может отличаться в зависимости от типа установки)
только ROS:

sudo apt-get install ros-cturtle-ros

базовый:

sudo apt-get install ros-cturtle-base

ROS + специфичный стек для робота PR2

sudo apt-get install ros-cturtle-pr2

Для начала попробуем базовый ROS


!Обратите внимание, что для установки всех нужных пакетов менеджеру пакетов придётся загрузить 1.65 GB архивов, которые после установки займут 4.67 Gb на вашем жёстком диске О_о!
.
.

набираем

$ sudo apt-get install ros-cturtle-base

и вот какоооооооой длиииииииинный список устанавливаемых пакетов получаем на свою голову 🙂

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  alsa-oss autoconf automake autotools-dev bison blt build-essential cl-asdf
  cmake cmake-data comerr-dev common-lisp-controller debhelper doxygen
  dpkg-dev emacsen-common esound-clients esound-common evtest fakeroot
  festival festlex-cmu festlex-poslex festvox-kallpc16k flex freeglut3
  freeglut3-dev g++ g++-4.4 gccxml gettext gforth gforth-common graphviz
  html2text intltool-debian joystick krb5-multidev lacheck latex-beamer
  latex-xcolor libaa1-dev libalgorithm-diff-perl libalgorithm-merge-perl
  libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2-dev libatk1.0-dev
  libaudio-dev libaudio2 libaudiofile-dev libaudiofile0 libavahi-client-dev
  libavahi-common-dev libavcodec-dev libavcodec52 libavformat-dev
  libavformat52 libavutil-dev libavutil50 libblas3gf libbluetooth-dev
  libboost-date-time1.42-dev libboost-date-time1.42.0
  libboost-filesystem1.42-dev libboost-filesystem1.42.0 libboost-graph1.42-dev
  libboost-graph1.42.0 libboost-iostreams1.42-dev libboost-iostreams1.42.0
  libboost-math1.42-dev libboost-math1.42.0 libboost-program-options1.42-dev
  libboost-program-options1.42.0 libboost-python1.42-dev libboost-python1.42.0
  libboost-regex1.42-dev libboost-regex1.42.0 libboost-serialization1.42-dev
  libboost-serialization1.42.0 libboost-signals1.42-dev libboost-signals1.42.0
  libboost-system1.42-dev libboost-system1.42.0 libboost-test1.42-dev
  libboost-test1.42.0 libboost-thread1.42-dev libboost-thread1.42.0
  libboost-wave1.42-dev libboost-wave1.42.0 libboost1.42-all-dev
  libboost1.42-dev libbz2-dev libcaca-dev libcairo-gobject2 libcairo2-dev
  libcdt4 libcgraph5 libcppunit-1.12-1 libcppunit-dev libcurl4-openssl-dev
  libdb4.8-dev libdbus-1-dev libdc1394-22 libdc1394-22-dev libdpkg-perl
  libdrm-dev libesd0 libesd0-dev libestools2.0 libexif-dev libexpat1-dev
  libffcall1 libfltk1.1 libfltk1.1-dev libfontconfig1-dev libfreeimage-dev
  libfreeimage3 libfreetype6-dev libgdk-pixbuf2.0-dev libgfortran3
  libgl1-mesa-dev libglib2.0-bin libglib2.0-dev libglu1-mesa-dev libglut3-dev
  libgraph4 libgraphicsmagick++1-dev libgraphicsmagick++3
  libgraphicsmagick1-dev libgraphicsmagick3 libgsm1 libgssrpc4 libgtk2.0-dev
  libgvc5 libgvpr1 libice-dev libicu-dev libidn11-dev libjasper-dev
  libjpeg62-dev libkadm5clnt-mit7 libkadm5srv-mit7 libkdb5-4 libkms1
  libkrb5-dev liblapack3gf liblcms1-dev libldap2-dev liblog4cxx10
  liblog4cxx10-dev libltdl-dev libmail-sendmail-perl libmikmod2
  libmysqlclient-dev libmysqlclient16 libncurses5-dev libnetpbm10
  libnetpbm10-dev libogg-dev libpango1.0-dev libpathplan4 libpcre3-dev
  libpcrecpp0 libpixman-1-dev libpng12-dev libportmidi0 libpq-dev libpq5
  libpthread-stubs0 libpthread-stubs0-dev libpulse-dev libraw1394-dev
  libschroedinger-1.0-0 libsdl-image1.2 libsdl-image1.2-dev libsdl-mixer1.2
  libsdl-ttf2.0-0 libsdl1.2-dev libslang2-dev libsm-dev libsmpeg0
  libsqlite3-dev libssl-dev libstdc++6-4.4-dev libsvn1 libswscale-dev
  libswscale0 libsys-hostname-long-perl libtiff4-dev libtiffxx0c2 libtool
  libunistring0 libusb-dev libva1 libvpx0 libwmf-dev libwxbase2.8-0
  libwxbase2.8-dev libwxgtk2.8-0 libwxgtk2.8-dev libx11-dev libxau-dev
  libxaw7-dev libxcb-render0-dev libxcb-shm0-dev libxcb1-dev libxcomposite-dev
  libxcursor-dev libxdamage-dev libxdmcp-dev libxdot4 libxext-dev
  libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-dev
  libxmlrpc-core-c3 libxmu-dev libxmu-headers libxpm-dev libxrandr-dev
  libxrender-dev libxt-dev libxxf86vm-dev libyaml-0-2 libyaml-dev libzzip-0-13
  libzzip-dev lmodern luatex m4 mesa-common-dev mysql-common nvidia-cg-toolkit
  oss-compat patch pgf po-debconf preview-latex-style prosper ps2eps
  python-bluez python-dateutil python-dev python-docutils python-epydoc
  python-lxml python-matplotlib python-matplotlib-data python-numpy
  python-paramiko python-pygame python-pygments python-pyparsing python-roman
  python-sip python-sip-dev python-sip4-dev python-tk python-tz
  python-wxgtk2.8 python-wxversion python-yaml python2.6-dev realpath
  ros-cturtle-camera-drivers ros-cturtle-common ros-cturtle-common-msgs
  ros-cturtle-common-tutorials ros-cturtle-diagnostics
  ros-cturtle-driver-common ros-cturtle-geometry
  ros-cturtle-geometry-tutorials ros-cturtle-image-common
  ros-cturtle-image-pipeline ros-cturtle-image-transport-plugins
  ros-cturtle-imu-drivers ros-cturtle-joystick-drivers
  ros-cturtle-joystick-drivers-tutorials ros-cturtle-laser-drivers
  ros-cturtle-laser-pipeline ros-cturtle-navigation ros-cturtle-physics-ode
  ros-cturtle-robot-model ros-cturtle-ros ros-cturtle-ros-comm
  ros-cturtle-ros-tutorials ros-cturtle-roslisp-support ros-cturtle-rx
  ros-cturtle-simulator-gazebo ros-cturtle-simulator-stage
  ros-cturtle-slam-gmapping ros-cturtle-sound-drivers
  ros-cturtle-vision-opencv ros-cturtle-visualization
  ros-cturtle-visualization-common ros-cturtle-visualization-tutorials sbcl
  subversion tcl8.5 tex-common texlive-base texlive-binaries texlive-common
  texlive-doc-base texlive-extra-utils texlive-font-utils
  texlive-fonts-recommended texlive-fonts-recommended-doc
  texlive-generic-recommended texlive-latex-base texlive-latex-base-doc
  texlive-latex-extra texlive-latex-extra-doc texlive-latex-recommended
  texlive-latex-recommended-doc texlive-luatex texlive-pictures
  texlive-pictures-doc texlive-pstricks texlive-pstricks-doc tipa tk8.5
  ttf-lyx uuid-dev wx2.8-headers x11proto-composite-dev x11proto-core-dev
  x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev
  x11proto-randr-dev x11proto-render-dev x11proto-xext-dev
  x11proto-xf86vidmode-dev x11proto-xinerama-dev xtrans-dev zlib1g-dev
Suggested packages:
  autoconf2.13 autoconf-archive gnu-standards autoconf-doc bison-doc blt-demo
  dh-make doxygen-doc doxygen-gui debian-keyring pidgin-festival
  festival-freebsoft-utils g++-multilib g++-4.4-multilib gcc-4.4-doc
  libstdc++6-4.4-dbg gettext-doc graphviz-doc krb5-doc auctex libasound2-doc
  nas libfaad-dev libgsm1-dev libschroedinger-dev libspeex-dev libtheora-dev
  libvorbis-dev libboost1.42-doc docbook-xsl default-jdk fop libcairo2-doc
  libcairo-script-interpreter2 libqttestrunner1c2a libcppunit-doc libcurl3-dbg
  db4.8-doc fltk1.1-doc fluid libpng12-0-dev libglib2.0-doc python-subunit
  graphicsmagick graphicsmagick-dbg krb5-user libgtk2.0-doc icu-doc
  liblog4cxx10-doc libtool-doc libpango1.0-doc imagemagick postgresql-doc-8.4
  libraw1394-doc sqlite3-doc libstdc++6-4.4-doc automaken gfortran
  fortran95-compiler gcj libwmf-doc wx2.8-doc libgnomeprintui2.2-0 wx-common
  libstdc++-dev xlibmesa-glu-dev libglu-dev diffutils-doc libmail-box-perl
  texlive-lang-french epydoc-doc python-profiler python-lxml-dbg dvipng
  ipython python-configobj python-excelerator python-matplotlib-doc
  python-scipy python-traits python-qt4 python-numpy-doc python-numpy-dbg
  python-nose python-chardet ttf-bitstream-vera tix python-tk-dbg
  wx2.8-examples python-wxtools ruby tcsh csh octave3.0 mksh pdksh python-xml
  editra sbcl-doc sbcl-source slime subversion-tools db4.8-util tclreadline
  perl-tk dvidvi fragmaster latexmk purifyeps xindy psutils t1utils texpower
The following NEW packages will be installed:
  alsa-oss autoconf automake autotools-dev bison blt build-essential cl-asdf
  cmake cmake-data comerr-dev common-lisp-controller debhelper doxygen
  dpkg-dev emacsen-common esound-clients esound-common evtest fakeroot
  festival festlex-cmu festlex-poslex festvox-kallpc16k flex freeglut3
  freeglut3-dev g++ g++-4.4 gccxml gettext gforth gforth-common graphviz
  html2text intltool-debian joystick krb5-multidev lacheck latex-beamer
  latex-xcolor libaa1-dev libalgorithm-diff-perl libalgorithm-merge-perl
  libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2-dev libatk1.0-dev
  libaudio-dev libaudio2 libaudiofile-dev libaudiofile0 libavahi-client-dev
  libavahi-common-dev libavcodec-dev libavcodec52 libavformat-dev
  libavformat52 libavutil-dev libavutil50 libblas3gf libbluetooth-dev
  libboost-date-time1.42-dev libboost-date-time1.42.0
  libboost-filesystem1.42-dev libboost-filesystem1.42.0 libboost-graph1.42-dev
  libboost-graph1.42.0 libboost-iostreams1.42-dev libboost-iostreams1.42.0
  libboost-math1.42-dev libboost-math1.42.0 libboost-program-options1.42-dev
  libboost-program-options1.42.0 libboost-python1.42-dev libboost-python1.42.0
  libboost-regex1.42-dev libboost-regex1.42.0 libboost-serialization1.42-dev
  libboost-serialization1.42.0 libboost-signals1.42-dev libboost-signals1.42.0
  libboost-system1.42-dev libboost-system1.42.0 libboost-test1.42-dev
  libboost-test1.42.0 libboost-thread1.42-dev libboost-thread1.42.0
  libboost-wave1.42-dev libboost-wave1.42.0 libboost1.42-all-dev
  libboost1.42-dev libbz2-dev libcaca-dev libcairo-gobject2 libcairo2-dev
  libcdt4 libcgraph5 libcppunit-1.12-1 libcppunit-dev libcurl4-openssl-dev
  libdb4.8-dev libdbus-1-dev libdc1394-22 libdc1394-22-dev libdpkg-perl
  libdrm-dev libesd0 libesd0-dev libestools2.0 libexif-dev libexpat1-dev
  libffcall1 libfltk1.1 libfltk1.1-dev libfontconfig1-dev libfreeimage-dev
  libfreeimage3 libfreetype6-dev libgdk-pixbuf2.0-dev libgfortran3
  libgl1-mesa-dev libglib2.0-bin libglib2.0-dev libglu1-mesa-dev libglut3-dev
  libgraph4 libgraphicsmagick++1-dev libgraphicsmagick++3
  libgraphicsmagick1-dev libgraphicsmagick3 libgsm1 libgssrpc4 libgtk2.0-dev
  libgvc5 libgvpr1 libice-dev libicu-dev libidn11-dev libjasper-dev
  libjpeg62-dev libkadm5clnt-mit7 libkadm5srv-mit7 libkdb5-4 libkms1
  libkrb5-dev liblapack3gf liblcms1-dev libldap2-dev liblog4cxx10
  liblog4cxx10-dev libltdl-dev libmail-sendmail-perl libmikmod2
  libmysqlclient-dev libmysqlclient16 libncurses5-dev libnetpbm10
  libnetpbm10-dev libogg-dev libpango1.0-dev libpathplan4 libpcre3-dev
  libpcrecpp0 libpixman-1-dev libpng12-dev libportmidi0 libpq-dev libpq5
  libpthread-stubs0 libpthread-stubs0-dev libpulse-dev libraw1394-dev
  libschroedinger-1.0-0 libsdl-image1.2 libsdl-image1.2-dev libsdl-mixer1.2
  libsdl-ttf2.0-0 libsdl1.2-dev libslang2-dev libsm-dev libsmpeg0
  libsqlite3-dev libssl-dev libstdc++6-4.4-dev libsvn1 libswscale-dev
  libswscale0 libsys-hostname-long-perl libtiff4-dev libtiffxx0c2 libtool
  libunistring0 libusb-dev libva1 libvpx0 libwmf-dev libwxbase2.8-0
  libwxbase2.8-dev libwxgtk2.8-0 libwxgtk2.8-dev libx11-dev libxau-dev
  libxaw7-dev libxcb-render0-dev libxcb-shm0-dev libxcb1-dev libxcomposite-dev
  libxcursor-dev libxdamage-dev libxdmcp-dev libxdot4 libxext-dev
  libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-dev
  libxmlrpc-core-c3 libxmu-dev libxmu-headers libxpm-dev libxrandr-dev
  libxrender-dev libxt-dev libxxf86vm-dev libyaml-0-2 libyaml-dev libzzip-0-13
  libzzip-dev lmodern luatex m4 mesa-common-dev mysql-common nvidia-cg-toolkit
  oss-compat patch pgf po-debconf preview-latex-style prosper ps2eps
  python-bluez python-dateutil python-dev python-docutils python-epydoc
  python-lxml python-matplotlib python-matplotlib-data python-numpy
  python-paramiko python-pygame python-pygments python-pyparsing python-roman
  python-sip python-sip-dev python-sip4-dev python-tk python-tz
  python-wxgtk2.8 python-wxversion python-yaml python2.6-dev realpath
  ros-cturtle-base ros-cturtle-camera-drivers ros-cturtle-common
  ros-cturtle-common-msgs ros-cturtle-common-tutorials ros-cturtle-diagnostics
  ros-cturtle-driver-common ros-cturtle-geometry
  ros-cturtle-geometry-tutorials ros-cturtle-image-common
  ros-cturtle-image-pipeline ros-cturtle-image-transport-plugins
  ros-cturtle-imu-drivers ros-cturtle-joystick-drivers
  ros-cturtle-joystick-drivers-tutorials ros-cturtle-laser-drivers
  ros-cturtle-laser-pipeline ros-cturtle-navigation ros-cturtle-physics-ode
  ros-cturtle-robot-model ros-cturtle-ros ros-cturtle-ros-comm
  ros-cturtle-ros-tutorials ros-cturtle-roslisp-support ros-cturtle-rx
  ros-cturtle-simulator-gazebo ros-cturtle-simulator-stage
  ros-cturtle-slam-gmapping ros-cturtle-sound-drivers
  ros-cturtle-vision-opencv ros-cturtle-visualization
  ros-cturtle-visualization-common ros-cturtle-visualization-tutorials sbcl
  subversion tcl8.5 tex-common texlive-base texlive-binaries texlive-common
  texlive-doc-base texlive-extra-utils texlive-font-utils
  texlive-fonts-recommended texlive-fonts-recommended-doc
  texlive-generic-recommended texlive-latex-base texlive-latex-base-doc
  texlive-latex-extra texlive-latex-extra-doc texlive-latex-recommended
  texlive-latex-recommended-doc texlive-luatex texlive-pictures
  texlive-pictures-doc texlive-pstricks texlive-pstricks-doc tipa tk8.5
  ttf-lyx uuid-dev wx2.8-headers x11proto-composite-dev x11proto-core-dev
  x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev x11proto-kb-dev
  x11proto-randr-dev x11proto-render-dev x11proto-xext-dev
  x11proto-xf86vidmode-dev x11proto-xinerama-dev xtrans-dev zlib1g-dev
0 upgraded, 344 newly installed, 0 to remove and 5 not upgraded.
Need to get 927MB/1,650MB of archives.
After this operation, 4,674MB of additional disk space will be used.
Do you want to continue [Y/n]? 

жмём Y и отправляемся спать или пить цистерны кофе.

Уффф через N-цать часов (в зависимости от скорости вашего интернета) — пакеты закачались и установились 🙂

Установленную программу нужно искать в каталоге /opt
Там, соответственно, появится директория ros:
/opt/ros

$ cd /opt/ros/cturtle/

модули(стеки) ROS находятся в директории stacks
, например, стек библиотеки OpenCV — vision_opencv
используемая версия библитеки — 2.1

Но с этим будем разбираться позднее.

5. Завершающий штрих установки — это настройка переменных окружения. Для того чтобы переменные окружения устанавливались каждый раз при начале новой сессии bash нужно выполнить команду:

echo "source /opt/ros/cturtle/setup.bash" >> ~/.bashrc
. ~/.bashrc

Если же вы хотите установить переменные окружения только для текущей сессии — можно выполнить команду

source /opt/ros/cturtle/setup.bash

из setup.bash вызывается setup.sh, который прописывает переменные окружения:

ROS_ROOT=/opt/ros/cturtle/ros
PYTHONPATH
ROS_PACKAGE_PATH=/opt/ros/cturtle/stacks
ROS_MASTER_URI=http://localhost:11311

добавляет ${ROS_ROOT}/bin в $PATH

проверить текущее значение переменных окружения можно очень просто:

$ echo $ROS_ROOT
/opt/ros/cturtle/ros

Обратите внимание, что переменные окружения устанавливаются для текущего пользователя и для другого пользователя данную команду нужно повторить.

Остаётся проверить, что всё установило нормально — для этого можно выполнить команду:

$ roscore
... logging to /home/noonv/.ros/log/8475245a-3845-11e0-93cf-0800279d16a6/roslaunch-noonv-2280.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://noonv:40549/

SUMMARY
========

NODES

starting new master (master configured for auto start)
process[master]: started with pid [2295]
ROS_MASTER_URI=http://noonv:11311/

setting /run_id to 8475245a-3845-11e0-93cf-0800279d16a6
process[rosout-1]: started with pid [2308]
started core service [/rosout]

остановить выполнение можно нажав Ctrl+C.
roscore - набор узлов и программ составляющих базу ROS

Итак, базовая версия ROS установилась и даже совсем не сложно!
Теперь пора познакомиться - что же мы установили? 🙂

Читать далее: Навигация по файловой системе ROS

Ссылки
Ubuntu install of C turtle
Installing on Ubuntu from SVN (Установка на Ubuntu из SVN)

По теме
Дистрибутивы ROS
ROS Electric - обзор и установка


8 комментариев на «“ROS — установка”»

  1. Ага 🙂 по ночам нужно спать…
    Вчера ставил — ставил… Electric не встал, Diamondback не встал, Сturtle встал только ros-cturtle-ros а base не хочет.
    Ubunta 11.10, 10.4 не хочется ставить, а 10.10 не нашел 🙂
    Как то все не просто… хоть сорцы качай и компили…

    • у меня ROS Сturtle успешно ставился на Ubuntu 10.10,
      а ROS Electric на Ubuntu 11.04
      Собрать из исходников вполне реальная затея; я так недавно ROS под BeagleBoard собирал — ничего сложного — только долго 🙂

    • ROS Electric на Ubuntu 11.04 встал без проблем 🙂

  2. устанавливаю ros-groovy на ubuntu 12.04 LTS

    устанавливает, но каждый раз выдаёт следующее в конце

    N: Ignoring file ‘ros-latest-list’ in directory ‘/etc/apt/sources.list.d/’ as it has no filename extension

    как с этим бороться?

    • похоже, вы перепутали и вместо точки поставили дефис в названии файла ros-latest.list
      см. Ubuntu install of ROS Groovy

      sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'
    • да так и было =) пофиксил )) иногда для того чтобы решить проблему нужно просто задать вопрос, и она сразу решается… не знаю как так получается =(

      спасибо

Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Arduino Bluetooth CraftDuino DIY Google IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение