ROS Electric - обзор и установка


Electric Emys — релиз от 30 августа 2011 — четвёртый дистрибутив ROS.
Electric Emys содержит стабильные версии библиотек arm_navigation и PCL, а так же расширяет поддержку новых платформ, таких как Android и Arduino.

ROS Electric предназначена для работы под Ubuntu Linux Lucid (10.04) — Natty (11.04), но может быть установлена и на другие дистрибутивы Linux (Red Hat, Debian, Gentoo). Так же, система может быть установлена на Mac OS X, FreeBSD, Android и даже Windows, но функциональность системы будет ограничена.

Обзор

Разработчики ROS, стремятся интегрировать в систему лучшие открытые робототехнические библиотеки, сохраняя при этом модульность системы, чтобы пользователь мог установить только те модули, которые ему действительно необходимы.
Теперь, такие библиотеки как OpenCV, assimp, yaml-cpp, TinyXML и Eigen вынесены из ROS и устанавливаются в ОС стандартным образом, что позволяет использовать эти библиотеки и без ROS.

В ROS Electric многие низкоуровневые библиотки ROS были разделены на более мелкие компоненты, так что, у пользователей, опять же есть возможность использовать то, что нужно.

Arm navigation 1.0

Интерактивные маркеры (Interactive markers)


PCL 1.1

Обновлена версия библиотеки Point Cloud Library

OpenCV 2.3, standalone
Стек vision_opencv теперь интегрируется с «системной версией» OpenCV и обновляется до OpenCV 2.3.1

Android, Pure Java
Damon Kohler из Google создал новую библиотеку rosjava, которая написана только на Java и совместима с Android.

Arduino
Michael Ferguson и Adam Stambler создали новую библиотеку — rosserial, которая позволяет использовать Arduino совместно с ROS. Данная библиотека устанавливает соединение точка-точка (point-to-point connection) с контроллером Arduino так, что вы можете посылать сообщения ROS туда и обратно.

Windows
Daniel Stonier (Yujin Robot) поддерживает стек win_ros, который содержит библиотеки и инструменты для использования ROS под ОС Windows.

ARM
доступны бинарные Debian пакеты некоторых стеков ROS для систем на базе ARM (armel systems). Это позволит провести бинарную установку стеков ROS на такие платформы, как PandaBoard и Gumstix.

Python 3

Установка

Шаги по устанновке ROS Electric под Ubuntu Linux расписаны на официальном сайте:
www.ros.org/wiki/electric/Installation/Ubuntu

Установка Electric почти ничем не отличается от установки C turtle.
Установим на виртуальную машину VirtualBox, 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'
— добавляем адрес сервера ROS, чтобы менеджер пакетов знал откуда брать пакеты ROS

wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
— получим ключ

sudo apt-get update
— обновим список пакетов, тем самым сервер ROS.org будет проиндексирован

sudo apt-get install ros-electric-desktop-full
— собственно сама команда установки ROS Electric ( рекомендованная конфигурация Desktop-Full)

по традиции, приведу огромный список устанавливаемых пакетов:
$ sudo apt-get install ros-electric-desktop-full
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  assimp-dev autoconf automake autotools-dev blt cmake cmake-data comerr-dev
  debhelper doxygen doxygen-latex emacsen-common esound-common freeglut3
  freeglut3-dev gccxml graphviz html2text krb5-multidev lacheck latex-beamer
  latex-xcolor libaa1-dev libapr1 libapr1-dev libaprutil1 libaprutil1-dev
  libasound2-dev libassimp2 libatk1.0-dev libaudio-dev libaudio2
  libaudiofile-dev libaudiofile0 libavahi-client-dev libavahi-common-dev
  libavcodec-dev libavcodec52 libavformat-dev libavformat52 libavutil-dev
  libavutil50 libblas-dev libblas3gf libboost-all-dev libboost-date-time-dev
  libboost-date-time1.42-dev libboost-date-time1.42.0 libboost-dev
  libboost-filesystem-dev libboost-filesystem1.42-dev
  libboost-filesystem1.42.0 libboost-graph-dev libboost-graph1.42-dev
  libboost-graph1.42.0 libboost-iostreams-dev libboost-iostreams1.42-dev
  libboost-iostreams1.42.0 libboost-math-dev libboost-math1.42-dev
  libboost-math1.42.0 libboost-program-options-dev
  libboost-program-options1.42-dev libboost-program-options1.42.0
  libboost-python-dev libboost-python1.42-dev libboost-python1.42.0
  libboost-regex-dev libboost-regex1.42-dev libboost-regex1.42.0
  libboost-serialization-dev libboost-serialization1.42-dev
  libboost-signals-dev libboost-signals1.42-dev libboost-signals1.42.0
  libboost-system-dev libboost-system1.42-dev libboost-system1.42.0
  libboost-test-dev libboost-test1.42-dev libboost-test1.42.0
  libboost-thread-dev libboost-thread1.42-dev libboost-thread1.42.0
  libboost-wave-dev libboost-wave1.42-dev libboost-wave1.42.0
  libboost1.42-all-dev libboost1.42-dev libbz2-dev libcaca-dev
  libcairo-script-interpreter2 libcairo2-dev libcdt4 libcgraph5
  libcppunit-1.12-1 libcppunit-dev libcurl3 libcurl4-openssl-dev libdb4.8-dev
  libdbus-1-3 libdbus-1-dev libdrm-dev libeigen3-dev libesd0 libesd0-dev
  libexpat1-dev libfltk1.1 libfltk1.1-dev libfontconfig1-dev libfreeimage-dev
  libfreeimage3 libfreetype6 libfreetype6-dev libgdk-pixbuf2.0-dev
  libgfortran3 libgl1-mesa-dev libgl1-mesa-glx libgl2ps-dev libgl2ps0
  libglib2.0-dev libglu1-mesa libglu1-mesa-dev libglut3-dev libgraph4 libgsm1
  libgssapi-krb5-2 libgssrpc4 libgtest-dev libgtest0 libgtk2.0-dev libgvc5
  libgvpr1 libhdf5-serial-1.8.4 libhdf5-serial-dev libibverbs-dev libibverbs1
  libice-dev libicu-dev libidn11-dev libjasper-dev libjpeg62-dev libk5crypto3
  libkadm5clnt-mit7 libkadm5srv-mit7 libkdb5-4 libkms1 libkrb5-3 libkrb5-dev
  libkrb5support0 liblapack-dev liblapack3gf libldap2-dev liblog4cxx10
  liblog4cxx10-dev libltdl-dev libmail-sendmail-perl libmysqlclient-dev
  libmysqlclient16 libncurses5-dev libnetpbm10 libnetpbm10-dev libnuma1
  libogg-dev libopencv2.3 libopencv2.3-dev libopenmpi-dev libopenmpi1.3
  libpango1.0-dev libpathplan4 libpcre3-dev libpcrecpp0 libpixman-1-dev
  libpng12-0 libpng12-dev libpq-dev libpq5 libpthread-stubs0
  libpthread-stubs0-dev libpulse-browse0 libpulse-dev libpulse-mainloop-glib0
  libpulse0 libqhull-dev libqhull5 libschroedinger-1.0-0 libsdl-image1.2
  libsdl-image1.2-dev libsdl1.2-dev libslang2-dev libsm-dev libsqlite3-dev
  libssl-dev libsvn1 libswscale-dev libswscale0 libsys-hostname-long-perl
  libtheora-dev libtiff4-dev libtiffxx0c2 libtinyxml-dev libtinyxml2.5.3
  libtool libtorque2 libv4l-dev libva1 libvpx0 libvtk5-dev libvtk5.4
  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 libxext-dev
  libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2 libxml2-dev
  libxmlrpc-core-c3-0 libxmu-dev libxmu-headers libxpm-dev libxrandr-dev
  libxrender-dev libxss-dev libxt-dev libxxf86vm-dev libyaml-0-2 libyaml-dev
  libzzip-0-13 libzzip-dev lmodern luatex m4 mercurial mercurial-common
  mesa-common-dev mpi-default-dev mysql-common nvidia-cg-toolkit
  openmpi-common pgf po-debconf preview-latex-style prosper ps2eps pulseaudio
  pulseaudio-esound-compat pulseaudio-module-bluetooth pulseaudio-module-gconf
  pulseaudio-module-x11 pulseaudio-utils python-dateutil python-dev
  python-docutils python-epydoc python-jinja2 python-lxml python-matplotlib
  python-matplotlib-data python-numpy python-paramiko python-pygments
  python-pyparsing python-roman python-sip python-sip-dev python-sphinx
  python-tk python-tz python-wxgtk2.8 python-wxversion python-yaml
  python2.7-dev ros-electric-assimp ros-electric-bond-core ros-electric-bullet
  ros-electric-common ros-electric-common-msgs ros-electric-common-rosdeps
  ros-electric-common-tutorials ros-electric-diagnostics
  ros-electric-diagnostics-monitors ros-electric-documentation
  ros-electric-driver-common ros-electric-eigen ros-electric-executive-smach
  ros-electric-executive-smach-visualization ros-electric-filters
  ros-electric-geometry ros-electric-geometry-experimental
  ros-electric-geometry-tutorials ros-electric-geometry-visualization
  ros-electric-image-common ros-electric-image-pipeline
  ros-electric-image-transport-plugins ros-electric-laser-pipeline
  ros-electric-navigation ros-electric-nodelet-core
  ros-electric-orocos-kinematics-dynamics ros-electric-perception-pcl
  ros-electric-physics-ode ros-electric-pluginlib ros-electric-robot-model
  ros-electric-robot-model-tutorials ros-electric-robot-model-visualization
  ros-electric-ros ros-electric-ros-comm ros-electric-ros-tutorials
  ros-electric-rx ros-electric-simulator-gazebo ros-electric-simulator-stage
  ros-electric-slam-gmapping ros-electric-stage ros-electric-vision-opencv
  ros-electric-visualization ros-electric-visualization-common
  ros-electric-visualization-tutorials ros-electric-xacro subversion tcl8.5
  tcl8.5-dev 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
  tk8.5-dev 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-scrnsaver-dev x11proto-xext-dev x11proto-xf86vidmode-dev
  x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev yaml-cpp0.2.6-dev
  zlib1g-dev
