Ubuntu18.04安装autoware.ai

2023-05-16

前言

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18.04安装autoware.ai 的相关文章

随机推荐

  • 12.优先级队列和惰性队列

    优先级队列 如何添加优先级 选择Maximum priority xff0c 指定优先级的数值 xff0c 设定范围为0 255 xff0c 如果值为10 xff0c 那么就是0 10 xff0c 最大不能超过255 代码形式 span c
  • 13.rabbitmq集群搭建

    rabbitmq集群搭建和镜像队列 集群搭建 准备三台服务器 172 16 140 133 Jan172 16 140 132 Feb172 16 140 133 Mar 修改3台机器的hosts文件 span class token fu
  • 14.haproxy+keepalived负载均衡和高可用

    haproxy 43 keepalived负载均衡和高可用 概述 多个rabbitmq服务形成集群 xff0c 由haproxy来做负载均衡 xff0c haproxy会暴露出来一个端口 xff0c 客户端可以通过haproxy所在的服务器
  • 15.federation

    federation和shovel federation exchange 问题的由来 xff1a 城市A有rabbitmqA xff0c 城市B有rabbitmqB xff0c 当城市B的应用要发消息到exchangeA的时候 xff0c
  • vue瀑布流插件vue-waterfall-easy 2.x

    不知道大家都是怎么用瀑布流的 xff0c 一开始尝试用flex布局失败 xff0c 后面找到了这个组件 xff0c 还是挺好用的 xff0c 记录一下 首先是用npm安装npm install vue waterfall easy save
  • 1.JUL

    JUL JUL全称Java util Logging是java原生的日志框架 xff0c 使用时不需要另外引用第三方类库 xff0c 相对其他日志框架使用方便 xff0c 学习简单 xff0c 能够在小型应用中灵活使用 架构介绍 Logge
  • Log4j2

    Log4j2 目前市面上最主流的日志门面就是SLF4J xff0c 虽然Log4j2也是日志门面 xff0c 因为它的日志实现功能非常强 大 xff0c 性能优越 所以大家一般还是将Log4j2看作是日志的实现 xff0c Slf4j 43
  • LOG4J

    LOG4J Log4j是Apache下的一款开源的日志框架 xff0c 通过在项目中使用 Log4J xff0c 我们可以控制日志信息输出到控 制台 文件 甚至是数据库中 我们可以控制每一条日志的输出格式 xff0c 通过定义日志的输出级别
  • Slf4j(门面)

    Slf4j 简单日志门面 Simple Logging Facade For Java SLF4J主要是为了给Java日志访问提供一套标准 规范 的API框架 xff0c 其主要意义在于提供接口 xff0c 具体的实现可以交由其他日志框架
  • Logback

    Logback Logback是由log4j创始人设计的另一个开源日志组件 xff0c 性能比log4j要好 官方网站 https logback qos ch index html Logback主要分为三个模块 logback core
  • 嵌入式-C语言常见面试/笔试题

    1 关键字类型题 常见的关键字有 sizeof static const volatile 1 sizeof xff1a 通常与strlen做比较不同 例1 xff1a char str 61 Hello char p 61 str int
  • node.js的http模块输出request参数

    xff08 只作为本人自己记录所用 xff0c 参考需谨慎 xff09 ServerResponse 服务响应 domain null 域名 events finish Function resOnFinish 项目 eventsCount
  • ATI F/T Gamma sensor( 力和力矩传感器 ) 开箱测评 + 使用说明

    型号和序列号等参数如下 xff1a Description Six Axis Force Torque Sensor Manufacturer ATI Industrial Automation Serial Number FT29352
  • 阿克曼转向原理解析

    汽车的转向过程就是阿克曼转向 其也是移动机器人的一种运动模式之一 阿克曼基本原理 xff1a 汽车在行驶过程中 xff08 直线和转弯时候 xff09 xff0c 每个车轮的运动估计必须符合他的自然运动轨迹 xff0c 从而保证轮胎与地面始
  • 通过ROS控制真实机械臂(18) --- 构建 octocmap 用于碰撞检测和避障

    师兄和同门在做SLAM的时候 xff0c 经常会用到的 octomap xff0c 也就是八叉树地图 octomap相比于点云地图来说大大减小了地图的存储空间 既然octomap可以用于导航和避障 xff0c 那么自然也可以导入moveit
  • 【实用版】卡尔曼滤波及其扩展方法的区别与定位系统中的应用

    卡尔曼滤波及其扩展方法的区别与定位系统中的应用 卡尔曼滤波卡尔曼滤波的扩展EKFSPKFEnKF 定位系统中的应用 源自于学校课题 xff0c 主要用卡尔曼滤波KF及其扩展方法 xff08 包括扩展卡尔曼滤波EKF Sigma点卡尔曼滤波S
  • CP2102 USB to UART Bridge Controller 驱动安装(windows or Ubuntu)

    CP2102是一款USB转TTL电平的USB转串口芯片 xff0c 使用时发现诸多小网站上的驱动不是病毒就是安装后无效 xff0c 经同事推荐去官网下载后成功连接 官网地址 xff1a https www silabs com produc
  • 解决罗技GHUB 安装 一直初始化 下载不了问题

    罗技的GHUB在安装时一直处于初始化状态 xff0c 可以通过修改时间解决 原地址 罗技 GHub 解决初始化无法安装教程 侵删
  • 基于Cartographer的建图与导航

    一 RoboSense 16线雷达驱动安装 2 二 Cartographer的安装 2 三 配置文件结构说明 4 四 配置文件详解 4 2D lua文件的配置 5 2D launch文件的配置 6 2D pure location lua文
  • Ubuntu18.04安装autoware.ai

    前言 Autoware AI是世界上第一个用于自动驾驶技术的 All in One 开源软件 xff0c 关于它的介绍就不再赘述了 xff0c 感兴趣的可以去看一下知乎文章 xff0c 这里主要说明一下autoware ai的安装配置 之前