1.新建一个功能包
首先需要创建工作空间和src文件夹
然后进入src 路径,创建一个单独的服务接口的功能包 ,在终端输入以下代码:
ros2 pkg create --build-type ament_cmake map_srv_interfaces
2.创建自定义srv文件
在功能包内创建srv文件夹,并在其内创建自定义服务接口
将以下形式的内容写入.srv文件中, ---将reqeust和response隔开
string name
---
bool success
3.编辑CMakeLists.txt文件
将定义的接口转换为具体编程语言的代码(如C++和python),以便可以在这些语言中使用这些接口,需要在CMakeLists.txt文件中添加以下几行:
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"srv/CreateMap.srv"
"srv/MapSwitch.srv"
"srv/ModeSwitch.srv"
)
4.编辑package.xml文件
添加以下内容
<build_depend>rosidl_default_generators</build_depend>
<exec_depend>rosidl_default_runtime</exec_depend>
<member_of_group>rosidl_interface_packages</member_of_group>
5.编译
colcon build
source 一下,然后用ros2 interface list 查看自定义服务接口是否存在
6.在c_cpp_properties.json文件中 设置头文件包含路径
经过编译成功后,自定义服务接口的头文件会自动生成,路径如下:
在“includePath”字段中输入自定义接口的Include路径:
"/home/ros/Desktop/LAY/demo/ROS2_srv_ws/install/map_srv_interfaces/include/"
设置完成后即可在cpp文件中识别对应服务接口的头文件
7. 使用接口程序的 CMakeList.txt文件设置:
在以下红线位置添加map_srv_interfaces的依赖