Omni Wheels CAR

這個設計的想法是因為這次要教家長及小朋友做做履帶夾子車(Micro:bit語音夾子車 ),裡頭材料已用了KSB048電機板,只用來驅動二顆馬達有點小用了,所以衍生出一些變化,以前為了實現車子除了可以前進後退左右轉, 還可以橫向移動,常見的CASE都是做麥克納姆輪車,在這兒改用另一種名為全向輪(Omni Wheel)的輪子來做,它不需要成雙成對使用,所以我嘗試了三軸的車子~

Omni wheels Gripper Car

製作一輛三軸的全向輪夾子車,它可以前進後退及左右橫移,還可以原地旋轉,和麥克納姆輪一樣,不過只用了三顆輪子,這段示範影片中,拿另一塊Micro:bit當遙控器,利用廣播的方法來控制車子運動,程式很簡單,用Makecode拉拉積木就行了!

關於全向輪

Omni Wheels說的就是全向輪,與麥卡納姆輪相似,全向輪是在圓周上具有垂直於轉向方向的小圓盤的車輪,效果是可以全力驅動車輪,但也可以非常輕鬆地橫向滑動。 

這種輪子經常用於小型自主機器人的智慧機器人研究,可以讓機體擁有朝任何方向移動的能力…

資料:en.wikipedia.org/wiki/Omni_wheel 

以3D列印製作車子構成

這個設計的重點是要畫正三角形的車身,這樣三個輪子的運作才能均衡,在三個角的位置有安裝N20馬達的固定槽(招數從Miniplan的夾子車學來的),車子中間留的固定孔是以凱斯KSB048擴充板設計,在車子前方預留幾個孔可以安裝夾子或以後安裝別的零件~

輪子的選用

我覺得選擇輪子是這個CASE中最關鍵的部份了,這種輪子一般就是上網去買(也許有人會自己找模型來印),一開始我在熟悉的店裡買了幾個小全向輪(上圖橘紅色這組),老板沒打算上架賣所以一顆80元便宜給,後來我發現這顆輪子的品質不是很好(滾輪的滑動性不好),後來又在網路上買了38mm和48mm的輪徑的輪子,小的150元大的250元,哇!做輛車子的成本也不少!

連軸器的問題

做小車這事在還沒細想時,只覺得輪子部份就套上馬達轉就對了,其實這個部份有很多細節,多大的輪子搭配什麼馬達都得先想好,輪子的中心和馬達套上的部份就是「連軸器」,有的輪子會標明隨附(TT馬達用或N20馬達D軸用),像我買的這顆就說是樂高相容的十字軸孔,那在馬達這端就要是樂高十字軸才能剛剛好,正好最近有人賣這種樂高十字軸的N20馬達…

不過,38mm這顆可就沒附連軸器,輪子的中心是個六角孔,需要自己去找合適的連軸器(一般都是金屬製,裝上去還會凸出一截),所以我決定自己做一個可以直接塞進去且連接N20的D軸,這次還蠻精準地成功了!

測量

畫圖印出

自製的連軸器

設計的連軸器塞進全向輪中間的預留孔剛好塞緊不鬆動,中間留有符合n20馬達的D字型軸的插孔

車體製作

這個部份是相對的簡單的,主要就是固定三顆N20馬達,列印件有提供二種版本,適用一般的N20馬達及最近有人賣一種Lego十字軸的N20,差異在於形狀及軸連結器的不同,輪子要能夠搭配…,N20的減速比1:50或1:100的比較恰當

一般N20的軸是D軸

樂高十字軸的馬達要搭十字孔的車輪

固定馬達的方法

車輪的馬達必須要固定不能滑動,這個使用小束帶來束緊它,這招也是前陣子看了Miniplan的夾子車製作學來的,用條束帶取代以前用的N20馬達固定座

夾子的製作及固定

這輛車的夾子部份的設計是延用miniplan之前釋出的gripper car作品的夾子,可以到github.com/GeorgeChiou/ESP32-CAM-MotorShieldV3.0_Gripper/tree/main/STL 去下載相關的3D模型檔來列印(gyro_arm_sg90.stl , gripper_arm_base_sg90.stl , gripper_A.stl , gripper_B.st l , gripper_arm_l.stl , gripper_arm_r.stl),組裝方法可以參看→夾子車體的組裝 

走線

整輛車就三顆馬達二顆舵機,有設計好走線的孔

安裝KSB048擴充板

這個車體的設計就是適用凱斯的KSB048馬達擴充板,預留四個M3螺絲孔,直接鎖上就行了,不用鎖得很緊,能固定板子就行了

車子的操控系統

分析一下這輛車子的電機組成(三顆N20馬達+二顆SG90 Servo),所以只要是能驅動這些電機的方案都是可以的,我預設的想法是使用KSB048電機擴充板,主要是因為它小巧又強大,能驅動四顆馬達及八顆舵機,而且有14500電池座很方便

Micro:bit或PocketCard

KSB048本來就是設計給micro:bit用的擴充板,也是小朋友最容易上手學習的板子(使用Makecode拉積木),如果要進階一點,也可以搭ESP32核心的PocketCard(使用Arduino IDE寫程式),它的引腳方式被設計成相容於Micro:bit的插槽

Micro:bit Omni Wheels car demoshow 

原則上Micro:bit算是小朋友最容易上手的主板了!在Makecode的積木環境下,搭配KSB048的擴充積木,可以很簡單就設計出讓小車運動的程式

PocketCard Omni Wheels car demoshow

PocketCard就是ESP32的板子,雖然也有積木式的開發環境,不過既然都用到這種板子了,就使用文字式的Arduino IDE來編寫比較有彈性,這demo是用到了ESP32的WEBCAM及WebServer成為一部視訊控制的小車

三軸全向輪的運動原理

運動學分析

無論移動還是旋轉,全向輪很容易就進行方向控制,三個輪軸的車子與一般四輪的移動原理不一樣,而且理論歸理論,實際運行時與地面的摩擦力有很大的關係,這種車子比較適合運行在平滑乾淨又有一定摩擦力的地面,設計這車時必須考慮讓重心儘可能在車子的正中央,而且三個輪子之間是絕對的互成120°安裝。

資料參考:www.guyuehome.com/33732 

車體的平衡設計

在畫這車的形狀時,我有努力地維持它三個輪子保持120°的角度(就是要正三角形的意思,其實不太好畫!)前方裝的夾子剛好可以跟車子的主板加擴充板(14500電池)的重量達成平衡

各輪子的轉動與車子移動方向的關係:下圖是車子運動方向的原則圖(利用力的方向抵消),不過各輪的轉速不一定一樣,可以在程式中控制,並且在實務場景中進行實驗,這樣的車子想往哪個方向移動都是可以的,重點在於改變各輪子的轉動方向及轉速,很適合小朋友思考及實驗…不過,深入探究的理論公式感覺很難!

參考資料:

www.geek-workshop.com/thread-42550-1-1.html 

www.twblogs.net/a/5b7b02372b7177539c24ae36 

https://tw511.com/a/01/10125.html

https://twsf.ntsec.gov.tw/activity/race-1/53/pdf/091004.pdf

ir.hust.edu.tw/bitstream/310993100/4672/1/%E5%85%A8%E5%90%91%E8%BC%AA%E8%87%AA%E8%B5%B0%E8%BB%8A%E7%9A%84%E8%A3%BD%E4%BD%9C%E8%88%87%E9%81%8B%E5%8B%95%E6%8E%A7%E5%88%B6.pdf 

 使用遊戲手把來操控

安裝及使用bluepad32的方式可參考→ESP32-CAM Girpper Car  這個頁面裡的說明,以XBox無線搖桿來說,可操控的回傳數值可就多了(下圖),其實用不上這麼多樣

我的做法是在程式碼中把小車的各項動作都寫成涵式,像是夾子上升就像這樣

void G_UP() {

  gripper_basePos += 3;

  board1.setPWM(gripper_base, 0, angleToPulse(gripper_basePos) );

  delay(10);

}

車子前進

void Move_Forward() {

  Motor(M1A,200);

  Motor(M1B,200);

  Motor(M2A,0);

  delay(50);

}

然後運用bluspad32程式中回傳值去做動作反應,像是

void processGamepad(ControllerPtr ctl) {

    if(ctl->axisX() < -200 ){

      Move_Forward();

      //Serial.println("Key 'up' pressed");

    }else if(ctl->axisX() > 200 ){。。。。。。。。

}else{.........

}

Joycon操控全向輪車

這段範例影片是使用JOYCON左邊的搖桿來與車子連線並控制

Xbox Controller操控全向輪車

這段影片範例是Omni Wheels Gripper Car開電後,開啟Xbox無線搖桿,自動配對並操控車子運動