移动机器人项目概述
之前有一篇关于机械臂项目https://blog.csdn.net/weixin_42156097/article/details/103483267
这一篇,就让我来总结一下搭建一个完整的移动机器人所需的知识及步骤吧,小小拙见,有问题请及时指正
1. 移动机器人构成
这里我还是不太想写成大部分参考书上的那样,什么执行系统啊驱动系统啊。现在打字的我其实只是个工程师,不是在写书或者论文,只是想用最简单的话,描述给不是AI或者机器人领域的人听,一如既往。
正题,移动机器人和人一样包括:
- 头脑:各种电脑、工控机、嵌入式及写在之中的系统及算法
- 骨架:硬件结构
- 心跳:电池
- 四肢:各种车轮或者足
- 肌肉:电机驱动
- 血液:充电系统
- 五官:摄像头、激光雷达等传感器
- 脸:机器人交互界面
好,我自己又检查了一遍,应该没漏下啥。其实还有很多别的小细节,各种电线各种网络处理,这里不细说
2. 移动机器人团队构成
显然,能够设计一款移动机器人的团队,团队构成绝不简单。
- 硬件工程师:首先,硬件工程师不可或缺,需要他来设计整个机器人的结构参数及外观等。个人认为,这是团队最基本的需求,没有硬件工程师不可想象
- 电气工程师:在机器人生产过程中,串联各个部分的电线及结构设计,电气工程师一样不可或缺
- 嵌入式工程师:机器人系统包含着下位机,需要由嵌入式工程师来控制机器人的腿并提供足够的精度
- 标定测试工程师:机器人的外界信息来源,需要通过标定工程师的工作来优化,才能准确的传达给机器人
- 算法工程师:这就不多说, 移动机器人SLAM及导航,多机器人协同规划,随便挑出一个都挺多要做的
- leader:一个懂得发挥各个成员能力,知识可以不深入但需全面,能够将大家的力气拧到一起,永远充满着斗志,能够激励人心维护团队和谐,能够有资源让机器人发挥作用,方向感正确且不偏激,有项目管理及生产经验的…
团队成分是复杂的,各个成员的工作都是必不可少的。
这之中,当然有一个最为关键的人物,显然从字数上看,他的要求最多,显然从要求上看,很多人还做不到
3. 知识梳理
显然,以一个算法工程师的角度去梳理完整的移动机器人技术栈,一定是不全面的。但我尽量做到完整全面吧,能力有限。
我分为三个大块吧:硬,半硬半软,软(哈哈好污)
硬件需要
- 能够根据需求,快速制作各种复杂工件的能力
- 懂得基本的结构设计(其他的根据需要再学嘛)
- 能制图,能读图
嵌入式需求
- 能根据具体需要画板子
- 全面的电气类知识储备
- 出色的驱动开发能力
- 具有相关设备使用经验及知识
软件需求
- 开发能力
- 算法能力
- 产品能力
- 逻辑能力
其实说的都挺简单的,因为具体的其实也没啥说的,领域内一下就懂了,领域外也一目了然了。这其实都不重要,再不行的人能有多差,重要的是团队有着一个向上团结的心
4. 算法梳理
既然是一个算法工程师,还是干点本行的事吧,写一些算法要点,也是为了自己梳理学习
移动机器人算法其实要用的有很多,我把他们分为几个重要的部分,然后分别来梳理吧
4.1 SLAM
SLAM可谓是移动机器人算法中最重要的部分了。建图及定位,里面有太多太多的学问。几个重要的算法
- gmapping(激光)
- hector_slam(激光)
- cartographer(激光)
- rgbdslam(视觉)
- ORB-SLAM(视觉)
之后会为这些算法都写一写博客
4.2 导航
导航,机器人有了SLAM的地图及定位信息后,如何完成任务。抛开机器人硬件端的事情,我的理解是给定点的路径搜索算法,这里说两个
- Dijkstra
- A*
这里还应需要一些常见的经典算法:排序算法、平滑算法等
4.3 坐标变化
移动机器人在工作状态下,可能会遇到各种状态的切换,对应到地图上也就是位姿的变换。机械臂项目概要里也提到了
- 欧式空间变换及四元数
4.4 ROS知识
请你了解ROS知识,这是十分必要的,无论是它的架构设计还是通讯模式,值得每一个团队学习。
让你的机器人走的更远的,一定不是闭门造车,或者不简单的是闭门造车。也许产品应该迅速去ROS以稳定,但是ROS上那么多的开发仓库,总有能提升你们的地方
- ROS节点通讯模式
4.5 通讯知识
机器人本身,多机器人之间,都要设计明确的通讯模式。这时嵌入式工程师要参与进来,完成这一部分
- 节点插件化
4.6 交互知识
团队应该拥有有产品思维的前端工程师,能够设计优雅简介的界面,能够让界面和机器人有着清晰的通讯逻辑
5. 总结
一篇没啥具体知识点的文章,只是自己的一些思考总结。可能是废话,也可能是有深意的语句。
算法部分还是慢慢去吃,不一定要有具体学习顺序。没有顺序的学习,可能突然有一天,自己把所有已学知识串联起来,打通任督二脉,也不错。毕竟有顺序的学习是非常漫长的过程,分开它们也许更有趣味。
有顺序学习的话,我的建议:
- 坐标变换
- ROS(重点)
- SLAM激光部分(重点)
- 相机及视觉基础知识
- SLAM视觉部分(重点)
- 导航部分