开源自主导航小车MickX4

  • 1 ROS底盘电气系统
    • 1.1 底盘机械组装
    • 1.2 底盘硬件框图
    • 1.3 电气系统搭建
  • 2 差速底盘运动学模型
  • 参考资料

在学习ROS的阶段我们使用的都是标准的ROS底盘,只需要一个命令就可以启动小车,然后向 cmd_vel话题上发送数据即可控制小车移动的线速度和角速度。使用标准的ROS底盘可以使我们快速的掌握ROS导航的相关知识。处于加深对ROS自主导航小车的学习,因此设计自制一个ROS小车底盘,学习标准底盘的制作过程。

本系列教程意在分享自己学习ROS自主导航小车时候的笔记,教程内容包含了从零开始搭建一个如下所示的四轮小车模型,小车的名字为 MickX4,我们按照小车底盘硬件,然后介绍ROS建图,导航与控制这个顺序介绍小车的搭建过程。教程一共分为6篇:

开源自主导航小车MickX4(一)ROS底盘硬件
开源自主导航小车MickX4(二)ROS底盘运动控制
开源自主导航小车MickX4(三)底盘ROS节点
开源自主导航小车MickX4(四)底盘URDF模型
开源自主导航小车MickX4(五)gmapping建图
开源自主导航小车MickX4(六)cartographer 室外2D建图
开源自主导航小车MickX4(七)cartographer 室外3D建图
开源自主导航小车MickX4(八)LeGo-LOAM 室外3D建图

下图是一个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总线下发到每一个电机上。

  • 电机使用的是大疆的M3805电机,该电机峰值功率高达220W,峰值扭矩5Nm;最大持续功率为150W,可以持续输出3.5N-m的扭矩,M3508电机使用CAN总线通讯,可实时反馈电机电流、速度、位置。
  • 遥控器使用的是大疆DT7遥控器,通讯协议为DBUS协议。使用反相器连接遥控器的引脚,将串口的波特率设置为1M以后,可通过串口解析遥控器的数据
  • IMU使用MPU6050提供三轴加速度和三轴旋转角速度、HMC5883提供三轴的磁力,利用四元数互补滤波实现9轴姿态融合算法,计算输出3个姿态角(roll,pitch,yaw),用于测量小车姿态。
  • 超声波使用是一个自制的模块,该模块同样使用STM32作为处理器实时读取16路超声波传感器的数据,并将数据打包转换到CAN总线和串口总线上,上传到底盘控制器中。

1.3 电气系统搭建

底盘的电气系统主要负责为传感器和工控机供电,对电池充放电进行管理,检测电池电量、过流保护及控制小车各模块上电顺序。通常小车上使用DC-DC电压转换模块对外提供12V、19V、5V 等直流电源,而小车电机这类大功率设备的供电(高压供电)应由主控板通过控制固态继电器或者接触器实现。此外电气系统还应具备过载保护的功能,当系统某一路电压出现过载时,主控板可通过控制继电器断开该路电压保障系统的安全。

实际我们搭建的小车由于使用的功率较小,因此我们没有使用高低压顺序上电,也没有使用接触器控制电机的上电。电池使用的是大疆的电池,该电池自带有过放电、充电保护和电池电量显示的功能,对电气系统进行了简化。

下图显示了我们所使用的DC-DC模块和电池。

注意: 大家在选取电池的时候一定要选择带有过冲和过放保护、质量过硬的电池,否则在使用过程中可能会造成电池鼓包,产生安全隐患。

2 差速底盘运动学模型

在完成小车底盘传感器的安装以后,我们首先需要分析小车的运动学模型,找到小车整车速度(v,w)与每一个电机的转动角速度的关系。

主流的小车底盘按照转向方式分为差速转向底盘、全向轮底盘、阿卡曼转向底盘。其中差速底盘由于其结构简单通常被研究平台所采用,而阿卡曼转向的底盘主要用于自动驾驶领域。

四轮差速底盘如图5-4所示,四轮差速底盘的转向中心在小车的几何中心上。几何中心到小车四个轮子的距离相等,通常四轮差速模型是按照左右两侧轮子的速度一样,即当做两轮模型来控制的。四轮差速模型在车辆转弯的时候依靠轮胎的打滑实现转向,
因此可以假设 v1=v2v1=v2v1=v2,v3=v4v3=v4v3=v4

此处我们以图2中的差速模型进行讨论其运动学特性。通常小车采用右手坐标系(右手食指为x方向,大拇指指向Z轴方向,中指指向Y方向),这里假设小车左轮的速度为vlv_lvl,右轮的速度为vrv_rvr,左右轮间距为2l2l2l,小车整车的速度为VVV,航向角速度为www(角速度定义逆时针方向为正)。小车转弯的半径为RRR,则小车的转向半径R满足:

小车左右轮线速度满足:

因此有(1)和(2)式可以得到左右轮的线速度为:

对上式中的两个方程联立求解可以得到小车整车的速度VVV及航向角速度www满足以下关系:

上述理论模型主要用于控制小车,当设定了小车整车的速度以后我们需要转换到每一个轮子的目标转速,最后对每个轮子分别实现变换控制。其次在推算小车的里程位置时候,我们获得的数据是小车每一个轮子的转速或者是转动的角度,此时我们需要根据上述模型,从每一个轮子的速度逆向计算小车的整体速度与位移量。

在完成小车底盘传感器的安装以后,我们在下一部分根据小车的运动学模型,找到小车整车速度
(v,w)与每一个电机的转动角速度的关系,并为小车设计速度控制器,实现小车的遥控运动。

参考资料

