文章目录

  • 简介
  • 需要环境
  • 我的环境
  • 安装
    • Docker
    • 修改`Dockerfile_x86`
    • 建立镜像
    • UnrealEngine&Carla Server
      • 部分系统无法添加apt-r
      • UnrealEngine的github repo
      • patchelf
      • 系统版本检查
      • read-only filesystem
  • 致谢

简介

本篇记录了从2021.09-2021.11.21以来, 在复现论文AVFI Fault Injection for Autonomous Vehicles的过程中遇到的所有问题, 以及对应的解决方案.

注意: 本文侧重记录分享所有我踩过的坑, 各位碰到相似问题可以参考, 复现的过程仅简要描述

需要环境

  • Ubuntu18.04
  • UnrealEngine, 推荐版本4.26
  • Carla ServerCarla Client, 作者建议均使用0.8.1版本的, 但是我实测0.8.1版本的Client和0.9.13版本的Server也可以成功运行.
  • AVFI项目代码
  • 其余的一些系统和python依赖

其中, 作者给出的AVFI/Dockerfile_x86可以安装Carla Client 0.8.1和依赖, 因此需要我们手动去安装的只有UnrealEngineCarla Server

我的环境

  • Ubuntu9.3.0-KylinV2
  • UnrealEngine 4.26
  • Carla Server 0.9.13, Carla Client 0.8.1

这里最大的隐患就是这个系统, 虽然麒麟系统底层也是Ubuntu, 但是这个Ubuntu版本太低了, 而且很多apt-repository是不支持麒麟系统的.

安装

Docker

第一步, 安装docker, 具体步骤不再赘述, 请参考其他博客.

唯一需要注意的是, 务必安装Docker 20之后的版本, 更早的版本是不支持--runtime--gpus两个参数的.

修改Dockerfile_x86

安装完毕之后, cd AVFI/进入AVFI的根目录. 先重命名Dockerfile_x86:

mv Dockerfile_x86 Dockerfile

如果你不能"科学上网"的话, 需要在里面做一些修改, 不然有些依赖安装不了. (可以科学上网的话, 请跳过这一步).

使用文本编辑器打开Dockerfile, 在所有pip安装的位置加上-i https://pypi.tuna.tsinghua.edu.cn/simple, 指定使用清华源, 加速下载. 修改完后的部分如下:

建立镜像

用以下的命令建立avfi_carla镜像:

(sudo) docker build -t avfi_carla .

此过程可能比较耗时.

此部分完成后, Carla Client 0.8.1已经成功安装. 但是需要在docker环境下运行.

UnrealEngine&Carla Server

此处作者建议同样使用0.8.1版本的, 但是这个版本太老, 已经找不到这个版本的官方文档. 因此我安装了0.9.13版本的. 也能跑通.

请按照官方文档的描述安装

部分系统无法添加apt-r

这里有些坑记录一下. 在Kylin系统中, 官方的文档中, 以下两行命令是执行不了的

sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" &&

既然连repo都没办法添加, 那么后续的sudo apt update也就不必要了.

幸运的是, 这不影响后续依赖的安装, 官方的文档中, 以下所有依赖都是可以正常安装的

UnrealEngine的github repo

UnrealEngine的github repo不是公开的, 需要在Epic注册账号, 然后和github账号做一个connection, 这一步可能需要重复多次才能成功. 尝试一两次发现还是进不去repo是正常的.

patchelf

按照官方文档进行到Part Two: Build CARLA -> Get Assets的时候, 在运行./Update时可能以下错误

cp: unable to reach /path/to/carla/Build/patchelf-install/bin/patchelf: no such file or directory

这里并不是说patchelf没有安装, 而是被安装在了别的路径, 因此执行以下命令即可解决, 作用是新建一个连接指向patchelf真正被安装的路径.

cd /path/to/carla/Build/patchelf-install
(sudo) mkdir bin
cd bin
(sudo) ln -s patchelf $(whereis patchelf)

系统版本检查

最后在Build Carla -> Compile the Python API client这一步的make PythonAPI时, 会报错(具体信息记不清了), 是PythonClient/setup.py文件里面某一行的一个if判断, 如下

# 原来的
if liinux_distro_lower() in ['ubuntu', 'debian', 'deepin']:# 把这一行注释掉, 修改为
if True:

简单来说就是去掉这个版本检查, 我这里程序能够顺利照常进行.

read-only filesystem

