Matlab与ROS(1/2)---Simulink(二)

0. 简介

在上一章中我们详细介绍了ROS与Matlab链接的基础用法。这一章我们将来学习如何使用Matlab当中的Simulink来完成。Simulink对机器人操作系统(ROS)的支持使我们能够创建与ROS网络一起工作的Simulink模型。ROS是一个通信层,允许机器人系统的不同组件以消息的形式交换信息。组件通过将消息发布到特定的主题(如/odometry)来发送消息。其他组件通过订阅该主题来接收消息。本文内容基于慕羽★大佬文章进行了增删。同时由于Simulink的使用在ROS1和ROS2中没有太多的改动,所以我们就仅对ROS1完成了介绍

对ROS的Simulink支持包括一个Simulink块库,用于为指定的主题发送和接收消息。当您模拟模型时,Simulink连接到ROS网络,该网络可以与Simulink在同一台机器上运行,也可以在远程系统上运行。一旦建立了这个连接,Simulink就会与ROS网络交换消息,直到模拟结束。如果安装了Simulink Coder,还可以从Simulink模型为独立ROS组件或节点生成c++代码

同时ROS1的Simulink和ROS2的Simulink支持不太一样。ROS工具箱不支持Simulink中的以下ROS功能:ROSService服务端、ROS的行为以及TF树。

如果应用程序需要这些特性,就需要使用MATLAB的ROS功能。您可以使用MATLAB编写ROS节点,该节点可以将Service服务端、行为以及TF树作为ROS消息发布到主题。然后,Simulink可以订阅该主题来处理这些消息。在MATLAB中使用以下函数来处理这些特征:

ROS服务服务器:rosservice、rosvcserver
ROS动作:rosaction, rosactionclient
转换树:rostf, transform, getTransform

对于ROS 2, Simulink只支持发布和订阅这两个功能

要查看Simulink中ROS支持的完整列表,请参见Simulink-ROS。

1. 初始化ROS并创立链接

  1. 在终端输入以下命令查看本机地址
ifconfig

  1. 将本机IP写入到.bashrc文件。打开home文件夹,按Ctrl+h显示隐藏的文件,选择.bashrc并打开打开后在最后加入以下命令(后面的IP改为你的电脑的IP),然后保存退出
export ROS_IP=192.168.3.128

​编辑

​编辑

  1. 启动roscore,并获取ROS输出的IP。 在终端输入roscore启动,可以发现此时roscore会输出一个IP如下图所示:
    ​编辑

    ​编辑
  2. 打开MATLAB,建立与ROS的连接。 在MATLAB的命令行窗口输入以下语句,后半部分就是我们上一步得到的ROS输出的IP
setenv('ROS_MASTER_URI','http://jzx-virtual-machine:11311') 
rosinit

​编辑​编辑

2. 创建一个Publisher

配置一个block,并向/location的节点发送一条geometry_msgs/Point类型的消息。需要做到以下几个步骤

  1. 在MATLAB工具条中,选择Home>Simulink来打开Simulink的起始页。
  2. 在Simulink开始页,单击空白模型创建并打开一个新的Simulink模型。
  3. 在Simulink工具条中,选择Simulation > Library Browser打开Simulink库浏览器。单击ROS工具箱选项卡(也可以在MATLAB命令窗口中输入roslib)。选择ROS库。
  4. 将Publish块拖到模型中。双击该块以配置主题和消息类型。
  5. 为Topic源选择Specify your own,并在Topic中输入/location。
  6. 单击 Message type后的Select 按钮。将出现一个弹出窗口。选择geometry_msgs/Point,单击OK关闭弹出窗口。

  1. 3. 创建一个Message

    创建一个空白ROS消息,并用机器人路径的X和Y位置填充它。然后将更新后的ROS消息发布到ROS网络。

简单介绍一下Blank Message模块的作用:Blank Message模块用指定的消息或服务类型创建一个空白消息。Msg块的输出是一个空白的ROS消息(总线信号)。设置Class参数来选择ROS消息、服务请求和服务响应消息。这里我们使用的是ROS消息(总线信号)。可以使用总线分配块来修改总线信号中的特定字段。总线信号被初始化为零值(接地)。

 

具体操作如下:

  1. 在库浏览器中单击ROS工具箱选项卡,或在MATLAB命令行中键入roslib,选择ROS库。
  2. 将Blank Message块拖到模型中。双击该块以打开block的信息。
  3. 单击Message类型框旁边的Select,并从结果弹出窗口中选择geometry_msgs/Twist。

