注意:以下教程amd64計算機(jī)可使用!??!
一、安裝基礎(chǔ)軟件
1. 安裝 Ubuntu Linux
安裝 Ubuntu 18.04+ 的步驟,參見 官方安裝指南。
完成安裝后更新相關(guān)軟件:
sudo apt-get update
sudo apt-get upgrade
2. 安裝 Docker Engine
Apollo 依賴于 Docker 19.03+。安裝 Docker 引擎,可用魚香ROS一鍵安裝。將下列代碼輸入到終端。然后選擇8,即可安裝。
wget http://fishros.com/install -O fishros && . fishros
還可以者通過 Apollo 提供的安裝腳本直接安裝:
wget http://apollo-pkg-beta.bj.bcebos.com/docker_install.sh
bash docker_install.sh
這個過程可能會運行多次腳本,根據(jù)腳本提示執(zhí)行即可。
二、Nvidia顯卡驅(qū)動以及Nvidia container toolkit
Apollo某些模塊需要GPU的支持才能夠編譯、運行(例如感知模塊),如果需要使用此類模塊,需要安裝Nvidia顯卡驅(qū)動以及Nvidia container toolkit以獲取GPU支持。如果僅使用apollo的NPC模塊,則可以無視這一步驟。虛擬機(jī)選手請?zhí)^?。?!
1.安裝驅(qū)動
打開終端輸入
ubuntu-drivers devices
查看顯卡推薦,如下圖所示,driver后帶有recommended字樣的即為推薦驅(qū)動(無視server、open等字眼,只需要關(guān)注版本號即可)。
?然后使用以下命令安裝顯卡驅(qū)動(以下nvidia-535為我個人的顯卡驅(qū)動),然后重啟電腦
sudo apt-get install nvidia-535
2. 安裝 Nvidia container toolkit
為了在容器內(nèi)獲得 GPU 支持,在安裝完 docker 后需要安裝 NVIDIA Container Toolkit。 運行以下指令安裝 NVIDIA Container Toolkit:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get -y update
sudo apt-get install -y nvidia-docker2
安裝完畢后,需要手動重啟下docker:
sudo systemctl restart docker
三、下載安裝 Apollo 源碼
1. 克隆 Apollo 源碼
執(zhí)行以下命令克隆 Apollo 源碼:
# SSH 方式
git clone git@github.com:ApolloAuto/apollo.git
# HTTPS 方式
git clone https://github.com/ApolloAuto/apollo.git
也可將以下網(wǎng)址直接復(fù)制到瀏覽器,下載apollo-9.0.0,解壓至home目錄下,并重命名為apollo
https://github.com/ApolloAuto/apollo/tree/v9.0.0
2. 啟動 Apollo 環(huán)境容器
在 apollo 目錄下輸入以下命令來啟動環(huán)境容器
cd apollo
bash docker/scripts/dev_start.sh
操作成功后您將會看到如下樣式的提示輸出
[ OK ] Congratulations! You have successfully finished setting up Apollo Dev Environment.
[ OK ] To login into the newly created apollo_dev_michael container, please run the following command:
[ OK ] bash docker/scripts/dev_into.sh
[ OK ] Enjoy!
3. 進(jìn)入 Apollo 環(huán)境容器
在 apollo 目錄下輸入以下命令進(jìn)入容器
bash docker/scripts/dev_into.sh
4. 編譯
在容器內(nèi)的 /apollo 目錄下輸出以下命令編譯整個工程
./apollo.sh build
若需要開啟編譯優(yōu)化,則通過以下命令進(jìn)行編譯
./apollo.sh build_opt
5. 啟動 Apollo
啟動 Dreamview+
bash scripts/bootstrap.sh start_plus
啟動 Dreamview+ 之后,在瀏覽器輸入 localhost:8888
進(jìn)入 Dreamview+ 界面。
三、遇到的錯誤
1.rules_java下載超時
INFO] Apollo Environment Settings:
[INFO] APOLLO_ROOT_DIR: /apollo
[INFO] APOLLO_CACHE_DIR: /apollo/.cache
[INFO] APOLLO_IN_DOCKER: true
[INFO] APOLLO_VERSION: predtr-2021-12-28-463fb82f9e
[INFO] DOCKER_IMG:
[INFO] APOLLO_ENV: STAGE=dev USE_ESD_CAN=false
[INFO] USE_GPU: USE_GPU_HOST= USE_GPU_TARGET=1
[ OK ] Running GPU build on x86_64 platform.
[WARNING] ESD CAN library supplied by ESD Electronics doesn't exist.
[WARNING] If you need ESD CAN, please refer to:
[WARNING] third_party/can_card_library/esd_can/README.md
[INFO] Build Overview:
[INFO] USE_GPU: 1 [ 0 for CPU, 1 for GPU ]
[INFO] Bazel Options: --config=gpu
[INFO] Build Targets: //modules/... union //cyber/...
[INFO] Disabled: except //modules/drivers/canbus/can_client/esd/...
Starting local Bazel server and connecting to it...
WARNING: ignoring LD_PRELOAD in environment.
(00:29:33) INFO: Invocation ID: 40695d7b-c7dd-416c-b7ae-de72a1612dec
(00:29:33) INFO: Current date is 2022-01-28
(00:30:32) INFO: Repository build_bazel_rules_swift instantiated at:
/apollo/WORKSPACE:68:16: in <toplevel>
/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/com_github_grpc_grpc/bazel/grpc_extra_deps.bzl:38:29: in grpc_extra_deps
/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/build_bazel_rules_apple/apple/repositories.bzl:117:11: in apple_rules_dependencies
/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/build_bazel_rules_apple/apple/repositories.bzl:84:14: in _maybe
Repository rule http_archive defined at:
/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/bazel_tools/tools/build_defs/repo/http.bzl:336:31: in <toplevel>
(00:30:32) INFO: Repository rules_java instantiated at:
/apollo/WORKSPACE:68:16: in <toplevel>
/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/com_github_grpc_grpc/bazel/grpc_extra_deps.bzl:29:18: in grpc_extra_deps
/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/com_google_protobuf/protobuf_deps.bzl:44:21: in protobuf_deps
Repository rule http_archive defined at:
/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/bazel_tools/tools/build_defs/repo/http.bzl:336:31: in <toplevel>
(00:30:32) WARNING: Download from https://github.com/bazelbuild/rules_java/archive/981f06c3d2bd10225e85209904090eb7b5fb26bd.tar.gz failed: class java.io.IOException connect timed out
(00:30:32) ERROR: An error occurred during the fetch of repository 'rules_java':
Traceback (most recent call last):
File "/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/bazel_tools/tools/build_defs/repo/http.bzl", line 111, column 45, in _http_archive_impl
download_info = ctx.download_and_extract(
Error in download_and_extract: java.io.IOException: Error downloading [https://github.com/bazelbuild/rules_java/archive/981f06c3d2bd10225e85209904090eb7b5fb26bd.tar.gz] to /apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/rules_java/temp14011213055655260428/981f06c3d2bd10225e85209904090eb7b5fb26bd.tar.gz: connect timed out
(00:30:32) ERROR: While resolving toolchains for target //modules/v2x/v2x_proxy/os_interface:os_interface_cpplint: invalid registered toolchain '@bazel_tools//tools/jdk:all': while parsing '@bazel_tools//tools/jdk:all': no such package '@rules_java//java': java.io.IOException: Error downloading [https://github.com/bazelbuild/rules_java/archive/981f06c3d2bd10225e85209904090eb7b5fb26bd.tar.gz] to /apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/rules_java/temp14011213055655260428/981f06c3d2bd10225e85209904090eb7b5fb26bd.tar.gz: connect timed out
(00:30:32) ERROR: Analysis of target '//modules/v2x/v2x_proxy/os_interface:os_interface_cpplint' failed; build aborted: invalid registered toolchain '@bazel_tools//tools/jdk:all': while parsing '@bazel_tools//tools/jdk:all': no such package '@rules_java//java': java.io.IOException: Error downloading [https://github.com/bazelbuild/rules_java/archive/981f06c3d2bd10225e85209904090eb7b5fb26bd.tar.gz] to /apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/rules_java/temp14011213055655260428/981f06c3d2bd10225e85209904090eb7b5fb26bd.tar.gz: connect timed out
(00:30:32) INFO: Elapsed time: 59.517s
(00:30:32) INFO: 0 processes.
(00:30:32) FAILED: Build did NOT complete successfully (595 packages loaded, 6242 targets configured)
currently loading: @bazel_tools//tools/jdk ... (3 packages)
這個錯誤出現(xiàn)在代碼編譯過程。原因是docker內(nèi)無法連接到這個下載地址。解決辦法是更改rules_java的下載路徑。首先將下面網(wǎng)址復(fù)制到瀏覽器。
https://github.com/protocolbuffers/protobuf/blob/main/protobuf_deps.bzl
找到對應(yīng)的下載信息,并復(fù)制。
然后打開apollo中的索引文件,路徑為~/apollo/.cache/bazel/540135163923dd7d5820f3ee4b306b32/external/com_google_protobuf/protobuf_deps.bzl,打開并找到對應(yīng)的下載信息,更換為先前復(fù)制的下載信息。
(本辦法可以編譯通過,但無法確定對使用apollo有沒有影響)文章來源:http://www.zghlxwxcb.cn/news/detail-845740.html
以上教程可以使apollo通過編譯,由于對apollo接觸的不多,所以難免會有錯誤,若發(fā)現(xiàn)錯誤,各位可以在評論區(qū)提出。文章來源地址http://www.zghlxwxcb.cn/news/detail-845740.html
到了這里,關(guān)于ubuntu20.04源碼安裝apollo 9.0.0的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!