一开始在另一台Ubuntu18.04的机子上跑的时候, 一直报这个错误, 花了两周实在解决不了…

因此才换了上述这台Kylin的…

致谢

感谢这两个月来对这个项目工作提供很大帮助的: 刘老师, 董老师, 陈老师, 李老师, 吴老师和毕老师.

AVFI Carla安装踩坑记录相关推荐

  1. YOLO V5 CPU版本安装踩坑记录

    YOLO V5 CPU版本安装踩坑记录 单纯的记录下yolov5进行检测遇到了点问题的解决方法 安装过程: 准备: 1,下载YOLOv5 github项目:https://github.com/ult ...

  2. nnUNet安装踩坑记录

    nnUNet安装踩坑记录 论文地址:https://arxiv.org/abs/1809.10486 https://github.com/MIC-DKFZ/nnUNet 更新于2020/12/04: ...

  3. pyqt5安装踩坑记录

    pyqt5安装踩坑记录

  4. MATLAB安装踩坑记录

    一.安装 各种公众号有MATLAB各种版本的安装包,我下载的是最新版本MATLAB2022a.关于安装有几个踩坑记录以及选择信息可以分享: 1.license checkout failed Erro ...

  5. protoc-gen-go 安装踩坑记录

    尝试安装protobuf,并生成golang代码.记录一下安装过程中的踩坑. 事后感觉全都是不看提示的错 wwwww. protoc-gen-go 的安装 按照教程,指令如下 go get -u gi ...

  6. Centos7.5 BCM4322无线网卡驱动安装踩坑记录

    弄了黑苹果把T420S的无线网卡换了,发现黑苹果能够用WIFI上网,然后蛋疼的时刻来了,Centos7.5没办法上网了,于是开始折腾无线网卡驱动安装,踩了几个坑,此文作为记录避免以后重装系统需要,以百 ...

  7. Detectron2安装踩坑记录(比较详细版)

    目录 第一章 创建一个detectron2的环境 1.1打开Prompt,然后输入 1.2激活环境 第二章 安装pytorch1.9.0 2.1依据自身环境查看版本 2.2安装pytorch的相关命令 ...

  8. taro安装踩坑记录

    首先这里采用yarn的方式安装taro: yarn global add @tarojs/cli yarn比npm 速度更快. 安装完毕后,使用代码查看是否安装成功: taro -v 结果报错: 't ...

  9. linux配置caffe环境,最全caffe安装踩坑记录(Anaconda,nvidia-docker,linux编译)

    多种方式安装caffe 1.Anaconda安装caffe 2.创建虚拟环境(python2.7) conda create -n caffe python=2.7 anaconda 3.安装caff ...

最新文章

  1. linux 命令行简介
  2. python3高级语法:__slots__属性、property装饰器、上下文管理协议、__new__方法
  3. 【MM模块】 Goods Receipt 收货 3
  4. 锂电池放空后充不进电_锂电池过度放电后充不进电怎么办
  5. Python-crawler-citeulike
  6. 深度学习神经网络:改善与优化的方法
  7. php 实例化模型出错,实例化model出错了
  8. World Wind Java开发之十——AnalyticSurface栅格渲染(转)
  9. 王传福凭啥“抛弃”燃油车?
  10. 从Python调用C / C ++?
  11. for循环的一个复制算法(Java)
  12. python门牌制作
  13. 简谈Java的join()方法(转)
  14. Linux下maven安装
  15. java EE 我的成长感悟
  16. python gps模块_树莓派连接GPS模块
  17. wxMEdit 新增德文翻译
  18. nRF52832-Bluefruit52学习之MicroPython开发(1)-- 简介
  19. eclipse ee 最新版,官网安装教程
  20. 如何获取MindManager免费试用版本

热门文章

  1. *6-2 CCF 2015-03-3 节日
  2. while、dowhile和for循环
  3. JAVA导入Oracle包_将java的jar包导入oracle,通过oracle调用java方法
  4. warframe怒焚者结合目标_warframe哪些地图有结合目标 | 手游网游页游攻略大全
  5. 国标28181:什么是RTP协议与RTCP协议
  6. 使用python清空文件夹
  7. srg2220_华为SRG2200路由器系列配置说明
  8. 中国制冷剂市场供需调研与投资竞争力分析报告2022-2028年
  9. day26-多进程多线程
  10. 局域网内知道Mac地址查询对应IP