MATLAB和ROS联合仿真篇(从MATLAB获取ROS信息)

2023-05-16

文章目录

  • 预备知识
  • 查看速度,位置信息
  • 读取雷达信息
  • 读取里程计信息


预备知识

ROS部分

       rosbag命令:在 ROS 系统中,可以使用 bag 文件来保存和恢复系统的运行状态,比如录制雷

达和相机话题的 bag 包,然后回放用来进行联合外参标定,常用命令:

录制当前全部话题数据 :rosbag record -a

录制指定话题数据        :rosbag record /topic1 /topic2

自定义录制包的名字    :rosbag record -o filename.bag /topic

查看bag包信息             :rosbag info filename.bag

发布bag中的话题数据  :rosbag play filename.bag

rosbag 官方教程http://wiki.ros.org/rosbag

MATLAB部分

  • 订阅服务器Subscriber:可以创建一个订阅者,接收来自ROS网络的消息,订阅需要的话

题。它的输出是一个总线信号,一般需要接一个Bus selector模块来处理信息。

  • 发布服务器Publish:可以创建一个订阅者,选择我们要发布的话题,将我们需要发布的消

息通过该模块发送给ROS 。该模块的输入是一个总线信号,故需要一个Bus creator对我们需要发

布的消息进行整合。

  • Blank Message模块:Blank Message模块可以用指定的消息或服务类型创建一个空白消息,

空白消息的消息类型,根据我们的需要进行设定,它的输出也同样为总线信号(注意:这里的

类型选择要与Publish模块中的消息类型一致)。

查看速度位置信息

  • 在MATLAB中利用命令rostopic list列出话题,订阅模块订阅位置和速度信息,并且在Score和

XY Graph中进行实时显示。

  •  MATLAB 软件 GUIDE 为用户提供了一个方便高效的集成环境,所有 GUI GUI 支持的用户控

都集成在这个环境中,并且提供界面外观、属性和行为响应方式的设置方法。在GUI中搭建完成后,

点击运行,生成一个m文件和GUI控制界面。每个控件都有几种回调函数,右键选中的控件就可以

跳转到m函数中相应的Editor编辑回调函数。GUIDE会自动生成 相应的函数体,函数名,名称一般

是 控件 Tag+Call类型名 参数有三个:

  • hObject - 触发回调的 UI 组件。

  • eventdata - 包含关于特定鼠标或键盘操作的详细信息的变量。

  • handles - 包含 UI 中所有对象的 struct

要使回调函数接受更多参数,必须在函数定义中的参数列表末尾放置更多参数。

回调函数的编写参考:MATLAB GUI

读取雷达和相机信息

  • 此示例演示如何从 rosbag 文件中读取和保存图像和点云数据。

path = helperDownloadRosbag;  

使用helperDownloadRosbag helper函数从给定的URL下载rosbag文件


bag = rosbag(path);  

从bag中检索信息


imageBag = select(bag,'Topic','/camera/image/compressed');
pcBag = select(bag,'Topic','/points');  

从 rosbag 中选择图像和点云消息 


imageMsgs = readMessages(imageBag);
pcMsgs = readMessages(pcBag);  

 读取图像和点云信息

 若需后续提取点云和图像,请参考:

laser camerahttps://ww2.mathworks.cn/help/lidar/ug/read-lidar-and-camera-data-from-rosbag.html

获取里程计信息

里程计信息的获取和上述雷达,相机获取的方式相同,但要注意加上ekf惯性模块。

 odom消息获取实例https://download.csdn.net/download/shenghuaijing3314/10137027

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB和ROS联合仿真篇(从MATLAB获取ROS信息) 的相关文章

  • 在 MATLAB 中将数据拟合到 B 样条

    我正在尝试估计矩阵形式的时间序列数据中的缺失值 列代表时间点 即现在 我想将矩阵的每一行拟合到 B 样条曲线 并用它来估计缺失值 我可以使用 MATLAB 将数据拟合到普通样条曲线 但我完全陷入尝试找出如何拟合数据以创建 B 样条曲线的困境
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • 类方法的自定义代码完成?

    在 MATLAB 中 可以定义代码建议和完成 如标题为 的文档页面中所述 自定义代码建议和完成 https www mathworks com help matlab matlab prog customize code suggestio
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调
  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 同时重新排序和旋转图像的高效方法

    为了快速加载 jpeg 我为turbojpeg 实现了一个 mex wrapper 以有效地将 大 jpeg 读入 MATLAB 对于 4000x3000px 的图像 实际解码只需要大约 120 毫秒 而不是 5 毫秒 然而 像素顺序是 R
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 如何每次使用按钮将数据添加到 MATLAB 中的现有 XLSX 文件?

    我有一个函数可以生成一些变量 例如分数 对 错 未回答 使用按钮调用此功能 问题是如何每次将函数生成的这些值添加 附加到 XLSX 文件中 或者 如何创建 MAT 文件以便可以添加它 可能的解决方案是什么 附加到 xls 文件所涉及的挑战是
  • 使用 R2010b 中的符号工具箱来求解和/或 linsolve

    我前几天问了一个问题here https stackoverflow com questions 20317038 matlab linear congruence solver that supports a non prime modu
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 垂直子图的单一颜色条

    我想让下面的 MATLAB 图有一个沿着两个子图延伸的颜色条 像这样的事情 使用图形编辑器手动完成 Note 这与提出的问题不同here https stackoverflow com questions 39950229 matlab t
  • 从筛查乳腺 X 光检查数字数据库 (DDSM) 获取数据

    我正在尝试以可读格式获取 DDSM 数据集 有谁有 DDSM heathusf 程序的工作版本 可以在 Linux 或 Windows 上正常运行吗 我知道 DDSM 的 jpeg 程序有一个适用于 linux 的工作版本 位于http w
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式
  • for 循环中的绘图没有可见点

    我正在努力解决我想使用 for 循环制作的情节 我知道当我在循环之后添加它时它会起作用 只是一个简单的图 但我想用另一种方式尝试一下 fib ones 1 10 for k 3 10 hold on fib k fib k 1 fib k

随机推荐