Начинаем знакомство с Операционной Системой для Роботов — 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)
8 комментариев на «“ROS — установка”»
В первом пункте нужно указать что строка зависит от версии убунты, в данном случае 10.10 maverick.
так там это и указано 🙂
Ага 🙂 по ночам нужно спать…
Вчера ставил — ставил… 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 встал без проблем 🙂
устанавливаю 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
да так и было =) пофиксил )) иногда для того чтобы решить проблему нужно просто задать вопрос, и она сразу решается… не знаю как так получается =(
спасибо