基于X86六轮差速移动机器人运动控制器设计与实现(一)软件与硬件架构

本文研究的六轮差速移动机器人 (Six-Wheeled Differential Mobile Robot
SWDMR) 为了满足资源站到资源站点对点的物资运输,对机器人的跨越障碍能力
有较高的要求。对比传统的四轮移动机器人,六轮移动机器人能够提供更强的驱动
力,而且六轮与四轮相比整车分散到单个车轮的负荷更小了,进而使得车轮的电机
需要的驱动力矩更小,这样更有利于电机选型;对比八轮移动机器人,虽然八轮移
动机器人车轮比六轮更多,所能提供的总体驱动力矩更大,但是增加了控制的难度,
提高了移动系统的搭建成本。移动机器人自身结构舍弃传统的集中式驱动结构采
用分布式驱动结构,分布式结构没有传统车辆上的传动、差速及变速等系统,能够
减轻车辆自身重量,而且每个车轮作为独立的执行器可以做到独立控制,提高整车
控制的灵活性。
SWDMR 作为本文的研究重点先对其层级结构做一个初步的划分。机器人在
复杂环境中运动需要感知环境信息以及自身的状态信息,以确保机器人能够更好
地适应环境,因此少不了一系列的传感器比如雷达、摄像头、 IMU 等组成的感知
层;机器人通过不同的传感器获取到环境信息和自身状态量传送给中央处理器,结
合规划算法计算出机器人未来的运行轨迹,进一步保障机器人的运行安全,这一层
为规划层;中央处理器将规划出的轨迹下发给底层,驱动单元执行规划出的运行指
令,运动控制算法辅助校正机器人的运动轨迹为控制层。
本章主要对机器人运动控制层的基础硬件搭建和机器人软件设计做一个全面
的介绍,同时涉及部分感知层的硬件选型测试。
3.1 整车关键点分析及器件选型
3.1.1 整车硬件组成分析
首先是机器人的核心处理器,为了满足控制算法的算力需求,采用工控机作为
机器人的控制单元。为了得到机器人的横摆角、 X,Y 轴的加速度等信息需要安装一
IMU 。为了使分布式结构更加简洁,采用机电一体化的轮毂电机作为机器人的
驱动单元。同时为了满足人与机器人的远程交互,使操作手能够在远端的控制台也
能介入机器人的运动,机器人本体上需要搭载对应的数据传输模块和视频传输模
块。最后为了给机器人本体上的各个模块提供动力源需要安装一个具有一定容量
的电池。
3.1.2 动力分析
一般对纯电动的移动机器人驱动力估计都是通过计算机器人在纵向通过 35°
坡时电机所需要的驱动力矩,在该工况下,机器人的驱动力需要大于滚动摩擦力和
坡道阻力之和。假设机器人的重心位于自身的几何中心,那么爬 35° 坡所需要的电
机扭矩 T 可以通过式计算得到:
上式中: 表示驱动电机数,取 6 ; 表示驱动系统效率,取 90% ; 表示机器人
的重量,取 100kg ; 表示重力加速度,取 9.8 m/𝑠 2 ; 表示滚动阻力系数,取 0.025
表示最大坡度,取 35° ; 表示车轮半径,取 0.13m 。根据所取参数计算得到
,所以在选型时单个轮毂电机的额定转矩应该大于这个估计值。
3.1.3 关键器件选型
(1) 机器人核心 处理器:工控机
工控机的选择主要指标为成本低,性能高,低功耗,大小适中,重量合适。综
合比较下来工控机 信迈科技的 MEC-5071 具有上述优点,它能够支持多种 Intel 酷睿处理器,
支持 Linux Win8 Win7 等操作系统,各模块板之间通过高可靠连接器对接,运
行环境可靠,具有良好的防尘、散热、抗震性能,对于在野外工况工作的机器人比
较适配。
此外 MEC-5071 有多种外设接口,包含串口,网口, USB GPIO 以及 PCI
展口,可以挂载多种外设以满足实验需求,各个接口功能如表 3.1 所示。

