如何分析基于RT-Thread实现的激光雷达避障小车

这篇文章给大家介绍如何分析基于RT-Thread实现的激光雷达避障小车,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

背景描述

由于在学校里很少有机会让我将所学的东西付诸于实践.有时候学完一个东西没法真正了解自己是否掌握,同时为了进一步提高自己的能力,不再漫无目的的学习.所以决定做这样一辆小车.其中PCB原理图和初版PCB_layout是我在寒假在家中完成的,程序是基于rt-thread[BSP]stm32f429-Apollo写的.历时3个多月.这辆小车很多地方可以说是边学边做的,尤其是有关于rt-thread方面的知识.在学习rt-thread期间受到了很多RTT社区里的人的帮助.要特别感谢下RTT开源社区.

RT-Thread起到的作用

作为主控芯片的实时系统,提供多线程编程.小车的每个重要的需要实时的功能都单独作为一个线程.如小车的mpu9250姿态解算出姿态角(Roll、Pitch、Yaw )的过程就单独使用了一个线程(mpu9250),小车的PID控制速度的代码也单独使用了一个线程(speed).每个功能线程(mpu9250,speed…等)都会处理完各自的数据得出结果,并且这些结果在必要的时候提供给主线程(master)使用.也正是因为rt-thread的优先级全抢占式调度使得重要的线程能及时处理完.另外rt-thread提供的finsh/msh在调试期间起到了很大的作用,同时也可以通过远程蓝牙串口控制小车的行为.

实物图

如何分析基于RT-Thread实现的激光雷达避障小车如何分析基于RT-Thread实现的激光雷达避障小车如何分析基于RT-Thread实现的激光雷达避障小车

  • 主控芯片:STM32F429IGT6

  • 其它主要配件:激光雷达,蓝牙串口,无线射频模块,MPU9250九轴姿态模块,电机驱动芯片l298n.两个自带AB相编码器的电机.履带一对.

  • 编译环境:MDK525

  • RT-Thread版本:3.0.2

硬件设计

如何分析基于RT-Thread实现的激光雷达避障小车

  1. 激光雷达通过串口通讯,以及pwm控制转速.

  2. 射频模块通过uart6通信.使用rt-thread的事件通知消息的到来.

  3. 蓝牙串口,作为msh终端的输出.方便调试.

  4. mpu9250模块通过i2c通信.

  5. 如何分析基于RT-Thread实现的激光雷达避障小车

  6. 如何分析基于RT-Thread实现的激光雷达避障小车

软件设计

如何分析基于RT-Thread实现的激光雷达避障小车

  1. master线程负责创建其它子线程,以及处理各种子线程处理后的信息.

  2. eaix4线程控制激光雷达上传到消息队列里的消息,将激光雷达的版本信息,状态,以及扫描数据解析出来.

  3. mpu9250线程通过dmp姿态解算出 姿态角(Roll、Pitch、Yaw ).

  4. speed线程通过采集stm429自带的编码器以及pwm输出,PID控制电机转速.

几个主要的命令

命令 功能
eaix4cmd -gvf 输出激光雷达版本信息.
eaix4cmd -sc 小车开始扫描,启动避障功能.
eaix4cmd -s 激光雷达停止扫描,但是不会停车.
carMove -f 小车向前.
carMove -b 小车后退.
carMove -l 小车左转.
carMove -r 小车右转.

操作演示GIF

如何分析基于RT-Thread实现的激光雷达避障小车

关于如何分析基于RT-Thread实现的激光雷达避障小车就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/219571.html

(0)
上一篇 2022年1月2日
下一篇 2022年1月2日

相关推荐

发表回复

登录后才能评论