在 Ubuntu 22.04 上安裝 OpenPilot 時,發現 Python 3.10 會出現版本不相符的問題,因此需安裝 Python 3.8 並設置 Python 別名。
# 安裝 Python 3.8
sudo apt install python3.8
# 編輯 .bashrc 文件
gedit ~/.bashrc
# 在文件底部添加以下行
alias python=python3.8
關閉終端並重新打開,以確保 Python 版本為 3.8。
# 檢查 Python 版本
python --version # 應顯示 Python 3.8.2
確保已安裝正確的 Python 和 curl,然後安裝 Poetry。
# 安裝 curl 和 Python venv
sudo apt install curl -y
sudo apt install python3.8-venv
# 安裝 Poetry
curl -sSL https://install.python-poetry.org | python3 -
將 Poetry 添加到你的 PATH 中,以便可以全域使用。
# 編輯 .bashrc 文件
gedit ~/.bashrc
# 在文件底部添加以下行
export PATH=$PATH:$HOME/.local/bin
保存並關閉文件,然後關閉並重新打開終端以檢查是否安裝成功。
# 檢查 Poetry 是否已安裝
poetry --version # 應顯示 Poetry 的版本信息(如 1.3.2)
下載 OpenPilot 並初始化子模塊。
# 克隆 OpenPilot 專案
git clone -b v0.9.1 https://github.com/commaai/openpilot
cd openpilot
# 初始化子模塊
git submodule update --init
刪除 `tools` 文件夾,並從 [tools092.zip](https://drive.google.com/file/d/1Gd3kd7XP11nZhrnxWBaWcgmaD7Awm1C4/view?usp=drive_link) 下載並解壓新的版本到 openpilot 文件夾。
# 刪除 tools 文件夾
rm -rf tools
# 確認 tools 資料夾已經解壓到 /home/jinn/openpilot/tools
ls /home/jinn/openpilot/tools # 應顯示如 cabana、ubuntu_setup.sh 等文件
使用 Python 3.8 建立虛擬環境,然後進入 Poetry Shell。
# 創建虛擬環境
python -m venv ~/sconsvenv
. ~/sconsvenv/bin/activate # 激活虛擬環境
# 進入 OpenPilot 目錄並啟動 Poetry Shell
cd openpilot && poetry shell
若遇到 Error 1:找不到 pyproject.toml
文件,請下載 pyproject.toml
到 /home/jinn/openpilot
。
# 下載 pyproject.toml 到 openpilot 目錄後,重試
poetry shell
若出現 lock file
或其他 setup 錯誤,請替換為正確的 poetry.lock
文件,然後繼續執行安裝腳本。
# 賦予 update_requirements.sh 執行權限
chmod +rwx update_requirements.sh
# 執行設置腳本
tools/ubuntu_setup.sh
# 若出現 404 錯誤,請修改 sources.list.d
sudo chmod a+rwx mc3man-ubuntu-trusty-media-focal.list
gedit mc3man-ubuntu-trusty-media-focal.list
# 註解掉相關 deb 設置,如:#deb http://ppa.launchpad.net/mc3man/trusty-media/ubuntu focal main
執行完成後,若出現 cat: .python-version: No such file or directory
為正常現象。
# 更新 bashrc
source ~/.bashrc
激活虛擬環境並安裝必要的構建工具和依賴。
. ~/sconsvenv/bin/activate # 激活虛擬環境
# 安裝 SCons
pip install scons==4.4.0
scons --version # 應顯示 SCons: v4.4.0
# 進入 OpenPilot 目錄並執行構建
cd openpilot
scons -i
scons -u -j$(nproc)
若出現缺少模組的錯誤,請安裝以下必要的依賴:
pip3 install casadi libusb1 cython pycapnp numpy pycryptodome hatanaka pycurl atomicwrites sympy cffi zmq
根據錯誤提示,修改 /openpilot/SConstruct
文件中的指定行,例如:
# SConscript(['tools/cabana/SConscript'])
# SConscript(['cereal/SConscript'])
# SConscript(['system/proclogd/SConscript'])
重新執行構建。
scons -u -j$(nproc) # 應顯示構建成功
更新 .bashrc 文件並重新啟動終端。
# 編輯 .bashrc 文件
gedit ~/.bashrc
# 在文件底部添加以下行
export PYTHONPATH=/home/jinn/openpilot
關閉並重新打開終端。
打開兩個終端並運行 OpenPilot 測試。
# Terminal 1:運行 UI
(sconsvenv) jinn@Liu:~/openpilot$ ./selfdrive/ui/ui
# Terminal 2:運行台灣數據回放
(sconsvenv) jinn@Liu:~/openpilot/tools/replay$ ./replayJLL --data_dir dataC "8bfda98c9c9e4291|2020-05-11--03-00-57--61"
在第二個終端中運行美國數據回放。
# Terminal 2:運行美國數據回放
(sconsvenv) jinn@Liu:~/openpilot/tools/replay$ ./replayJLL --demo
下載並解壓 dataB6 至 /home/jinn/dataB6
。
這是 DAY 3 的教學內容,完成後你已經成功安裝並配置了 OpenPilot 並進行了數據回放測試。請繼續保持學習熱情,我們將進一步優化系統並進行更多測試!🚀
2023F AI Projects 清華大學動力機械工程學系 Jinn-Liang Liu 劉晉良