没想到吧,这个飞盘一样的圆柱体,竟然是一辆智能小车。
它能利用自身的激光雷达实时绘制地图,再通过RVIZ可视化工具实时显示。
有网友精辟总结:
哈哈!是有点点像,但不多啊!
那么,想实现这一功能,具体怎么设计软硬件?
下面尽可能通俗易懂的说明一下。
(1)为什么要用两个主控?
一般来说,机器人系统ROS都需要在树莓派等微型电脑上运行,而我想要以最低的成本去完成这个项目,所以我将运行ROS系统电脑从机载转到上位机,通过WiFi与连接小车,这样就可以节省一台微型电脑。
但是!雷达的数据大概1ms发送一次,一块ESP32显然不够用了!所以,我选择使用两个ESP32作为主控。
类似的结构鱼香ROS有制作,不过体型比较大,集成度低。
(2)天线部分
2.1 阻抗匹配 技巧
esp32天线部分比较讲究,涉及到高速线路,这里的射频部分做了50R阻抗匹配。
这个叠层我还是有点懵,看不懂后面就使用了嘉立创的阻抗计算器,计算这个阻抗对应什么厚度的铜箔与多少宽度的线。
最后选用4层板,PCB厚度:1.6,走线宽度:13.2mil。
2.2 器件摆放与走线 要点
这里参考乐鑫的硬件设计指南。
4层PCB内层1全覆铜,底层走普通信号,内层2走电源。
天线处的Π形滤波电路,用网络矢量分析仪 进行测试调整。步骤如下:
如下图频率所示,在2.431GHz左右时,驻波比在1.348,阻抗在55.21左右,代表此电路在2.4GHz的频率下性能接近最佳。
(3)晶振部分
晶振部分也算高速电路了,需要GND包围做屏蔽层
(4)电池设计原理
电池设计为不可拆卸,所以添加了一个充电电路。采用TP4056设计,充电电流设置为400ma。
这里的开关控制和电流检测电路,简单说就是:
这部分电路的作用是——将电源先升压为5V,再稳压为3.3V,供给单片机和传感器使用。
(5)下载部分
自动下载电路使用了CH342F该芯片,有两个端口,可以使用一个USB同时下载两个单片机。考虑到空间比较紧凑,所以采用DMMT3904来代替两个NPN的三极管
(6)其他电路说明
如何通过软件设计,实现二维地图搭建+规划路径的功能?
(1)编译环境与工具
esp32使用idf4.4编译环境
使用espressif-ide编辑代码
ROS系统使用noetic版本,还是使用ROS1。
这个结构并非是我首先使用,鱼香ROS等大佬早就在使用了。
(2)只会ROS1皮毛,怎么实现二维地图搭建?
比较成熟的方案是在ESP32上运行ROS2的库,这样就可以在ESP32上直接发布话题。
可我只会一点ROS1的皮毛,再去学习ROS2还是比较困难的,所以我就采用了TCP转接串口的方式去兼容原有的包,这样就只用简易的操作一下就可以完成功能了:
①定位算法使用robot_pose_ekf,只使用里程计和激光雷达去进行定位。
②建图算法采用karto建图算法,参数默认。
③导航使用Navigation导航架构,简单理解一下:
这个框架由amcl自适应蒙特卡洛定位功能包 提供定位。
map-server将建图的地图数据发布出来,然后根据rviz发布的目标定位,进行路径规划,输出路径和底盘移动数据,控制小车到达目标点。
④底盘与上位机使用socat来进行TCP/UDP到串口的转接
⑤雷达的通信链路 :雷达转发采用UDP发送到ROS上位机,再由socat创建虚拟串口进行UDP与串口的转接。
建图效果
⑥运动控制板通信采用TCP与ROS上位机连接,再由socat创建虚拟串口进行TCP与串口的转接。
⑦手机APP与底盘驱动的esp32做UDP通信。
在手机上的效果:
我是如何接触到ROS的呢?
2021年,B站大佬稚晖君制作了一台自行车,我看到他使用了ROS系统,能进行二维地图创建与路径规划。
还有浙江大学Fast-Lab的飞行器,也使用了ROS机器人系统,进行各种智能化的操作。
于是命运的齿轮就此转动。
我原本以为ROS系统是非常复杂难以理解的,没想到稍作学习后发现,ROS系统相当于是难度高了一些的"乐高积木",会有大佬将代码封装成各种“功能包”。
就像是Arduino的“库”,我不需要去写导航算法或者建图算法,只要去官网下载对应版本的代码包,然后修改里面的部分参数,然后将这些包连接起来,就可以完成建图与导航等,实现各种看起来高大上的操作。
实际操作和理论还是有点差别的。
为了实践,我想购买一台成品小车,学习一下ROS,却发现价格实在太贵了……如果要完成基本的建图功能价格要上千元。
当然最后我还是花了2400多买了一台,学习了1个月。结果……
完成基础的学习后,发现小车基本用不上了摆在一边吃灰[衰]。恰好这时候看到“鱼香ROS”这位大佬做了一个可以远程运行ROS系统的小车。当然,比我这大了一些,价格也要600-700。
于是,我又行了!
我就想着,我是否能将我这1个月的学习复现?
我是否也能制作一台低成本并且相对小巧的智能小车?
抱着这个想法就开始了这个项目。
最终,项目尺寸为一个巴掌大,成本控制在260元左右。
【正文完】
关注我,看一手优质开源项目