(2) 数据传输链路: LORA 数传电台
数传电台工作时需要两个电台进行点对点传输数据,一端作为移动端搭载在
机器人上接收控制端发出的信息并上报机器人自身的状态信息,另外一端作为控
制端接收机器人上报的参数反馈给工控机计算处理,将工控机计算得到的控制信
息发送给移动端用以控制机器人运动。
在数传电台的选择上应该考虑通信的稳定性和抗干扰能力,亿佰特旗下的产
E90-DTU(400SL37) 能够满足实验需求 , 该产品广泛应用与工业物联网、环境监测、
无线控制等领域。 E90-DTU(400SL37) 支持高速连续传输,工作频段在 410.125
493.125MHz 之间,发射功率为 37dBm ,空中速率在 0.3K 62.5kbps ,传输距离
在无遮挡的通视条件下距离可达 20km ,同时还具有主动监听信道环境噪声功能,
当噪声超过阈值延迟发送,极大提高在恶劣环境下的通信成功率。 E90-
DTU(400SL37) 通信接口为 RS232/RS485 ,通信方式为半双工通信,缓存容量有 1000
个字节,可通过指令分包成不同字节的数据帧传送数据。
(3) 视频传输通道 大功率网传
实现视频传输的大功率网传选择的是腾远智拓公司生产的 ST5801GB-M 系列
产品,其采用 HTOFDM 调制技术,工作频率在 4900 6100MHz ,传输速率可达
351Mbps ,发射功率可达 26dbm ,传输距离在通视条件下有 50km 。在每均有 RJ45
网口,可通过 TCP/IP 实现产品与电脑的通信。根据其产品描述,此产品有基站模
式、用户站模式、一对一桥接功能、 mesh 自组网功能四种通信模式,因为本文研
究的轮式机器人系统只有一个移动端和一个操作端,所以在使用时根据需要选择
一对一桥接模式。

(4) 机器人驱动单元:轮毂电机及其驱动器
在动力分析小节通过计算得到了电机的额定转矩的估计值,结合电机尺寸,价
格以及电机的额定转矩等条件最终选择了 LSDB 系列的伺服轮毂驱动器及电机。
该系列产品具有 IP67 防护等级,对于野外环境能够轻松应对,且有较高的扭矩。
所选的 LSDB4830-CAFC-ASM5 驱动器通信类型为 CAN+UART UART 波特率
115200bps ,支持上位机控制, CAN 波特率有 500kbps/1Mbps 可供选择,驱动器具
有过压保护、欠压保护、电机过热保护、短路保护、驱动器过热保护等功能。WS80L-
15A110C-MUCA03 型号电机的轮子直径为 200mm ,额定扭矩为 15Nm ,最大扭矩
可达 24Nm 。轮胎硬度等级为 A68 ,对于差速转向的机器人来说可谓为福音。
驱动器带有电流闭环,速度闭环,能够准确跟踪下发的力矩指令或速度指令。
查看所选硬件的使用手册,得到各个硬件供电以及通信方式,最终的硬件图可以用
3.7 表示:

3.7 中橙色线为电源线,蓝色为信号线。工控机通过一个 TCP/CAN 模块与
轮毂电机驱动器进行数据交换,六个驱动器挂载在 CAN 总线上;数传通过 USB 口
与工控机进行数据交换; IMU 通过 USB 口将机器人的状态信息上报给工控机;大
功率网传通过 TCP/IP 将视频信息传送给工控机。
3.2 关键器件测试
在各个模块安装前需要对其做功能性和稳定性测试,因为实验场景大多数是
校园环境,有较多的树木和房屋遮挡,且车流量较大,人口流动也比较频繁,如果
数据传输通道出现阻塞或者断开连接等状况,在没有保护措施的情况下机器人与
上层控制断开通信很容易发生危险事故。
(1) LORA 通信测试
LORA 通信测试主要测试数据传输通路在遮挡条件下的稳定性和通信距离。
测试的方案为两个实验人员分别将 LORA 的移动端和操控端与自己电脑的
USB 口连接,打开串口调试助手模拟节点收发数据,传输频率设置为 100ms, 串口
波特率设置为 115200 。通过步行模拟机器人的运动,期间移动端和操控端相互发
送测试指令,每 50 米为一个节点,达到 50 米时统计一次移动端和操控端的收发
指令帧数,计算出对应的丢包率,如此重复实验,不断拉开移动端和操作端的距离,
当出现明显的丢包现象时停止实验。
3.3 六轮差速移动机器人软件设计
机器人软件是基于机器人操作系统 (Robot Operating System,ROS) 进行设计开
发的,通过创建不同的功能包实现不同的功能,功能包之间可以通过话题发布或话
题订阅的方式进行数据交换,这种模块化的设计方式可以使得多人并行开发,提高
软件的设计效率。
根据图 3.1 轮式机器人的层级结构可以将软件分为感知模块、规划模块、控制
模块;还需要有能够记录机器人状态信息,记录数据日志的服务模块;同时,为了
满足机器人与人的交互,还需要人机交互模块。根据各个模块之间的关系得到机器
人软件的总体框图如图 3.10 所示。
在这一小节中主要是对机器人底盘软件进行设计,所涉及的模块主要是机器
人的控制模块,如图 3.10 中标红的部分。机器人自身的软件重点工作有两个:一
是解算上层规划层给出的运动指令下发给驱动单元,二是机器人接收遥控器数据
下发控制底盘运动,并通过数传通道反馈自身状态信息给监控端。具体实现流程如
3.11 所示。
3.11 为机器人底盘的控制流程。当底盘节点开启时,程序会循环检测控制
输入信号。当有控制输入时,判断输入信号是否为遥控话题发布的数据,如果为遥
控数据,机器人数据链路切换到人机交互链路;如果不是遥控话题发布数据,保持
机器人自主运行的正常通信链路。将控制信号输入到 SWDMR 的映射矩阵中将控
制信号转换成各个电机的驱动信号(如果电机为速度模式,则为轮速信号;如果电
机是力矩模式,则为电流信号),控制机器人的运动。判断机器人是否到达目标位
置,如果未到达,进入下一个循环;如果到达目标位置,则结束控制流程。
3.4 六轮差速移动机器人落地测试
3.4.1 六轮差速移动机器人遥控测试
软件框架设计完成将所有的硬件模块部署在机器人本体上,调试信号通道,进
行落地测试,初步验证软件的正确性,并暴露出机器人当前可能存在的一些问题。
落地测试验证了 SWDMR 的遥控通道的稳定性,紧急停止,差速转向等功能。
测试过程中发现当只给机器人某个方向的运动指令时,机器人的实际运动轨迹会
不断往一个方向发生偏移。分析产生这种现象的原因可能是车身结构的问题或者
路面不平整导致了在不改变遥控指令的情况下机器人偏离期望轨迹。将实验场地
选在路面较为平整的室内,还是会出现室外测试的现象,排除了路面因素导致机器
人的偏移。经过检查发现是因为机器人左前轮悬架安装位置有所偏差,最终使得机
器人在运行时会产生一个横向的力矩,使得机器人不断向一边偏移,形成一个螺纹
式的运动曲线。机器人某时刻的运行状态如图 3.13 所示:
3.4.2 基于 PID 的纠偏调节
根据前一小节的测试发现的问题,设计辅助控制器以减小这种系统误差产生
的影响,使得机器人能够较好的执行控制指令。选取机器人的横摆角作为性能指标,
通过加入 IMU 闭环补偿使得车辆有一定的纠偏能力。纠偏控制框图如图 3.14
示:
采样控制输入时刻机器人的实际横摆角度值,以此横摆角的值为起始横摆角,
IMU 测得的机器人横摆角反馈给辅助控制器,起始横摆角与机器人执行控制输
入时的横摆角做差,将差值输入到外环 PID 控制器,实现对横摆角的控制。为了
使得机器人的调节更加平滑,将外环 PID 控制器的输出作为内环 PID 的输入,并
通过 IMU 得到机器人调节过程中的横摆角速度,将两个变量做差输入到内环 PID
控制器实现横摆角速度的控制。下一采样时刻,重复上述过程。

3.15 是在室内测试时记录的曲线,蓝色曲线为横摆角速度响应曲线;黑色
曲线为横摆角响应曲线;红色虚线为横摆角设定曲线,上升沿时刻表示将当前机器
人的横摆角设置为参考值。在 0-15s 这个时间段处于待机状态,测试通信是否均为
正常;在 15-30s ,机器人在无纠偏控制下向前运动,因为有横摆角速度的存在,角
度误差一直在累积;在 30-35s 为处于待机状态;在 35-55s, 机器人回退到起点并手
动调整机器人车身位置,保证机器人与无纠偏状态下的初始位置一致;在 55s 之后
是进行纠偏实验, 58s 设定当前 IMU 上报的横摆角度位置为目标方向,纠偏控制
接入, 75s 给速度指令让机器人运动,角度值基本上与设定值保持一致, 140s 结束
实验。下面对横摆角速度进行分析:
3.16 为室内测试时机器人横摆角速度响应曲线,根据实验数据可以得到机
器人在没有纠偏控制时,前进时会有一个 -0.016rad/s 左右的横摆角速度存在;后退
时有一个 0.044rad/s 左右的横摆角速度,加入纠偏处理后,横摆角速度基本上稳定
在了 0 附近。

