ros笔记(二)通信

一.什么是工作空间

工作空间(workplace)是一个存放工程开发相关文件的文件

src:代码空间,源码

build:编译空间,中间文件(使用很少)

devel:开发空间(可执行文件,脚本等  常用)

install:安装空间(与devel基本一致,ros2与devel是一个)

二.创作工作空间
创建工作空间
$ mkdir -p ~/catlin_ws/src
$ cd ~/catlin_ws/src
$ catkin_init_workspace
编译工作空间
$  cd ~/catkin_ws

$  catkin_make

设置环境变量

$ source devel/setup.bash

检查环境变量  

 $ echo $ROS_PACKAGE_PATH

三.创建功能包

$   cd  ~/catkin_ws/src

$   catkin_create_pkg  learning_communication std_msgs rospy roscpp

$  catkin_make

$   source  ~/catkin_ws/devel/setup.bash

同一个工作空间下不能有同名功能包
不同工作空间允许

1.工作空间的覆盖

$  env grep | ros

工作空间的路径依次在ROS_PACKAGE_PATH环境变量中记录

新设置的路径会在ROS_PACKAGE_PATH中自动放在最前端

运行时,ros会优先查找最前端的工作空间中是否存在指定的功能包

如果不存在就依次向后查找其他工作空间

2.1ros通讯编程-话题编程

流程:

创建发布者

创建订阅者

添加编译选项

运行可执行程序

如何实现发布者:

初始化ros节点

向ROS MASTER 注册节点信息,包括发布的话题名和话题中的消息类型

按照一定频率发布

如何实现一个订阅者:

初始化ros节点

订阅需要的话题

循环等待话题消息接收到消息后进入回调函数

在回调函数中完成消息处理

如何编译代码:

设置需要的代码和可执行文件

设置链接库

设置依赖

如何自定义话题消息:

定义msg文件

在package.xml中添加功能包依赖

在CMakeList.txt添加编译选项

2.2服务编程流程:

创建服务器

创建客户端

添加编译选项

运行可执行文件(与话题的步骤差不多)

如何实现一个服务器:

初始化ros节点

创建server实例

循环等待服务请求,进入回调函数

在回调函数中完成服务功能的处理,并反馈应答数据

如何实现一个客户端:

初始化ros节点

创建client实例

发布服务请求数据

等待server处理之后的应答结果

2.3动作编程

一种问答通信机制

带有连续反馈

可以在任务中终止运行

基于ros的消息体制实现

Action的接口:

goal:发布任务目标

cancel:请求取消任务

status:通知客户端当前的状态

feedback:周期反馈任务运行的监控数据

result:向客户端发送任务的执行结果,只发布一次









猜你喜欢

转载自blog.csdn.net/qq_33414553/article/details/79858154