点击Matlab与ROS(1/2)---Simulink(二) - 古月居 可查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/616768.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spark_SparkSql写入Oracle_Undefined function.....将长字符串写入Oracle中方法..

在使用Spark编写代码将读库处理然后写入Oracle中遇到了诸多小bug,很磨人,好在解决了。shit!! 实测1:TO_CLOB(a3) 代码样例 --这是一个sparksql写入hive的一个小逻辑,我脱敏了噻 SELECT a1, a2, TO_CLOB(a3) AS clob_data, TO_DATE(a4) AS …

STM32利用软件I2C通讯读MPU6050的ID号

今天的读ID号是建立在上篇文章中有了底层的I2C通讯的6个基本时序来编写的。首先需要完成的就是MPU6050的初始化函数 然后就是编写 指定地址写函数: 一:开始 二:发送 从机地址读写位(1:读 0&#xff1…

005Node.js模块URL的使用

引入 URL 模块 要使用 URL 模块,首先需要在代码中引入它。可以使用以下代码将 URL 模块导入到你的脚本中: const url require(url);实例代码 const urlrequire(url); var apihttp://www.baidu.com?nameshixiaobin&age20; console.log(url.parse(…

单链表经典算法题分析

目录 一、链表的中间节点 1.1 题目 1.2 题解 1.3 收获 二、移除链表元素 2.1 题目 2.2 题解 2.3 收获 2.4递归详解 三、反转链表 3.1 题目 3.2 题解 3.3 解释 四、合并两个有序列表 4.1 题目 4.2 题解 4.3 递归详解 声明:本文所有题目均摘自leetco…

策略模式(知识点)——设计模式学习笔记

文章目录 0 概念1 使用场景2 优缺点2.1 优点2.2 缺点 3 实现方式4 和其他模式的区别5 具体例子实现5.1 实现代码 0 概念 定义:定义一个算法族,并分别封装起来。策略让算法的变化独立于它的客户(这样就可在不修改上下文代码或其他策略的情况下…

读所罗门的密码笔记19_治理模式

1. 解决方案 1.1. 全球人工智能的环境错综复杂,它严重依赖于价值观,且关系重大 1.2. 即使是与大家同仇敌忾的问题做斗争,也往往无法在国际社会中取得最佳效果 1.3. OPCW(禁止化学武器组织)已经帮助限制了化学武器的…

(UDP)其他信息: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

“System.Net.Sockets.SocketException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理其他信息: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。这个异常表示端口已经被占用了,需要释放端口或者使用其他端口来建立连接。您可以…

如何访问远程服务器?

在现代技术时代,随着信息化的快速发展,远程访问服务器已经成为了不可或缺的一种需求。无论是企业还是个人用户,都需要通过远程访问来管理、传输和获取数据。本文将介绍一种名为【天联】的工具,它能够通过私有通道进行远程服务器访…

python练习杂糅⑥——核心语法与基本库的应用

根据完整的路径从路径中分离文件路径、文件名及扩展名 代码呈现: import osdef separate_path(full_path):file_path, filename os.path.split(full_path)basename, extension os.path.splitext(filename)return file_path, basename, extensionfull_path "…

Linux 硬链接和软链接怎么区分使用?

一、什么是硬链接和软链接 硬链接 在Linux操作系统中,硬链接相当于存储在硬盘驱动器中的文件,它实际上引用或指向硬盘驱动器上的某个点。硬链接是原始文件的镜像副本。 硬链接与软链接的区别在于,删除原始文件不会影响硬链接,但…

基于SpringBoot实现的在线拍卖系统

系统开发环境 编程语言:Java数据库:MySQL容器:Tomcat工具:IDEA/Ecilpse、Navicat、Maven 系统实现 管理员功能模块 首页 修改密码 用户管理 商品类型管理 拍卖商品 竞拍公告 轮播图 历史竞拍管理 竞拍订单管理 留言板管理 用户…

主干网络篇 | YOLOv8更换主干网络之VanillaNet | 华为方舟实验室提出全新轻量级骨干架构

前言:Hello大家好,我是小哥谈。华为方舟实验室所提出的VanillaNet架构克服了固有复杂性的挑战,使其成为资源受限环境的理想选择。其易于理解和高度简化的架构为高效部署开辟了新的可能性。广泛的实验表明,VanillaNet提供的性能与著名的深度神经网络和vision transformers相…