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 расписаны на официальном сайте:
http://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)
0 комментариев на «“ROS Electric — обзор и установка”»
«и лаже Windows» — некоторые ошибки лучше не поправлять 🙂
прямо по Фрейду 🙂
Я не понял… «а так же расширяет поддержку новых платформ, таких как Android и Arduino.» ROS на ARDUINO? Как? Даже у МЕГА 8 кб ОПЕРАТИВЫ только. Просвятите, плиз, по поводу РОС + АРДУИНО.
ниже в статье, есть целый абзац, который объясняет, что была добавлена библиотека rosserial.
Честно говоря не могу понять, что такое ROS и для чего это вообще…
скоро расскажу )