Apollo GPS调试笔记

前言:Apollo美研团队的支持下,最近完成了Apollo推荐的Novatel PP7与咱们的基站调试,在这里对Apollo的笔记作一个补充,但愿之后的开发者不用在踩咱们踩过的坑。git

在本身调导航(https://blog.csdn.net/davidhopper/article/details/79999339)的过程当中,发现apollo r2.5.0在某些地方仍是有些问题,在这里,我作了补充,但愿对你们有所帮助。若是有帮助,请留个言吧^_^。github

1. 硬件链接:docker

要肯定是否使用多线激光,若是使用了多线激光,那么在novatel上的DB26的接口必定要插上,而且将COM2接到工控机的COM2,数据传输给lidar。因为个人项目没有用到lidar,因此没有用到DB26的线。链接好电源,我这里用的是12V,+VIN_A与+VIN_B接+12V,两根-VIN接地。Novatel pp7的ANT1与ANT2链接到天线,Novatel上的Micro B接口链接到USB。以下图:bootstrap

 

2. Novatel PP7 固件配置bash

链接完成后上电。在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 minicomide

安装完毕后,设置minicom测试

$ sudo minicom -sui

选择Serial port setup,而后将修改Serial Device修改成:/dev/ttyUSB2,按回车确认。Hardware Flow Control选项改成No。回车退出,选择Exit from Minicom退出。spa

注意:这里选择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,其余不选,不然校验不能经过,会收不到数据。

相关文章
相关标签/搜索