Matlab与ROS---Action与Gazebo(六)

news2024/9/30 17:29:51

0. 简介

对于ROS1而言,其在Matlab当中相较于ROS2还有一些比较高级的用法,比如说我们接下来要说的Action和Gazebo仿真。

1. ROS Action

ROS的Action行为模式当中也存在有一个客户端到服务器的通信关系。Action行为模式使用ROS主题将目标消息从客户机发送到服务器。在接收到目标后,服务器对其进行处理并将信息返回给客户端。这些信息包括服务器的状态、当前目标的状态、操作期间对目标的反馈,以及目标完成时的结果消息。

在这里插入图片描述
使用sendGoal函数将目标发送到服务器。发送目标并使用sendGoalAndWait等待它完成。这个函数使您能够返回结果消息、目标的最终状态和服务器的状态。当服务器执行一个目标时,会调用回调函数FeedbackFcn来提供与该目标相关的数据(参见SimpleActionClient函数)。使用cancelGoal取消当前目标或使用cancelAllGoals取消服务器上的所有目标。

在目标执行期间,使用sendFeedback函数向客户端发送反馈消息。在目标执行期间,服务器调用ExecuteGoalFcn回调。您可以在回调函数中使用isPreemeptRequested 来检查客户端是否取消了目标或发送了一个新的目标来执行。
在这里插入图片描述
上面图片为Matlab中ROS Action的执行步骤,下面具体来看一下大致的流程。

要设置ROS操作服务器,需要使用rosactionserver。在MATLAB命令窗口中输入rosaction list,检查ROS网络上可用的操作。

使用rosactionclient创建动作客户端并将它们连接到服务器。指定ROS网络上当前可用的操作类型。使用waitForServer等待操作客户端连接到服务器。

使用sendGoal发送一个目标。定义一个对应于动作类型的goalMsg。当您使用rosactionclient创建一个动作客户端时,将返回一个空白的goalMsg。您可以使用所需的参数修改此消息。

当目标状态变为’active’时,目标开始执行,并调用ActivationFcn回调函数。有关修改此回调函数的更多信息,请参见SimpleActionClient。

当目标状态保持“active”时,服务器继续执行目标。每当收到新的反馈消息时,反馈回调函数就会定期处理关于此目标执行的信息。使用FeedbackFcn访问或处理从ROS服务器发送的消息数据。

当目标实现时,服务器返回结果消息和状态。使用ResultFcn回调访问或处理结果消息和状态。

cb = @fibonacciExecution; 
server = rosactionserver("/fibonacci","actionlib_tutorials/Fibonacci",ExecuteGoalFcn=cb,DataFormat="struct")


function [result,success] = fibonacciExecution(src,goal,defaultFeedback,defaultResult)

    % Initialize variables
    success = true;
    result = defaultResult;
    feedback = defaultFeedback;
    feedback.Sequence = int32([0 1]);

    for k = 1:goal.Order
        % Check that the client has not canceled or sent a new goal
        if isPreemptRequested(src)
            success = false;
            break
        end

        % Send feedback to the client periodically
        feedback.Sequence(end+1) = feedback.Sequence(end-1) + feedback.Sequence(end);
        sendFeedback(src,feedback)
        
        % Pause to allow time to complete other callbacks (like client feedback)
        pause(0.2)
    end

    if success
        result.Sequence = feedback.Sequence;
    end

end


client = rosactionclient("/fibonacci","actionlib_tutorials/Fibonacci",DataFormat="struct");
goal = rosmessage(client);
goal.Order = int32(10);
result = sendGoalAndWait(client,goal);
result.Sequence

2. ROS Gazebo

Gazebo是一个模拟器,允许在测试和实验环境中来完成现实物理场景的仿真。Gazebo在机器人技术中是一个有用的工具,因为它允许您使用带有物理属性的真实场景和良好的图形快速创建和运行实验。MATLAB通过ROS接口连接到Gazebo。

2.1 下载虚拟机

您可以下载已经安装了ROS和Gazebo的虚拟机映像。此虚拟机基于UbuntuLinux,并已预先配置为支持ROS Toolbox™中的示例。

  1. 下载并安装ROS虚拟机。

  2. 启动虚拟机。

  3. 在Ubuntu桌面上,你可以看到多个Gazebo世界启动脚本,以及其他实用工具的快捷方式。对于TurtleBot®示例,使用Gazebo Empty, Gazebo House, Gazebo Office, 或者 Gazebo Sign Follower 的ROS图标。
    在这里插入图片描述

  4. 点击Gazebo House
    在这里插入图片描述

…详情请参照古月居

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【技巧】飞书多维表格零代码连接飞书多维表格,实现表单自动同步

飞书多维表格用户使用场景: 在公司日常工作中,各个部门使用飞书多维表格记录签订合同、文件审核、归档等事务,常需要行政人员辅助处理,将这些子表单的数据汇总到一个总表单中。但每个部门对应的事务较为复杂,子表单数量…

OpenCV例程赏析

OpenCV例程赏析 ①SITF特征检测匹配(目标查找)例程:…\opencv\sources\samples\python2\find_obj.py(asift.py) #!/usr/bin/env python ‘’’ Feature-based image matching sample. Note, that you will need the https://github.com/opencv/opencv_contrib r…

什么是内容交付网络?

内容交付网络(CDN)是一个全球分布的网络服务器或存在点(PoP),其目的是提供更快的内容交付,内容被复制并存储在整个CDN中,因此用户可以访问存储在地理上离用户最近的位置的数据。这与仅在一个中央…

Flinkx/Datax/Flink-CDC 优劣势对比

Flinkx/Datax/Flink-CDC 优劣势对比_HiBoyljw的博客-CSDN博客 一、FlinkX简介 FlinkX是一款基于Flink的分布式离线/实时数据同步插件,可实现多种异构数据源高效的数据同步,其由袋鼠云于2016年初步研发完成,目前有稳定的研发团队持续维护&…

微前端解决方案

目录 微前端解决方案微前端的整体架构微前端部署平台 微前端解决方案 在理想的情况下,期望能达到,将一个复杂的单体应用以功能或业务需求垂直的切分成更小的子系统,并且能够达到以下能力: 子系统间的开发、发布从空间上完成隔离…

java学员学生综合测评管理系统

目 录 摘 要 I ABSTRACT II 第一章 绪论 1 1.1课题背景 1 1.2目的和意义 1 1.3开发工具及技术 2 1.3.1开发工具 2 1.3.2 JSP技术 2 1.4软硬件需求 3 第二章 系统分析 5 2.1可行性分析 5 2.1.1技术可行性 5 2.1.2经济可行性 5 2.1.3操…

GrassRouter多链路聚合通信系统保障公路网络稳定全面覆盖解决方案

近年来国内经济不断发展,城市道路交通能力迅速提高,各省市道路交通体系不断完善,促使高速公路运能得到极大提高,公路运输的通达性、舒适性得到明显提高。随着现代化高速公路的建设,新一代无线网络监控系统,…

Jmeter控制器 Logic Controller

控制器包含: 1.Loop Controller 作⽤:指定其⼦节点运⾏的次数,可以使⽤具体的数值,也可以使⽤变量    Forever选项:表示⼀直循环下去   如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环…

大屏使用echart开发省市地图,并点击省获取市地图

1. 本文在基础上进行改进,后端使用若依后端 IofTV-Screen: 🔥一个基于 vue、datav、Echart 框架的物联网可视化(大屏展示)模板,提供数据动态刷新渲染、屏幕适应、数据滚动配置,内部图表自由替换、Mixins注…

ZooKeeper的安装和配置过程

ZooKeeper的安装和配置过程 ZooKeeper服务器是用Java创建的,它需要在JVM上运行,所以需要使用JDK1.6及以上版本。 查看是否安装了Java环境: java -version没有安装的先去安装JDK:Linux 安装 JDK 官网下载zooKeeper 官网下载zooKeeper&…

