【Apollo 自动驾驶】Win11 中 WSL2 安装配置 Apollo 环境

news2024/9/21 18:32:57

【Apollo 自动驾驶】Win11 中 WSL2 安装配置 Apollo 环境

【1】Win11 WSL2 安装配置 Nvidia Cuda

【1.1】检查计算机硬件的显卡信息

计算机图标右击 -> 管理 -> 设备管理器 -> 显示适配器;

【1.2】检查对应显卡并安装 Nvidia 显卡驱动 

下载对应的 Nvidia 显卡驱动,Nvidia 显卡驱动下载链接

 注意此处应该选择 Windows 主机显卡型号对应的驱动;

【1.3】安装 WSL2 中对应 Ubuntu 的 CUDA Toolkit

选择对应的 CUDA Toolkit,CUDA Toolkit 下载链接

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.2.0/local_installers/cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-12-2-local_12.2.0-535.54.03-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2004-12-2-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

配置 CUDA Toolkit

编辑 vim ~/.bashrc

添加如下信息
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-12.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

使能
source ~/.bashrc

检查是否安装成功

执行如下命令
nvcc -V

-----------------------------------------------------------------

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Jun_13_19:16:58_PDT_2023
Cuda compilation tools, release 12.2, V12.2.91
Build cuda_12.2.r12.2/compiler.32965470_0

【2】WSL2 安装配置 Docker 环境

【2.1】下载配置 Docker-Desktop

Docker-Desktop 下载地址 : https://www.docker.com/products/docker-desktop/

安装完毕后,选择 settings -> Resources -> WSL integration 从而 WSL2 可以使用 docker 命令

【3】Apollo 代码编译与环境配置

【3.1】编译 Apollo 代码

下载 Apollo 源码并进入源码目录后 

拉取相关镜像
bash docker/scripts/dev_start.sh

进入 docker 编译环境容器
bash docker/scripts/dev_into.sh

编译 Apollo 代码
bash apollo.sh build

【3.2】配置并启动验证 DreamView

【3.2.1】启动 DreamView

启动 DreamView
bash scripts/bootstrap.sh

【3.2.2】针对 WSL2 环境修改显示 IP

修改 docker/scripts/dev_start.sh 如下

 修改 scripts/bootstrap.sh 如下

DreamView 启动完成显示如下

【3.3】Apollo 启用 GPU

【3.3.1】Apollo 编译时观察是否启用了 GPU

执行命令 bash apollo.sh build

出现如下内容

说明启用了 GPU 编译;

编译选项说明

#使用 Release 模式和 GPU 编译
bash apollo.sh build_opt_gpu

其他可选编译方式如下所示:
# bash apollo.sh build 表示带调试信息的 Release 模式编译
# [module] 可选,表示待编译的模块;如果不加任何模块,表示编译所有模块
# 例如: bash apollo.sh build perception ,表示只编译感知模块
# bash apollo.sh build ,编译所有模块
#
bash apollo.sh build [module]

模式编译
# Debug
bash apollo.sh build_dbg [module]
模式编译
# Release
bash apollo.sh build_opt [module]

#使用 CPU ,带调试信息的 Release 模式编译
bash apollo.sh build_cpu [module]

#使用 GPU ,带调试信息的 Release 模式编译
bash apollo.sh build_gpu [module]

#使用 GPU , Release 模式编译
bash apollo.sh build_opt_gpu [module]

【3.3.2】观察判定 Apollo 是否启用了 GPU

执行命令 bash docker/scripts/dev_start.sh

出现如下内容 

执行命令 bash docker/scripts/dev_into.sh

出现如下内容

以上可以判定 Apollo 镜像中没有启用 GPU;

【3.3.3】Apollo 镜像中启用 GPU

安装 nvidia-container-runtime

添加相关仓库
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
  sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
  sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update

安装
sudo apt-get install nvidia-container-runtime

问题与解决方案

