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

news2024/11/17 5:32:07

1、Keyboard Control

(1)输入参数:无

(2)输出参数:Speed Factor为输出的速度系数(1代表前行,0停止,-1代表后退),Turn Factor为输出的舵机系数(1代表左转,0代表前行或后退,-1代表右转),Switching Signals为一路控制信号,当键盘输入0时,该参数输出0,键盘输入1时,该参数输出1。

(3)主要作用:键盘输入w小车前行,键盘输入s小车后退,键盘输入a小车左转,键盘输入d小车右转,键盘输入0第三个端口输出0, 键盘输入1第三个端口输出1,键盘输入其他按键小车停止运动。

(4)内部结构:

(5)具体实现过程:从实验资料中获取Keyboard模块,该模块有两个输出,当你从键盘按下一个按键时,第一个输出会输出其对应的Ascall码值,第二个输出我们并不关心。

接下来使用if模块分情况进行讨论,按照我们的需求,将keyboard第一个输出的分为119、115、97、100、48、49和其他7种情况

接下来使用if action模块配合if模块,将if模块所分的7种情况,配置其对应的输出,比如当if模块输出为119时,也就是对应键盘输入了w,此时我们想让小车直着往前走,那么速度系数应该输出1,转向系数输出0,为了简洁,我们将其用constant模块写成向量[1 0]的形式,if模块输出为119时对应的if action模块如下图所示:

以此类推,当键盘输入s时对应的if action模块应该输出[-1 0],当键盘输入a时对应的if action模块应该输出[1 1],当键盘输入d时对应的if action模块应该输出[1 -1],当键盘输入其他按键时对应的if action模块应该输出[0 0]

以上五种情况每种情况各对应一个包含两个元素的向量,但是他们应该对应于同一个变量,因此需要使用merge模块将其融合为一个变量

此时我们想将速度系数与转向系数进行拆分,并独立输出,此时就要用到Demux模块

如果你想看一下输出的数字是多少,可以使用display模块,到这里前五种情况就配置好了,对应的第一个和第二个输出也就配置好了,还剩下的第六第七种情况对应第三个输出,有了上面的介绍大家可以很简单的写出,就不介绍了,不过有一点需要注意,为了让默认情况下(当键盘没有输入0和1时,该变量默认为0)小车是运动的,当键盘输入0时,应该输出1,键盘输入1时,应该输出0

(6)其他说明:无

2、Pure Tracking Controller C

(1)输入参数:speed为小车的运动速度,k为需要调节的纯跟踪算法的系数,L为小车前轮与后轮之间的距离,如实验中用到的阿克曼小车为0.335,单位m,yaw是小车坐标系(机器人坐标系)X轴与世界坐标系X轴之间的夹角,xr和yr为小车在世界坐标系下当前的位置坐标,X和Y世界坐标系下当前目标点的位置坐标

(2)输出参数:angel为舵机打角(弧度制),Xe和Ye分别为世界坐标系下当前位置与目标位置的横纵坐标之差

(3)主要作用:在已知小车当前位置及目标位置的情况下,通过纯跟踪算法计算出小车应该输出的舵机打角,从而控制小车从当前位置移动到目标位置,同时输出目标位置与当前位置的距离差

(4)内部结构:

(5)具体实现过程:在这里大家需要回顾机器人学中的坐标变换的相关知识,及简单了解纯跟踪算法的推导过程及工作原理,然后就可以写出以下的纯跟踪控制器的代码

(6)其他说明:参考资料

    

   机器人学基础知识回顾

      纯跟踪算法推导过程

(9中的sina可以用8和ld=K*Vx进一步化简)

3、Target Point Parking Control C

(1)输入参数:key为预留的交互按钮接口,用来控制该模块是否发挥作用,当key为1时开启目标点停车,为0时关闭目标点停车 ,inspeed和inangle为小车的速度和舵机打角,Xe和Ye分别为世界坐标系下当前位置与目标位置的横纵坐标之差 ,Accuracy用来设定目标点停车的控制精度,由于阿克曼转向车的灵活性有限,很难完美的到达我们设定的停车点,这个参数用来设定我们允许的误差是多少,该参数不宜太小,太小后一直达不到,阿克曼小车到达目标点附近时就会不停的围绕目标点画圈,比如车速为0.7m/s时,可设定该误差为0.1m左右

(2)输出参数:outspeed和outangle经过该模块控制后的小车的速度及舵机打角,当启用该模块时,到达目标点的误差范围之内时,outspeed和outangle输出值均为0,其他情况下 outspeed和outangle的输出值分别与输入的inspeed和inangle相等

(3)主要作用:当启用该模块的情况下,若小车到达目标点的误差范围之内,则将小车的速度及舵机打角设为0,使小车停止运动

(4)内部结构:

(5)具体实现过程:根据以上的介绍,不难写出以下代码

(6)其他说明:无

4、Speed  Controller C