基于 YOLOv8 的自定义数据集训练

图1.1:YOLOv8初始测试 YOLOv8🔥于 2023年1月10日由Ultralytics发布。它在计算机视觉方面提供了进展,带来了对我们感知、分析和理解视觉世界的巨大创新。它将为各个领域带来前所未有的可能性。 在速度、准确性和架构方面进行了相当大的改进。它…

vs的常用配置【以及vs常用的快捷键】

1、颜色设置 (1) 编译器的主题颜色设置 (2) 字体和颜色设置 (3) 字体大小 更快捷的修改字体大小方式:ctr鼠标滚轮 2、行号设置 默认就有,不用设置了 3、把解决方案资源管理器移动到左边 4、设置打开错误列表 5、自动保存-要手动使用快捷键 ctrs 代码…

DolphinScheduler×T3出行 | 打造车联网一站式数据应用交互体验

点击蓝字 关注我们 用户案例 | T3 出行 业务挑战 作为一家车联网驱动的公司,T3出行汇聚了“人、车、路、云”各端的海量数据。为了承载如此多元化的数据以更好地释放数据价值,T3出行构建了以Apache Hudi为基础的企业级的数据湖,并在此之上搭建…

Nginx rewrite ——重写跳转

Nginx常见模块 http http块是Nginx服务器配置中的重要部分,代理、缓存和日志定义等绝大多数的功能和第三方模块的配置都可以放在这模块中。作用包括:文件引入、MIME-Type定义、日志自定义、是否使用sendfile传输文件、连接超时时间、单连接请求数上限等…

代码随想录算法训练营第三十六天|435. 无重叠区间、763.划分字母区间 、56. 合并区间

文章目录 重叠问题435. 无重叠区间763.划分字母区间:star:56. 合并区间 重叠问题 这几道题都是判断区间重叠,区别就是判断区间重叠后的逻辑。 435. 无重叠区间 链接:代码随想录 解题思路: 这道题和射气球的题几乎思路一样 不断求出重叠的最小右区间&a…

【Spring篇】Spring相关概念

🍓系列专栏:Spring系列 🍉个人主页:个人主页 目录 一、介绍 🍊1.为什么要学? 🍍2.学什么? 🍓3.怎么学? 二、Spring相关概念 🍒1.Spring家族 🍅2.了解Spring发展史 🍐3.Spr…

Centos7 系列:磁盘挂载和磁盘扩容(新加硬盘方式)

磁盘挂载和磁盘扩容 一、系统环境二、磁盘挂载到新目录(磁盘挂载)2.1 查找新硬盘2.2 创建挂载目录2.3 创建新分区2.4 创建新物理卷2.5 创建新卷组2.6 创建新逻辑卷2.7 挂载到空目录 三、挂载到已有目录(磁盘扩容)3.1 查找新硬盘3.…

【Linux】冯诺依曼体系结构与进程的基础知识点

目录 1.冯诺依曼体系结构硬件[2~5]2.为什么要有内存?3.为什么不用CPU中的寄存器做存储单元?4.为什么我们的程序必须先被加载到内存中?5.在硬件层面数据流是如何流向的? 软件[6~10]6.操作系统Operator System7.操作系统的作用8.操作…

能源管理系统在电子厂房中的应用

摘要:以能耗管理系统在工业厂房的应用为例,介绍了系统架构及功能。重点分析能耗管理系统在工业厂房实施过程中遇到的难点,并对系统采集的数据进行分析,提出了相应的节能措施,帮助该业厂房达到节约能耗和运行费用的目的…

tomcat部署应用页面乱码问题解决方案

参考:(129条消息) java jvm字符集 设置_windows/tomcat 修改java虚拟机JVM以utf-8字符集加载class文件的两种方式..._Lemaden的博客-CSDN博客 1、应用部署tomcat启动之后,页面显示乱码,解决方案 设置环境变量: 我的电脑 -> …