Suggested packages:
  autoconf2.13 autoconf-archive gnu-standards autoconf-doc blt-demo dh-make
  doxygen-doc doxygen-gui esound-clients graphviz-doc krb5-doc auctex
  libasound2-doc nas libfaad-dev libgsm1-dev libschroedinger-dev libspeex-dev
  libvorbis-dev libraw1394-dev libdc1394-22-dev libboost1.42-doc docbook-xsl
  default-jdk fop libcairo2-doc libqttestrunner1c2a libcppunit-doc
  libcurl3-dbg db4.8-doc libeigen3-doc fltk1.1-doc fluid libpng12-0-dev
  libglib2.0-doc python-subunit krb5-user libgtk2.0-doc libhdf5-doc icu-doc
  liblog4cxx10-doc libtool-doc ncurses-doc libpango1.0-doc imagemagick
  postgresql-doc-8.4 sqlite3-doc libtinyxml-doc automaken gfortran
  fortran95-compiler gcj vtk-examples vtk-doc openmpi-bin lam-runtime
  wx2.8-doc libgnomeprintui2.2-0 wx-common xlibmesa-glu-dev libglu-dev qct
  wish vim emacs kdiff3 tkdiff meld xxdiff python-mysqldb libmail-box-perl
  pavumeter paman paprefs pulseaudio-module-raop texlive-lang-french
  epydoc-doc python-profiler python-jinja2-doc 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
  ttf-bitstream-vera jsmath tix python-tk-dbg wx2.8-examples python-wxtools
  ruby tcsh csh octave3.0 mksh pdksh python-xml editra subversion-tools
  db4.8-util tclreadline tcl8.5-doc perl-tk dvidvi fragmaster latexmk
  purifyeps xindy psutils t1utils texpower tk8.5-doc
