Apollo GPS調試筆記


前言:Apollo美研團隊的支持下,最近完成了Apollo推薦的Novatel PP7與我們的基站調試,在這里對Apollo的筆記做一個補充,希望以后的開發者不用在踩我們踩過的坑。

在自己調導航(https://blog.csdn.net/davidhopper/article/details/79999339)的過程中,發現apollo r2.5.0在某些地方還是有些問題,在這里,我做了補充,希望對大家有所幫助。如果有幫助,請留個言吧^_^。

1. 硬件連接:

要確定是否使用多線激光,如果使用了多線激光,那么在novatel上的DB26的接口一定要插上,並且將COM2接到工控機的COM2,數據傳輸給lidar。由於我的項目沒有用到lidar,所以沒有用到DB26的線。連接好電源,我這里用的是12V,+VIN_A與+VIN_B接+12V,兩根-VIN接地。Novatel pp7的ANT1與ANT2連接到天線,Novatel上的Micro B接口連接到USB。如下圖:

 

2. Novatel PP7 固件配置

連接完成后上電。在Ubuntu14.04中需要安裝一個Novatel的驅動(https://www.novatel.com/support/info/documents/809),個人認為是U轉串的驅動。將Novatel連接到電腦后。/dev下會多出:Serial, ttyUSB0, ttyUSB1與ttyUSB2。分別對應USB1,USB2,USB3。為了配置Novatel PP7,需要安裝minicom

$ sudo apt-get install minicom

安裝完畢后,設置minicom

$ sudo minicom -s

選擇Serial port setup,然后將修改Serial Device修改為:/dev/ttyUSB2,按回車確認。Hardware Flow Control選項改為No。回車退出,選擇Exit from Minicom退出。

注意:這里選擇ttyUSB2是因為對應USB3。USB1對應novatel0,所有數據從novatel給IPC;USB2送基站信息,通過USB2送給novatel;USB3空着的;COM1空着的;COM2將GPRMC的信息(最基本的位置與時間信息)送給工控機,提供給多線lidar。

運行:

$ sudo minicom

這是會提示USB3。將https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_2_5_hardware_system_installation_guide_v1.md最下面的for pp6的內容逐行copy到minicom修改PP7固件,但是PP7集成了IMU,所以第三行不用copy。應為PP6與PP7的固件有些不同,所以有些命令有些不同,需要燒進固件的內容整理如下:

WIFICONFIG STATE OFF #沒有wifi會報錯,不過沒關系。

UNLOGALL THISPORT

INSCOMMAND ENABLE

SETIMUORIENTATION 5

ALIGNMENTMODE AUTOMATIC

VEHICLEBODYROTATION 0 0 0

SERIALCONFIG COM1 9600 N 8 1 N OFF #與PP6不同

SERIALCONFIG COM2 9600 N 8 1 N OFF #與PP6不同

INTERFACEMODE COM1 NOVATEL NOVATEL ON

PPSCONTROL ENABLE POSITIVE 1.0 10000

MARKCONTROL MARK1 ENABLE POSITIVE

EVENTINCONTROL MARK1 ENABLE POSITIVE 0 2

interfacemode usb2 rtcmv3 none off

rtksource auto any

psrdiffsource auto any

SETINSTRANSLATION ANT1 -0.75 -0.635 1.203 0.1 0.1 0.1 # 設置IMU到ANT1的xyz以及不確定度。(兩個天線都設置計算更快。) #與pp6不同

SETINSTRANSLATION ANT2 0.75 -0.635 1.203 0.1 0.1 0.1 # 設置IMU到ANT2的xyz以及不確定度。 (裝車時測試時,需要測試這兩條語句) #與pp6不同

SETINSOFFSET 0 0 0

EVENTOUTCONTROL MARK2 ENABLE POSITIVE 999999990 10

EVENTOUTCONTROL MARK1 ENABLE POSITIVE 500000000 500000000

 

LOG COM2 GPRMC ONTIME 1.0 0.25

LOG USB1 GPGGA ONTIME 1.0

 

log USB1 bestgnssposb ontime 1

log USB1 bestgnssvelb ontime 1

log USB1 bestposb ontime 1

log USB1 INSPVAXB ontime 1

log USB1 INSPVASB ontime 0.01

log USB1 CORRIMUDATASB ontime 0.01

log USB1 RAWIMUSXB onnew 0 0

log USB1 mark1pvab onnew

 

log USB1 rangeb ontime 1

log USB1 bdsephemerisb

log USB1 gpsephemb

log USB1 gloephemerisb

log USB1 bdsephemerisb ontime 15

log USB1 gpsephemb ontime 15

log USB1 gloephemerisb ontime 15

 

log USB1 imutoantoffsetsb once

log USB1 vehiclebodyrotationb onchanged

 

SAVECONFIG

最后設置完畢。

 

3. Apollo與基站連接

首先,你要確認你的novatel PP7是否設置完成;然后。你要確認你的基站是否支持STCM 3/32與NTRIP協議(如果不支持Apollo是無法訪問的);接下來,確認你的基站是否可以連接到某個服務器,並且可以通過IP,PORT,mountpoint(基站名稱),username,password(我的基站可以連接,所以不可以我也不知道該怎樣做,但可以確定,你需要配置一個4G的網關,將你的基站內容發到你的服務器上,具體設置不詳,可以與Apollo溝通)。如果可以,那么你需要在apollo/modules/calibration/data/設置你的車型,如果你只是要測試,可以用Apollo自帶的車型mkz,在apollo/modules/calibration/data/mkz8/gnss_params/gnss_conf_mkz.txt中(如果沒有這個文件你可能在Apollo2.5 master分支下,在我這個時間點,建議用r2.5.0分支),修改:

rtk_from {

format: RTCM_V3

ntrip {

address: "x.x.x.x"

port: x

mount_point: "x"

user: "x"

password: "x"

timeout_s: x

}

}

 

將IP,PORT,mountpoint(基站名稱),username,password填入你對應的服務器信息。timeout_s,Apollo建議填5。

 

在/etc/udev/rules.d/中添加我的網盤中的99-usbtty.rules,默認下載到/Downloads目錄,docker外運行:

$ sudo cp ~/Downloads/99-usbtty.rules /etc/udev/rules.d/

$ sudo chmod 755 /etc/udev/rules.d/99-usbtty.rules

$ sudo service udev restart

 

然后在docker中運行:

$ cd /apollo

$ bash apollo.sh build

$ ./scripts/bootstrap.sh

 

在dreamviewer中右上角選車型,然后gnss_conf_mkz.txt文件就會自動copy到docker內的/home/tmp/ros/share/gnss_driver/conf/gnss_conf_mkz.txt,選定車型后可以用cat檢查一下上述車型是否被修改。最后在docker內檢查一下log:

$ tail -f data/log/gnss_driver.out 

如果base station id有東西,而且solution是NARROW_INT說明基站已經連接。這時,dreamviewerGPS會顯示GOOD、WARN或ERROR。WARN表示IMU為校准,ERROR表示信號不好。

 

后記:在我接下調車的過程中,我發現如果我用apollo/modules/calibration/data/mkz8/gnss_params/gnss_conf.pb.txt,作為我車型的gnss配置文件,在/home/tmp/ros/share/gnss_driver/conf/沒有拷貝。即使我自行拷貝,發現在執行tail -f data/log/gnss_driver.out ,發現還是會報錯,提示:[FATAL] [1534827881.015182224]: Failed to load config file: /home/tmp/ros/share/gnss_driver/conf/gnss_conf.pb.txt錯誤。所以我在真正調車的時候還是采用gnss_conf_mkz.txt配置文件。但為了跑導航模式,需要對一些文件進行修改,如下:

(1) 在apollo/modules/calibration/data/mkz8/gnss_params/gnss_conf_mkz.txt文件中,第30行下面添加(為了跑pp7):

imu_type: ADIS16488
proj4_text: "+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"

tf {
frame_id: "world"
child_frame_id: "novatel"
}

(2) 修改apollo/modules/drivers/gnss/launch/gnss_driver.launch第三行,改為:

<arg name="proj4_text" default="+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs " />

之前為utm +zone=10改為utm +zone=49,utm區域請自行查找。

(3) 修改apollo/modules/calibration/data/hnacar/gnss_params/gnss_driver.launch第三行,改為:

<arg name="proj4_text" default="+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs " />

之前為utm +zone=10改為utm +zone=49,utm區域請自行查找。

修改后就可以跑導航了。導航的鏈接為:https://blog.csdn.net/davidhopper/article/details/79999339

  

4. 注意:

Novatel固件怎樣恢復出場設置?或者取消設置?

答:在minicom內輸入FRESET,目前取消設置也只能先這樣做。

 

在寫novatel固件的過程中出現:log USB1 INSPVAXB ontime 1 <ERROR:Maximum number of logs exceeded. No new log added. [USB1],log寫滿了,怎樣處理?

答:進入minicom,先用log loglist查看所有的log,然后用unlog usb_30 xxx逐個刪除不用的log,最后SAVECONFIG。

 

調試基站用哪個軟件可以Apollo兼容?

答:用STRSVR軟件,親測可用。下載鏈接:https://pan.baidu.com/s/1DoEpRBPNxjyfILrf5ekxrA 密碼:s99l

設置這個軟件時需要注意,如果你的工控機連接的是基站,那么(0) Input選Serial,(1) Output選NTRIP Server。如果你的工控機連接的是車輛測試,那么(0) Input選NTRIP Client,(1) Output選Serial。單獨在車上測試基站時,在(0) Input選NTRIP Client,其他不選,否則校驗不能通過,會收不到數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM