智能小车——初步想法

需要参考轮趣的智能小车自己搭建一台智能机器人,这里从底层控制开始逐步搭建。

控制模式

之后要自行搭建智能小车,所以将轮趣的底盘代码进行学习,根据开发手册先大致过一遍需要的内容。

有做很多个控制方法,包括了手柄、串口、CAN、ROS等,如下所示:
控制模式总结
如上图所示,对于项目而宫,重要的是PS2控制(即迎控器控制),以及CAN控制(需要用到CAN通讯),串口控制(上位机算法的通讯),其余的关注一下就可以了。

速度单位

全部控制程序全部换算成国际单位制m/s,所以要将缉码器的原始数据转换为m/s。

这里涉及的就是轮子半径、编码器数据、控制频率、编码器精度,通过这几个数据最终完成小车速度的换算。公式如下所示:
运动速度转换关系式

串口控制

就是ROS与STM32的通讯,通过串口3来完成通讯。

这里需要自定义一个数据帧,通过这个数据帧来完成电机控制状态的传输通讯。这里发送的数据包括:机器人使能;机器人三轴速度;IMU三轴加速度、角速度;电池电压。还要加上串口通讯可以用作检验的帧头帧尾和校验位。

同时,串口发送一次只能发送8位,而目前数据为24位,所以数据需要拆成高8位和低8位来传输。这里就相当于自定义了一套encoder和decoder的密码模式

这里可以借鉴他的编码方式:帧头固定0x7B,帧尾固定0x7D,用一位fag_stop表示是否使能,数据校验通过BCC校验(所有数据为异或)
具体的编码方式,也就是串口一次所传输的数据是可以自定义的,这里就不展开了,在自己做项目的时候可能还要修改一下。

APP调参

可以通过蓝牙/WIFI来完成控制,实质也是自定义数据,然后通过串口2来完成数据传输。

PS2控制

这里因为是专门的控制手柄,有自己做好的底层信号处理,对于应用层开发者而言,需要做的就是解析传输过来的信号,并完成对应的控制状态选择就可以了。

CAN控制

数据传输直接通过CAN总线来完成,需要先配置好CAN,然后自定义数据来完成传输,总体逻辑是类似的,只不过只需要关心具体的传输数据了,因为CAN是自带数据校验等的(CAN数据中自己就有校验等等的位)。

OLED显示

通过IIC总线来完成内容显示。只需要通过OLED的通讯协议,来完成画点就可以了。

陀螺仪零点漂移消除

IMU的数据存在零点漂移,需要设计一定的算法来完成滤波。

设置一定的延时,在刚上电的时候并不读取角速度值,直到超过了这个时间,才会去读取角速度值并将其作为漂移值。

运动学解算

这个就是两轮差速小车、麦轮小车等的运动学模型,将电机与机器人的运动联系起来。

这里之后的项目是需要四驱车模型,这里就记录一下四驱车的运动模型。

四驱车模型
其中VA、VB、VC、VD分别为 A、B、C、D四个轮子的转速,也就是电机的转速;Vx为小车沿着X轴平移速度,w为小车沿Z轴的旋转速度;a=D/2为小车轮距D的一半,b=H/2为小车轴距H的一半。

最终就可解算出如下的运动学公式,将机器人运动转化为电机旋转:
运动学公式

PID控制

这里直接就是一个速度闭环控制,只用PI就差不多了,增量式或者位置式PI都可以。

整体程序结构图

整体流程

现根据运动学模型来选择具体的计算公式,然后完成一系列外设的初始化,最后接到RTOS的任务接口,开始循环执行对应的任务。

对于遥控命令,都是通过串口/CAN的中断来获取。

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

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

相关文章

Linux下常见压缩文件tar.xz、tar.bz2、tar.gz的区别和详解

文章目录 tar.xz tar.bz2 tar.gz 的区别三种文件的解压方式tar.xz的解压三种压缩文件的创建方式 tar.xz tar.bz2 tar.gz 的区别 这三个文件扩展名都表示压缩后的档案文件,但它们使用不同的压缩算法。 tar.xz: tar 代表 Tape Archive,它是一种将多个文件…

【若依管理系统】注意事项

1.前端字段必填 rules: {sceneName: [{ required: true, message: "场景名称不能为空", trigger: "blur" }],orderNum: [{ required: true, message: "显示排序不能为空", trigger: "blur" }], }, 2.IDEA,默认以debug模式…

Agents 要点

一、Agents概念 人类是这个星球上最强大的 Agent。Agent是一个能感知并自主地采取行动的实体,这里的自主性极其关键,Agent要能够实现设定的目标,其中包括具备学习和获取知识的能力以提高自身性能。 关键点:感知环境、自主决策、具…

element plus 实现跨页面+跨tab栏多选

文章目录 element plus 层面数据层面 菜鸟好久没写博客了,主要是没遇见什么很难的问题,今天碰见了一个没有思路的问题,解决后立马来和大家伙分享了! 菜鸟今天要实现一个需求,就是:实现跨页面跨 tab栏 多选…

CVE-2024-27292:Docassemble任意文件读取漏洞复现 [附POC]

文章目录 CVE-2024-27292:Docassemble任意文件读取漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 CVE-2024-27292:Docassemble任意文件读取漏洞复现 [附POC] 0x01 前言 …

冒泡排序与其C语言通用连续类型排序代码

冒泡排序与其C语言通用连续类型排序代码 冒泡排序冒泡排序为交换排序的一种:动图展示:冒泡排序的特性总结:冒泡排序排整型数据参考代码(VS2022C语言环境): 冒泡排序C语言通用连续类型排序代码对比较的方式更…

法律行业守护神:知识库+AI大模型,解锁企业知识全周期管理

在法律行业中,搭建一个有效的知识库并进行企业知识全生命周期管理确实是一项不小的挑战。法律环境的复杂性和不断变化的法规要求企业必须持续更新和维护其知识库,以确保所有信息的准确性和实时性。 这种系统化的信息管理不仅有助于提高律师和法律顾问的…

打卡第9天-----字符串

我在自学的时候,看了卡尔的算法公开课了,有些题目我就照葫芦画瓢写了一遍js代码,差不多都写出来了,有暴力解法,有卡尔推荐的思路和方法。话不多说,直接上题上代码吧: 一、翻转字符串里的单词 leetcode题目链接:151. 反转字符串中的单词 题目描述: 给你一个字符串 s…

5个自动化面试题,助你过关斩将!

面试时,自动化是软件测试高频面试内容,通过学习和准备面试题,你会对可能遇到的问题有所准备,从而减轻面试时的紧张感,让你在面试中稳操胜券! 今天,分享一些在面试中可能会遇到的自动化测试面试…

大学生暑假“三下乡”社会实践工作新闻投稿指南请查收!

近年来,大学生暑期“三下乡”社会实践工作方兴未艾,越来越多的大学生通过参与“三下乡”实践工作,走出校园,深入基层,体验农村生活,服务农民,促进农村经济社会发展,实现了理论与实践…

算能科技,致力于成为全球领先的通用算力供应商

算能致力于成为全球领先的定制算力提供商,专注于RISC-V、TPU处理器等算力产品的研发和推广应用。公司遵循全面开源开放的生态理念,携手行业伙伴推动RISC-V高性能通用计算产业落地;打造覆盖“云、边、端”的全场景产品矩阵,为数据中…

【eNSP模拟实验】三层交换机实现VLAN通信

实验需求 让PC1和PC2能够互相通讯&#xff0c;其中PC1在vlan10中&#xff0c;PC2在vlan20中。 实验操作 首先把PC1和PC2都配置好ip&#xff0c;配置好之后&#xff0c;点击右下角的应用 然后&#xff0c;在S2交换机&#xff08;S3700&#xff09;上做如下配置 #进入系统 <…

【Redis】Redis十大类型

文章目录 前言一、string字符串类型二、List列表类型三、 Hash表四、 Set集合五、 ZSet有序集合六、 GEO地理空间七、 HyperLogLog基数统计八、Bitmap位图九、bitfield位域十、 Stream流10.1 队列指令10.2 消费组指令10.3 ACK机制 前言 redis是k-v键值对进行存储&#xff0c;k…

【最经典的79个】软件测试面试题(内含答案)提前备战“金九银十”

001.软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(running maintrnacne) 测试用例 用例编号 测试项目 测试标题 重要级别 预置条件 输入数据 执行步骤 预期结果 0002.问&…

“论软件维护方法及其应用”写作框架,软考高级论文,系统架构设计师论文

论文真题 软件维护是指在软件交付使用后&#xff0c;直至软件被淘汰的整个时间范围内&#xff0c;为了改正错误或满足 新的需求而修改软件的活动。在软件系统运行过程中&#xff0c;软件需要维护的原因是多种多样的&#xff0c; 根据维护的原因不同&#xff0c;可以将软件维护…

CVE-2024-34351 漏洞复现

CVE-2024-34351&#xff0c;由Next.js异步函数createRedirectRenderResult导致的SSRF。 影响版本&#xff1a;13.4.0< Next.js < 14.1.1 参考文章&#xff1a; Next.js Server-Side Request Forgery in Server Actions CVE-2024-34351 GitHub Advisory Database Gi…

RK3568平台开发系列讲解(内存篇)Linux进程内存的消耗统计

🚀返回专栏总目录 文章目录 一、VSS(Virtual Set Size)二、RSS(Resident Set Size)三、PSS(Proportional Set Size)四、USS(Unique Set Size)五、其他工具Linux 提供了多种进程内存占用的度量指标, 它们反映了不同的内存使用特征: VSS 反映进程虚拟内存总需求, 包括未…

Nature Communications|柔性无感智能隐形眼镜(柔性传感/可穿戴电子/柔性电子)

南京大学徐飞(Fei Xu)、陆延青(Yanqing Lu)、陈烨(Ye Chen)和江苏省人民医院袁松涛(Songtao Yuan)团队,在《Nature Communications》上发布了一篇题为“Frequency-encoded eye tracking smart contact lens for human–machine interaction”的论文。论文内容如下: 一、 摘…

一起了解开发表单设计器的几大优势

实现提质、降本、增效的办公效率&#xff0c;可以随时来了解低代码技术平台、开发表单设计器。它们可视化操作界面、更灵活、好维护的优势特点&#xff0c;使得其在激烈的市场竞争中拥有更多强劲的市场竞争力&#xff0c;是提升办公效率的理想武器。今天&#xff0c;小编就向大…

BGP第二日

上图为今日所用拓扑 &#xff0c;其中R1和R4&#xff0c;R3和R5为EBGP邻居&#xff0c;R1和R3为IBGP邻居&#xff0c;AS200区域做OSPF动态路由 一.BGP建立邻居的六种状态 1.idle 空闲状态&#xff1a;建立邻居最初的状态 2.Connect 连接状态&#xff1a;在…