The following NEW packages will be installed:
  assimp-dev autoconf automake autotools-dev blt cmake cmake-data comerr-dev
  debhelper doxygen doxygen-latex emacsen-common esound-common freeglut3
  freeglut3-dev gccxml graphviz html2text krb5-multidev lacheck latex-beamer
  latex-xcolor libaa1-dev libapr1 libapr1-dev libaprutil1 libaprutil1-dev
  libasound2-dev libassimp2 libatk1.0-dev libaudio-dev libaudio2
  libaudiofile-dev libaudiofile0 libavahi-client-dev libavahi-common-dev
  libavcodec-dev libavcodec52 libavformat-dev libavformat52 libavutil-dev
  libavutil50 libblas-dev libblas3gf libboost-all-dev libboost-date-time-dev
  libboost-date-time1.42-dev libboost-date-time1.42.0 libboost-dev
  libboost-filesystem-dev libboost-filesystem1.42-dev
  libboost-filesystem1.42.0 libboost-graph-dev libboost-graph1.42-dev
  libboost-graph1.42.0 libboost-iostreams-dev libboost-iostreams1.42-dev
  libboost-iostreams1.42.0 libboost-math-dev libboost-math1.42-dev
  libboost-math1.42.0 libboost-program-options-dev
  libboost-program-options1.42-dev libboost-program-options1.42.0
  libboost-python-dev libboost-python1.42-dev libboost-python1.42.0
  libboost-regex-dev libboost-regex1.42-dev libboost-regex1.42.0
  libboost-serialization-dev libboost-serialization1.42-dev
  libboost-signals-dev libboost-signals1.42-dev libboost-signals1.42.0
  libboost-system-dev libboost-system1.42-dev libboost-system1.42.0
  libboost-test-dev libboost-test1.42-dev libboost-test1.42.0
  libboost-thread-dev libboost-thread1.42-dev libboost-thread1.42.0
  libboost-wave-dev libboost-wave1.42-dev libboost-wave1.42.0
  libboost1.42-all-dev libboost1.42-dev libbz2-dev libcaca-dev
  libcairo-script-interpreter2 libcairo2-dev libcdt4 libcgraph5
  libcppunit-1.12-1 libcppunit-dev libcurl3 libcurl4-openssl-dev libdb4.8-dev
  libdbus-1-dev libdrm-dev libeigen3-dev libesd0 libesd0-dev libexpat1-dev
  libfltk1.1 libfltk1.1-dev libfontconfig1-dev libfreeimage-dev libfreeimage3
  libfreetype6-dev libgdk-pixbuf2.0-dev libgfortran3 libgl1-mesa-dev
  libgl2ps-dev libgl2ps0 libglib2.0-dev libglu1-mesa-dev libglut3-dev
  libgraph4 libgsm1 libgssrpc4 libgtest-dev libgtest0 libgtk2.0-dev libgvc5
  libgvpr1 libhdf5-serial-1.8.4 libhdf5-serial-dev libibverbs-dev libibverbs1
  libice-dev libicu-dev libidn11-dev libjasper-dev libjpeg62-dev
  libkadm5clnt-mit7 libkadm5srv-mit7 libkdb5-4 libkms1 libkrb5-dev
  liblapack-dev liblapack3gf libldap2-dev liblog4cxx10 liblog4cxx10-dev
  libltdl-dev libmail-sendmail-perl libmysqlclient-dev libmysqlclient16
  libncurses5-dev libnetpbm10 libnetpbm10-dev libnuma1 libogg-dev libopencv2.3
  libopencv2.3-dev libopenmpi-dev libopenmpi1.3 libpango1.0-dev libpathplan4
  libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libpq-dev libpq5
  libpthread-stubs0 libpthread-stubs0-dev libpulse-dev libqhull-dev libqhull5
  libschroedinger-1.0-0 libsdl-image1.2 libsdl-image1.2-dev libsdl1.2-dev
  libslang2-dev libsm-dev libsqlite3-dev libssl-dev libsvn1 libswscale-dev
  libswscale0 libsys-hostname-long-perl libtheora-dev libtiff4-dev
  libtiffxx0c2 libtinyxml-dev libtinyxml2.5.3 libtool libtorque2 libv4l-dev
  libva1 libvpx0 libvtk5-dev libvtk5.4 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 libxext-dev libxfixes-dev
  libxft-dev libxi-dev libxinerama-dev libxml2-dev libxmlrpc-core-c3-0
  libxmu-dev libxmu-headers libxpm-dev libxrandr-dev libxrender-dev libxss-dev
  libxt-dev libxxf86vm-dev libyaml-0-2 libyaml-dev libzzip-0-13 libzzip-dev
  lmodern luatex m4 mercurial mercurial-common mesa-common-dev mpi-default-dev
  mysql-common nvidia-cg-toolkit openmpi-common pgf po-debconf
  preview-latex-style prosper ps2eps python-dateutil python-dev
  python-docutils python-epydoc python-jinja2 python-lxml python-matplotlib
  python-matplotlib-data python-numpy python-paramiko python-pygments
  python-pyparsing python-roman python-sip python-sip-dev python-sphinx
  python-tk python-tz python-wxgtk2.8 python-wxversion python-yaml
  python2.7-dev ros-electric-assimp ros-electric-bond-core ros-electric-bullet
  ros-electric-common ros-electric-common-msgs ros-electric-common-rosdeps
  ros-electric-common-tutorials ros-electric-desktop-full
  ros-electric-diagnostics ros-electric-diagnostics-monitors
  ros-electric-documentation ros-electric-driver-common ros-electric-eigen
  ros-electric-executive-smach ros-electric-executive-smach-visualization
  ros-electric-filters ros-electric-geometry
  ros-electric-geometry-experimental ros-electric-geometry-tutorials
  ros-electric-geometry-visualization ros-electric-image-common
  ros-electric-image-pipeline ros-electric-image-transport-plugins
  ros-electric-laser-pipeline ros-electric-navigation
  ros-electric-nodelet-core ros-electric-orocos-kinematics-dynamics
  ros-electric-perception-pcl ros-electric-physics-ode ros-electric-pluginlib
  ros-electric-robot-model ros-electric-robot-model-tutorials
  ros-electric-robot-model-visualization ros-electric-ros
  ros-electric-ros-comm ros-electric-ros-tutorials ros-electric-rx
  ros-electric-simulator-gazebo ros-electric-simulator-stage
  ros-electric-slam-gmapping ros-electric-stage ros-electric-vision-opencv
  ros-electric-visualization ros-electric-visualization-common
  ros-electric-visualization-tutorials ros-electric-xacro subversion tcl8.5
  tcl8.5-dev 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
  tk8.5-dev 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-scrnsaver-dev x11proto-xext-dev x11proto-xf86vidmode-dev
  x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev yaml-cpp0.2.6-dev
  zlib1g-dev
