[心得] 用Raspberry pi 做四軸飛行器
本文同步分享在我的網誌:
http://gnitnawtw.blogspot.fr/2015/10/piquadcopter-raspberry-pi.html
(若有違反板規請告知。若是版友想多了解我願意分享更多。)
PiQuadcopter(掰咖考特) -- 用Raspberry pi 做四軸飛行器
想做四軸很久了。會想用RPi不外乎以下理由:
- 磨練C programming
- 了解kernel programming(雖然最後幾乎沒用上)
- 想體驗Real-Time Linux的威力(雖然還沒開始用)
一般來說RPi拿來做四軸有點不太適合,因為作業系統是Linux
(雖然據說可以安裝其他的RTOS,不過我暫時不討論這個),
而屬於通用型作業系統的Linux為了能在較短時間內完成較多任務,
其即時性(從系統收到任務的時間到系統開始處理這任務的時間)比較差
(正在處理的任務不能被優先權較高的任務插隊)。
我希望用多執行緒程式+搶佔式即時核心(Preempt RT Linux kernel)來改善這個問題。
稍微搜尋了一下前人用Rpi做四軸的經驗:
RPi only
https://github.com/idavidstory/goPiCopter
使用Go程式語言,sensor更新週期50Hz,控制週期10Hz,9 DOF + PWM(PCA9685)
http://blog.pistuffing.co.uk/
看起來似乎沒完成
RPi + Arduino
https://github.com/vjaunet/QUADCOPTER_V2
使用MPU6050,Arduino用來控制SPI介面的硬體和PWM
https://github.com/rpicopter/AvrMiniCopter-wiki/wiki
10 DOF
https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=35746
MPU6050,使用特殊ESC所以不用PWM,sensor更新週期在300-400Hz,以C++編寫程式,
不用Real-time OS,Arduino用於RFM12無線模組(與筆電交換訊息控制機體)
RPi + 其他飛控
http://www.instructables.com/id/Autonomous-Cardboard-Rasberry-Pi-Controlled
-Quad/
http://www.botched.co.uk/quadrocopter/
使用dsPIC30F(PWM+I2C),10 DOF
看起來完全用RPi不用其他MCU好像也不是不可能。
四軸的飛行控制需要的硬體有:
- 機架、電池、(無刷馬達+螺旋槳)*4 (廢話)
- ESC (electronic speed control) :控制馬達轉速,
需要用四個PWM(Pulse-width modulation,脈衝寬度調變)個別控制
- IMU(Inertial measurement unit,慣性測量單元):三軸加速度計
(測量重力加速度方向+加速度)+三軸角速度計(測量角速度)
+三軸電子羅盤(測知方向)+氣壓計(換算海拔高度),
3+3+3+1簡稱10軸 (10 DOF,一般來說6軸勉強夠用)。
- 無線通訊模組(wifi 或RF)
- 如果想知道電池電量是不是快到底了,最好加個ADC(類比轉數位輸出)測量電池電壓。
而我手上的RPi model B+上面有:
- I2C * 1 (可接多個裝置,支援400kHz以上傳輸速度)
- SPI * 1 (可接兩個裝置,支援8MB/s以上傳輸速度)
- PWM * 1 (不夠用...),雖然可以用DMA做軟體PWM,
不過更新頻率不能太高(~100Hz差不多極限了)
根據以上需求,結論就是我需要買:
- 10軸IMU:GY80(I2C,400kHz,前6軸資料更新可達1600Hz)
- nRF24L01*2:一個給RPi用,一個給Arduino用(操縱四軸),SPI
- ADC:MCP3008:10bit(量電壓夠用了) ,SPI
- PWM:PCA9685(Adafruit有賣已經設計好的電路,坊間也有類似的),I2C,
12bit,頻率可達1526Hz
然後就是程式部份,我選擇bcm2835( http://www.airspayce.com/mikem/bcm2835/ )
而不是比較知名的wiringPi。因為bcm2835比較單純(找到address->控制),
不需要任何驅動程式,而wiringPi的SPI跟I2C控制是建立在驅動程式上,
我希望能藉此避免驅動程式的介入把操縱單純化,
這樣以後若是用Preempt RT kernel也比較不受影響。
目前我的進度到PID Control(調的好累),希望不久後我的PiQuadcopter能很快飛起來。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 86.200.64.167
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1443987101.A.8A3.html
→
10/05 22:41, , 1F
10/05 22:41, 1F
推
10/06 12:23, , 2F
10/06 12:23, 2F
推
10/06 13:12, , 3F
10/06 13:12, 3F
→
10/06 18:08, , 4F
10/06 18:08, 4F
→
10/06 18:09, , 5F
10/06 18:09, 5F
推
10/07 00:13, , 6F
10/07 00:13, 6F
→
10/07 00:26, , 7F
10/07 00:26, 7F
→
10/07 00:28, , 8F
10/07 00:28, 8F
→
10/07 08:36, , 9F
10/07 08:36, 9F
→
10/07 08:42, , 10F
10/07 08:42, 10F
→
10/07 08:43, , 11F
10/07 08:43, 11F
→
10/07 15:24, , 12F
10/07 15:24, 12F
→
10/07 15:24, , 13F
10/07 15:24, 13F
推
10/07 16:18, , 14F
10/07 16:18, 14F
→
10/07 16:19, , 15F
10/07 16:19, 15F
→
10/07 17:45, , 16F
10/07 17:45, 16F
→
10/07 17:46, , 17F
10/07 17:46, 17F
→
10/07 17:46, , 18F
10/07 17:46, 18F
→
10/07 17:47, , 19F
10/07 17:47, 19F
→
10/07 17:48, , 20F
10/07 17:48, 20F
→
10/07 17:48, , 21F
10/07 17:48, 21F
→
10/07 17:53, , 22F
10/07 17:53, 22F
→
10/07 22:12, , 23F
10/07 22:12, 23F
推
10/11 02:25, , 24F
10/11 02:25, 24F
推
10/11 02:29, , 25F
10/11 02:29, 25F
推
10/21 18:50, , 26F
10/21 18:50, 26F
推
05/11 11:15,
5年前
, 27F
05/11 11:15, 27F
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章