Ubuntu18.04安装autoware.ai

前言

Autoware.AI是世界上第一个用于自动驾驶技术的“All-in-One”开源软件,关于它的介绍就不再赘述了,感兴趣的可以去看一下知乎文章,这里主要说明一下autoware.ai的安装配置。之前在Ubuntu16.04上装过autoware,但现在开发环境已经迁到18.04了,所以重新安装一下,特此记录。顺便一提,autoware.ai已经很久没维护了,毕竟已经推出了autoware.auto,它是基于ROS2的,由此可见ROS2和autoware.auto将会是趋势,后面有机会再介绍。

准备工作

  • 官网推荐配置,这里我们安装1.14.0版本
    Ubuntu18.04安装autoware.ai_第1张图片

Ubuntu18.04安装autoware.ai_第2张图片

默认你已经装好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
    加入命名空间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

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(i,j);
}

CV_BGR2GHSV没有被声明

  • 加入头文件#include

textOrg = cv::Point(ctx.topLeft.x, ctx.botRight.y + baseline);

  • 改为
textOrg.x = ctx.topLeft.x;
textOrg.y = ctx.botRight.y + baseline;

cvGetWindowHandle没有被声明

  • 加入头文件#include

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.01.14.0的代码,保证可以运行,但跑官方demo bag效果有问题,感兴趣的可以进一步尝试,如果成功了,欢迎留言赐教,谢谢!

    https://github.com/LHD2018/autoware.ai-1.12.0

    https://github.com/LHD2018/autoware.ai-1.14.0

你可能感兴趣的:(ROS实战,自动驾驶,opencv)