MATLAB与ROS联合仿真(慕羽☆)全套开源资料索引

news2024/11/17 1:51:05

   自2021年9月份开始进行MATLAB与ROS联合仿真相关的研究,至2021年12月份研究基本上结束,至今,已经近两年时间,期间曾收到过很多小伙伴的私信,想让我出点教程,期间我也曾多次想要抽点时间出教程,但很遗憾,总会被各种各样的事情顶掉,一拖再拖,就到了现在。

   emm,由于开发过去的时间太长,在这两年中,我也没有再用到相关内容,好多技术细节已经遗忘,好在当时记录下了比较详细的整套技术文档(当然,会有一些遗漏),最近整理了一下,近期会陆续的公布出来。

   至于视频教程,只能说,很抱歉,由于很多细节的遗忘,再加上现在并没有太多时间去把相关的工作重新熟悉一遍,所以只能出一个引导性的介绍视频,大致会介绍想要进行MATLAB与ROS联合仿真需要依次进行那些工作,流程是什么样子的,详细的细节需要大家自行阅读本文列举的相关资料了。

   先回顾一下当时写的探索总结及仿真效果的视频演示,如下所示:

   《为期两个月的MATLAB与ROS联合仿真探索总结——因为热爱,所以无所畏惧》

MATLAB与ROS联合仿真探索总结


   概括性视频教程如下所示:

   MATLAB与ROS联合仿真探索总结、流程介绍、实例操作演示



   第一章 仿真环境搭建

   关于MATLAB与ROS联合仿真的仿真环境搭建,我们提供了如下两种方案供大家选择,大家可以根据自己的实际情况自行选择。

   1、选择一:直接使用提供的虚拟机镜像 (新手推荐)

   选择一是一种走捷径的选择,预测大部分人会选择这条路,你只需要在你的电脑上安装完VMware这个软件,然后按照下面博客中介绍的内容操作即可。

   《MATLAB与ROS联合仿真(慕羽)虚拟机镜像文件使用方法》

   完成上述操作后,你可以直接跳过Ubuntu20.04的安装、ROS的安装、ROS的环境搭建等部分,直接开始建立MATLAB与ROS的通讯,然后愉快的开始进行联合仿真实验,而且不会遇到文档资料提到的可能遇到的问题

   2、选择二:使用提供的文档资料自主搭建实验环境

   选择二是有一定挑战性的选择,先为你的探索精神点赞,选择这条路意味着你需要自己按照提供的文档资料,从零开始,自己搭建实验的环境,需要完成ROS的安装部分、ROS仿真环境的搭建部分的文档资料所介绍的内容,参考步骤及相关资料的链接如下:

   (1)安装VMware软件

   (2)安装完VMware后,可以观看古月老师的视频教程,来创建自己的虚拟机,并安装Ubuntu20.04系统(视频里安装的是18.04,我们需要装20.04,步骤类似),视频链接如下:

   《ROS入门21讲——P2.Linux系统介绍及安装》

   (3)完成以上两步后就可以根据以下资料在ubuntu20.04中安装ROS系统了

   《详细介绍如何在ubuntu20.04中安装ROS系统,超快完成安装(最新版教程)》

   (4)按照以下资料,进行MATLAB与ROS联合仿真所需的ROS环境搭建

   《MATLAB与ROS联合仿真—ROS环境搭建及相关准备工作(上)》

   《MATLAB与ROS联合仿真—ROS环境搭建及相关准备工作(下)》

   (5)此外你需要额外修改如下图所示的路径下的名为map_easyworld.yaml的文件的内容的第一行红框内的gly为你的虚拟机用户名

   然后你和选择道路一的小伙伴一起来到了ROS与MALTAB通讯建立部分,完成后就可以愉快的开始实验了,当然在这个过程中你可能会遇到包括但不限于以下的问题,并按照其介绍的解决方法进行解决。

   问题①:若VMware安装完VMware Tools后依然不能将主机下的的文件拖拽或复制到虚拟机中时,重装了多次依然不行的情况下,此时我们不妨另辟蹊径,使用共享文件夹得方式来实现主机文件与VMware虚拟机中文件的交互,详情可见以下资料

   《通过共享文件夹的方式实现主机文件与VMware虚拟机中文件的交互》

   问题②:Ubuntu20.04运行python文件时报错No module named ‘rospkg‘的解决方法

   《Ubuntu20.04运行python文件时报错No module named ‘rospkg‘的解决方法》



   第二章 建立ROS与MATLAB的通讯

   MATLAB与ROS的联合仿真有两种常见的实现模式,第一种即采用Windows下的MATLAB与Ubuntu中的ROS进行联合仿真,第二种,是直接在Ubuntu中实现MATLAB与ROS的联合仿真,个人推荐使用第一种,本开源资料以第一种为例,当然也适用于第二种。

   若采用第一种模式,则按照以下资料建立MATLAB与ROS的通讯(推荐)

   《实现Win10环境下的MATLAB与虚拟机Ubuntu中的ROS的通讯的方法》

   若采用第二种模式,则按照以下资料建立MATLAB与ROS的通讯

   《详细介绍如何在Ubuntu中实现MATLAB与ROS的通讯,借助MATALB进行ROS开发》


   第三章 MATLAB与ROS联合仿真常用simulink模块介绍

   当我们进行MATLAB与ROS联合仿真的过程中,想要实现某项功能或者完成某项任务的时候,可以借助MATLAB中相关的simulink模块来减少工作量,本部分用于介绍联合仿真过程中常用的simulink模块,详情可见以下资料:

   《使用MATALB来辅助ROS开发时常用的simulink模块介绍》


   第四章 MATLAB与ROS联合仿真功能模块介绍

   基于上述simulink中的ROS工具箱,我们开发了一系列用于MATLAB与ROS联合仿真的模块,采用模块化的思想,将各部分功能拆分成一个个可自由拼接的模块,提高程序的可复用性,同时便于小伙伴们进行二次开发。

   我将这些模块分为五类:即白色背景的参数给定类模块、淡黄色背景的可视化绘图类模块、紫色背景的发送消息至ROS类模块,绿色背景的从ROS订阅消息类模块,淡蓝色背景的控制类模块。各类功能模块的详情介绍及搭建过程如下面的资料所示:

   《MATLAB与ROS联合仿真——订阅ROS消息类功能模块介绍》

   《MATLAB与ROS联合仿真——发布ROS消息类功能模块介绍》

   《MATLAB与ROS联合仿真——控制类功能模块介绍》

   《MATLAB与ROS联合仿真——绘图类功能模块介绍》

   《MATLAB与ROS联合仿真——参数给定类功能模块》

   注:上述模块中,模块名字后面带 “C” 的,说明该模块支持生成C++代码,若工程文件均由带“C”的模块拼接而成,则可以由simulink的代码生成器,生成C++的ROS代码,在ROS中独立运行,该部分内容将在后续章节中介绍。


   第五章 MATLAB与ROS联合仿真实例介绍

   1、基础运动控制实例

   基础运动控制实例主要包括:

   (1)通过设定小车运动的速度及转角来控制ROS中小车运动。

   (2)通过键盘输入指令控制ROS中小车运动,键盘输入w小车前行,s小车后退,a小车左转,d小车右转,输入其他按键小车停止运动。

   (3)订阅Gazebo中反馈的ROS小车的位置信息,并实时绘制出小车的运动轨迹图.

   2、轨迹跟踪控制实例

   轨迹跟踪控制实例主要包括:

   (1)对给定的目标点进行跟踪控制

   (2)对给定的轨迹进行跟踪控制

   (3)实时绘制给定期望轨迹与实际跟踪轨迹,进行跟踪效果评估。

   3、SLAM建图及自主导航实例

   (1)使用键盘控制小车运动,借助slam_gmapping功能包体验建图过程

   (2)在gazebo地图的基础上绘制小车的运动轨迹

   (3)借助move_base导航框架,体验在已知地图的情况下进行导航操作,在小车的运动路径上,添加障碍物,观察小车的避障能力,体会全局路径规划与局部路径规划的区别与配合

   (4)订阅并观测小车搭载的深度相机反馈的RGB彩色图像及深度图像、点云图像

   (5)将SLAM建图与导航结合起来,实现未知环境的自主探索与建图

   以上三个实例的详情介绍如下所示:

   MATLAB与ROS联合仿真——实例程序搭建思路


   第六章 Simulink生成ROS代码

   当我们用simulink完成控制程序的搭建后,我们期望下一次可以直接对ROS进行控制,而不是每次都需要启动matlab和simulink,因此我们可以使用simulink的代码生成器,生成ROS代码,我们提供的模块中名字后面带 “C” 的,说明该模块支持生成C++代码,若工程文件均由带“C”的模块拼接而成,则可以由simulink的代码生成器,生成C++的ROS代码,在ROS中独立运行,实现详情可见如下资料:

   MATLAB与ROS联合仿真——Simulink生成ROS代码



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

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

