ros系统强大的功能之一便是进程间可以方便的相互通信
实现这一功能的是ros提供的消息msg和服务srv
1.创建工程空间
2.创建软件包
3.创建服务文件
4.编辑配置文件 package.xml和CMakeLists.txt
1.创建工程空间
创建ros工程空间 mkdir -p ~/your_ros_ws_name/src
进入工程空间文件夹 cd ~/your_ros_ws_name
编译空工程空间 catkin_make
加载工程空间的配置文件 source ~/your_ros_ws_name/devel/setup.bash
2.创建软件包
进入目录 cd ~/your_ros_ws_name/src
创建自定义的软件包 catkin_create_pkg your_pkg_name [dependency_params]
例子:catkin_creaete_pkg learn_ros rospy roscpp std_msgs
依赖项分别是 rospy ----python相关 roscpp ----c++相关 std_msgs ---- 标准消息
执行创建软件包指令时,ros系统会创建package.xml和CmakeLists.txt并将依赖项添加入package.xml中。
3.创建自定义ros服务
进入待创建服务的软件包路径
可以通过roscd your_pkg_name 进入软件包目录
前提是已经加载了所在工程空间的配置文件 source ~/your_ros_ws_name/devel/setup.bash
在软件包中创建srv文件夹,用于保存服务文件 mkdir srv
进入文件夹 cd srv
创建服务文件 touch your_srv_name.srv
编辑内容 vi your_srv_name.srv
srv文件的格式
类型 请求名
---
类型 响应名
举例
string request
---
string respond
在package.xml中添加依赖,软件包内的package.xml
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
在CMakeLists.txt中修改
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
add_service_files(
FILES
your_srv_name.srv
)
generate_messages(
DEPENDENCIES
std_msgs
)
退回到工程空间根目录进行编译 catkin_make
测试 交互式python中进行[前提是已经加载了所在工程空间的配置文件 source ~/your_ros_ws_name/devel/setup.bash]
1.python
2.import rospy
3.from your_pkg_name.srv import your_srv_name
>>>
# 交互时执行过程中无报错----ok