ROS不是传统意义上的操作系统,不是用于进程管理和调度,而是构建在其它操作系统之上的一种结构化的通讯层。
一、自定义msg
1.定义msg文件
功能包下新建msg目录,添加文件Person.msg。
string name
uint16 age
float64 height
2.编辑配置文件package.xml
package.xml中添加编译依赖与执行依赖。
message_generationbuild_depend>
message_runtimeexec_depend>
3.CMakeLists.txt编辑msg相关配置
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
# 需要加入 message_generation,必须有 std_msgs
## 配置 msg 源文件
add_message_files(
FILES
Person.msg
)
# 生成消息时依赖于 std_msgs
generate_messages(
DEPENDENCIES
std_msgs
)
#执行时依赖
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES demo02_talker_listener
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
# DEPENDS system_lib
)
4.python
Python需要调用的中间文件在(…/工作空间/devel/lib/python3/dist-packages/包名/msg/xxx.py)
二、自定义srv
1 定义srv文件
服务通信中,数据分成两部分,请求与响应,在srv文件中请求和响应使用—分割。
功能包下新建srv目录,添加xxx.srv文件,内容:
# 客户端请求时发送的两个数字
int32 num1
int32 num2
---
# 服务器响应发送的数据
int32 sum
2.编辑配置文件package.xml
package.xml中添加编译依赖与执行依赖
message_generationbuild_depend>
message_runtimeexec_depend>
3.CMakeLists.txt编辑srv相关配置
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
message_generation
)
# 需要加入 message_generation,必须有 std_msgs
add_service_files(
FILES
AddInts.srv
)
generate_messages(
DEPENDENCIES
std_msgs
)
三、参数服务器
rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数。
rosparam set 设置参数
rosparam get 获取参数
rosparam load 从外部文件加载参数
rosparam dump 将参数写出到外部文件
rosparam delete 删除参数
rosparam list 列出所有参数
- rosparam set设置参数
rosparam set name huluwa23
//再次调用 rosparam list 结果
/name
- rosparam get获取参数
rosparam get name23
//结果
huluwa
- rosparam load(先准备yaml文件)从外部文件加载参数
rosparam load xxx.yaml
- rosparam dump将参数写出到外部文件
rosparam dump yyy.yaml