【1】当前小车底盘的代码位于:https://github.com/RuPingCen/mick-robot-chasiss

下一篇:开源自主导航小车MickX4(二)ROS底盘运动控制

博客每周一更新,欢迎大家关注收藏。

欢迎大家点赞在评论区交流讨论(cenruping@vip.qq.com) O(∩_∩)O

或者加群交流(1149897304)

开源自主导航小车MickX4(一)ROS底盘硬件相关推荐

  1. 开源自主导航小车MickX4(二)ROS底盘运动控制

    开源自主导航小车MickX4 1 ROS底盘运动控制 1.1 小车控制流程图 1.2 小车控制核心代码分析 1.2.1 小车核心代码-遥控器解析 1.2.2 小车核心代码-电机反馈数据 1.2.3 小 ...

  2. 开源自主导航小车MickX4(三)底盘ROS节点

    开源自主导航小车MickX4(三)底盘ROS节点 1.底盘ROS节点 1.1 ROS节点功能定义 1.2 接收cmd_vel话题数据 1.3 发布里程计数据 1.4 发布IMU数据 1.5 发布超声波 ...

  3. 开源自主导航小车MickX4(十)总结

    开源自主导航小车MickX4(十)总结 1 博客回顾 2 存在问题 3 学习建议 4 后续计划 在 开源自主导航小车MickX4 这个系列教程中,我们一共分为了十个博客部分进行了讲解差速小车的导航.由 ...

  4. 开源自主导航小车MickX4(五)gmapping建图

    开源自主导航小车MickX4(五)gmapping建图 1 激光雷达驱动 2 3D点云到2D点云的转换 3 gmapping 建图 3.1 安装 gmapping库 3.2 配置 gmapping 3 ...

  5. 开源自主导航小车MickX4(九)基于move_base 的自主导航框架

    开源自主导航小车MickX4(九)move_base 导航框架 1 move_base 导航框架整体分析 1.1 map_server 1.2 AMCL定位 1.3 move_base 包 2 AMC ...

  6. 开源自主导航小车MickX4(八)LeGo-LOAM 室外3D建图

    开源自主导航小车MickX4(八)LeGo-LOAM 室外3D建图 1 安装 LeGO-LOAM 1.1安装依赖项 2 运行 LeGO-LOAM 2.1 运行论文demo 2.2 修改配置文件 2.3 ...

  7. 开源自主导航小车MickX4(七)cartographer 室外3D建图

    开源自主导航小车MickX4(七)cartographer 室外3D建图 1 cartographer 3D建图demo 1.1 cartographer 安装 1.2 3D数据集建图 1.3 3D定 ...

  8. ROS 开源智能小车 TurtleBot3 Waffle pi 深度视觉版简介 (可实现地图搭建、自主导航、自主避障、深度视觉算法研究)

    ROS机器人操作系统为什么现在火爆全球? ROS(Robot Operating System,机器人操作系统)是目前世界上更主流更多人使用的机器人开源操作系统.它可以提供操作系统应有的服务,包括硬件 ...

  9. 自主导航小车实践(一)

    本教程主要分享自己在制作自主导航小车的过程,本教程计划分为4章节来讲.第一章节分析自主导航小车的硬件结构,介绍自主导航小车的硬件系统.第二.三章介绍自主导航小车的软件框架与实际配置步骤.第四章对工作进 ...

最新文章

  1. 即将开源 | 2亿用户背后的Flutter应用框架Fish Redux
  2. 什么是MIME?什么是MIME邮件?
  3. IC设计Linux设置文件夹颜色,IC设计中常用的Linux命令
  4. 如何让程序一直运行_VBA程序正式运行前,要该如何进行调试呢?
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的铁路售票系统
  6. 方舟php服务器控制,方舟基本管理命令代码
  7. 软考计算机网络初级试题答案,2015年下半年中级软考《计算机网络—网络工程师》试题及答案...
  8. STL 格式解析--文本以及二进制格式
  9. 需求分析之矩阵分析法
  10. 提高你的Java代码质量吧:不要随便设置随机种子
  11. C语言流输入和输出函数
  12. java毕业设计开题报告怎么写 如何写好一篇论文开题报告
  13. Python 数据采集-爬取学校官网新闻标题与链接(基础)
  14. 2021年起重机械指挥最新解析及起重机械指挥模拟考试
  15. Scrapy爬取网页并保存到数据库中
  16. qq手机令牌 for android3.3 官方安装版,腾讯手机管家app下载 腾讯手机管家(原QQ手机管家) for Android v8.8.3 官方安卓版 下载-脚本之家...
  17. linux 硬盘克隆diskgen,DiskGenius-硬盘分区及数据恢复软件-DiskGenius下载 v5.2.0.884官方版-完美下载...
  18. 树的遍历(python)
  19. 《思考致富》带给我们致富的“捷径”
  20. Math类的常用方法,进一法,退一法,四舍五入法,绝对值,随机数 ,平方根 xy的次方

热门文章

  1. 2017IT在线教育机构汇总
  2. SWUST OJ 299: 平方和
  3. python和linux运维学哪个--学习Python在Linux运维上的应用应该看哪些书 什么样的学习路线...
  4. 【案例】某市社会治理网格化智慧工作平台建设案例
  5. 计算机毕业设计java+ssm妇女联合会信息网站(源码+系统+mysql数据库+Lw文档)
  6. 十年Java经验让我总结出了这些,什么是真正的架构设计?
  7. compileflow流程引擎使用
  8. 华信短信视频开源平台搭建攻略(之三完结易错篇)
  9. 2021-02-05仅供自己参考:多态使用
  10. 对傅里叶函数以及级数的理解