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

  • 1 博客回顾
  • 2 存在问题
  • 3 学习建议
  • 4 后续计划

开源自主导航小车MickX4 这个系列教程中,我们一共分为了十个博客部分进行了讲解差速小车的导航。由于一些的原因,这里有一部分我们没有仔细去深入研究其中每一个部分的算法内容,只是简单的调用和理解了这个算法模块的输入输出接口。比如说这里用到的激光SLAM(gmapping,cartographer LeGO-LOAM),还有后续的全局规划算法和局部规划算法也只是调了一下参数,没有对源码进行分析。

1 博客回顾

最早针对先锋机器人底盘上实现了自主导航,产生了如下的几篇博客。当时在先锋机器人的底盘上实现了自主导航。

  • 自主导航小车实践(一)

  • 自主导航小车实践(二)

  • 自主导航小车实践(三)

  • 自主导航小车实践(四)

后来由于项目需要,产生了自己制作ROS底盘的项目。因此制作了5辆麦卡纳姆轮的底盘,这个过程编写成为了以下两篇博文

  • ROS麦克纳姆轮底盘制作(上)

  • ROS麦克纳姆轮底盘制作(下)

后来想制作在室外运行的自主导航小车,因此确定了Mick 这个项目代号。开始使用四轮差速小车模型和16线的3D激光雷达作为传感器,导航框架是基于move_base进行修改的。

项目开源的代码中支持麦克纳姆轮和四轮差速底盘,该开源项目从搭建机械部分开始,分享底层的嵌入式控制,上层的建图和导航部分,最终实现A点到B的自主导航。 当前地址的代码为麦克纳姆轮和四轮差速ROS底盘的ROS导航节点包,与 mick_robot_chasiss 代码(底层控制代码)配合使用,更多的信息可以参考博客-熊猫飞天

  • 开源自主导航小车MickX4(一)ROS底盘硬件

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

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

  • 开源自主导航小车MickX4(四)底盘URDF模型

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

  • 开源自主导航小车MickX4(六)cartography 2D 建图

  • 开源自主导航小车MickX4(七)cartography 3D 建图

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

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

  • 开源自主导航小车MickX4(十)总结与展望

2 存在问题

  • 1)里程计不准
    室外的4轮小车或者是6轮的小车,转向是依靠轮子和地面打滑实现转向的。因此单独使用轮子转速换算得到的偏航角是不准的,需要使用外置的IMU来计算偏航角。在测试中我们还发现,低成本的IMU(MPU9250、MPU6050这类几十块钱的IMU)在使用前必须要校准磁力计,安装位置要远离电机、铁块(15cm以上),否则会影响偏航角的输出值。
  • 2)电机选型
    最好是选择无刷电机,带总线通讯协议的。在做车的过程中我们选出了大疆的M3508电机和安普斯的轮毂电机两种电机,M3508扭矩在3.5牛米左右,安普斯的电机最大有5牛米的。这两款电机都不错,值得推荐给大家。
  • 3)车辆布局
    我们的小车采用了四个电机,也就是每个轮子一个电机,暂时叫做方案A。对应的还有一种是理论同步带把一侧的轮子用同步带动,再利用一个或者多个电机带动同步带,把这种方案叫做方案B。 方案A的机械结构简单,安装方便,只需要一个联轴器就可以吧轮子相连。缺点是,四个轮子的速度会不一样,造成这种现象的原因是,在坑洼路面和上下坡的时候每个轮子的受力不同,如果我们四个电机都是用的同一个PID参数,那么此时轮子的速度会不同,导致轮子滑转,对里程计产生误差。 方案B在结构上会比方案A复杂一点,但是可以保证机器人左右两侧的轮子的速度是一样的。这种结构在先锋机器人上有应用。
  • 4)通讯接口
    这里的通讯接口主要是指单片机底板和工控机的通讯。通常我们使用232来连接单片机和工控机,考虑到数据量后期可能比较大,我们尝试过使用网口来连接,所有的数据汇聚到中心交换机上,然后工控机只需要一根网线连到交换机就可以实现和所有传感器通讯。这种方式接线起来比较简单,使用POE供电的交换机,连供电问题都解决了,实际使用中发现这个实时性不太好,也就是从工控机到单片机发送控制命令的时候,由于网络环境可能会产生阻塞的问题,不能保证通讯延时。

