Criar pacote de recursos
Crie um espaço de trabalho e, em seguida, crie um pacote de funções na pasta src
~$ mkdir -p catkin_ws/src
~$ cd catkin_ws/src
~/catkin_ws/src$ catkin_create_pkg 功能包名称 依赖包名称列表(roscpp rospy std_msgs等)
O comando catkin_create_pkg gera o arquivo CMakeLists.txt e o arquivo package.xml, bem como o diretório de inclusão e o diretório src exigidos pelo sistema de compilação catkin ao criar um pacote de funções.
~/catkin_ws/src$ ls 功能包名称
CMakeLists.txt include package.xml src
CMakeLists.txt 文件
O arquivo CMakeLists.txt pode ser usado para definir a criação de arquivos executáveis, a criação de prioridade de pacotes dependentes e a criação de vinculadores.
cmake_minimum_required(VERSION 2.8.3)
project(功能包名称)
find_package(catkin REQUIRED COMPONENTS
依赖包
)
add_message_files(
FILES #将引用当前功能包目录下的msg目录中的指定msg文件
custommsg.msg
)
add_service_files(
FILES #将引用当前功能包目录下的srv目录中的指定srv文件
customsrv.srv
)
generate_message(
DEPENDENCIES #将DEPENDENCIES选项设置为使用std_msgs消息包
std_msgs
)
include_directories(
${
catkin_INCLUDE_DIRS}
)
add_executable(可执行文件名称 src/文件名.cpp) #引用src目录中的指定文件生成可执行文件
target_link_libraries(可执行文件名称 ${
catkin_LIBRARIES}) #将库和可执行文件进行链接
arquivo package.xml
O arquivo package.xml é um arquivo de configuração ROS necessário escrito no formato de codificação XML, incluindo o nome do pacote de funções, autor, licença e informações do pacote dependente.
<?xml version="1.0"?>
<package format="2">
<name>功能包名称</name>
<version>0.0.0</version>
<description>The 功能包名称 package</description>
<maintainer email="系统用户名@todo.todo">系统用户名</maintainer>
<license>TODO</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>依赖包</build_depend>
<build_export_depend>依赖包</build_export_depend>
<exec_depend>依赖包</exec_depend>
</package>
Exemplo simples
1. Crie um diretório de trabalho e insira o diretório src
~$ mkdir -p catkin_ws/src
~$ cd catkin_ws/src
2. Crie um pacote de funções, insira o diretório src nele e crie um arquivo c ++
~/catkin_ws/src$ catkin_create_pkg beginner roscpp
~/catkin_ws/src$ cd beginner/src
~/catkin_ws/src/beginner/src$ vim hello.cpp
3. Escreva um programa simples, dê saída hello, world
#include <ros/ros.h>
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
ros::init(argc, argv, "hello");
cout << "hello,world" << endl;
return 0;
}
4. Adicione a seguinte declaração no final do arquivo CMakeLists.txt
add_executable(hello src/hello.cpp)
target_link_libraries(hello ${
catkin_LIBRARIES})
5. Retorne ao diretório de trabalho de nível superior e construa o sistema
~/catkin_ws$ catkin_make
6. Primeiro, inicie o nó mestre
~/catkin_ws$ roscore
Em seguida, execute o nó
~/catkin_ws$ rosrun beginner hello
hello,world
Se o seguinte erro ocorrer ao executar o nó
~/catkin_ws$ rosrun beginner hello
[rospack] Error: package 'beginner' not found
Execute o seguinte comando para resolver
~/catkin_ws$ source ./devel/setup.bash