96 學年度 電機工程學系 專題製作競賽

Post on 14-Jan-2016

94 Views

Category:

Documents

11 Downloads

Preview:

Click to see full reader

DESCRIPTION

96 學年度 電機工程學系 專題製作競賽. 題目:以 MATLAB 為基礎之 GPS 定位系統製作. 參賽組別:控制組 指導老師:李贊鑫 教授 參賽學生:葉人慈、方泰翔 2008/6/4. PC or Notebook. 全球定位系統. GPS 衛星. MATLAB. 描繪路徑點 (waypoint). 天線. 擷取與分析資料. 串列埠介面. GPS Sensor. 即時顯示地圖. 傳送資料. 系統示意圖. 系統裝置. Sensor: GARMIN GPS 15H. antenna. notebook. serial port (RS232). - PowerPoint PPT Presentation

TRANSCRIPT

GPS SensorGPS Sensor

GPS 衛星

天線

全球定位系統 PC or Notebook

MATLAB

描繪路徑點(waypoint)

即時顯示地圖傳送資料

擷取與分析資料串列埠

介面串列埠介面

antennaSensor: GARMIN GPS 15H

serial port (RS232)

notebook

GPS 接收器

串列埠

NMEA 0183文字檔

選擇模式

位元組可用觸發事件

計時器觸發事件

持續接收資訊狀態

取得字句

分析字句

儲存資料

顯示路徑圖

調整圖軸邊際

顯示地圖

衛星資料文字檔

定位資料文字檔

地圖影像檔

地圖產生器

地圖目錄檔

主程式

地圖程式

start

模式選擇

組態GPS

Sensor

資料記錄

UTC↓臺灣時間

knot→km/hr

經緯度、高度

NMEA 字句

GPS 衛星狀態

GPS 衛星位置圖

版本: NMEA 0183 由 GPS sensor接收: Received NMEA 0183 sentences 由 GPS sensor送出: Transmitted NMEA 0183 sentences Transmitted sentences 摘要:

字句種類 原文意義 說明$GPRMC Recommended Minimum Specific

GPS/TRANSIT Data (RMC)

經緯度、高度等定位基本資訊

$GPGGA Global Positioning System Fix Data (GGA)

GPS 定位資料,包含 GPS 及衛星相關資訊

$GPGSA GPS DOP and Active Satellites (GSA) 使用中衛星編號及位置、水平、垂直幾何精度$GPGSV GPS Satellites in View (GSV) 可視衛星的資訊$PGRME Estimated Error Information

(PGRME)估測誤差資訊

$PGRMB DGPS Deacon Information (PGRMB) 差分 GPS 資訊$PGRMM Map Datum (PGRMM) 地圖座標系統$PGRMT Sensor Status Information (PGRMT) GPS 感測器狀態資訊(型號、狀態、溫度等)

NMEA 0183句型,以 RMC為例:

讀取原則:◦ 以 <CR><LF>為終止字元 (terminator) (carriage return, line feed)

◦ 確認起始記號 ($)與終止記號 (*)◦ 以句型種類決定讀取程序

偵錯法:◦ 判斷偵錯碼 (checksum)◦ 確認欄位數符合該句型的格式◦ $GPGSV,3,1,10,K,,N,N*31

$GPGSA,A,3,03,,11,13,16,W*61兩者的 checksum 都正確,所以偵錯碼偵錯結果沒有問題。但是其實這兩個句子是不合 NMEA 協定的,部分欄位(field) 出現該欄位不該出現的值,甚至欄位的個數跟標準協定不符,但 checksum 是對的。

$GPRMC,025219,A,2432.5300,N,12048.6776,E,031.5,160.9,211107,003.3,W*6A

句型

起始記號

GPS狀態

對地速度

對地航徑 終止記號

偵錯碼UTC時間

經度

<CR><LF>UTC日期

磁偏角

緯度

回轉檔案定位器

取得一列字句

記錄字句 分析字句

顯示字句

記錄衛星資料

顯示衛星資料

顯示衛星位置示意圖

End_satellitesdata = 0

記錄定位資料

顯示定位資料

End_fixddata = 0

End_satellitesdata == 1

End_fixdata == 1

RMCGo_fixdata = 1(End_fixdata = 1)GGA

GSA

GSV第一 GSV 字句Go_satellitesdata = 1最後 GSV 字句End_satellitesdata = 1Go_satellitesdata = 0PGRMEGo_fixdata == 1End_fixdsdata = 1Go_fixdata = 0PGRMM顯示地圖座標系統資訊

PGRMB

PGRMT顯示 GPS 裝置資訊

NMEA 文字檔GPS 接收器

取得的字句的種類順序

地圖 & 軌跡

定位顯示

地圖檔來源設定

軌跡點數設定

刻度尺大小設定

路徑點顯示範圍

2D2D

3D3D

高度高度

整批軌跡顯示

整批軌跡顯示

