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

news2024/11/14 15:57:12
本文研究的六轮差速移动机器人 (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 本章小结
本章主要工作是搭建六轮差速移动机器人,首先对机器人可能需要用到的硬
件做了初步的分析,对驱动单元的额定转矩做了预估;接着是对基础硬件做了选
型及测试,验证了硬件的功能并测试出在遮挡条件下数据传输的稳定行,最大的
通信距离;然后对机器人软件设计的整体框架做了介绍,着重介绍了控制模块的
控制流程;最后是对机器人的搭建,并在搭建完成之后做了落地测试,同时根据
测试的效果设计了纠偏控制器作为运动控制的辅助控制器,使得机器人能够更为
准确的执行上层下发的控制指令。

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

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

相关文章

BBS项目day03、首页(前端文章布局、分类布局、标签布局)、个人站点(前后端实现)

一、首页 路由 from django.contrib import admin from django.urls import path, re_path from app01 import views from django.views.static import serve from django.conf import settingsurlpatterns [path(admin/, admin.site.urls),# 注册path(register/, views.reg…

「跑输」大盘!汽车业务收入同比下滑15%?虹软一站式方案收效甚微

作为国内A股市场为数不多的车载视觉交互概念上市公司,虹软科技的半年报表现,并不乐观。 数据显示,2023年上半年,虹软科技实现营业收入34,019.19万元,同比增长29.73%;归属于上市公司股东的净利润5,003.86万元…

力推C语言必会题目终章(完结篇)

W...Y的主页 😊 代码仓库分享 💕 今天是分享C语言必会题目最终章,全部都是硬货,大家都坐好准备开始喽!!! 编写一个函数,计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内…

【深入理解Linux内核锁】三、原子操作

我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 文章目录 1、原子操作思想2、整型变量原子操作2.1 API接口2.2 API实现2.2.1 原子变量结…

国家一带一路和万众创业创新的方针政策指引下,Live Market探索跨境产业的创新发展

现代社会,全球经济互联互通,跨境产业也因此而崛起。为了推动跨境产业的创新发展,中国政府提出了“一带一路”和“万众创业、万众创新”的方针政策,旨在促进全球经济的互联互通和创新发展。在这个大环境下,Live Market积…

【24择校指南】华东师范大学计算机考研考情分析

华东师范大学(B) 考研难度(☆☆☆☆) 内容:23考情概况(拟录取和复试分数人数统计)、院校概况、23考试科目、23复试详情、各科目及专业考情分析。 正文2563字,预计阅读:3分钟。 2023考情概况…

Springboot 集成Beetl模板

一、在启动类下的pom.xml中导入依赖&#xff1a; <!--beetl模板引擎--><dependency><groupId>com.ibeetl</groupId><artifactId>beetl</artifactId><version>2.9.8</version></dependency> 二、 配置 beetl需要的Beetl…

【Java转Go】快速上手学习笔记(二)之基础篇二

【Java转Go】快速上手学习笔记&#xff08;二&#xff09;之基础篇一 了解了基本语法、基本数据类型这些使用&#xff0c;接下来我们来讲数组、切片、值传递、引用传递、指针类型、函数、泛型、map、结构体。 目录 数组和切片值传递、引用传递指针类型defer延迟执行函数泛型ma…

c++通过gsop调用基于https的webservice接口总结

ww哦步骤&#xff1a; 第一步&#xff1a;生成头文件 webservice接口一般会有一个对外接口文档。比如&#xff1a;http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL 问号后面的参数表示WSDL文档&#xff0c;是一个XML文档&#xff0c;看不懂配置没关系&a…

UglifyJS 和JShaman相比有什么不同?都可以进行js混淆加密吗?

UglifyJS 和JShaman相比有什么不同&#xff1f; UglifyJS主要功能是压缩JS代码&#xff0c;减小代码体积&#xff1b;JShaman是专门用于对JS代码混淆加密&#xff0c;目的是让JS代码变的不可读、混淆功能逻辑、加密代码中的隐秘数据或字符&#xff0c;是用于代码保护的。 因此…

linux两台服务器互相备份文件(sshpass + crontab)

crontab crontab是linux系统自带的定时调度软件&#xff0c;可用于设置周期性被执行的指令&#xff0c;一般用在每天的非高峰负荷时间段运行作业&#xff0c;可在无需人工干预的情况下运行作业。支持在一周或一月中的不同时段运行。 crontab命令允许用户提交、编辑或删除相应的…

【HBZ分享】java中的BitSet 与 Redis中的BitMap 与 布隆过滤器

BitMap的存储原理 bitMap他会标识出某个整数是否存在&#xff0c;存在即为1&#xff0c;不存在对应位即为0bitMap是存储int类型的&#xff0c;int 4byte&#xff0c; 1byte 8bit&#xff0c;因此bitMap数组中的每个下标可以标识出32个数字是否存在bitMap相当于一个个小格子&…

【数据结构】二叉树的链式结构的实现 -- 详解

一、前置说明 在学习二叉树的基本操作前&#xff0c;需先要创建一棵二叉树&#xff0c;然后才能学习其相关的基本操作。为了降低大家学习成本&#xff0c;此处手动快速创建一棵简单的二叉树&#xff0c;快速进入二叉树操作学习。 typedef char BTDataType;typedef struct Binar…

管理类联考——逻辑——真题篇——按知识分类——汇总篇——一、形式逻辑——模态——-句式转换+性质

文章目录 第三节 模态命题-句式转换性质题-模态命题-句式转换性质-句式转换-逻辑转换&#xff1a;①不一定不可能&#xff1b;②不一定可能不未必。句式转换-语文转换&#xff1a;①一定不可能不必然&#xff1b;②一定不不可能必然不。性质-两命题间的关系-包含&#xff1a;①…

c语言——计算两个数的乘积

//计算两个数的乘积 #include<stdio.h> #include<stdlib.h> int main() {double firstNumber,secondNumber,product;printf("两个浮点数&#xff1a;");scanf("%lf,%lf",&firstNumber,&secondNumber);productfirstNumber*secondNumber…

shell scripts 学习记录

shell scripts 学习记录 1. 环境变量的使用2. Shell中的数组使用Array关联数组 (理解为python中的字典) 3. shell中的基本运算符4. shell 中流程控制语法case...esac使用 5. 函数定义与调用5.1 带返回值的函数5.2 带传参数的函数 6. shell 中的输入/输出重定向6.1 输出重定向6.…

糖尿病视网膜病变,黄斑病变,年龄相关检测研究(Matlab代码)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

sCrypt于8月12日在上海亮相BSV数字未来论坛

2023年8月12日&#xff0c;由上海可一澈科技有限公司&#xff08;以下简称“可一科技”&#xff09;、 临港国际科创研究院发起&#xff0c;携手美国sCrypt公司、福州博泉网络科技有限公司、复旦大学区块链协会&#xff0c;举办的BSV数字未来论坛在中国上海成功落下帷幕。 本次…

好消息!多地明确鼓励提取公积金作首付

大家好&#xff01; 我是老洪&#xff0c;看到一则公积金资讯&#xff0c;聊两句。 据媒体报道&#xff0c;多地明确鼓励提取公积金作首付。 我个人觉得鼓励提取公积金作首付&#xff0c;对于购房者来说挺好的。 这种做法不仅可以减轻首付资金压力&#xff0c;还可以提高购房者…

出现丢包问题的情况以及解决方法

为什么会出现丢包&#xff1f; 我们在网络上传输数据的时候&#xff0c;数据需要经过很多的路由器/交换机&#xff08;交通枢纽&#xff09;进行传输&#xff0c;而路由器/交换机的结构是很复杂的&#xff0c;传输的数据量也是不确定的&#xff0c;可能这一会传输的数据比较少&…