Robotbit 版的 OTTO 控制邏輯與程式—主程序邏輯與程式調試方法 Part III

2018-02-16 20:45

[otto延伸版] Robotbit版的OTTO控制邏輯與程式—主程序邏輯與程式調試方法

nils 發表於 5 天前 | 只看該作者 [複製連結]

 

     

 我們在開機程式規定了陣列,這樣我們根據每個陣列規定對應的舵機的排列順序。下面的圖就是從正面,及有Micro:bit顯示的面看過去的一舵機排布順序,首先就要將舵機的接線連接到Robot:bit的舵機排針上,排針旁邊都有舵機的標號,按照下圖的順序將舵機和主控板連接到一起,並且需要一一對應,這樣才能保證調試的順利進行。

注意:舵機初始化安裝時最好都是歸位到90°進行安裝。接下來會更新安裝技巧和說明,點擊搜索訂閱關注轉發Kittenbot官方微信海量教程任你學習。

通過前面開機狀態的設置,為主程序的運行提供了至關總要的保障,下面我們就分析一下主程序,趕緊搬好板凳。

 

主程序邏輯流程圖(單個舵機)

有了開機的程式,為主程序的迴圈調用陣列提供了重要保證,上面的流程圖是單個舵機迴圈調用陣列的控制邏輯,因為八個舵機是並行的控制的,所以能夠同時進行控制,這裡就是單個舵機的控制邏輯,看懂了這個,其他七個舵機都是一個效果。

大家下載了程式會看到,這是兩個Micro:bit間的通訊程式,兩個板子在同一個通訊頻道,主程序中調用前進後後退的邏輯是一樣的,就是換了個陣列在當中取出數位進行計算。

 

 

 

直接講解一下主程序控制邏輯:

       最週邊的箭頭方向是控制主迴圈運行次數的大循環,用字母i來表示,啟始位為0,主程序規定了主迴圈的迴圈次數是五次,字母i用作計數,每次執行完一次主迴圈,就會自增1然後當計數計到小於5時,及參與計數的數字有0,1,2,3,4這五個數這樣經過判斷,主迴圈就會迴圈5次,這就是外面大循環的邏輯。

       下面設置主迴圈的標誌位元,這裡設置外迴圈次數n,內迴圈次數m,啟始位都為0,抽調陣列時數位不能出現歧義,再命名一個變數C,根據對應的角度函數公式可以看出,每一時刻的角度和其陣列裡對應位置的陣列存在函數關係,這裡的函數關係就是angle(C)=F(n)+[F(c)-F(n)]X(m+1)/9,不要問這函數怎麼來的應該是個經驗公式。將陣列命名為F組那麼第n個第c個對應的只就是F(n),程式會將開機時對應的陣列提取出來代入公式計算,執行完過後內迴圈和主迴圈計數位會自增1,並重新賦值與同名計數變數,及將m+1的值重新給m代入新的迴圈計算。計算完了的結果直接傳給舵機引腳。計算完就與迴圈次數相比較再決定是否再次執行迴圈,最後是大循環次數自增,原理和內迴圈次數計數方法類似。大家也可以深入學習一下迴圈語句,這真的是提升控制邏輯的快速路徑。

       最後設置舵機復位,舵機復位和你初始安裝的角度有關,在示例程式中的數值是由於安裝時的舵機偏移誤差所致,建議大家在安裝時,都將舵機歸為到90度這樣或許可以不需要舵機重定。這樣一個流程下來,單個舵機的動作伴隨著陣列的交替有條不紊的運行了下來,前面說到程式是並行的,所以其餘舵機也是按照這樣的循序執行完一遍操作。

主程序因為寫的是Micro:bit與Micro:bit間的2.4G無線通訊功能,所以裡面加了判斷的積木塊,大家也應該都看得懂程式實現的功能。下面是程式的一些截圖,供大家參考。

片段1

片段2

片段3

-----------------------------------------------------------------------------------------------------------------------------------------

 

程式調試部分

       舵機的動作就和陣列有關,動作幅度的大小受到陣列的控制,這需要經常的調試與總結,這兩天的調試我總結了一個簡單的規律馬上就和大家分享一下,在接下來的教程中會有更加詳細準確的調試方法,這還需要一點時間去總結,請各位親們耐心等待一下。

基本規律和調試基本方法:

1.主關節舵機包括S1,S3,S5,S7的陣列排列形式類似,副關節及類似人的小臂和小腿就是舵機排布圖中的S2,S4,S6,S8排布類似。

2.首先看主關節陣列,除去每個陣列後面歸位元用的180°,前面九個數字是一個關於5號位元數位對稱的陣列,大家可以想像一下活動一個關節向前再向後就會有個中間位置,這個中間位置就是五號位元的數字,大家如果要改運動的幅度就在這幾個數位裡調整,更具我調試的經驗所有的取值都在給定的值附近,不要偏差太大,相鄰兩個數之間的絕對值相差越大,動的幅度也就越大。

3.再看副關節陣列,五號位元的數字,一號位元的數位,九號位元數位都是90°然後按照一定振幅擺動,這裡調整參數時同樣是相鄰兩個陣列絕對值相差越大擺動的幅度就越大。

       大家可以調整時候多多嘗試,如果有什麼好的調試方法也可以在技術交流群裡分享經驗。

       到這裡經過多次的調試與測試才得到了一個理想的結果,探索的道路上需要經歷各種各樣的測試這需要耐心。

       到這裡就把Micro:bit版OTTO機器人的程式梳理了一遍,可能有點深入了,遇到問題可以通過自己反復的測試與摸索找到解決的方案,相信大家在看了我的教程之後一定會在多關節機器人程式的編寫上大有啟發,這個算的上是OTTO機器人的開篇程式,程式有不好的地方歡迎大家指正,並在技術交流群中討論,接下來會更新關於機器人的組裝和注意事項的一些說明,敬請期待哦!最後歡迎訂閱關注轉發分享Kittenbot官方微信,海量教程資源任你玩耍!

3D 列印 體感遙控機器人套件

—————

返回