The following packages will be upgraded:
  libdbus-1-3 libfreetype6 libgl1-mesa-glx libglu1-mesa libgssapi-krb5-2
  libk5crypto3 libkrb5-3 libkrb5support0 libpng12-0 libpulse-browse0
  libpulse-mainloop-glib0 libpulse0 libxml2 pulseaudio
  pulseaudio-esound-compat pulseaudio-module-bluetooth pulseaudio-module-gconf
  pulseaudio-module-x11 pulseaudio-utils
19 upgraded, 359 newly installed, 0 to remove and 216 not upgraded.
Need to get 974 MB of archives.
After this operation, 2,619 MB of additional disk space will be used.

Чтож, по сравнению с C turtle, аппетиты уменьшились с 1,650MB до 974MB, что не может не радовать.
Но размеры всё же оставляют впечатление монстрообразности ROS. С другой стороны, видно, что основная масса установки — это различные системные библиотеки, которые просто необходимы для работы ROS, а сами пакеты ROS Electric (ros-electric-*.deb) весят всего 324MB.

После установки ROS находится в директории /opt/ros/electric/ — как видите у Electric свой подкаталог в директории /opt/ros/, что позволяет устанавливать на одну ОС несколько версий ROS.

Почему-то файлы setup в /opt/ros/electric/ не заданы исполняемыми — исправляем:
sudo chmod +x /opt/ros/electric/setup.*

Остаётся прописать установку переменных окружения ROS, при начале новой сессии bash:
echo "source /opt/ros/electric/setup.bash" >> ~/.bashrc


Открываем новый терминал и для проверки запускаем
roscore


Вот и всё!
ROS Electic установлена и можно перейти к изучению ROS!

По теме:
Робософт — обзор существующих решений
ROS — Robot Operating System
Дистрибутивы ROS
ROS — установка (ROS C turtle)
  • +1
  • 27 ноября 2011, 10:30
  • noonv

Комментарии (7)

RSS свернуть / развернуть
+
+2
«и лаже Windows» — некоторые ошибки лучше не поправлять :)
avatar

master

  • 27 ноября 2011, 12:59
+
+1
прямо по Фрейду :)
avatar

noonv

  • 27 ноября 2011, 15:16
+
0
Я не понял… «а так же расширяет поддержку новых платформ, таких как Android и Arduino.» ROS на ARDUINO? Как? Даже у МЕГА 8 кб ОПЕРАТИВЫ только. Просвятите, плиз, по поводу РОС + АРДУИНО.
avatar

MAFia

  • 7 декабря 2011, 17:31
+
0
ниже в статье, есть целый абзац, который объясняет, что была добавлена библиотека rosserial.
avatar

noonv

  • 7 декабря 2011, 17:58
+
0
Честно говоря не могу понять, что такое ROS и для чего это вообще…
avatar

blackhand999

  • 13 декабря 2011, 15:27
+
0
скоро расскажу )
avatar

noonv

  • 13 декабря 2011, 18:20
+
0
avatar

admin

  • 31 января 2012, 08:40

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.