相关文章

地矿人专属的二次开发工具——地矿Web二次开发平台

工欲善其事必先利其器,随着互联网信息化时代的不断发展,信息系统和管理规范也越来越复杂,现有的软件产品功能会需要重新完善升级或更改,所以使用一套灵活应变可二次开发的软件产品是必不可少的,一款好的二次开发平台可…

【Apollo学习笔记】—— Routing模块

Routing模块功能 Apollo的routing模块读取高精地图原始信息,用于根据输入RoutingRequest信息在base_map中选取匹配最近的点作为导航轨迹的起点和终点,读取依据base_map生成的routing_map作为生成topo_graph的,然后通过Astar算法在拓扑图中搜…

Java中I/O流是什么?输入/输出流又是什么?

在 Java中所有数据都是使用流读写的。流是一组有序的数据序列,将数据从一个地方带到另一个地方。根据数据流向的不同,可以分为输入(Input)流和输出(Output)流两种。 在学习输入和输出流之前,我们…

监控和可观察性在 DevOps 中的作用!

在不断发展的DevOps世界中,深入了解系统行为、诊断问题和提高整体性能的能力是首要任务之一。监控和可观察性是促进这一过程的两个关键概念,为系统的健康状况和性能提供有价值的可见性。虽然这些术语经常互换使用,但它们代表了理解和管理复杂…

