Начинаем знакомство с Операционной Системой для Роботов — ROS.
UPD установка и принципы работы новых версий ROS существенно не отличаются, но строка команды установки будет зависить от устанавливаемой версии ROS
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 — обзор и установка
Комментарии (6)
RSS свернуть / развернутьskystorm
noonv
Вчера ставил — ставил… Electric не встал, Diamondback не встал, Сturtle встал только ros-cturtle-ros а base не хочет.
Ubunta 11.10, 10.4 не хочется ставить, а 10.10 не нашел :)
Как то все не просто… хоть сорцы качай и компили…
skystorm
а ROS Electric на Ubuntu 11.04
Собрать из исходников вполне реальная затея; я так недавно ROS под BeagleBoard собирал — ничего сложного — только долго :)
noonv
skystorm
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.