3.17 为室外测试时机器人的横摆角变化。在不加纠偏直行时,图 3.17(a)
示的 75-110s 时间段:机器人行驶 7m 左右车身方向就偏移了 32.9° 。控制机器人回
到初始的位置并手动调整底盘位姿,保持与开始实验时位置一致,纠偏控制介入,
如图 3.17(b) 所示纠偏过程中,机器人的航向角调节始终维持在目标值附近,最大
误差为 0.8° ,平均误差仅为 0.01°
3.5 本章小结
本章主要工作是搭建六轮差速移动机器人,首先对机器人可能需要用到的硬
件做了初步的分析,对驱动单元的额定转矩做了预估;接着是对基础硬件做了选
型及测试,验证了硬件的功能并测试出在遮挡条件下数据传输的稳定行,最大的
通信距离;然后对机器人软件设计的整体框架做了介绍,着重介绍了控制模块的
控制流程;最后是对机器人的搭建,并在搭建完成之后做了落地测试,同时根据
测试的效果设计了纠偏控制器作为运动控制的辅助控制器,使得机器人能够更为
准确的执行上层下发的控制指令。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

pytest自动化框架运行全局配置文件pytest.ini

还记得在之前的篇章中有讲到Pytest是目前主要流行的自动化框架之一,他有基础的脚本编码规则以及两种运行方式。 pytest的基础编码规则是可以进行修改,这就是今日文章重点。 看到这大家心中是否提出了两个问题:pytest的基础编码规则在哪可以…

认识docker+LNMP架构

目录 一、docker 1.安装,启动 2.docker相关命令 3.如何使用? 二、LNMP 1.认识LNMP 2.sql注入漏洞挖掘 3.如何绕过检测进行注入 一、docker 1.安装,启动 2.docker相关命令 docker search nginx 搜索镜像 docker pull docker.io/ngin…

皮爷咖啡基于亚马逊云科技的数据架构,加速数据治理进程

皮爷咖啡(Peet’s Coffee)是美国精品咖啡品牌,于2017年进入中国,为中国消费者带来传统经典咖啡饮品,并特别呈现更加丰富的品质咖啡饮品体验。通过深入应用亚马逊云科技云原生数据库产品Amazon Redshift以及Amazon DMS等…

AI智能语音机器人的基本业务流程

先画个图,了解下AI语音机器人的基本业务流程。 上图是一个AI语音机器人的业务流程,简单来说就是首先要配置话术,就是告诉机器人在遇到问题该怎么回答,这个不同公司不同行业的差别比较大,所以一般每个客户都会配置其个性…

avue多选列表根据后端返回的某个值去判断是否选中;avue-curd多选回显

