【Ros记录基础一】 自用 / Ros基础 / 话题通信 / 自定义话题msg

目录

致谢:ROS赵虚左老师

一、roscore

二、rosrun

三、roslaunch

四、话题通信

C++版本

Python版本

不同语言实现节点通信(耦合)

五、自定义话题通信msg

添加文件

配置/编译相关msg文件

两个重要msg文件

使用C++自定义

Vscode修改

发布方: 

配置文件

订阅方:

使用Python自定义

Vscode修改

发布方:

文件配置

订阅方:


 

致谢:ROS赵虚左老师

Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

参考赵虚左老师的实战教程

一、roscore

roscore   是 ROS 的系统先决条件节点和程序的集合, 必须运行 roscore 才能使 ROS 节点进行通信。

roscore 将启动:

  • ros master

  • ros 参数服务器

  • rosout 日志节点

二、rosrun

rosrun 包名 可执行文件名 === 运行指定的ROS节点

比如:rosrun turtlesim turtlesim_node

三、roslaunch

官方给出的优化策略是使用 launch 文件,可以一次性启动多个 ROS 节点。

roslaunch 包名 launch文件名
<launch>
    <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>

node ---> 包含的某个节点

pkg -----> 功能包

type ----> 被运行的节点文件

name --> 为节点命名

output-> 设置日志的输出目标

四、话题通信

话题通信适用于不断更新的数据传输相关的应用场景

编写发布方实现
编写订阅方实现
编辑配置文件
编译并执行

C++版本

发布方:

订阅方:

主要是:订阅消息后的回调函数

           回调函数:处理订阅到的话题数据(受外界数据影响的可调用函数 )

Python版本

发布方:

订阅方:

不同语言实现节点通信(耦合)

使用C++进行发布  --  可以使用Python进行订阅 (数据互通)

ROS的强大之处

五、自定义话题通信msg

在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty.... 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如: 激光雷达的信息... std_msgs 由于描述性较差而显得力不从心,这种场景下可以使用自定义的消息类型

msgs只是简单的文本文件,每行具有字段类型和字段名称,可以使用的字段类型有:

  • 整形:int8, int16, int32, int64 (或者无符号类型: uint*)

  • 浮点:float32, float64

  • 字符:string

  • 时间:time, duration

  • other msg files

  • 数组:variable-length array[] and fixed-length array[C]

ROS中还有一种特殊类型:Header,标头包含时间戳和ROS中常用的坐标帧信息。会经常看到msg文件的第一行具有Header标头。【重用他人的msg代码重要】

添加文件

配置/编译相关msg文件

两个重要msg文件

使用C++自定义

Vscode修改

包含头文件

发布方: 

需将发布方的函数替换成自定义的消息数据类型

配置文件

订阅方:

同样的也需要编译文件

使用Python自定义

Vscode修改

将消息类型的python文件保存到vscode的jison文件里面

发布方:

注意给权限

文件配置

订阅方:

2023.10.28

仙桃数据谷

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Akaxi-1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值