ROS学习及经验分享
文章平均质量分 78
叫小侯的小白程序员
在校研究生
展开
-
参数服务器
参数服务器在ROS中主要用于实现不同节点之间的。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据。参数服务器,一般适用于存在数据共享的一些应用场景。以共享的方式实现不同节点之间数据交互的通信模式。类似于全局变量。原创 2024-05-07 12:04:28 · 1005 阅读 · 0 评论 -
ROS服务通信
step1:在功能包中定义一个srv文件夹,在这个文件夹中定义xxx.srv文件。step2:在xxx.srv中规定数据类型。---上部分是请求部分,下部分为响应数据。step3:为xxx.srv添加编译规则打开package.xml文件,添加以下两行代码:打开CMakeList.txt文件, 在find_package中添加:找到下方示例代码,将刚刚定义的xxx.srv添加进去,作用是让在srv文件夹中生成服务:我们定义的xxx.srv是基于std_msgs依赖的,所以需要添加依赖项。原创 2024-04-07 15:18:20 · 754 阅读 · 0 评论 -
ROS中的栅格地图
机器人导航所使用的地图数据,就是ROS导航软件包里的map_server 节点,在话题/map中发布的消息数据,消息类型是nav_ msgs消息包的OccupancyGrid,这个单词翻译过来叫做占据栅格,就是一种正方向小格子组成的地图,每个格子里填入一个数值,表示障碍物的占据情况。第二个是地图的描述信息。第三个是一个八位整型的数组,这就是地图的数据,按照行优先的顺序,从栅格矩阵的(0,0)位置开始排列。以行为单位将二维栅格地图做成一维的数组,再记录栅格地图的行数、列数信息,就可以将栅格地图描述清楚了。原创 2024-04-02 19:38:13 · 1118 阅读 · 0 评论 -
ROS消息包
step1:在工作空间中定义一个功能包,用来存储自定义消息类型。其中红框框住的这两个,是消息包的生成和运行时所需要的依赖项。step2:在功能包中新建一个文件夹msg,在这个文件夹下新建一个消息类型文件Carry.msg,注意文件末尾一定是msg。然后在这个文件里定义新的消息结构。step3:消息结构该如何定义呢?我们参考官方标准消息包std_msgs的定义格式。如下图所示,第一行表示是 std_msgs消息包的String.msg 文件的内容。其余的表示消息格式:数据类型+变量名。step4。原创 2024-04-02 12:25:45 · 1058 阅读 · 0 评论 -
ROS中IMU惯性测量单元
IMU 是安装在机器人内部的一种传感器模块,用于测量机器人的空间姿态。IMU的消息包定义在sensor_msgs包中的Imu中。头部是header,记录了消息发送的时间戳和坐标系ID。第二个是角速度。第三个是矢量加速度。三个数据成员都各自有一个协方差矩阵,主要用于后期的优化和滤波。角速度:在x、y、z三个轴上的旋转角速度。矢量加速度:在x、y、z三个轴上的加速度。总共有6个数值,所以叫六轴IMU。另外还有一些IMU模块,额外提供了XYZ三个轴向的磁强计输出,就变成了九轴IMU。原创 2024-03-31 22:07:03 · 1201 阅读 · 0 评论 -
ROS传感器图像转换
但是我们一般使用opencv对图像进行处理,所以要将ros的图像格式转换成opencv的格式。原创 2024-03-30 22:08:07 · 262 阅读 · 0 评论 -
话题通信的python实现
在scripts文件夹中创建py节点:第一行是为了指定解释器,Ubuntu20.04是python3,比他低的版本是python。第二行是为了指定编码方式。第五行中,引用index.ros.org中数据类型的头文件的方式,与C++不一样。第十行,第二个参数是发布的消息类型。:给这个脚本文件添加可执行权限。:保存好之后就可以运行啦。python文件不需要编译,直接是可执行文件。先启动roscore,再source一下,然后直接运行。:同理,添加另一个发布者节点。原创 2024-03-30 21:03:53 · 234 阅读 · 0 评论 -
机器人运动控制
矢量速度用来控制运动方向,任何一个方向都可以看成x、y、z三轴方向的合。单位规定是m/s。旋转速度用来控制旋转方向,可以看成x、y、z三轴方向旋转的合。单位规定是pi/s。速度消息包,可以在上搜索到。它里面有很多消息类型,其中Twist就是速度消息包。消息包中有两种数据类型linear、angular,他俩又都是三维向量。原创 2024-03-30 13:19:53 · 505 阅读 · 0 评论 -
launch文件
启动多个节点时,要打开很多窗口,这样会很麻烦。使用launch文件,可以同时运行多个节点。launch文件是一 种遵循XML语法的描述文件,批量启动ROS节点只是它的功能之一。以下是XML的基本语法之一:描述一组多层嵌套的数据结构,就是XML语言的主要作用之一。例如下述例子:这种语言格式对ros有什么用呢?举个例子,假如我们现在有两个package,三个node,他们之间的通信是这样的:为了能运行,我们需要打开四个终端,分别为:启动ros核心、分别运行三个node: roscore不需要加进去,因为laun原创 2024-03-29 21:20:07 · 765 阅读 · 0 评论 -
Topic话题和Message消息
step1:第一个参数:需要订阅的话题名称;第二个参数:缓存长度;第三个参数:接收消息包的回调函数的函数名xxx,可以随便起。我们需要定义回调函数xxx,形参是接受的消息包。这个函数不需要我们手动调动,而是系统接收到发布者的消息时,就会自动触发的函数。while循环内一定要加个ros::spinOnce函数。它可以允许节点在监听消息的同时执行其他任务。step2:在CMakeLists.txt文件中找到Bulid篇章,复制示例代码。step3。原创 2024-03-28 14:48:54 · 969 阅读 · 0 评论 -
apt源+超级终端Terminator
apt源可以理解成手机上的,我们可以下载它上面发布的所有开源代码。网址:ROS Index。原创 2024-03-27 10:12:59 · 534 阅读 · 0 评论 -
ROS通讯机制补充说明
我是跟着bilibili中的一位up主学习ros基础,视频链接如下:038话题通信_理论模型_Chapter2-ROS通信机制_哔哩哔哩_bilibili视频中用到的课程文档,up主用gitbook发布:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程我对ros、Ubuntu没有经验。up主整理的课程文档很详细,但是缺少我难以理解的细节问题,因此我发布了一系列博客,对于每一个章节进行补充说明。方便以后复习、借鉴!原创 2023-06-08 21:41:40 · 79 阅读 · 0 评论 -
launch功能和文件演示
一个程序中可能需要启动多个节点,比如:ROS 内置的小乌龟案例,如果要控制乌龟运动,要启动多个窗口,分别启动 roscore、乌龟界面节点、键盘控制节点。选定 launch 文件夹右击---> 新建文件夹 ---> 添加 xxx.launch文件。官方给出的优化策略是使用 launch 文件,可以一次性启动多个 ROS 节点。选定功能包右击 ---> 新建文件夹--->将文件夹命名为launch。pkg -----> 节点所在的功能包。type ----> 被运行的节点文件。name --> 为节点命名。原创 2023-06-07 01:09:57 · 164 阅读 · 0 评论 -
ROS集成开发环境搭建【安装VScode】
在Ubuntu中安装VScode,便于编写程序原创 2023-06-06 17:37:58 · 955 阅读 · 0 评论 -
ROS概述
了解ROS是什么,并且以打印helloword代码为实例,初步了解代码实现流程原创 2023-06-06 01:59:59 · 436 阅读 · 3 评论