ROS通信编程-话题、服务、动作编程

本文详细介绍了ROS中的话题、服务和动作编程,包括如何实现发布者和订阅者,自定义消息,以及如何配置CMakeLists.txt、package.xml和运行可执行程序。通过实例展示了ROS通信的核心原理和实践应用。
摘要由CSDN通过智能技术生成

目录

ROS通信编程

1. 话题编程

1.1 如何实现一个发布者

1.2 如何实现一个订阅者

1.3 如何编译代码

1.4 话题编程操作演示

1.4.1 创建工作空间

1.4.2 工程编译

1.4.3 创建功能包

1.4.4 设置环境变量

1.4.5 代码撰写

1.4.5 运行结果

1.5 自定义话题消息(补充)

2.服务编程​编辑

2.1 定义srv文件

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

2.3 代码撰写

2.4 设置CMakeLists.txt文件

2.5 运行可执行程序

3.动作编程

3.1 自定义动作消息

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

3.3 在CMakeLists.txt添加编译选项

3.4 代码撰写

3.5 运行结果:

总结


ROS通信编程

1. 话题编程

话题编程的流程:

  • 创建发布者
  • 创建订阅者
  • 添加编译选项
  • 运行可执行程序

1.1 如何实现一个发布者

流程:

初始化ROS节点
向ROS Master注册节点信息,包括发布的话题名和话题中的消息类型
按照一定的频率循环发布消息

1.2 如何实现一个订阅者

流程:

初始化ROS节点
订阅需要的话题
循环等待话题消息,接收到消息后进入回调函数
在回调函数中完成消息处理

1.3 如何编译代码

流程:

设置需要编译的代码和生成的可执行文件
设置链接库
设置依赖

1.4 话题编程操作演示
1.4.1 创建工作空间

1.4.2 工程编译

使install空间出现:

1.4.3 创建功能包

创建功能包:
(要放在src里面):

打开功能包:
include放置头文件
src放功能包的代码
后面两个文件是功能包一定有的,使其区别于普通文件夹的属性

1.4.4 设置环境变量

检查环境变量:

echo命令把环境变量打开
ROS_PACKAGE_PATH 是ROS本身的一个环境变量,通过这个环境变量查找所有功能包的路径)
也是只有在前一步设置了工作空间的setup.bash之后,path里面才会包含工作空间的路径

1.4.5 代码撰写

功能包下的 src中添加的 cpp 文件,该文件实现了发布者:

 publisher_cpp.cpp 代码如下:

#include <sstream>
#include "ros/ros.h"
#include "std_msgs/String.h"

int main(int argc,char **argv){
    //ROS节点初始化
    ros::init(argc,argv,"talker");

    //创建节点句柄
    ros::NodeHandle n;

    //创建一个Publisher,发布名为chatter的topic,消息类型为std_msgs::String
    ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter",1000);

    //设置循环的频率
    ros::Rate loop_rate(10);

    int count = 0;
    while(ros::ok()){
        //初始化std_msgs::String 类型的消息
        std_msgs::String msg;
        std::stringstream ss;
        ss<<"hello worl
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值