开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2024.06.05山东
工程名称:迷你智能车Liguanxi-smart-car【星火计划】
工程作者:liguanxi
什么?!这是一台车?
什么?!它还能根据运动轨迹,实时绘制地图?!
使用手机APP控制小车
通过USB进行充放电
二维地图创建与路径规划:使用电脑运行ROS,利用激光雷达进行二维建图,使用RVIZ可视化工具显示
持续开发中,待增加功能包含:凭借自身算力进行避障、手机端显示建图结果与视频画面、利用摄像头进行目标追踪、利用激光雷达进行多点与单点导航、可以RRT自主探索建图、雷达跟踪目标
想实现这些功能,具体怎么设计软硬件?
ESP32-S3底板_原理图
ESP32-S3底板_PCB图
ESP32-S摄像头板_原理图
ESP32-S摄像头板_PCB图
(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的频率下性能接近最佳。
图片截取于“清澈的泉水”的视频立创EDA绘制2.4GHzRF射频双层板制作
(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通信。
在手机上的效果:
学习一个月,或许就为了这一刻!
学习的结果出乎意料……
本项目已开源!
——想复刻?想给作者点赞?可复制开源网址前往原文。
*本文转载了「立创开源硬件平台」的用户创作,如有侵权,请联系删除