Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ROS-KUBUNTU-install

.pdf
Скачиваний:
13
Добавлен:
01.06.2015
Размер:
1.67 Mб
Скачать

Воробьев В.В., Моисеев А.И.

22.08.2014

 

Установка ROS

 

 

Рабочий отчет RWR-2014-05-02.3

 

Содержание

 

Установка ROS Hydro ..............................................................................................................

2

Установка ROS Indigo..............................................................................................................

4

Создание рабочего окружения.............................................................................................

4

Написание первой программы под ROS..............................................................................

5

Примеры взаимодействующих программ............................................................................

9

Приложение 1. Что такое ROS. Основные понятия..............................................................

11

Приложение 2.

Создание загрузочной флешки USB под Windows......................................

12

Приложение 3.

Установка Kubuntu........................................................................................

14

Приложение 4.

Импорт пакета ROS в среду разработки QtCreator......................................

16

Источники...............................................................................................................................

 

18

RWR-2014-05-02.3

1

Установка ROS Hydro

В этом разделе описывается установка ROS Hydro в дистрибутивах, использующих пакетную базу Ubuntu.

Оригинальный источник: http://wiki.ros.org/hydro/Installation/Ubuntu

Шаг 1. Определите версию пакетной базы, которую использует ваш дистрибутив. ROS Hydro поддерживает версии Precise (соответствует Ubuntu 12.04, выпуск с длительным сроком поддержки), Quantal (12.10) и Raring (13.04).

Получить информацию о версии установленной системы можно с помощью команды:

lsb_release -a

Шаг 2. Добавление репозитория ROS выполняется с помощью одной из ниже перечисленных команд, после чего потребуется ввод пароля суперпользователя.

Ubuntu 12.04 (Precise):

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

Ubuntu 12.10 (Quantal):

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

Ubuntu 13.04 (Raring):

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

Шаг 3. Добавьте сертификат для проверки подлинности пакетов в репозитории:

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

Шаг 4. Обновите список доступных для загрузки пакетов:

sudo apt-get update

Шаг 5. Установите необходимые пакеты.

Мета-пакет ros-desktop-full содержит большинство основных библиотек и утилит, таких как ros-comm, rviz, rqt, библиотеки и узлы для навигации, компьютерного зрения, симуляции и др. Установка выполняется командой:

sudo apt-get install ros-hydro-desktop-full

Примечание. Эта процедура занимает достаточно много времени. При установке на все вопросы отвечайте «да» (y).

Опционально. Для установки минимального набора компонентов (только система сборки, пакетный менеджер, средства коммуникации, без библиотек и GUIутилит):

RWR-2014-05-02.3

2

sudo apt-get install ros-hydro-ros-base

Опционально. Поиск остальных пакетов в репозиториях осуществляется с помощью утилиты apt-cache:

apt-cache search "часть имени искомого пакета"

Шаг 6. Перед запуском приложений ROS необходимо инициализировать систему контроля зависимостей rosdep:

sudo rosdep init && rosdep update

Шаг 7. Установленное окружение ROS необходимо зарегистрировать в командной оболочке:

source /opt/ros/hydro/setup.bash

Выполнение данной команды сохраняет эффект только в рамках активной сессии. Для того, чтобы она выполнялась при открытии каждой новой сессии, добавьте ее в конец файла .bashrc (расположен в корне домашней директории) с помощью любого текстового редактора, либо с помощью команды:

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

Для проверки активности рабочего окружения ROS в текущей сессии, можно проверить, определены ли переменные среды:

export | grep ROS

На экран должны быть выведены значения переменных ROS_ROOT, ROS_PACKAGE_PATH и других:

robolab@robolab-desktop:~$ export | grep ROS declare -x ROSLISP_PACKAGE_DIRECTORIES="" declare -x ROS_DISTRO="hydro"

declare -x ROS_ETC_DIR="/opt/ros/hydro/etc/ros" declare -x ROS_MASTER_URI="http://localhost:11311"

declare -x ROS_PACKAGE_PATH="/opt/ros/hydro/share:/opt/ros/hydro/stacks" declare -x ROS_ROOT="/opt/ros/hydro/share/ros"

Опционально: Для того, чтобы переменные среды ROS существовали в рамках сессии рабочего окружения KDE, необходимо поместить подобную команду в файл с расширением .sh и разместить его в ~/.kde/env, только вместо setup.bash необходимо использовать setup.sh.

Шаг 8. Опционально. Для установки некоторых пакетов может потребоваться утилита rosinstall. Ее установка выполняется аналогично установке ROS и системных пакетов.

Например:

sudo apt-get install python-rosinstall

RWR-2014-05-02.3

3

Установка ROS Indigo

Здесь все аналогично.

Оригинальный источник: http://wiki.ros.org/indigo/Installation/Ubuntu

Вкратце, шаги установки выглядят так:

Шаг 1. Определение версии пакетной базы.

lsb_release –a

Шаг 2. Добавление репозитория ROS:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" >

/etc/apt/sources.list.d/ros-latest.list'

Шаг 3. Добавление сертификата:

wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O -

| sudo apt-key add -

Шаг 4. Обновление списка доступных для загрузки пакетов:

sudo apt-get update

Шаг 5. Установка пакетов (длительная процедура).

sudo apt-get install ros-indigo-desktop-full

Шаг 6. Инициализация системы контроля зависимостей rosdep:

sudo rosdep init

rosdep update

Шаг 7. Установка окружения ROS:

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

source ~/.bashrc

Шаг 8. Опционально. Установка утилиты rosinstall:

sudo apt-get install python-rosinstall

Создание рабочего окружения

Для размещения собственных проектов рекомендуется создавать отдельное рабочее пространство. Это позволяет не пересекаться с рабочим пространством, установленным из бинарных пакетов.

Шаг 1. В командной оболочке перейдите в директорию, в которой хотите разместить свое

RWR-2014-05-02.3

4

рабочее окружение. Убедитесь в том, что у вас достаточно прав для работы с этой директорией.

Шаг 2. Создайте корневую директорию рабочего окружения (она может иметь любое имя, в данном случае это my_ros_workspace), а затем внутри нее директорию с названием src. Это действие можно выполнить одной командой:

mkdir -p my_ros_workspace/src

Шаг 3. Перейдите в свежесозданную директорию и инициализируйте рабочее пространство:

cd my_ros_workspace/src

catkin_init_workspace

Шаг 4. После этого рабочее окружение можно собрать, вернувшись в его корень (в данном случае – в директорию my_ros_workspace):

cd ..

catkin_make

Шаг 5. После сборки в директории появятся каталоги build и devel. Директория devel содержит файл setup.bash, назначение и принцип использования которого аналогичны файлу, описанному в п. 7 «Установка ROS» (см. выше):

source devel/setup.bash

Как и в прошлом случае, для автоматической регистрации окружения в командной оболочке, необходимо добавить обработку этого файла в конец .bashrc. Путь до setup.bash должен быть абсолютным (в последнем примере он является относительным к рабочем каталогу my_ros_workspace):

echo "source <путь до рабочего окружения>/my_ros_workspace/devel/setup.bash" >> ~/.bashrc

Например:

echo "source ~/my_ros_workspace/devel/setup.bash" >> ~/.bashrc

Написание первой программы под ROS

Шаг 1. Перейдите в созданную на прошлом этапе директорию рабочего окружения:

cd my_ros_workspace/src

Шаг 2. Запустите утилиту создания проекта с указанием названия пакета и списком зависимостей. Для проекта на языке C++ стоит указать в зависимостях библиотеку roscpp, реализующую взаимодействие с другими процессами по протоколам ROS, а также std_msgs для передачи базовых типов данных:

RWR-2014-05-02.3

5

catkin_create_pkg my_package roscpp std_msgs

В созданной директории (зайти в my_package: cd my_package) будут находиться файлы package.xml и CMakeLists.txt. (не путать с CMakeLists.txt, который расположен в корне рабочего пространства). Параметры пакета изменяются через них.

robolab@robolab-desktop:~/my_ros/src$ catkin_create_pkg my_package roscpp std_msgs

Created file my_package/package.xml

Created file my_package/CMakeLists.txt

Created folder my_package/include/my_package

Created folder my_package/src

Successfully created files in /home/robolab/my_ros/src/my_package. Please adjust the values in package.xml.

robolab@robolab-desktop:~/my_ros/src$ ls

CMakeLists.txt my_package

robolab@robolab-desktop:~/my_ros/src$ cd my_package robolab@robolab-desktop:~/my_ros/src/my_package$ ls

CMakeLists.txt include package.xml src

Шаг 3. В файле package.xml напишите небольшое описание того, что пакет должен делать. Описание располагается внутри тега <description>.

Редактируем файл package.xml с помощью текстового редактора, например, с помощью vim:

vim package.xml

В файле CMakeLists.txt, который находится в src/my_package, задекларируйте исполняемый файл с указанием единиц трансляции, из которых он будет линковаться. В качестве заготовок в нем уже содержаться закомментированные строки. Найдите закомментированный вызов процедуры add_executable и расскомментируйте его:

## Declare a cpp executable

add_executable(my_package_node src/my_package_node.cpp)

Эта функция собирает исполняемый файл my_package_node из файла my_package_node.cpp, расположенного в src.

Также раскомментируйте строку с подключением каталогов с заголовочными файлами:

##Specify additional locations of header files

##Your package locations should be listed before other locations include_directories(include)

Для связывания библиотек раскомментируйте данную заготовку:

## Specify libraries to link a library or executable target against

target_link_libraries(my_package_node ${catkin_LIBRARIES} boost_math

RWR-2014-05-02.3

6

opencv_core)

Шаг 4. Создайте указанные в параметрах add_executable() файлы с вашей программой – для примеров выше это будет файл my_package_node.cpp в директории src. Ниже приведен пример программы, отправляющей в топик сообщения с типом std_msgs::String и текстами «hello world 1», «hello world 2» и далее с частотой 10

герц:

