Apollo GPS调试笔记

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

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

# SETIMUTOANTOFFSET 0.00 1.10866 1.14165 0.05 0.05 0.08 #前三个是xyz值,后三个是对应的不确定度,需要对应自己的车子实际测量。下面设置没有确认过。(这条可能不要copy)

# SETINSTRANSLATION ANT1 0.00 1.10866 1.14165 0.05 0.05 0.08 # 设置IMU到ANT1的xyz以及不确定度。(两个天线都设置计算更快。) #与pp6不同

# SETINSTRANSLATION ANT2 0.00 1.10866 1.14165 0.05 0.05 0.08 # 设置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/mkz_example/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。然后在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 GNSS遇到的问题及解决办法

猜你喜欢

转载自www.cnblogs.com/hgl0417/p/9246393.html