R730服务器用光盘安装系统(Esxi系统)

准备阶段:dell R730服务器,本教程一般适用于dell所有服务器,移动光盘,光碟做好镜像系统。在这里我安装的系统是Esxi系统,其他操作系统类似,只是安装的步骤不一样而已。 1、将系统盘插入光驱(移动光盘)&…

LeetCode 2500. Delete Greatest Value in Each Row【数组,排序】简单

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

【深度学习中常见的优化器总结】SGD+Adagrad+RMSprop+Adam优化算法总结及代码实现

文章目录 一、SGD,随机梯度下降1.1、算法详解1)MBSGD(Mini-batch Stochastic Gradient Descent)2)动量法:momentum3)NAG(Nesterov accelerated gradient)4)权重衰减项(we…

c++网络编程

网络编程模型 c/s 模型:客户端服务器模型b/s 模型:浏览器服务器模型1.tcp网络流程 服务器流程: 1.创建套接字2.完善服务器网络信息结构体3.绑定服务器网络信息结构体4.让服务器处于监听状态5.accept阻塞等待客户端连接信号6.收发数据7.关闭套…

C++那些事之template disambiguator

template disambiguator 1.背景 最近看到一段代码&#xff1a; auto chunk_left first_sort_key.template GetChunk<ArrayType>(left); 请问&#xff0c;这里的.template代表什么意义&#xff1f; 本节将从实际例子出发&#xff0c;探讨这个意义。 2.template disambigu…

mac不识别移动硬盘导致无法拷贝资源

背景 硬盘插入到Mac电脑上之后&#xff0c;mac不识别移动硬盘导致无法拷贝资源。 移动硬盘在Mac上无法被识别的原因可能有很多&#xff0c;多数情况下&#xff0c;是硬盘的格式与Mac电脑不兼容。 文件系统格式不兼容 macOS使用的文件系统是HFS或APFS&#xff0c;如果移动硬盘是…

【java】【面对对象高级4】内部类、枚举、泛型

目录 1、内部类 1.1 成员内部类【了解】 1.1.1 定义 1.1.2 扩展变量 1.2 静态内部类【了解】 1.2.1 定义 1.2.2 扩展变量 1.3 局部内部类【了解】 1.4 匿名内部类【重点】 1.4.1 定义 1.4.1.1 常规写法 1.4.1.2 匿名内部类改造 1.4.2 匿名内部类的常见使用场景 1.4.2…

超卖等高并发秒杀场景的问题及解决方案

超卖等高并发秒杀场景的问题及解决方案 1. 超卖问题&#xff08;多人秒杀&#xff09;1.1 原因1.2 解决方案1.3 总结 2. 锁失效问题&#xff08;单人重复抢&#xff09;2.1 原因2.2 解决方案 3. 事务边界问题&#xff08;单人重复抢&#xff09;3.1 原因3.2 解决方案3.3 总结 4…

【踩坑】三种方式解决 Homebrew failing to install - fatal: not in a git directory

问题描述 解决方法一 添加安全目录&#xff0c;没有测试。 git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew- git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-cask 解决方法二 取消挂载这…

Redis 主从同步原理

一、什么是主从同步&#xff1f; 主从同步&#xff0c;就是将数据冗余备份&#xff0c;主库&#xff08;Master&#xff09;将自己库中的数据&#xff0c;同步给从库&#xff08;Slave&#xff09;。 从库可以一个&#xff0c;也可以多个&#xff0c;如图所示&#xff1a; 二…

Acwing.291 蒙德里安的梦想

题目 求把NM的棋盘分割成若干个12的的长方形&#xff0c;有多少种方案。 例如当N2&#xff0c;M4时&#xff0c;共有5种方案。当N2&#xff0c;M3时&#xff0c;共有3种方案。如下图所示: 输入格式 输入包含多组测试用例。 每组测试用例占一行&#xff0c;包含两个整数N和M…

STM32 CAN通讯实验程序

目录 STM32 CAN通讯实验 CAN硬件原理图 CAN外设原理图 TJA1050T硬件描述 实验线路图 回环实验 CAN头文件配置 CAN_GPIO_Config初始化 CAN初始化结构体 CAN筛选器结构体 接收中断优先级配置 接收中断函数 main文件 实验现象 补充 STM32 CAN通讯实验 CAN硬件原理图…

JavaScript的函数中this的指向

JavaScript的函数中this的指向 JavaScript 语言之所以有 this 的设计&#xff0c;跟内存里面的数据结构有关系。 以下例子来简单描述this在不同情况下所指向的对象。 var obj {aa: function(){console.log(this.num)},num: 5 };var aa obj.aa; var num 10;obj.aa(); // …

简要介绍 | 走向自然的身份认证:步态识别技术简介

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对步态识别进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 走向自然的身份认证&#xff1a;步态识别技术简介 Gait Recognition Based on Deep Learning: A Survey | ACM Computing Surveys 背景…

一文谈谈Git

"And if forever lasts till now Alright" 为什么要有git&#xff1f; 想象一下&#xff0c;现如今你的老师同时叫你和张三&#xff0c;各自写一份下半年的学习计划交给他。 可是你的老师是一个极其"较真"的人&#xff0c;发现你俩写的学习计划太"水&…

【弹力设计篇】聊聊异步通讯设计

为什么需要异步设计 刚开始参加工作&#xff0c;发现有一些API设计中回落数据之后&#xff0c;然后将数据写入到消息队列中&#xff0c;当时很是不理解为什么要这么做&#xff0c;直到后边系统学习消息队列之后才发现原来这其实就是异步处理&#xff0c;当流量很多的时候&…