顯示具有 g-sensor 標籤的文章。 顯示所有文章
顯示具有 g-sensor 標籤的文章。 顯示所有文章

2016年8月8日 星期一

自製四軸直升機飛控板

基本上這個架構是自己陸續看一些東西後整理出來的一個大致的架構
目前input 跟output 部分都有經驗了,會等姿態的部分研究差不多後,就可以全部都整合都起來...




考慮到成本與實際上飛行時的載重,應該會採用這台450來當作載具測試
用普通的2212馬達/電變加上紅白機架兩千塊即可打發,撞壞比較不傷荷包



使用gyro + g-sensor 達到姿態控制

這篇文章用來紀錄一下使用sensor取得物體姿態(yaw/row/pitch)的部分
  • g-sensor
    • 在物體靜止不動時,加速度只有固定的地心引力,故可透過此加速度在三軸上的分量來計算姿態
    • 但在物體動作時,除了重力,物體本身改變姿態的加速度會混進去造成失真,以前做的的專題就是只使用g-sensor, 在快速動作時,可看到螢幕上顯示的動作與實際物體動作有一點點落差
  • gyro
    • 輸出單位時間內在某個軸上旋轉的角度(很精確)
    • 時間長會有積分誤差
      • 簡單的使用一軸來舉例
        • 瞬間旋轉10度,此時由於精確度很高,可能量出來誤差只有0.001度,所以此時取得的姿態仍很正確
        • 但隨著時間增加,物體一直動作,每次轉動的誤差會一直累加,造成一段時間後物體的角度跟程式內上看到的角度誤差會越來越大
  • gyro+g-sensor 
    • 結合兩種sensor的優點,去算出一個接近真實姿態的輸出,既可精確表達姿態,又能避免誤差累積
      • 卡爾曼濾波
        • http://ddddiy.blogspot.tw/2014/02/blog-post.html

2016年8月7日 星期日

使用手機實做飛機黑盒子


這是2008年念研究所時跟同學寫的其中一個專題
當初會做這個專案,最主要目的是我為了想個好理由光明正大的來玩遙控飛機,不過做出來似乎效果不錯,出乎意料的在課程上拿了高分...
最近看到照片突然好懷念以前研究所的時光,寫出來紀念一下


整體主要分幾個部分

  1. 手機端(openmoko)
    1. 儲存GPS資料(經緯度與高度)
    2. 讀取g-sensor值
      1. 偵測碰撞後傳簡訊回報GPS坐標<==墜機時可以找到飛機
      2. 透過bluetooth(SPP)及時送出g-sensor的值 <==很炫,但距離短不實用
  2. NB端
    1. 透過bluetooth接收g-sensor 的值
      1. 即時計算姿態
      2. 使用opengl即時顯姿態
    2. offline
      1. 將手機儲存的GPS 紀錄使用google earth reply, 在PC上replay 整個飛行的軌跡 







2016年8月6日 星期六

四驅車GP晶片計畫

自從去年發現租屋處附近開了一家四驅車店家之後,就又重新燃燒起熱血
台灣不流行的期間基本上幾乎完全沒有消息,也沒有軌道可玩(日本好一點四驅車一直都存在,但也是沉寂多年官方沒有辦全國性的比賽)

回鍋後發現現在的玩家有很大的比例跟我一樣是二十多到三十多歲的大人,小時候有玩過,長大後又跳進來玩
可能因此導致現在軌道跟十多年前相比比較偏向技術軌,多了很多難度,所以不是單純比高速,而是變成在不飛車的前提下盡快跑完全程

之前看了很多四驅車相關的網站、論壇、玩家的部落格
基本上是都是以田宮 or 半田宮 的規則在玩,使用固定的機制去應付像是跳台或交換到這種難關
例如跳台落地為了穩定度,改成避震車或使用金球、吊鐘,為了過彎加裝單向輪/彈簧前後翼等...
為了因應不同場地而做調整,須累積大量的經驗,熟悉各種零件的特性,以整體賽道所有難關的"最大公約數" 的方向去做調整

在這個過程中,不斷的去發揮創意改裝與測試,真的有很多樂趣,這也是四驅車吸引人的地方

不過玩了一陣子後,就一直在想以這種玩法,就算玩到最極限,也是要配合賽道在各種方面(速度、重量、改裝方式等...)做取捨,所以漸漸地有了一個想法:
何不結合單晶片,讓車子自行適應軌道後做調整,這樣可以使用幾個基本車型(像是輕量高速型或是扭力型)來稱霸所有類型跑道

其實這就是卡通裡的GP 晶片啊!!!
在網路上有看到一些玩家使用單晶片改裝GP晶片,但是偏向語音或人工控制車子
https://www.youtube.com/watch?v=85913C7MjoQ
https://www.youtube.com/watch?v=C1x2Jdm_9eA


而我比較感興趣的部分則是讓車子自行學習,能夠自行適應各種跑到跑出不錯的成績

有了這個想法後,漸漸的想了一些可行的架構與做法,部分的功能也曾經做出可行的成品
(綠色部分是已經有做過有經驗的部分,藍色部分是已有方向正在研究中,紅色部分是還沒有想法或是需要重頭學習的領域)

目前先規劃一下架構,整理一下有能力與需要學習的部分,最後再全部整合起來




2016年8月3日 星期三

android 螢幕旋轉演算法

eclair只支援兩種方向:rotation 0 and rotation 90
CyanogenMod有支援四個方向
最新的froyo應該是支援三個方向(等froyo release再把他的演算法po上來)

source code 在 framework/base/core/java/android/view/WindowOrientationListenetr.java這裡支援的方向指的是android送給上層依據目前g-sensor算出來的螢幕旋轉方向,
程式部份自己要去對旋轉的方向作處理,預設的setting程式就有支援四個方向,
ui(Launcher)部份,把AndroidManifest.xml的android:screenOrientation="nosensor"改成sensor就可以了



以下是詳細的演算法







CyanogenMod 有支援四個方向,基本上是從原本eclair的演算法算出orientation之後的部份作修改: