常见问题-除了可选用Novatel PP6+ IMU A1方案,是否有其他可选方案,如PP7或其他品牌?

定位模块

Q

除了可选用Novatel PP6+ IMU A1方案,是否有其他可选方案,如PP7或其他品牌?

A

当然也可以使用PP7的方案,Apollo基本可以做到无缝支持。


Q

我们用的组合导航是诺瓦泰的PwrPak7-E1(这是诺瓦泰第七代组合导航,阿波罗官网手册上推荐的是第六代),现在从监测的节点内容来看,连接上设备以后,gnss的内容已经发布出来了,imu的信息没有发布,有错误提示“unsupported IMU type:41”,我们查到诺瓦泰第七代和第六代所用的imu型号是不一样的,第七代用的是G320N,所以想确认是不是这个原因造成的。但是也发现一点,就是阿波罗的配置里是支持更改imu型号的,允许配置成我们现在所用的G320N,但是现在我们一直没有更改成功,所以想请教下:

1、如果要更改配置里的imu型号,正确的步骤是什么?

2、目前支持的IMU型号是imu_type: ADIS16488 直接切换成G320N是否有问题?

无人驾驶论坛,自动驾驶论坛,51apollo.com

A

在配置文件`modules/drivers/gnss/conf/gnss_conf.pb.txt`中修改如下字段:

rtk_solution_type: RTK_RECEIVER_SOLUTION

imu_type: G320N

proj4_text: “+proj=utm +zone=10 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs”

即可,zone 需要根据自己所在的区域适配。


Q

对于定位而言,Apollo里面是否融合了图像和雷达的SLAM,解除耦合只用GSP行不行,是否会导致定位和导航精度严重恶化?

A

目前,我们提供两种定位方式,一种RTK,另外一种是MSF(Multi-sensor Fusion Localization)。

1、这两种定位方式目前并没有使用到图像、激光雷达等信息的融合方法;

2、如果在RTK定位方式中,我们只用到了位置的坐标信息,是可以单独使用GPS的,但是定位精度上效果会有误差,可以在限定低速场景使用。

常见问题(传感器适配)没有车辆的dbc 文件,只有电子版的控制协议,如何做适配?

问:没有车辆的dbc 文件,只有电子版的控制协议,如何做适配?

答:一般的情况下,油门和刹车需要两个信号(控制、反馈),如果是一个信号,需要在父类vehicle_controller做一些适配。


车辆以及雷达的协议如何适配到Apollo中,要修改哪部分的代码?

答:车辆协议适配可以参考这个,http://apollo.auto/docs/procedure_cn.html。


Apollo是用gnss的ros驱动,那么Apollo启动的时候,在哪个环节运行了这个驱动包呢?

答:这些都是一种排查方式,如果驱动运行正常,就看看这个/apollo/sensor/gnss/best_pose  or gnss/imu_stat /gnss/ins_status。

请教一下各位,docker中安装不上nvidia驱动是怎么回事啊

请教一下各位,docker中安装不上nvidia驱动是怎么回事啊

答:sudo ./NVIDIA-Linux-x86_64-384.59.run –no-opengl-files –no-x-check -no-kernel-module

不要用那个脚本装

你可以看一下下面的内容

ubuntu14.04下安装apollo-kernel和N卡驱动

硬件

IPC:Nuvo-5095GC GPU: NVIDIA GTX-1050Ti

问题1

apollo官方推荐使用ubuntu14.04,系统安装完之后,屏幕分辨率非常低,需要安装安装N卡驱动。按照apollo-kernel安装文档,应该先安装apollo-kernel,再使用如下命令安装N卡驱动:

sudo bash install-nvidia.sh

脚本文件请点击 这里

但是,部分用户发现,此方法安装好N卡驱动后,虽然使用nvidia-smi命令可以查看到驱动已经正常安装,但屏幕分辨率依然很低。且 X Server Settings中无法切换到N卡驱动。

问题2

系统安装完毕之后,直接安装N卡驱动,具体方法请点击 这里 。接下来,安装apollo-kenel,你会发现屏幕分辨率突然变回装N卡驱动之前的样子了。因为,N卡驱动不支持real-time kernel.

解决方法

经过尝试,本人找到一种可行的方法,在上述硬件环境中亲测有效,步骤如下:

• 安装apollo-kernel后(N卡驱动尚未安装),下载N卡驱动,这里笔者使用的版本和apollo官方文档的一致: NVIDIA-Linux-x86_64-375.39.run ,下载该驱动文件,地址:http://us.download.nvidia.com/XFree86/Linux-x86_64/375.39/

• 关闭X-Window服务,进入命令行界面并登陆:

sudo service lightdm stop

• 给驱动文件赋予可执行权限:

sudo chmod +x NVIDIA-Linux-x86_64-375.39.run

• 安装。后面的参数非常重要,不可省略,特别是最后一个!!

sudo ./NVIDIA-Linux-x86_64-384.59.run –no-opengl-files –no-x-check -no-kernel-module