3 学习建议

  • 1)先使用成品底盘
    根据我自己学习的经验。大家如果是初学的话,最好还是先用一个成品的底盘(比如,turtlebot、autolabor、先锋机器人和kuboki之类的)。先用成品的底盘调通导航程序,这样如果你对自己搭建底盘感兴趣,你在调试的时候起码可以保证上层导航算法是没有问题的。

  • 2)底盘选型
    在学习的过程中,我们发现两轮差速底盘的里程计精度比起四轮差速要高很对(四轮是依靠轮子和底盘滑动实现转向的)。但是室外环境,两轮底盘不如四轮底盘平稳。而里程计误差问题通过额外的算法来补偿里程计,比如,IMU测量姿态角,把Yaw补偿轮子打滑,俯仰角用于计算高度。

  • 3)底盘控制方案
    现在的伺服电机都支持总线式的电机,一些工控机也有IO接口。因此也有方案直接把底盘的运动控制放在了工控机里面,也就是在ROS底盘节点里面计算速度闭环,直接通过总线下发,控制电机调速。与之对比的方案就是我们采用的利用STM32来实现底盘的运动控制。这两种方案我们都在不同的项目上使用过,单片机方案成熟度高,但是针对大功率电机需要对控制板做电磁屏蔽。工控机方案好调试,可视化数据比较方便,但是实时性差一点,此外类似于线程阻塞的坑(别问我咋知道的())。对于小车还是推荐单片机方案。

  • 4)学习方法
    遇到问题别自己一直想,多加群交流,加群,加群

  • 5)知识点
    从头制作一个ROS小车,然后实现自主导航。需要设计到ROS导航层嵌入式底层一些拧螺丝的知识。嵌入式的话可以去网上找一个配有视频教程的开发板进行学习,后期再自己制作PCB,美化一下。ROS导航的话可以网络上有很多的博客(入古月居大佬的教程)

4 后续计划

当前的小车教程,也只能算是走通了整个流程,算是一个入门教程吧。在实际的项目中还需要针对环境去微调参数和,但是基本上小车是可以动起来的。实际上小车的文档在此之前就已经写完了,中间由于一些项目上的事情去忙其他的了,最近把文档整理了一遍(也算是复习了),使得它展示的更加有逻辑性一点。

由于自己的研究方向是视觉SLAM,因此在后续的任务中将继续开源另外一个项目,计划是实现基于视觉的导航。针对在激光导航中遇到的问题,后期可能会调整一些使用4轮8电机的全驱动结构的底盘,提升里程计的精度问题。新的视觉导航框架也会合并到Mick这个项目代号中去。

最后感谢向我反馈BUG的网友们,感谢大家的支持。

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

或者加群水一波(1149897304)

开源自主导航小车MickX4(十)总结相关推荐

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

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

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

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

  3. 开源自主导航小车MickX4(一)ROS底盘硬件

    开源自主导航小车MickX4 1 ROS底盘电气系统 1.1 底盘机械组装 1.2 底盘硬件框图 1.3 电气系统搭建 2 差速底盘运动学模型 参考资料 在学习ROS的阶段我们使用的都是标准的ROS底 ...

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 黄埔大学,选址定了!
  2. C++ 复制vector值到array,复制 array 到jintArray
  3. 用于改善质量、稳定性和多样性的可增长式GAN
  4. C# SharpMap 学习总结
  5. @EnableDiscoveryClient和@EnableEurekaClient的区别
  6. C#学员信息管理试题
  7. 【Leetcode | 顺序刷题 】二分查找目录
  8. mysql批量取消多行sql_mysql批量删除指定前缀的表,批量修改表名的SQL语句
  9. Bootstrap 高亮某个菜单项
  10. node之npm一直出错
  11. crypto在web的使用
  12. 牛客练习赛23: D. 托米的咒语(暴力)
  13. 值得收藏!中国金融体系主要指标大全
  14. bootstrap实现开关切换
  15. Livezilla安装配置, APE(Ajax Push Engine)安装配置
  16. 金网奖首度跨界心理学,打造最强案例
  17. 软件开发流程与初始软件测试
  18. 湖南大学操作系统导论课程作业
  19. [背包DP] 洛谷相关题目整理与练习(74题-)
  20. win10升级之后,Oracle服务没有了。。。

热门文章

  1. 人民币(¥)符号在html中的显示
  2. 度秘语音引擎app_三款语音写作App的选择
  3. 分页实现-----首页、上一页、下一页、最后一页
  4. android 11.0 12.0控制屏幕亮屏和灭屏操作
  5. 一个简单的原生js取色效果
  6. 计算机的历史——到底谁是第一台计算机?
  7. 鸿蒙和鲲鹏有什么不同,鲲鹏、昇腾、鸿蒙、云……带你零距离接触不一样的湘江鲲鹏...
  8. 2020年最酷的十个无人机项目(上)
  9. otc焊接机器人编程模拟软件_OTC焊接机器人精密焊接的编程技巧
  10. SAP License:集团化企业多准则多报告的实现