Создание пакета

Создание простого пакета

На данный момент мы познакомились с файловой структурой пакетов и научились их устанавливать.

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

В принципе, создать пакет можно и "руками" правильно написав файлы CMakeLists.txt и package.xml. Но проще это все делать при помощи утилиты catkin_create_pkg,она сама создаст необходимые файлы и директории и пропишет зависимости.

Все операции с пакетами мы будет производить в нашей рабочей директории catkin_ws

Перейдем в директорию, где расположены исходники пакетов

cd ~/catkin_ws/src

И теперь создадим наш пакет, где my_first_package - это название нашего первого пакета

catkin_create_pkg my_first_package 
===
Created file my_first_package/package.xml
Created file my_first_package/CMakeLists.txt
Successfully created files in /home/cola/catkin_ws/src/my_first_package. Please adjust the values in package.xml.

Мы увидим, что созданы все минимально необходимые файлы.

ls my_first_package
===
CMakeLists.txt  package.xml

Далее мы можем его установить в нашу систему, выполнив catkin_make

cd ../
catkin_make --pkg=my_first_package

Проверим, что ROS правильно видит наш новый пакет

rospack find my_first_package
===
/home/cola/catkin_ws/src/my_first_package

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

Работа с зависимостями

Обычно при создании пакета мы уже знаем, какие пакеты ROS нам понадобятся. Для того, чтобы нам в ручном режиме не редактировать файлы описания настроек пакета package.xml и CMakeLists.txt, нам проще сразу создать пакет, указав все зависимости.

Синтаксис создания пакета с указанием зависимостей

catkin_create_pkg [package_name] [depend1] [depend2] [depend3]

Создадим пакет my_package указав зависимости std_msgs, rospy ,actionlib_msgs, message_generation, message_runtime

cd ~/catkin_ws/src
catkin_create_pkg my_package std_msgs rospy actionlib_msgs message_generation message_runtime

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

Мы можем увидеть, что в новом пакете в файле package.xml появились новые строчки описания зависимостей

<build_depend>actionlib_msgs</build_depend>
<build_depend>message_generation</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>actionlib_msgs</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>actionlib_msgs</exec_depend>
<exec_depend>message_runtime</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>

Также в файле CMakeLists.txt появились новые команды сборки

find_package(catkin REQUIRED COMPONENTS
   actionlib_msgs
   message_generation
   message_runtime
   rospy
   std_msgs
 )

Соберем наш новый пакет

cd ~/catkin_ws
catkin_make --pkg=my_package

Проверим список зависимостей пакета

rospack depends my_package
===
catkin
genmsg
gencpp
geneus
gennodejs
genlisp
genpy
message_generation
cpp_common
rostime
roscpp_traits
roscpp_serialization
message_runtime
std_msgs
actionlib_msgs
rosbuild
rosconsole
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
ros_environment
rospack
roslib
rospy

Мы видим явно больше зависимостей, чем мы указали при создании пакета. Но на самом деле мы увидели полный список всех необходимых пакетов. Включая зависимости к тем пакетам, которые мы выбрали при создании.

results matching ""

    No results matching ""