控制 XY軸邊際,使路徑點及地圖保持在畫面顯示的範圍內 多重目的整合的設計:

即時顯示路徑點時:判斷單點 顯示歷史路徑點時:判斷多點 調整刻度尺大小時:針對中心點 ( 定點 )

路徑點追蹤範圍

圖軸中心點

waypoints

0 2 4 6 8 10‧ ‧ ‧ ‧ ‧ ‧

0 xpixel

0

ypixel

x1 x2

y1

y2

long0

long

lat

long1 long2

lat1

lat2

lat0

][

pixely

pixelx

)(

)(

)(

)(

0022

11

22

11

latlonglatlong, latlong

, latlong

, yx

, yx

圖形寬、長

兩點座標

已知其中任意兩點的經緯度座標 南北為縱向、東西為橫向 經緯刻度間隔分別為定值 格式化結果:

• 取得圖檔的經緯度分佈範圍• 存成地圖目錄 ( 文字檔 )

給定地圖間距的最小截距 (R),算出用來判斷地圖的位置點座標。 當 R=1時,則判斷點座標為畫面的四個角落。

YLim(1)

XLim(2)XLim(1)

YLim(2)

X = XLim(2) – XLim(1) = YLim(2) – YLim(2)N = ceil( X / R ); ceil: round toward +infinityn = 0 →NXp = XLim + X/N*n

RR

Xp(0) Xp(1)

R

Xp(2) Xp(3)

對某位置點判斷包含該點之地圖圖檔,顯示之。

利用地圖結構 (cell array: Im)存放地圖資訊,減少開啟地圖目錄檔的頻率。

1 個路徑點座標

判斷該點是否在「地圖結構」的範圍內:

isinmapregion

該地圖是否「顯示中」

否該點位置已經有地圖顯示,此時不必做與地圖相關的動作

插入地圖*藉由「地圖結構陣

列」的識別碼插入

從「地圖目錄檔」中搜尋:開啟檔案→搜索地圖範圍

確認範圍:check region

否是

插入地圖*藉由「地圖結構陣

列」的識別碼插入

*將地圖資訊存入「地圖結構」中

該點位置沒有找到相對應的地圖可以顯示

實測時間: 96 年 11 月 21 日 上午 10:00 至 12:00 實測路徑:聯合大學(尖豐公路)→後汶公路

→經國路→新東大橋→苗栗交流道→國道 1 號 →三義交流道→國道 1 號→後汶公路→聯合

大學

速度顯示( km/hr)

新東大橋

新東大橋實景 實測路徑圖(新東大橋)

高速公路上坡路段實景

實測高度圖(坡度顯示)

高度圖顯示(上坡中)

聯合大學

苗栗交流道( 132.8 km)

三義交流道( 150.2 km)

國道 1號中山高速公路

路徑點追蹤範圍欄位的值若大於 10 則重設為 10 ;

若小於 0 則重設為 0

取得路徑點追蹤範圍欄位的值

將路徑點追蹤範圍欄位的值( 0~10 )除以 10 ,成為精密度百分比: precise_focus%

取得刻度尺滑軸的值: scale

取得目前圖軸的邊際值: xlim, ylim

判斷 p2c 是否超出路徑點追蹤範圍的半徑

求出路徑點追蹤範圍的圓的邊界(點到圖軸中心的距離),即路徑點追蹤範圍的圓的半徑: bound_focus = (scale / 2) * precise_focus

求出圖軸中心的座標:xc, yc 分別為 xlim, ylim 的平均

求出某點或多點與圖軸中心的最大距離 p2c

若 p2c 大於 scale/2 ,則改變 scale(使 p2c = scale * pof )

重設圖軸中心點 xc, yc :在單點時以該點為圖軸中心;在多點時把所有點的幾何中心作為圖軸中心

完成圖軸邊際設定

執行運算式 情況 1 (單點) 情況 2 ( n 點) 情況 3 (定點)px, py px, py px(1 : n), py(1 : n) xc, yc

dx = max(abs(xc – px));

dy = max(abs(yc – py));

dx = |xc – px|

dy = |yc – py|

dx = |xc – px| max

dy = |yc – py| max

dx = 0

dy = 0

p = sqrt(dx^2 + dy^2); p = p = p = 0

p bound_focus ? p bound_focus ? p bound_focus ? 0 bound_focus

max(px)-min(px) scale ?

max(py)-min(py) scale ?

max(px)-min(px) = 0 < scale

max(py)-min(py) = 0 < scale

max(px)-min(px) scale ?

max(py)-min(py) scale ?

max(px)-min(px) = 0 < scale

max(py)-min(py) = 0 < scale

scale = max((max(px)-min(px)),(max(py)-min(py))) /

precise_focus;

max(px)-min(px) scale ?

max(py)-min(py) scale ?

xc = mean(px); yc = mean(py); ( xc = px, yc = py ) xc = mean(px); yc = mean(py);

( xc = xc, yc = yc )

2dy

2dx 2

dy2

dx

top related