#include <ros/ros.h> #include <std_msgs/String.h>

#include <sstream>

int main(int argc, char **argv)

{

/* Инициализация узла с именем по-умолчанию my_node */ ros::init(argc, argv, "my_node");

ros::NodeHandle n;

/* Создание топика с названием my_topic, второй параметр - * объем кэша отправки (кол-ве элементов) */ ros::Publisher chatter_pub = n.advertise<std_msgs::String>("my_topic", 256);

/* "Умный" delay */ ros::Rate loop_rate(10); int count = 0;

while (ros::ok())

{

std_msgs::String msg; std::stringstream ss;

ss << "hello world " << count; msg.data = ss.str();

/* Макрос для вывода информации в отладочную консоль */ ROS_INFO("%s", msg.data.c_str());

/* Отправка сообщения в топик */ chatter_pub.publish(msg);

/* Проведение одной итерации цикла обработки событий * (таких, как входящие сообщения, запросы и т.д.) */ ros::spinOnce();

/* "Умный" delay */ loop_rate.sleep(); ++count;

}

return 0;

}

Шаг 5. Скомпилируйте созданную программу. Для этого необходимо вернуться в корень рабочего пространства (в примере: директория my_ros_workspace) и запустить оттуда систему сборки catkin:

RWR-2014-05-02.3

7

catkin_make

Примечание. При этом собираются все пакеты в рабочем пространстве с проверкой зависимостей.

Если компиляция прошла успешно, программу можно запускать с помощью утилиты rosrun. Только для начала необходимо запустить мастер-сервер ROS (желательно в отдельной терминальной сессии – например, в новом окне консоли):

roscore

robolab@robolab-desktop:~$ roscore

... logging to /home/robolab/.ros/log/1834a378-6a34-11e3-9166-0013d40547e9/roslaunch-robolab- desktop-7393.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://robolab-desktop:52570/ ros_comm version 1.9.50

SUMMARY

========

PARAMETERS

*/rosdistro

*/rosversion

NODES

auto-starting new master process[master]: started with pid [7407]

ROS_MASTER_URI=http://robolab-desktop:11311/

setting /run_id to 1834a378-6a34-11e3-9166-0013d40547e9 process[rosout-1]: started with pid [7420]

started core service [/rosout]

RWR-2014-05-02.3

8

После этого запускаем нашу программу в том самом рабочем терминале, где мы были сначала. Первым параметром rosrun выступает название пакета, содержащего программу, вторым – имя исполняемого файла:

rosrun my_package my_package_node

Примечание. Возможно, придётся перезапускать консоль.

Шаг 6. Контролировать работу процессов можно с помощью различных команд (в новой консоли):

rosnode list

Выводит на экран список активных процессов-узлов.

robolab@robolab-desktop:~$ rosnode list /my_node

/rosout

rostopic list

Вывод на экран списка всех топиков.

robolab@robolab-desktop:~$ rostopic list /my_topic

/rosout /rosout_agg

rostopic echo <имя топика>

Вывод на экран в реальном времени приходящих в топик сообщений.

rosnode kill <имя узла>

Завершение работы указанного процесса.

robolab@robolab-desktop:~$ rosnode kill my_node killing /my_node

killed

Примеры взаимодействующих программ

/* Пример программы, посылающей сообщения в топик*/

#include "ros/ros.h" #include "std_msgs/String.h" #include <sstream>

int main(int argc, char **argv)

{

ros::init(argc, argv, "talker"); ros::NodeHandle n;

ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter",1000); ros::Rate loop_rate(10);

int count = 0; while(ros::ok())

{

std_msgs::String msg; std::stringstream ss;

ss << "hello world "<< count; msg.data = ss.str(); ROS_INFO("%s", msg.data.c_str()); chatter_pub.publish(msg); ros::spinOnce(); loop_rate.sleep();

++count;

}

return 0;

RWR-2014-05-02.3

9

}

/* Пример программы, читающей сообщения из топика*/

#include "ros/ros.h" #include "std_msgs/String.h"

void chatterCallback(const std_msgs::String::ConstPtr& msg)

{

ROS_INFO("I heard: [%s]", msg->data.c_str());

}

int main(int argc, char **argv)

{

ros::init(argc, argv, "listener"); ros::NodeHandle n;

ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback); ros::spin();

return 0;

}

Примечание

Большое число часто используемых библиотек устанавливается системным пакетным менеджером в качестве зависимостей во время установки ROS (Boost, Assimp, PCL и др.). Часть библиотек (например, OpenCV), нужно устанавливать отдельно (ROS локально устанавливает OpenCV определенной версии для своих нужд). Например, установка OpenCV из репозитория осуществляется командой:

$ sudo apt-get install libopencv-dev

Или можно воспользоваться утилитой muon.

Не поленитесь сделать это, несмотря на то, что ROS Hydro, вроде бы, имеет в своем составе кучу библиотек, тот же OpenCV. Однако эти библиотеки используются для “внутренних нужд” ROS, поэтому рассчитывать на них не стоит.

RWR-2014-05-02.3

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]