前言
Autoware.AI是世界上第一個用于自動駕駛技術的“All-in-One”開源軟體,關于它的介紹就不再贅述了,感興趣的可以去看一下知乎文章,這里主要說明一下autoware.ai的安裝配置,之前在Ubuntu16.04上裝過autoware,但現在開發環境已經遷到18.04了,所以重新安裝一下,特此記錄,順便一提,autoware.ai已經很久沒維護了,畢竟已經推出了autoware.auto,它是基于ROS2的,由此可見ROS2和autoware.auto將會是趨勢,后面有機會再介紹,
準備作業
- 官網推薦配置,這里我們安裝1.14.0版本

默認你已經裝好ROS-melodic、CUDA10.0、Eigen3.3.7(或更高)、QT5.12.8(或者更高)、OpenCV選擇性安裝,我因為要使用yolo,所以裝了5.2.0版本,
安裝
- 其實按照的順序一步步來基本沒有問題,主要是后面編譯需要修改代碼,
- 安裝依賴
sudo apt update
sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin
sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool
pip3 install -U setuptools
- 下載原始碼
# 創建作業空間
mkdir -p ~/autoware.ai/src
cd ~/autoware.ai
# 下載原始碼(全部加代理)
wget -O autoware.ai.repos "https://gitlab.com/autowarefoundation/autoware.ai/autoware/raw/1.14.0/autoware.ai.repos?inline=false"
vcs import src < autoware.ai.repos
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
編譯
autoware.ai通過兩種編譯方式,一種是GPU使用CUDA加速,另一種直接使用CPU編譯
# CUDA 支持
AUTOWARE_COMPILE_WITH_CUDA=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
# CPU
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release
編譯報錯解決
- 因為
1.12.0版本很老了,許多opencv的代碼還是用OpenCV2寫的(其實最新的1.14.0也是這樣,還是推薦上autoware.auto吧),造成編譯會報許多錯,下面一步步來解決,
使用CUDA編譯報ndt_gpu錯誤
- 修改
autoware.ai/src/autoware/common/autoware_build_flags/cmake/autoware_build_flags-extras.cmake檔案,將CUDA 10.0改為CUDA 10.2
opencv2/contrib/contrib.hpp:沒有那個檔案,或報錯檔案中有opencv版本判斷的代碼
- 找到報錯檔案的判斷OpenCV版本代碼
#if(CV_MAJOR_VERSION==3)改為#if(CV_MAJOR_VERSION>=3),檢查一下檔案可能有多處判斷
CV_WINDOW_AUTOSIZE ,CV_LOAD_IMAGE_UNCHANGED 沒有被宣告
- 根據報錯找到對應的檔案,加入頭檔案
#include <opencv2/highgui/highgui_c.h>
加入命名空間using namespace cv;將CV_LOAD_IMAGE_UNCHANGED改為IMREAD_UNCHANGED
calibration_publisher 包中cv::Mat::Mat()未定義參考
- 找到包中CMakeLists.txt檔案,在鏈接庫中加入
${OpenCV_LIBS}
CV_LOAD_IMAGE_GRAYSCALE沒有被宣告
- 找到報錯檔案,將
CV_LOAD_IMAGE_GRAYSCALE改為IMREAD_GRAYSCALE
CV_AA , CV_FILLED沒有被宣告
- 找到報錯檔案,在頭檔案中加入
#include <opencv2/imgproc/imgproc_c.h>
CV_EPNP沒有被宣告
- 將
CV_EPNP改為cv::SOLVEPNP_EPNP
could not convert ‘cv::Scalar_((double)0, (double)255, (double)255, (double)0)’ from ‘cv::Scalar {aka cv::Scalar_}’ to ‘CvScalar’
- 將
CV_RGB(255, 255, 0)改為cvScalar(255, 255, 0)
cv_image->image報錯
- 將
cv_image->image改為cvIplImage(cv_image->image)
ipl_image = final_mat報錯
- 將
ipl_image = final_mat改為ipl_image = cvIplImage(final_mat)
CvMat cvmat = sum_mat;
- 改為
CvMat *cvmat;
for(size_t i=0; i< sum_mat.rows; ++i)
for(size_t j=0; j< sum_mat.cols; ++j){
((double*)(cvmat->data.ptr + i*cvmat->step))[j] = sum_mat.at<double>(i,j);
}
CV_BGR2GHSV沒有被宣告
- 加入頭檔案
#include <opencv2/imgproc/types_c.h>
textOrg = cv::Point(ctx.topLeft.x, ctx.botRight.y + baseline);
- 改為
textOrg.x = ctx.topLeft.x;
textOrg.y = ctx.botRight.y + baseline;
cvGetWindowHandle沒有被宣告
- 加入頭檔案
#include <opencv2/highgui/highgui_c.h>
CV_STORAGE_WRITE, CV_STORAGE_READ,CV_NODE_MAP讀寫xml錯誤
- 這里的本質上是讀寫yaml檔案,源代碼方式已經被淘汰了,需要使用新方法,這里暫時不知道有什么用,可以直接將讀寫代碼注釋掉,我這里稍微改動一下,保證編譯能過,不知道是否正確,后面用到再驗證,
- 將
CV_STORAGE_WRITE改為cv::FileStorage::WRITE - 將
CV_STORAGE_READ改為cv::FileStorage::READ - 將
cv::FileNode topNode(cvfs.fs, NULL)注釋掉,后面的topNode改為cvfs - CV_NODE_MAP需要將寫操作改成
<<的形式,因為它多載了<<
CV_REDUCE_MIN 沒有被宣告
- 將
CV_REDUCE_MIN改為cv::REDUCE_MIN
看到所有包都finished,就說明編譯通過了
測驗
- 跑官方Demo來驗證,具體步驟官方已經寫的很清楚了,下面簡單說一下會遇到的問題,
‘utf8’ codec can’t decode錯誤
- 參考鏈接
- 打開
~/autoware.ai/src/autoware/utilities/runtime_manager/scripts/runtime_manager_dialog.py檔案做如下修改
while not ev.wait(interval):
# s = subprocess.check_output(['sh', '-c', 'env COLUMNS=512 top -b -n 2 -d 0.1']).strip()
s = subprocess.check_output(['sh', '-c', 'env COLUMNS=512 LC_ALL=C top -b -n 2 -d 0.1']).strip()
i = s.rfind('\ntop -') + 1
s = s[i:]
- 在啟動autoware前設定編碼格式
cd ~/autoware.ai
source install/setup.bash
export LC_ALL=en_US.utf8
roslaunch runtime_manager runtime_manager.launch
-
20219/6記錄
-
經過幾天的努力發現還是不行,軟體可以啟動但是無法達到官方演示的效果,要么
tf轉換有問題,要么無法加載map,暫時先放棄,后面有時間再弄,改了
1.12.0和1.14.0的代碼,保證可以運行,但跑官方demo bag效果有問題,感興趣的可以進一步嘗試,如果成功了,歡迎留言賜教,謝謝!https://github.com/LHD2018/autoware.ai-1.12.0
https://github.com/LHD2018/autoware.ai-1.14.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298456.html
標籤:其他
上一篇:影像資料增廣