说明

• 遇到此问题的用户不多,github也有相关issue

• 笔者对参数 -no-kernel-module 所带来的影响还未测试,后续在使用过程遇到问题会在此更新

• 其他硬件环境尚未测试

• 安装完ubuntu14之后,我没有严格按照这个文档来安装4.4的kernel,所以 上述问题也有可能是个案,没代表性,仅供参考。

ubuntu16.04 安装 apollo-kernel,apollo-platform以及apollo

Q:请教:
ubuntu16.04可以安装apollo-kernel,apollo-platform以及apollo吗?

A:可以的,请开始尝试起来吧。目前有两份关于ubuntu16的文档介绍:
https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_run_apollo_2.5_with_ubuntu16.md
https://github.com/ApolloAuto/apollo/blob/master/docs/howto/how_to_run_apollo_3.0_with_ubuntu16.md
请参考,如果有什么问题可以帮助的请随时提问

Q:谢谢,看了下:
2.5 介绍glfw的安装,3.0是基于docker安装apollo,我是想不基于docker,依次安装apollo-kernel,apollo-platform和apollo。

A:哦哦哦哦,明白了,你是想直接想在Ubuntu16的环境下操作,不是官方提供的docker环境下对吧。
理论上是可以的,但是Apollo实际上是依赖于了大量的第三方软件,比较重要的有bazel,pcl,ros等。同时bazel也依赖于其他的软件例如boost,protobuf和java等。最重要的是,Apollo对软件的版本号特别敏感,例如官方使用的bazel0.5.3版本必须依赖于java8u144等。如果感兴趣的话,我建议你可以尝试一下,但是直接编译Apollo3.0会报错,且错误信息可以很让人迷惑。为了方面你的尝试,请先参考一下apollo/docker/build/installer文件夹,下面是包括了构造docker环境的所有脚本,实际上你也可以用这些脚本构建你自己的非docker环境。理论上这些脚本全部执行成功(所有软件安装成功),Apollo是可以编译通过的。祝你好运。

A:另外补充一下,测试过程中如果有软件无法使用apt-get自动安装的话,可以下载源码进行编译安装。
但是请注意两点:

  1. 安装位置,尽量保持和apt-get的安装目录一致
  2. 软件版本号,为了减少后续编译和运行时的错误,尽量保证软件版本号一致

Q:看了下apollo/docker/build/installer/install_ros.sh脚本,这个应该就是apollo-platform,脚本中“Download apollo-ros.” 中只有indigo版本,没有kinetic版本,应该是不能支持ubuntu16.04.

A:ubuntu16.04上安装ros-kinetic-catkin就可以了

Q:

如图,这一块应该是apollo针对indigo做的platform发行版,没有kinetic的版本

A:这就是我们为什么要重新编译ros的原因,下载的压缩包是Apollo在特定环境下(boost,pcl,cuda等)编译的ros,当然也只能运行于特定的环境,这也是为什么docker环境方便开发者使用的原因。如果切换Apollo的工作环境的话,需要重新编译ros,并按照上述脚本按照ros的方式将ros编译后的文件存放在不同目录。

填充消息

Q:我用自己的模拟器使用Apollo 2.5。我实现了本地化和canbus协议(模块算法实现)。它们与模拟器通信并传输INS,机箱和ControlCommand数据。我启动了dreamview,选择了标准模式(根据#4937我现在不能使用导航模式),启动模块canbus,本地化,路由,规划,控制。我还使用map_offset帮助调整我的模拟器地板场的坐标到SunnyvaleLoop地图。它帮助我发送routeRequests并开始计划。我看到计划轨迹,Control Command是由Control模块生成的,但是Canbus模块(VehicleController类)没有调用
Gear(control_command.gear_location()); Throttle(control_command.throttle()); Brake(control_command.brake()); SetEpbBreak(control_command);
导致control_command.has_pad_msg()== false并且驱动模式是COMPLETE_MANUAL。
如何生成Pad消息并将其发送到控制模块。我发现只是通过语音命令生成Pad消息,但我希望我错了。
请帮忙 :)

A:

你可以./scripts/pad.sh为apollo 运行发送不同的动作:

apollo @in_dev_docker:/ apollo $ ./scripts/pad.sh
I0816 19:14:35.949422 28683 terminal.cc:49]命令:
I0816 19:14:35.949604 28683 terminal.cc:50] 0:复位到手动驱动模式。
I0816 19:14:35.949615 28683 terminal.cc:51] 1:自动驾驶模式。
I0816 19:14:35.949620 28683 terminal.cc:52] ctrl + c:退出。
I0816 19:14:35.949625 28683 terminal.cc:53]其他:打印帮助。
0
I0816 19:14:36.744787 28709 terminal.cc:60]发送reset动作命令。
I0816 19:14:36.745098 28709 terminal.cc:67]发送pad_message OK

Q:得到它了!有用。我也可以在docker中启动./bazel-bin/modules/control/tools/pad_terminal。我希望它的工作原理类似。
非常感谢!