【1】Failed to pull docker image : apolloauto/apollo:dev-x86_64-18.04-20210914_1336 docker 镜像拉取失败

需要添加权限

sudo bash docker/scripts/dev_start.sh

参考与致谢

本博客为博主学习笔记,同时参考了网上众博主的博文以及相关专业书籍,在此表示感谢,本文若存在不足之处,请批评指正。

【1】CUDA on WSL User Guide

【2】Win11怎么查看显卡配置 Win11查看显卡配置的方法

【3】在wsl2中安装CUDA

【4】基于wsl的Apollo环境配置 

【5】Win10 WSL2 ubuntu20.04编译apollo 

【6】https://github.com/NVIDIA/nvidia-container-runtime

【7】https://nvidia.github.io/nvidia-container-runtime/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/987226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#winform导出DataGridView数据到Excel表

前提:NuGet安装EPPlus,选择合适的能兼容当前.net framwork的版本 主要代码: private void btn_export_Click(object sender, EventArgs e) {SaveFileDialog saveFileDialog new SaveFileDialog();saveFileDialog.Filter "Excel Files…

Mybatis传参parameterType方法汇总记录

这里分别记录使用过的七种传参方式: 1、在入参只有一个的情况下,Mapper.java中直接传即可 2、而在参数有两三个的情况下,Mapper.java中可以用Param注解来指定入参 程序就知道哪个参对应拼接完SQL的哪个条件字段 并且Mapper.xml中parameterType不用去指定&#xff…

解决eNSP和HCL Cloud兼容性的问题

问题:eNSP或HCL无法启动 不兼容的原因:eNSP支持Virtual Box是5.2.44;HCL支持的Virtual Box版本是6.0.14 解决方案:注册表欺骗 再进行重新安装前先把之前的都卸载掉:eNSP、VirtualBox、HCL等 1、先安装Virtual Box 5.…

JS中call(),apply()是什么,call(),apply()的原理是什么?如何手写一个call(),apply()?Symbol是什么,怎么用Symbol调优?含详细解析

🎉call() 💕call()的参数 thisArg:在调用 func 时要使用的 this 值 arg1, …, argN (可选) 函数的参数 ✨call()的描述: 首先声明 func是一个函数,person是一个对象 针对这段代码:f…

python中如何使用正则表达匹配\本身?(文末赠书)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 将军向宠,性行淑均。 大家好,我是皮皮。 一、前言 前几天在Python钻石群【空】问了一个Python正则表达式的问题,一起…

CSS笔记(黑马程序员pink老师前端)定位

定位可以让盒子自由的在某个盒子内移动位置或者固定在屏幕中某个位置,并且可以压住其他盒子。 定位 定位模式 边偏移 定位模式说明static静态定位,按标准流特性摆放,没有边偏移,很少用relative相对定位,相对自身原有位置移动,原有位置继续占有(不脱标…

《好笑的爱》阅读笔记

《好笑的爱》阅读笔记 是暑期认识的一位川大的同学推荐的,说他喜欢的一个作家是米兰昆德拉,喜欢他的短篇小说集《好笑的爱》。于是去武汉中心书城顺便买了两本书,另外还买了一本是《帷幕》,至今还没有看。 这本书总共包含了几篇短…

JDK8的 ConcurrentHashMap 源码分析

目录 1. 导读 2. ConcurrentHashMap 成员变量解读 3. ConcurrentHashMap 初始化 3.1 ConcurrentHashMap 无参构造源码解读 3.2 ConcurrentHashMap 带参构造源码解读 3.3 tableSizeFor 方法作用解读 3.4 ConcurrenthashMap初始化总结 4. ConcurrentHashMap 添加元素方法…

14 - 多线程之锁优化(下):使用乐观锁优化并行操作

前两讲讨论了 Synchronized 和 Lock 实现的同步锁机制,这两种同步锁都属于悲观锁,是保护线程安全最直观的方式。 我们知道悲观锁在高并发的场景下,激烈的锁竞争会造成线程阻塞,大量阻塞线程会导致系统的上下文切换,增…

springBoot-使用idea创建项目添加依赖并实现数据查询

一、使用idea创建springBoot项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://mave…

Python小知识 - Python装饰器

Python装饰器 在Python中&#xff0c;装饰器是一个特殊的函数&#xff0c;可以将其他函数包装在装饰器函数中&#xff0c;并且将被包装的函数作为参数传递给装饰器函数。 使用装饰器的好处是可以自动在被包装的函数前后执行一些额外的代码&#xff0c;比如在函数执行前后打印日…

Linux之防火墙

目录 什么是防火墙 分类&#xff1a; Netfilter(数据包过滤) 防火墙无法完成的任务 iptables 与 firewalld 区别 iptables iptables执行原则 规则链 概念 分析 流程图 规则链分类 iptables 流量处理动作 iptables表 四种规则表 安装iptables 预处理 管理命令 …

SpringBoot整合RabbitMQ图文过程以及RabbitTemplate常用API介绍

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Sp…

GUI知识点总结(二)(java)

文章目录 &#x1f412;个人主页&#x1f3c5;JavaSE系列专栏&#x1f4d6;前言&#xff1a;&#x1f993;事件 &#x1f3e8;Adapter 适配器&#x1f415;对话框&#x1f98d;showMessageDialog()&#xff1a;消息对话框&#x1f98d;showConfirmDialog()&#xff1a;确认对话…

ChatGPT 插件 “Consensus“ 实现论文搜索功能;数据工程在语言建模中的重要性

&#x1f989; AI新闻 &#x1f680; ChatGPT 插件 “Consensus” 实现论文搜索功能 摘要&#xff1a;OpenAI 推出了一个名为 “Consensus” 的插件&#xff0c;可在 ChatGPT 上进行论文搜索。用户只需用一句话描述自己想了解的问题&#xff0c;插件就能从 2 亿篇论文中搜索并…

Tomcat架构设计源码剖析

Tomcat架构设计&源码剖析 Tomcat 架构设计 Tomcat的功能&#xff08;需求&#xff09; 浏览器发给服务端的是一个 HTTP 格式的请求&#xff0c;HTTP 服务器收到这个请求后&#xff0c;需要调用服务端程序来处理&#xff0c;所谓的服务端程序就是你写的 Java 类&#xff…

实现 js 中所有对象的深拷贝(包装对象,Date 对象,正则对象)

通过递归可以简单实现对象的深拷贝&#xff0c;但是这种方法不管是 ES6 还是 ES5 实现&#xff0c;都有同样的缺陷&#xff0c;就是只能实现特定的 object 的深度复制&#xff08;比如数组和函数&#xff09;&#xff0c;不能实现包装对象 Number&#xff0c;String &#xff0…

如何压缩图片大小?缩小图片体积跟我学

在日常生活中&#xff0c;我们常常需要处理图片&#xff0c;但是由于图片大小过大&#xff0c;常常带来许多不便。那么&#xff0c;如何压缩图片大小呢&#xff1f;下面就为大家介绍三个方法&#xff0c;让你轻松解决这个问题。 一、使用图片编辑软件 市面上有许多图片编辑软件…

使用HTTP代理上网安全吗?

HTTP代理是一种代理服务器&#xff0c;它可以充当客户端和服务器之间的中介&#xff0c;以帮助客户端访问服务器上的资源。虽然使用HTTP代理可以带来一些便利&#xff0c;但是在安全方面也存在一些问题。 HTTP代理的安全问题 窃取用户信息 如果HTTP代理服务器不受信任&#xff…

【计算机网络】https协议

目录 概念的准备 什么是加密 为什么需要加密 常见的加密方式 对称加密 非对称加密 数据摘要(数字指纹) 数字签名 https的工作过程 方案一&#xff1a;只使用对称加密 方案二&#xff1a;只使用非对称加密 方案三&#xff1a;双方都采用非对称加密 方案四&#xff…