2016年10月13日 星期四

使用 realtek ameba 來驅動兩輪平衡車



Demo 影片如下:


https://www.youtube.com/watch?v=fOHRcL6lwD4



大致上的系統和無人機很像...但是比較簡單..

藉由ameba 透過i2c 去讀取 mpu6050 的資料

然後利用軟體的演算法計算出角度...

假設車子往前倒....  這時候就可以藉由角度來得知

然後透夠PID的方式來得到該補多少的油門...

其實就是一個negative-feedback的系統






OpenGL + adxl345 + rpi -> 藉由adxl345來轉動你的茶壺

用adxl345 sensor  可以讀出來  x, y, z  的加速度....

因為地球有重力加速度(垂直往下)....

整套系統就是用 Rpi  去讀取 adxl345 來獲得x,y,z方向的加速度

藉由數學的公試計算出來角度...

然後使用Rpi 的gpu 硬體去畫  3D的茶壺...並且根據 adxl345 所量測出來的角度來使他旋轉

demo 的影片在下面的連結


demo video:    https://www.youtube.com/watch?v=O3V-0z6UWF0




下面的圖片是 adxl345 的模組





自製四軸無人機...使用Rpi + Arduino


Demo 影片如下:


https://www.youtube.com/watch?v=5V164VS6Dmk

大致上的系統是用  Rpi + arduino + ESC + mpu6050

arduino  去接收遙控接收器的輸出...  得到  油門和tilt 和 pan 和 role 的pwm value...

然後透過spi 的 protocol 傳送給Rpi...

rpi 會利用i2c 去讀取mpu6050 來取得 六軸的資料

計算出姿態後....再計算出各個馬達要轉動的pwm 數值後....再透過spi 的方式傳送給 arduino

讓arduino 去驅動ESC(電子變速器)

這種架構的精神是...萬一Rpi 的計算不是Real-time....由於arduino 沒有os的干擾...還是

可以根據之前的數值來使得飛機穩定

神魔之塔_物理外掛




起因是看到這篇文章

https://www.youtube.com/watch?v=gMySGU0J7Ss

覺得這個網友真是太強大了...太牛逼了.....

所以就來做吧

一開始我們是先用 rpi 來打造 prototype....




攝影機是買羅技的C310....      然後採用 rpi3 來當作處理器.... 至於機構則是用這台

https://world.taobao.com/item/45674397950.htm?fromSite=main&spm=a312a.7700846.0.0.ObHdmq&_u=v2bnm38c3a30


驅動機台是用arduino 當作控制器....






















這邊是我們的Demo 影片...  由於我們後來也有移植到android 系統上...所以有兩個版本的demo

android :  https://www.youtube.com/watch?v=_igjvJaxMZ8

rpi       :    https://www.youtube.com/watch?v=yaF_8Ga6jjo


===============================================================
然後整個系統主要是分成3個部分...

1.  電腦視覺

2.  轉機演算法

3.  機構驅動

============================================================

電腦視覺:


這邊大概就是install opencv...   然後從 video_device 擷取照片...

然後利用原本已經存在資料庫的圖片進行比對...  可以參考下圖



最主要是利用templatematch ()這個api   來進行比對.....

在這個步驟完...可以得到一個   2D array ... 然後裡面代表每個格子的珠號...例如:  紅色機子是1

號,  黃色珠子是4號....紫色珠子是5號...等等...

===========================================================

轉珠演算法:

     請看下面這張圖片




最主要是靠BFS 的演算法來計算有幾個combo..  就是圖中的分數演算法.....

利用BFS可以找到這條路徑上所有的點的特性....

得到分數最高的路徑之後....就可以準備計算路徑並且生成G code

=================================================================

機構驅動




大概的做法就是如上面這張圖所示......     利用Grbl 的G code format 來傳送命令...

ex:    G0   x300     ->   往x軸的正方向移動300mm.....

====================================================================


如果有任何問題...歡迎寫信給我...    jacky.chi.0328@gmail.com