完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在学习ROS的阶段我们使用的都是标准的ROS底盘,只需要一个命令就可以启动小车,然后向 cmd_vel话题上发送数据即可控制小车移动的线速度和角速度。使用标准的ROS底盘可以使我们快速的掌握ROS导航的相关知识。处于加深对ROS自主导航小车的学习,因此设计自制一个ROS小车底盘,学习标准底盘的制作过程。
本系列教程意在分享自己学习ROS自主导航小车时候的笔记,教程内容包含了从零开始搭建一个如下所示的四轮小车模型,小车的名字为 MickX4,我们按照小车底盘硬件,然后介绍ROS建图,导航与控制这个顺序介绍小车的搭建过程。 下图是一个MickX4小车的装配效果图: 1 ROS底盘电气系统 在ROS的自主导航框架中,运动控制系统主要负责小车底盘的精准速度控制并向工控机提供底盘传感器接口,这一部分被封装成了ROS的标准接口。小车底盘接收上位机下发的速度指令(v_tar,w_tar), 根据运动学模型解算每一个电机对应的转速值,控制器根据电机当前状态实时计算控制量,控制电机达到指定的转速。实现车辆的精准控制。 通常小车的底盘控制是由单片机进行完成的,主要原因是通常电机接口不统一,部分电机采用CAN总线的方式驱动,但是有一些伺服电机采用的是PWM进行控制,而工控机通常只提供标准的接口(如,USB口、串口、以太网口)。单片机扩展IO接口容易,可控制车载其他设备(如,大灯、转向灯等)。另一方面使用的单片机进行控制的优点是单片机实时性强,可以通过单片机的中断实现实时处理,其次小车底盘的运动控制属于轻任务量的控制,而工控机适合处理大计算量的任务,如目标识别,构建环境地图等。此外,在一定程度上也体现了机器人中模块化的思想,这种结构也可减轻工控机的负担。 1.1 底盘机械组装 小车的机械部分我们用电机支座把电机固定在型材上,并使用型材搭建小车的底盘承重的支架。(这种结构很粗糙,车辆载重会影响电机的轴承,因此只适合做的算法验证的小车) Mickx4 小车底盘组装全过程 这种结构还是比较皮实的,以下是我们在户外测试的小视频,视频中可以看到M3508电机的功率非常强劲,站个人上去也能走,但是实际测试过程中发现,四轮转向还是比较费力的,人站上去可以前后走,但是原地转向就不行了。 Mickx4 自主导航小车底盘测试 这一部分我们没有做过多的研究,只是分享了一个搭建过程,因为我们是从实验室找的废旧的材料组装的。实际中各位可以按照自己的实际情况找一个碳板或者加工一个底盘支架固定电机即可。以下是我们所使用到的设备清单: 有需要硬件清单的同学可以在评论区留下邮箱,看到后发送excel到你的邮箱中。 1.2 底盘硬件框图 这里我们首先搭建如图5-2所示的小车硬件框图,该小车电机共使用4个大疆的M3508 电机,电机通过CAN总线与处理器相连,处理器使用STM32F103单片机作为唯一的处理单元。小车板载的IMU使用IIC总线与处理器相连,超声波模块安装于小车四周,超声波由超声波控制器采集打包通过串口协议发送到控制器中。最后处理器通过串口转以太网模块对工控机提供以太网接口,通过TCP/IP 与工控机实现数据交换。 这里我们首先搭建如图5-2所示的小车硬件框图,使用STM32F1单片机作为底盘的主控制器(简称:底盘控制器),以实现遥控器数据采集、IMU数据采集、超声波和速度的闭环控制。 底盘控制器接收遥控器或者是工控机发送的目标速度指令(v,w),根据当前电机反馈的状态数据,通过PID控制器计算控制量,最后通过CAN总线下发到每一个电机上。
底盘的电气系统主要负责为传感器和工控机供电,对电池充放电进行管理,检测电池电量、过流保护及控制小车各模块上电顺序。通常小车上使用DC-DC电压转换模块对外提供12V、19V、5V 等直流电源,而小车电机这类大功率设备的供电(高压供电)应由主控板通过控制固态继电器或者接触器实现。此外电气系统还应具备过载保护的功能,当系统某一路电压出现过载时,主控板可通过控制继电器断开该路电压保障系统的安全。 实际我们搭建的小车由于使用的功率较小,因此我们没有使用高低压顺序上电,也没有使用接触器控制电机的上电。电池使用的是大疆的电池,该电池自带有过放电、充电保护和电池电量显示的功能,对电气系统进行了简化。 下图显示了我们所使用的DC-DC模块和电池。 注意: 大家在选取电池的时候一定要选择带有过冲和过放保护、质量过硬的电池,否则在使用过程中可能会造成电池鼓包,产生安全隐患。 2 差速底盘运动学模型 在完成小车底盘传感器的安装以后,我们首先需要分析小车的运动学模型,找到小车整车速度(v,w)与每一个电机的转动角速度的关系。 主流的小车底盘按照转向方式分为差速转向底盘、全向轮底盘、阿卡曼转向底盘。其中差速底盘由于其结构简单通常被研究平台所采用,而阿卡曼转向的底盘主要用于自动驾驶领域。 四轮差速底盘如图5-4所示,四轮差速底盘的转向中心在小车的几何中心上。几何中心到小车四个轮子的距离相等,通常四轮差速模型是按照左右两侧轮子的速度一样,即当做两轮模型来控制的。四轮差速模型在车辆转弯的时候依靠轮胎的打滑实现转向, 因此可以假设 v 1 = v 2 v1=v2 v1=v2, v 3 = v 4 v3=v4 v3=v4 此处我们以图2中的差速模型进行讨论其运动学特性。通常小车采用右手坐标系(右手食指为x方向,大拇指指向Z轴方向,中指指向Y方向),这里假设小车左轮的速度为 v l v_l vl,右轮的速度为 v r v_r vr,左右轮间距为 2 l 2l 2l,小车整车的速度为 V V V,航向角速度为 w w w(角速度定义逆时针方向为正)。小车转弯的半径为 R R R,则小车的转向半径R满足: 小车左右轮线速度满足: 因此有(1)和(2)式可以得到左右轮的线速度为: 对上式中的两个方程联立求解可以得到小车整车的速度 V V V及航向角速度 w w w满足以下关系: 上述理论模型主要用于控制小车,当设定了小车整车的速度以后我们需要转换到每一个轮子的目标转速,最后对每个轮子分别实现变换控制。其次在推算小车的里程位置时候,我们获得的数据是小车每一个轮子的转速或者是转动的角度,此时我们需要根据上述模型,从每一个轮子的速度逆向计算小车的整体速度与位移量。 在完成小车底盘传感器的安装以后,我们在下一部分根据小车的运动学模型,找到小车整车速度 (v,w)与每一个电机的转动角速度的关系,并为小车设计速度控制器,实现小车的遥控运动。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1763 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1617 浏览 1 评论
1059 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
723 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1933浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
726浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
567浏览 3评论
592浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
550浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 12:09 , Processed in 0.712909 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号