寫在前面
列出一些我之前寫的底盤除錯的博客,在看這篇文章之前最好看一下,便于理解
- 購物機器人的路徑感知以及姿態調整方案
- STM32CubeMX配置STM32F103C8T6芯片除錯串口光電傳感器
在之前的文章里,我已經講過了光電傳感器回傳的資料格式以及基本的購物機器人的姿態調整方案,那么在這篇文章里我將分享購物機器人是如何識別導航線以及完成基本的運動動作(前進,后退,左轉,右轉),我在這里再放一下光電傳感器的擺放位置吧
車子的俯瞰圖

賽場導航圖
思路講解
流程圖
模式A和B
因為購物機器人的運動需求,我們將其運動狀態分為了模式A和模式B,模式A就是購物機器人行進時其中線是和導航線重合的,示意圖如下:
而模式B前進時,購物機器人前進時其中線和導航線是有一定偏差距離的,示意圖如下:
那么為什么要有這2種模式的區別呢?這是因為在遍歷倉庫的時候,如果都是沿中線去拿貨物的話,倉庫里有些地方購物機器人前端的撥片就撥不到了,因此就設計出了模式B,這樣相當于購物機器人的橫向可撥范圍變大了許多,
自然語言
首先我們需要獲取到S1和S2總共8顆循跡燈的狀態,并以該循跡燈作為我們購物機器人的運動依據,在模式A下面,我們只用到了uart6Rx[0]和uart7Rx[1]這2個陣列元素的資料,為什么?這就跟我們模式A的運行模式有關了,因為模式A的運行模式時購物機器人中線與導航線重合,因此只需要用到前后的光電傳感器的中間部分就可以了,
有了循跡燈的狀態之后就需要做邏輯判斷了,在循跡時,購物機器人會接收到樹莓派通過串口發送過來的指令,指令里會包含模式,行進方式(前進,后退,左轉,右轉),以及前進格數,因此在做運動時需要對前進方式進行判斷,我將運動方式進行了分類,前進后退一類,左轉右轉為一類,不同的類別有不同的識別方式以及速度控制,在模式A的情況下走完一格就相當于時完成了任務,就會停車等待樹莓派命令,沒有樹莓派的命令底盤時不會動的,保持停止狀態,
程式分析
首先是尋跡了,因為模式A的時候車子的中心線和導航線是重合的,因此
程式修改:
轉圈停止的時候應該是前方光電踩線而不是中間2個掃到,而且這時候這2個情況可以說是等價的
uint8-t和int相互賦值的時候會出問題

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/274803.html
標籤:其他
