Apollo移植
Apollo移植
环境
- 平台 ubuntu16.04
- Apollo_kernel 1.0
安装步骤步骤
步骤一:安装ubuntu(官方建议使用Ubuntu 14.04.3)
启动软件更新程序
终端中执行下面的命令(新机需要更换Ubuntu的下载源,详细步骤见https://www.cnblogs.com/DXGG-Bond/p/12200597.html)
sudo apt-get update
sudo apt-get upgrade
键入以下命令以安装Linux 4.4内核
sudo apt-get install linux-generic-lts-xenial
步骤二:安装Apollo内核
从github上的发行版部分下载发行包
https://github.com/ApolloAuto/apollo-kernel/releases
安装内核在下载发行包之后
tar zxvf linux-4.4.32-apollo-1.0.0.tar.gz
cd install
sudo bash install_kernel.sh
通过
reboot命令重新启动系统确认是否正常启动Apollo内核
终端中输入uname -r 查看是否为上一步中安装的Apollo内核
uname -r
如果不是我们想要的内核,可能因为系统内有多个内核,需要修改启动内核的顺序。
运行如下命令,查看内核的启动顺序:
grep 'menuentry' /boot/grub/grub.cfg

其中红框的部分是大项(0,1),底下的是其中的item(0-11),我们想要启动的是:Linux 4.4.32-apollo-2-RT' --class,对应1->6
修改/etc/default/grub中的系统内核启动顺序:
- 将GRUB_DEFAULT=0修改为:"1>6" 如下图:

运行如下命令更新启动顺序:
sudo update-grub
重启之后运行:uname -r,此时将是我们期望的启动顺序。效果如下
lhx@ubuntu:~$ uname -r
4.4.32-apollo-1-RT
步骤三:从github源代码下载Apollo源代码,并检查正确的分支:
ubuntu终端中执行以下代码:
git clone https://github.com/ApolloAuto/apollo.git
cd apollo
git checkout [release_branch_name]
步骤四:
APOLLO_HOME通过以下命令设置环境变量:ubuntu终端中执行以下代码:
echo "export APOLLO_HOME=$(pwd)" >> ~/.bashrc && source ~/.bashrc
source ~/.bashrc
步骤五:安装Docker环境
Docker容器是为Apollo建立构建环境的最简单方法。
(详细Docker教程https://docs.docker.com/、官方安装指南https://docs.docker.com/install/linux/docker-ce/ubuntu/)
具体是安装步骤如下图:
操作系统要求如下(本人用Ubuntu16.04也能成功安装)
- Disco 19.04
- Cosmic 18.10
- Bionic 18.04 (LTS)
- Xenial 16.04 (LTS)
若系统安装过docker需要卸载旧版本,可使用以下命令
$ sudo apt-get remove docker docker-engine docker.io containerd runc
安装软件包以允许
apt通过HTTPS使用存储库:$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加Docker的官方GPG密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证是否成功添加官方密钥
$ sudo apt-key fingerprint 0EBFCD88
成功添加官方密钥终端将输出如下信息
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
使用以下命令来设置稳定的存储库
对于 amd64 架构的计算机,执行以下代码
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
如果你是树莓派或其它ARM架构计算机,请运行:
echo "deb [arch=armhf] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list
更新apt包索引
sudo apt-get update
安装最新版本的Docker Engine-Community和containerd
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
验证是否成功安装Docker Engine-Community
sudo docker run hello-world
成功安装将在终端中打印如下信息
Hello from Docker!
This message shows that your installation appears to be working correctly.
注:以下步骤参考文档链接:https://docs.docker.com/install/linux/linux-postinstall/
步骤六:以非root用户身份管理Docker
创建
docker组。$ sudo groupadd docker
将您的用户添加到该
docker组。$ sudo usermod -aG docker $USER
重启docker后台服务
sudo service docker restart
切换当前用户到新group
newgrp - docker
确认docker可以非sudo运行
docker p
步骤七
(可选)如果已经安装了Docker(在安装Apollo内核之前),则在以下行添加
/etc/default/docker:
DOCKER_OPTS = "-s overlay"
步骤八:按照官方文档安装最新的nvidia-container-toolkit 。
(此步本人电脑无对应的硬件GPU,无法进行安装)
建立阿波罗
注一下步骤均属于没有硬件下的一种模拟情况
参考:建立Apollo
启动容器
我们提供了一个名为dev-latest的构建映像。容器会将您当地的阿波罗仓库安装到/ apollo。
bash docker/scripts/dev_start.sh
此步骤在家的电脑上一直在下载超时。解决方式参考:解决 Docker pull 出现的 error pulling image configuration:
解决错误信息:Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
注一下为个人的百度云地址中粘贴地址
1. 安装/升级Docker客户端
推荐安装1.10.0以上版本的Docker客户端,参考文档 docker-ce
2. 配置镜像加速器
针对Docker客户端版本大于 1.10.0 的用户
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://27yrtv95.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
进入容器
bash docker/scripts/dev_into.sh
构建模块
bash apollo.sh build
Note: 如果没有GPU,则可以使用以下脚本代替
bash apollo.sh build_cpu
Note: 如果您的计算机运行缓慢,则可以输入以下命令来限制CPU。
bash apollo.sh build --local_resources 2048,1.0,1.0
如何启动和运行阿波罗
参考:如何启动和运行阿波罗
在继续之前,请先检查并确保您在开发docker容器中。现在,您将需要从源代码构建。如果要运行整个系统,请确保具有nVidia GPU并已安装Linux nVidia驱动程序。即使您缺少Linux nVidia驱动程序,您仍然可以继续执行接下来的几个步骤,因为该系统将运行,但是将使用基于CUDA的感知和其他模块。
# To get a list of build commands
./apollo.sh
# To make sure you start clean
./apollo.sh clean
# This will build the full system and requires that you have an nVidia GPU with nVidia drivers loaded
bash apollo.sh build
如果您没有nVidia GPU,则系统将运行,但是将使用基于CUDA的感知和其他模块。您必须指定dbg调试模式或opt优化代码
./apollo.sh build_no_perception dbg
如果您对Dreamview前端进行了修改,则必须./apollo.sh build_fe 在运行完整版本之前运行。
如果计算机速度很慢,则可以输入以下命令来限制CPU。
bash apollo.sh build --local_resources 2048,1.0,1.0
运行阿波罗
请按照以下步骤启动Apollo。请注意,在运行系统之前,必须先构建系统。请注意,bootstrap.sh实际上会成功,但是如果您跳过构建步骤,则不会显示用户界面。
Start Apollo
运行Apollo将启动ROS核心,然后启动一个称为Dreamview的Web用户界面,这由引导脚本处理,因此,应在docker容器中运行:
# start module monitor
bash scripts/bootstrap.sh
访问Dreamview
通过打开您喜欢的浏览器(例如Chrome)访问Dreamview,请访问http:// localhost:8888,您应该看到此屏幕。实际系统中没有任何运行。
Apollo移植的更多相关文章
- STM32F429 LCD程序移植
STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动 ...
- MVVM框架从WPF移植到UWP遇到的问题和解决方法
MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...
- IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)
首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于device tree, 还是基于传统的Platf ...
- Linux主机上使用交叉编译移植u-boot到树莓派
0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...
- 将MPM雪模拟移植到Maya
同事实现了一个迪士尼的MPM雪模拟论文,我将其移植到Maya中 论文题目是 A material point method for snow simulation 代码在这里: https://git ...
- ucos实时操作系统学习笔记——操作系统在STM32的移植
使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...
- DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)篇一
关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...
- geotrellis使用(二十五)将Geotrellis移植到spark2.0
目录 前言 升级spark到2.0 将geotrellis最新版部署到spark2.0(CDH) 总结 一.前言 事情总是变化这么快,前面刚写了一篇博客介绍如何将geotrellis移植 ...
- geotrellis使用(二十四)将Geotrellis移植到CDH中必须要填的若干个坑
目录 前言 若干坑 总结 一.前言 近期干了一件事情,将geotrellis程序移植到CDH中(关于CDH,可以参考安装ClouderaManager以及使用ClouderaManage ...
随机推荐
- 「雕爷学编程」Arduino动手做(36)——WS2812B 4位彩灯模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- python之Python内置函数一览表
Python 解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块. 如果你熟悉 Shell 编程,了解什么是 Shell 内置命令,那么你也很容易理解什么是 Python 内置函数 ...
- 14.6 kafka
14.6 kafka 为什么用消息队列 举例 比如在一个企业里,技术老大接到boss的任务,技术老大把这个任务拆分成多个小任务,完成所有的小任务就算搞定整个任务了. 那么在执行这些小任务的时候,可能有 ...
- 09 基于模块wsgiref版web框架
09 基于模块wsgiref版web框架 模块引入 真实开发中的python web程序,一般会分为两部分: 服务器程序:负责对socket服务器进行封装,并在请求到来时,对请求的各种数据 ...
- 大清朝早亡了,还没有入门 Spring Boot?
由于读者的数量越来越多,难免会被问到一些我自己都觉得不好意思的问题,比如说前几天小王就问我:"二哥,快教教我,怎么通过 Spring Boot 创建一个 Hello World 项目啊?&q ...
- 实验二、OpenCV图像滤波
一.题目描述 对下面的图片进行滤波和边缘提取操作,请详细地记录每一步操作的步骤. 滤波操作可以用来过滤噪声,常见噪声有椒盐噪声和高斯噪声,椒盐噪声可以理解为斑点,随机出现在图像中的黑点或白点:高斯噪声 ...
- SSM基础pom和xml的整合配置
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit ...
- 【JavaScript数据结构系列】04-优先队列PriorityQueue
[JavaScript数据结构系列]04-优先队列PriorityQueue 码路工人 CoderMonkey 转载请注明作者与出处 ## 1. 认识优先级队列 经典的案例场景: 登机时经济舱的普通队 ...
- akka-typed(2) - typed-actor交流方式和交流协议
akka系统是一个分布式的消息驱动系统.akka应用由一群负责不同运算工作的actor组成,每个actor都是被动等待外界的某种消息来驱动自己的作业.所以,通俗点描述:akka应用就是一群actor相 ...
- 02)php基础知识
综述 学习网址 菜鸟教程-PHP 所有学习内容皆来自以上网站. 基础 语法 PHP 脚本以 结束; PHP 文件的默认文件扩展名是 ".php". <?php echo &q ...