问题描述
Autoware 主要使用 LiDAR 定位,在 ndt_matching 程序中实现。
GPS 只是作为辅助,用来设定初始定位信息或者在 LiDAR 定位偏差较大时重置位置信息。
在使用 GPS 定位时,Autoware 有严重的缺陷:由于采用 Japan rectangular coordinate system , 默认只能在日本使用,或者说在日本的定位才是准确的 (参考1, 参考2)。这个问题似乎还没有在正式发布版本中解决。
所谓 Japan rectangular coordinate system 就是将日本分为19个区域,每个区域(本质为球面)用平面近似,在此平面上选定原点,建立坐标系。
以下为具体的区域分布:
系番号 | 座標系原点の経度(東経) | 座標系原点の緯度(北緯) | 適用区域 |
---|---|---|---|
I | 129度30分0秒0000 | 33度0分0秒0000 | 長崎県 鹿児島県のうち北方北緯32度南方北緯27度西方東経128度18分東方東経130度を境界線とする区域内(奄美群島は東経130度13分までを含む。)にあるすべての島、小島、環礁及び岩礁 |
II | 131度 0分0秒0000 | 33度0分0秒0000 | 福岡県 佐賀県 熊本県 大分県 宮崎県 鹿児島県(I系に規定する区域を除く。) |
III | 132度10分0秒0000 | 36度0分0秒0000 | 山口県 島根県 広島県 |
IV | 133度30分0秒0000 | 33度0分0秒0000 | 香川県 愛媛県 徳島県 高知県 |
V | 134度20分0秒0000 | 36度0分0秒0000 | 兵庫県 鳥取県 岡山県 |
VI | 136度 0分0秒0000 | 36度0分0秒0000 | 京都府 大阪府 福井県 滋賀県 三重県 奈良県 和歌山県 |
VII | 137度10分0秒0000 | 36度0分0秒0000 | 石川県 富山県 岐阜県 愛知県 |
VIII | 138度30分0秒0000 | 36度0分0秒0000 | 新潟県 長野県 山梨県 静岡県 |
IX | 139度50分0秒0000 | 36度0分0秒0000 | 東京都(XIV系、XVIII系及びXIX系に規定する区域を除く。) 福島県 栃木県 茨城県 埼玉県 千葉県 群馬県 神奈川県 |
X | 140度50分0秒0000 | 40度0分0秒0000 | 青森県 秋田県 山形県 岩手県 宮城県 |
XI | 140度15分0秒0000 | 44度0分0秒0000 | 小樽市 函館市 伊達市 北斗市 北海道後志総合振興局の所管区域 北海道胆振総合振興局の所管区域のうち豊浦町、壮瞥町及び洞爺湖町 北海道渡島総合振興局の所管区域 北海道檜山振興局の所管区域 |
XII | 142度15分0秒0000 | 44度0分0秒0000 | 北海道(XI系及びXIII系に規定する区域を除く。) |
XIII | 144度15分0秒0000 | 44度0分0秒0000 | 北見市 帯広市 釧路市 網走市 根室市 北海道オホーツク総合振興局の所管区域のうち美幌町、津別町、斜里町、清里町、小清水町、訓子府町、置戸町、佐呂間町及び大空町 北海道十勝総合振興局の所管区域 北海道釧路総合振興局の所管区域 北海道根室振興局の所管区域 |
XIV | 142度 0分0秒0000 | 26度0分0秒0000 | 東京都のうち北緯28度から南であり、かつ東経140度30分から東であり東経143度から西である区域 |
XV | 127度30分0秒0000 | 26度0分0秒0000 | 沖縄県のうち東経126度から東であり、かつ東経130度から西である区域 |
XVI | 124度 0分0秒0000 | 26度0分0秒0000 | 沖縄県のうち東経126度から西である区域 |
XVII | 131度 0分0秒0000 | 26度0分0秒0000 | 沖縄県のうち東経130度から東である区域 |
XVIII | 136度 0分0秒0000 | 20度0分0秒0000 | 東京都のうち北緯28度から南であり、かつ東経140度30分から西である区域 |
XIX | 154度 0分0秒0000 | 26度0分0秒0000 | 東京都のうち北緯28度から南であり、かつ東経143度から東である区域 |
由于最初开发 Autoware 的是名古屋大学,其所在的爱知县属于 VII 区域,所以 Autoware GPS 定位默认是在该区域的平面坐标系上 ( plane 7 )。
平面坐标系比较直观而且容易计算。对于比较小的范围,这种以平面代替球面的方式是可以接受的。Autoware 接收 GPS 数据,将其中的经纬度转化成某一平面区域的坐标值。
但是如果是在距离日本比较远的地方使用 Autoware,那么无论选择上述 19 个平面中的哪一个都很难获得比较精确的定位。
解决方法
简单的说就是在局部区域建立自己的平面坐标系。具体步骤如下:
- 在实验场地附近选择某一点作为坐标原点,记录其经纬度
- 通过该网站可以查询所在地每 1 经纬度间隔对应的具体长度。每 1 经度间隔在赤道附近距离最大,两极最小;每 1 维度间隔在全球范围内都差不多。
- 实时地将车辆所在经纬度与坐标原点经纬度的差别转化成车辆相对于坐标系原点的位置。
例如
已知实验场地附近 (纬度 1.3410676543865188, 经度 103.68017346176953)
- 纬线间距 1 度,长为 110574.8808516026 米
- 经线间距 1 度,长为111289.17062452697 米
选定某点 A 为 x-y 坐标系原点 (0, 0),它的经纬度分别为: A_lon, A_lat,对于另一点 B ,经纬度为 B_lon, B_lat,则 B 点的 x-y 坐标为
- x: (B_lon - A_lon) * 111289.17062452697 米
- y: (B_lat - A_lat) * 110574.8808516026 米
注意:默认东方为 x 轴正方向,北方为 y 轴正方向。