效果如上: getSiteList().then(res > {//列表数据this.siteData res.data.datathis.$nextTick(()>{this.siteData.forEach(item>{//业务条件if(item.configid&&item.configid!0&&item.configid>0){//符合条件时调用选中的方法this.$…

BootstrapBlazor组件使用:数据注解

文章目录 前言BB数据注解数据注解源码数据注解简介注解简单实例[BB 编辑弹窗](https://www.blazor.zone/edit-dialog)[ValidateForm 表单组件](https://www.blazor.zone/validate-form)使用简介 前言 BootstrapBlazor(一下简称BB)是个特别好用的组件,基本上满足了大…

全球网络加速器GA和内容分发网络CDN,哪个更适合您的组织使用?

对互联网用户来说,提供最佳的用户体验至关重要:网页加载时间过长、视频播放断断续续以及服务忽然中断等问题都足以在瞬间失去客户。因此可以帮助提高您的网站或APP提高加载性能的解决方案就至关重要:全球网络加速器和CDN就是其中的两种解决方…

基于Spring Boot的游泳馆管理系统的设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的游泳馆管理系统的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java spring…

深度解读波卡 2.0:多核、更有韧性、以应用为中心

本文基于 Polkadot 生态研究院整理,有所删节 随着波卡 1.0 的正式实现,波卡于 6 月 28 日至 29 日在哥本哈根举办了年度最重要的会议 Polkadot Decoded 2023,吸引了来自全球的行业专家、开发者和爱好者,共同探讨和分享波卡生态的…

Stable Diffusion的使用以及各种资源

Stable Diffsuion资源目录 SD简述sd安装模型下载关键词,描述语句插件管理controlNet自己训练模型 SD简述 Stable Diffusion是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,尽管它也可以应用于其他任务,如…

PHPStudy 安装tp8 php8.2.9

一、PhpStudy升级PHP版本,安装PHP8.2操作步骤 1.1、官网下载最新的php版本 打开Windows版的官网下载,地址:https://windows.php.net/download/ 页面上有不同的PHP版本,这里我们下载的是64位nts版的PHP8.2.9。 1.2、解压下载的文…

openGauss学习笔记-45 openGauss 高级数据管理-物化视图

文章目录 openGauss学习笔记-45 openGauss 高级数据管理-物化视图45.1 全量物化视图45.1.1 全量物化视图语法格式45.1.2 全量物化视图参数说明45.1.3 全量物化视图示例 45.2 增量物化视图45.2.1 增量物化视图语法格式45.2.2 增量物化视图参数说明45.2.3 增量物化视图示例 openG…

Docker关于下载,镜像配置,容器启动,停止,查看等基础操作

系列文章目录 文章目录 系列文章目录前言一、安装Docker并配置镜像加速器二、下载系统镜像(Ubuntu、 centos)三、基于下载的镜像创建两个容器 (容器名一个为自己名字全拼,一个为首名字字母)四、容器的启动、 停止及重启…

【uniapp】微信小程序 , 海报轮播图弹窗,点击海报保存到本地,长按海报图片分享,收藏或保存

uivew 2.0 uniapp 海报画板 DCloud 插件市场 第一步&#xff0c;下载插件并导入HbuilderX 第二步&#xff0c;文件内 引入 海报组件 <template><painter ref"haibaorefs"></painter> <template> <script>import painter from /comp…

视觉SLAM:一直在入门,如何能精通,CV领域的绝境长城,

目录 前言 福利&#xff1a;文末有chat-gpt纯分享&#xff0c;无魔法&#xff0c;无限制 1 什么是SLAM&#xff1f; 2 为什么用SLAM&#xff1f; 3 视觉SLAM怎么实现&#xff1f; 4 前端视觉里程计 5 后端优化 6 回环检测 7 地图构建 8 结语 前言 上周的组会上&…

第十五课、Windows 下打包发布 Qt 应用程序

功能描述&#xff1a;讲解了 Windows 下打包发布 Qt 应用程序的三种方法&#xff0c;并对比优缺点 一、利用 windepolyqt 工具打包发布 Qt 提供了一个 windeployqt 工具来自动创建可部署的文件夹。 打包发布流程&#xff1a; 1. 新建一个文件夹&#xff0c;将编译后的可执行…

No mapping found for HTTP request with URI

参考: 参考地址 说明 ssm老项目,接过来别人的项目 临时建了一个Controller方便测试用的,结果访问掉不通,报: No mapping found for HTTP request with URIxxxx 这样的错误 解决办法 看了下web,xml配置 在 webmvc-config.xml 配置文件里面添加了几行配置 说明: com.iph.h…

d3dx9_43.dll如何修复?找不到d3dx9_43.dll怎么办

d3dx9_43.dll文件通常与DirectX 9运行时库一起安装在用户的计算机上。当用户运行需要DirectX 9支持的应用程序时&#xff0c;操作系统会自动加载d3dx9_43.dll文件&#xff0c;并提供所需的功能。如果缺少或损坏了该文件&#xff0c;用户可能会遇到无法运行应用程序、崩溃或显示…

SpringBoot-1-Spring Boot实战:快速搭建你的第一个应用,以及了解原理

SpringBoot-1-Spring Boot实战&#xff1a;快速搭建你的第一个应用&#xff0c;以及了解原理 今日内容 SpringBootWeb入门 前言 我们在之前介绍Spring的时候&#xff0c;已经说过Spring官方(Spring官方)提供很多开源项目&#xff0c;点击projects&#xff0c;看到spring家族…

澎峰科技|邀您关注2023 RISC-V中国峰会!

峰会概览 2023 RISC-V中国峰会&#xff08;RISC-V Summit China 2023&#xff09;将于8月23日至25日在北京香格里拉饭店举行。本届峰会将以“RISC-V生态共建”为主题&#xff0c;结合当下全球新形势&#xff0c;把握全球新时机&#xff0c;呈现RISC-V全球新观点、新趋势。 本…