您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何分析基于RT-Thread實(shí)現(xiàn)的激光雷達(dá)避障小車,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
由于在學(xué)校里很少有機(jī)會(huì)讓我將所學(xué)的東西付諸于實(shí)踐.有時(shí)候?qū)W完一個(gè)東西沒法真正了解自己是否掌握,同時(shí)為了進(jìn)一步提高自己的能力,不再漫無目的的學(xué)習(xí).所以決定做這樣一輛小車.其中PCB原理圖和初版PCB_layout是我在寒假在家中完成的,程序是基于rt-thread[BSP]stm32f429-Apollo寫的.歷時(shí)3個(gè)多月.這輛小車很多地方可以說是邊學(xué)邊做的,尤其是有關(guān)于rt-thread方面的知識.在學(xué)習(xí)rt-thread期間受到了很多RTT社區(qū)里的人的幫助.要特別感謝下RTT開源社區(qū).
作為主控芯片的實(shí)時(shí)系統(tǒng),提供多線程編程.小車的每個(gè)重要的需要實(shí)時(shí)的功能都單獨(dú)作為一個(gè)線程.如小車的mpu9250姿態(tài)解算出姿態(tài)角(Roll、Pitch、Yaw )的過程就單獨(dú)使用了一個(gè)線程(mpu9250),小車的PID控制速度的代碼也單獨(dú)使用了一個(gè)線程(speed).每個(gè)功能線程(mpu9250,speed...等)都會(huì)處理完各自的數(shù)據(jù)得出結(jié)果,并且這些結(jié)果在必要的時(shí)候提供給主線程(master)使用.也正是因?yàn)閞t-thread的優(yōu)先級全搶占式調(diào)度使得重要的線程能及時(shí)處理完.另外rt-thread提供的finsh/msh在調(diào)試期間起到了很大的作用,同時(shí)也可以通過遠(yuǎn)程藍(lán)牙串口控制小車的行為.
主控芯片:STM32F429IGT6
其它主要配件:激光雷達(dá),藍(lán)牙串口,無線射頻模塊,MPU9250九軸姿態(tài)模塊,電機(jī)驅(qū)動(dòng)芯片l298n.兩個(gè)自帶AB相編碼器的電機(jī).履帶一對.
編譯環(huán)境:MDK525
RT-Thread版本:3.0.2
激光雷達(dá)通過串口通訊,以及pwm控制轉(zhuǎn)速.
射頻模塊通過uart6通信.使用rt-thread的事件通知消息的到來.
藍(lán)牙串口,作為msh終端的輸出.方便調(diào)試.
mpu9250模塊通過i2c通信.
master線程負(fù)責(zé)創(chuàng)建其它子線程,以及處理各種子線程處理后的信息.
eaix4線程控制激光雷達(dá)上傳到消息隊(duì)列里的消息,將激光雷達(dá)的版本信息,狀態(tài),以及掃描數(shù)據(jù)解析出來.
mpu9250線程通過dmp姿態(tài)解算出 姿態(tài)角(Roll、Pitch、Yaw ).
speed線程通過采集stm429自帶的編碼器以及pwm輸出,PID控制電機(jī)轉(zhuǎn)速.
命令 | 功能 |
---|---|
eaix4cmd -gvf | 輸出激光雷達(dá)版本信息. |
eaix4cmd -sc | 小車開始掃描,啟動(dòng)避障功能. |
eaix4cmd -s | 激光雷達(dá)停止掃描,但是不會(huì)停車. |
carMove -f | 小車向前. |
carMove -b | 小車后退. |
carMove -l | 小車左轉(zhuǎn). |
carMove -r | 小車右轉(zhuǎn). |
關(guān)于如何分析基于RT-Thread實(shí)現(xiàn)的激光雷達(dá)避障小車就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。