(1)输入参数:kp为需要调节的比例系数,Xe和Ye分别为世界坐标系下当前位置与目标位置的横纵坐标之差 ,speed_max为设定输出的速度上现是多少,实验中车身长为0.335m,结合实际设置即可,比如可设为3m/s

(2)输出参数:speed为小车的运动速度

(3)主要作用:根据小车的当前位置与目标点位置的距离差,对小车的速度进行调节,距离差越大输出速度就越大,通过比例系数kp进行调节,来达到更好的跟踪效果

(4)内部结构:

(5)具体实现过程:根据以上的介绍,不难写出以下代码

(6)其他说明:注意一定要在speed的输出之前加一个memory模块,这里涉及到逻辑问题,在实验中会对此进行介绍

5、Control signals Management C

(1)输入参数:key为预留的交互按钮接口,用来控制是否开启键盘控制,当key为1时开启键盘控制,为0时关闭键盘控制 ,speed和angle为小车的速度和舵机打角,Speed_Factor和Turn_Factor为键盘控制模块输出的小车的速度系数和舵机打角系数,Switching为键盘控制模块输出可控0和1信号,key_Speed_Set和key_Angle_Set为使用键盘对小车的运动进行控制时的小车速度和舵机打角,均应该设为正数,比如0.7和0.4

(2)输出参数:speed为小车的运动速度,Angle为小车的舵机打角

(3)主要作用:对小车的控制信号进行宏观控制,避免小车同时接受键盘的控制信号和跟踪轨迹或目标点时控制器输出的控制信号而造成的运动冲突,当key的值为1时,该模块切断跟踪目标点或轨迹控制器输出的speed和angle信息,小车仅接收来自键盘的控制信息,并根据键盘信息与key_Speed_ Set和key_Angle_Set的值配合得到并输出小车的Speed和Angle,当key的值为0时,小车按照跟踪轨迹或目标点时控制器输出的控制信号进行运动,此时可使用键盘输入0来停止运动或键盘输入1来继续运动,而除此之外的键盘输入信息被屏蔽,不再发挥作用。

(4)内部结构:

(5)具体实现过程:根据以上的介绍,不难写出以下代码

(6)其他说明:在键盘控制模块中,键盘输入0时,Switching输出为1,键盘输入1时,Switching输出为0,要想达到输入0小车停止运动,输入1小车继续运动的效果,需要用(1-Switching) 作为系数。

6、Navigation Point Setting C

(1)输入参数:xr和yr是当前小车的位置,point是设定的一系列导航目标点,使用constant模块以一维向量的形式给定,可以给定任意多个点,比如想要小车依次经过点(5,6)点(3,4),则point输入端输入为[5 6 3 4]

Error_accuracy用于设定与目标点距离多近时,认为已到达目标点,可设为0.2,用于多个目标点的自动切换

(2)输出参数:x和y是当前给定的目标点的坐标

(3)主要作用:给定一系列目标点,根据小车的实时位置,自主判断是否已经到达当前的目标点,若已到达,则自主将目标点切换为下一个目标点。可用于对未知环境的自主探索及建图

(4)内部结构:

(5)具体实现过程:根据以上的介绍,不难写出以下代码

(6)其他说明:实现过程中一定要加pause()函数,比如pause(1),每一秒发送一次目标点,用于间歇性发送

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

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

相关文章

excel绘制折线图或者散点图

一、背景 假如现在通过代码处理了一批数据,想看数据的波动情况,是不是还需要写个pyhon代码,读取文件,绘制曲线,看起来也简单,但是还有更简单的方法,就是直接生成csv文件,csv文件就是…

windows11打不开任务管理器,

目录 第一章、win11系统任务管理器打不开?第二章、解决方式修改注册表 友情提醒: 先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。 第一章、win11系统任务管理器打不开? Win11任务管理…

达梦数据库DEM监控部署

1、安装达梦8数据库 在192.168.1.253 windows机器上安装达梦8数据库 解压dm8_setup_win64_ent_8.1.1.56_20200115.iso安装包运行安装程序setup.exe 数据库安装信息: 数据库名:CBDM 实例名:CBDM 数据库目录:D:\dmdbms\data 端口:5236 控制文件: D:\dmdbms\data\CBDM\…

技术复盘(5)--git

技术复盘--git 资料地址原理图安装配置基本命令分支命令对接gitee练习:远程仓库操作 资料地址 学习地址-B站黑马:https://www.bilibili.com/video/BV1MU4y1Y7h5 git官方:https://git-scm.com/ gitee官网:https://gitee.com/ 原理图 说明&am…

Vue-Router基本使用

1 安装: vue2项目要安装vue-router3版本 npm i vue-router3 2 src下创建router目录,router文件夹下创建index.js 在vue.config.js中 配置src路径别名 3 在main.js中引入 4 在app.vue中配置 5 即可看到内容

十分钟配置好Neovim go开发环境(其他语言一样)

