前言:在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,其他不选,否则校验不能通过,会收不到数据。

Apollo GPS调试笔记的更多相关文章

  1. Tomcat调试笔记

    调试笔记 在使用Tomcat过程中经常碰到问题,导致tomcat启动失败.如下↓ 由于报错太过笼统,我根本无法找出错误.后来我切换到Console视图下,看到了如下错误信息. 根据报错信息,错误原因是 ...

  2. JavaScript特效(调试笔记)

    JavaScript特效 一.在网页上显示当前的时间日期,例如:“2016年3月26日 星期六”. js源代码: function getTime() { var today = new Date() ...

  3. USB wifi调试笔记

    本文以realtek 8192CU WiFi模块为例,介绍USB wifi在Jelly Bean 4.1的调试笔记. 1.WIFI打不开现象概述 WiFi打不开是指您在UI的settings下选中Wi ...

  4. ida动态调试笔记

    ida动态调试笔记 目标文件:阿里安全挑战赛的第二题 点击打开链接 使用环境:ida6.8点击打开链接,adt bundle点击打开链接 首先打开avd安卓模拟器,界面如下: 在dos下运行adb命令 ...

  5. modbus-poll和modbus-slave工具的学习使用——modbus协议功能码3的解析(及欧姆龙温控器调试笔记)

    最近的项目中使用到了欧姆龙的温控器,里面有很多的通信方式,我们使用的常见的modbus——RTU方式,其他方式我们不使用,其中通信手册上面有很多通信的实例,欧姆龙modbus还区分4字节模式和2字节模 ...

  6. GDB调试笔记

    参考资料:GDB调试精粹及使用实例 # 调试实例 #include <iostream> #include <cstring> using namespace std; ][] ...

  7. 《C#并行编程高级教程》第7章 VS2010任务调试 笔记

    没有什么好说的,主要是将调试模式下的Parallel Tasks窗体和Parallel Stacks窗体.折腾一下应该比看书效果好.(表示自己没有折腾过) 另外值得注意的是,主线程不是一个任务.所以主 ...

  8. SIM900A模块HTTP相关调试笔记

    SIM900A模块使用笔记 更新2018-12-8 正常工作状态: 接线方法: 首先将 AT 写入字符串输入框,然后点击 发送.因为模块波特率默认是 9600,所以两条指令的显示都是没有问题的:如果将 ...

  9. 博世传感器调试笔记(一)----加速度传感器BMA253

    公司是bosch的代理商,最近一段时间一直在公司开发的传感器demo板上调试bosch sensor器件.涉及到的器件有7,8款,类型包括重力加速度.地磁.陀螺仪.温度.湿度.大气压力传感器等.在调试 ...

随机推荐

  1. VS2012 常用配置

    一. 整合svn版本控制 1. 点击此 下载与SVN版本相对应的ankhsvn插件,本人用的是Subversion 1.8 2. 安装ankhsvn插件,打开VS2012,右键任一工程,有显示如下图, ...

  2. 解决全站字符乱码(POST和GET中文编码问题)

    1 说明 乱码问题: 获取请求参数中的乱码问题: POST请求:request.setCharacterEncoding(“utf-8”): GET请求:new String(request.getP ...

  3. Code Signal_练习题_Add Border

    Given a rectangular matrix of characters, add a border of asterisks(*) to it. Example For picture = ...

  4. 移动端App开发 - 01 - 开篇

    移动端App开发 - 01 - 开篇 从此笔记之后开启移动端 app 开发学习 该系列笔记去掉所有无关重要的东西,简介干练 我的移动端App开发笔记 1.移动端App开发 - 02 - iPhone/ ...

  5. 中专生自学Android到找到工作的前前后后

    我是一名中专生,在学校里读的是计算机专业,但是由于学校不好大部分同学都不爱学习来这里几乎大部分都是在混日子的,虽然我中考的成绩不差,但是因为家里穷考虑到以后没钱读大学我毅然来到这里,虽然是中专,但是我 ...

  6. EventTarge Node Docuement Element HTMLElement 关系

    综述: 可以将其看做是依次继承的关系: Node Node A Node is an interface from which a number of DOM types inherit, and a ...

  7. 最好的原型和流程图绘制工具:OmniGraffle_交互设计

    原文地址:http://www.shangxueba.com/jingyan/2230668.html 使用哪种原型设计工具"大概是设计师闲聊时出现频率最高的话题之一.据我了解一般以Visi ...

  8. 个人项目-wordcount

    源代码上传到github的网址为:https://github.com/fancy-dawning/hello-world.git. wc.exe是一个常见的工具,它能统计文本文件的字符数,单词数和行 ...

  9. vue3.0端口号修改

    module.exports = { // 基本路径 baseUrl: '/', // 输出文件目录 outputDir: 'dist', // 生产环境是否生成 sourceMap 文件 produ ...

  10. 对数损失函数(Logarithmic Loss Function)的原理和 Python 实现

    原理 对数损失, 即对数似然损失(Log-likelihood Loss), 也称逻辑斯谛回归损失(Logistic Loss)或交叉熵损失(cross-entropy Loss), 是在概率估计上定 ...