文章目录 前言仓库地址用法快捷键问题反馈 前言 这篇文章的目的是为了分享下我自己的Neovim配置。 本人是Golang程序员,最开始使用的IDE是JetBrains Goland。有一说一这个ide适配度很高,认识的很多人都使用这个。但是它也有几个对我来说的缺点&#xf…

JSP 结构和指令

JSP 结构 网络服务器需要一个 JSP 引擎,也就是一个容器来处理 JSP 页面。容器负责截获对 JSP 页面的请求。本教程使用内嵌 JSP 容器的 Apache 来支持 JSP 开发。 JSP 容器与 Web 服务器协同合作,为JSP的正常运行提供必要的运行环境和其他服务&#xff…

低代码:告别繁琐,提速软件开发

一、前言 数字化进程加速,对于软件开发效率和成本的要求在不断提高。与此同时,低代码技术的出现为这项高成本的人力开发提供了便捷。目前,低代码已广泛应用于各行各业,帮助企业提高应用开发效率、降低开发成本、提高软件质量&…

Vue 3:玩一下web前端技术(四)

前言 本章内容为VUE开发环境的使用与相关使用讨论。 上一篇文章地址: Vue 3:玩一下web前端技术(三)_Lion King的博客-CSDN博客 下一篇文章地址: (暂无) 一、开发环境的使用 1、汉化VScod…

提升设计技能,教你玩转CAD中的辅助命令

大家好,今天先来了解一下CAD软件中的视图操作。 CAD设计中的辅助命令是实现精准和高效设计的关键要素。熟练掌握并正确运用CAD中的各类辅助命令,对于设计师们来说至关重要。本文将为您提供如何正确使用CAD中的辅助命令的实用指南,帮助您优化…

动手学深度学习——实战Kaggle比赛:预测房价(代码详解+调参优化)

目录 1. 下载和缓存数据集2. Kaggle3. 访问和读取数据集4. 数据预处理5. 训练6. K折交叉验证7. 模型选择8. 提交Kaggle预测9. 调参优化 1. 下载和缓存数据集 数据集百度云: 链接:https://pan.baidu.com/s/14CVZBjmlKA_c3MYNFLSvbg?pwdpysi 提取码&…

脚手架(vue-cli)的安装详细教程

首先要下载node.js 下载 | Node.js 中文网 (nodejs.cn)https://nodejs.cn/download/ 大家根据自己的系统来选择哪个,我是Windows系统,所以选择红色箭头所指的安装包去安装!!! 接下来双击安装!!…

Docker 如何助您成为数据科学家

一、说明 在过去的 5 年里,我听到了很多关于 docker 容器的嗡嗡声。似乎我所有的软件工程朋友都在使用它们来开发应用程序。我想弄清楚这项技术如何使我更有效率,但我发现网上的教程要么太详细:阐明我作为数据科学家永远不会使用的功能&#…

英伟达 H100 vs. 苹果M2,大模型训练,哪款性价比更高?

M1芯片 | Uitra | AMD | A100 M2芯片 | ARM | A800 | H100 关键词:M2芯片;Ultra;M1芯片;UltraFusion;ULTRAMAN;RTX4090、A800;A100;H100;LLAMA、LM、AIGC、CHATGLM、LLVM、LLM、LLM…

C语言每日一题之整数求二进制1的个数

今天分享一道题目&#xff0c;用三种方法来求解 二进制1的个数 方法1 我们的十进制除10和取余数就可以得到我们每一位的数字&#xff0c;那我们的二进制也可 以 #include<stdio.h> int num_find_1(unsigned int n) {int count 0;while (n){if (1 n % 2){count;}n / 2…

python实现某品牌数据采集

某品牌数据采集 采集需求 地址&#xff1a;http://www.winshangdata.com/brandList 需求&#xff1a;用scrapy框架采集本站数据&#xff0c;至少抓取5个分类&#xff0c;数据量要求5000以上 采集字段&#xff1a;标题、创建时间、开店方式、合作期限、面积要求 网页分析 …

JSP 配置环境的搭建快速入门

JSP搭建环境 创建一个maven的 web 项目&#xff0c;项目结构如下&#xff1a; pom.xml 文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http:/…

第一百一十七天学习记录:高等数学:向量代数与空间解析几何(上)(宋浩板书)

在数学中&#xff0c;向量是一组按特定顺序排列的数&#xff0c;也可以是其他类型的元素&#xff0c;例如复数或矩阵。向量通常用加粗的小写字母表示&#xff0c;例如 v \mathbf{v} v&#xff0c;其中每个数值或元素称为向量的分量。向量可以表示空间中的方向和大小&#xff0…

【触觉智能Purple Pi OH开发板体验】开箱体验:开源主板Purple Pi RK3566 上手指北

前言 前段时间收到来自【电子发烧友】的一款开发板&#xff0c;名叫&#xff1a;PurplePi&#xff0c;216G售价仅249元。它使用的芯片是rk3566&#xff0c;适配的OpenHarmony版本为3.2 Release 是目前最便宜的OpenHarmony标准系统开源开发板&#xff0c;并且软硬件全部开源&am…