apollo ros联合编译进度及问题

2023-05-16

0. 进度:

  • cyber base : 全是头文件,做成INTERFACE 库,cyber::base
  • cyber common:先分开构建,最后合成cyber_common库
  • cyber proto:直接所有cc文件合成一个cyber_proto库
  • common proto:分开编译,最后合成common_proto
  • common util
  • common util color 编译
  • common util eigen_defs 编译
  • common util factory 编译测试
  • common util lru_cache 编译测试
  • common util json 编译测试,有错误通过
  • common util map_util 编译
  • common util future 编译
  • common util message util 编译测试
  • common util perf util 编译测试,涉及静态库问题已解决
  • common util point factory 涉及common math ,先去编译common math
  • common util string util 编译测试,编译common math需要这个包,先编译。
  • common util points downsampler 编译测试
  • comon util util 需要common config的支持,因此先去编译这个。编译测试通过
  • common configs
  • common configs vehicle config helper 编译测试,测试通过,但是gtest core dump,原因不明
  • common math
  • common math uitl 编译测试
  • common math vec2d 编译测试
  • common math geometry 编译测试
  • common math sin table 编译测试
  • common math angle 编译测试
  • common math quaternion 编译测试,这里link的是common proto,没有引用子项
  • common math matrix operations 编译测试,gtest测试全通过,有报错消息,应该是测试的一部分?
  • 其他 ok
  • common status
  • common vehiclestate
  • cyber time
  • cyber time duration 编译/单元测试
  • cyber time time 编译/ 单元测试
  • cyber time rate 编译
  • map
  • map proto
  • map hdmap 编译这些需要relative map navigation proto,编译测试完成
  • map hdmap util
  • map hdmap adapter
  • map hdmap adapter xml parser 需要common status,先去编译common status
  • relative map navigation proto 编译这个需要localization 和perception 的proto
  • pnc map
  • pnc map path中的path_test 需要routing 的proto 先去编译routing poto。pncmap path编译测试通过,测试有error提示
  • pnc map route segment 编译需要common vehicle state,先去编译这个 。编译完成,测试有问题,因为需要特定的地图文件,目前没有仔细调试应该问题不大
  • pnc map库,这个库的编译还需要planning的一些gflags。。。编译完成,测试需要地图数据,未测
  • relative map navigation lane 编译测试通过,注意要调整test过程中的文件路径
  • relative map 剩下的都是需要cyber支持的部分了,
  • routing
  • routing proto 编译
  • routing common 编译
  • routing graph 编译测试通过,有一堆warning
  • routing strategy 编译通过,没有单元测试文件
  • routing core 编译通过,没有单元测试文件
  • routing topo creator ——graph creator 测试通过。整体编译通过
  • tinyxml2
  • localization proto 编译 注意这个包里还有一些其他的没做
  • perception_obstacle_proto 编译
  1. 可以不使用cmake 里 link_directories 和 include_directories, 而是使用target_include_directories 和 target_link_libraries 这样方便对每一个target 进行精细控制

  2. 整体的cmakelist结构可以参照 https://github.com/gokhanettin/cmake-example
    目前我将所有的cmakelist中都放入了“project”关键词,不知道这个会不会对后面有影响

  3. 关于cmake变量影响范围:
    (1)在父级别定义的变量可以在子级别文件中看到。所以将所有的公用变量定义在了顶层
    (2)只要库定义的名字正常,就能在各个级别之间互相引用

  4. protobuf出现的File already exists in database,CHECK failed: generated_database_->Add(encoded_file_descriptor, size)。这个错误,是由于protobuf中存在全局静态的变量,如果引用了两次这个变量,就会产生两个初始化。造成这个错误。
    可以看https://groups.google.com/g/protobuf/c/RZRCnOywdSk/m/s5QvifLCBgAJ?utm_medium=email&utm_source=footer 这个连接里有一些讨论
    在我的情况下是由于common_proto库包含了所有的proto,直接引用产生,把这个改成common_error_proto就会让问题消失,后面再看看会遇到什么问题。

  5. 目前在gtest中还是有core dump的问题。表现是结果全部通过,但是core dump退出。还没有找到解决方案 从后面可以看出可能是:
    (1)环境变量设置需要和apollo对齐

  6. gtest和gmock 中的expect_that函数,存在segmentation fault问题,没有解决

  7. 在运行gtest过程中出现double free detected in tcache 2,然后core dump 的问题。
    在gtest可执行文件的编译过程中,如果去掉gmock,能编译通过,表明没有引用gmock的代码。那么此时运行不会出现segmentfautl 或者coredump的问题
    可能是gmock的版本和引用问题。考虑重新安装新版gtest.
    重新安装过后,依然不行。
    换新版本的过程,遇到DSO错误,提示和pthread相关,在target_link_libraries中添加pthread,注意这里添加的位置也会影响编译结果,不知道为什么。能解决问题,编译用过,运行有问题。没法pass
    如果换回原版本,删除pthread能正常编译,能pass所有test,但是会中间爆出错误,并且最后会segmentation fault,不知道为什么

  8. 在测试cyber time clock的时候,仔细观察打开文件失败等错误,会发现是因为没有在系统中设置cyber路径导致,cyber路径环境变量:export CYBER_PATH=your_path/apollo/cyber设置完之后就可以了

  9. 关于cmake add_custom_command的问题,https://cmake.org/cmake/help/latest/guide/tutorial/Selecting%20Static%20or%20Shared%20Libraries.html。这个官方连接有一些讲解。这个命令应该是可以执行一些shell命令。
    在apollo编译protobuf文件的时候,用到了这个方法添加protoc command
    这个方法也可以用来生成一些源码文件,并把源码文件在后面添加成编译源文件

  10. 关于cmake中INTERFACE PUBLIC PRIVATE关键词的讲解,可以看这个https://leimao.github.io/blog/CMake-Public-Private-Interface/

  11. 在编译common util perf util的过程中,absl link 出错误,说没有办法编译静态库,去absl安装文件发现,编译的都是静态 .a , 所以在这个common_util_perf_util 库的add_library上增加STATIC注释就通过了,但是这导致了这个库和别的类型不太一样,有没有问题需要看看。
    经过测试,在编译abseil库的过程中添加-DCMAKE_

  12. 关于为什么要用target_include_directories(common_math_angle PUBLIC ${common_math_dir}) 这个指令,而不是直接在add_library中添加头文件比如:add_library(common_math_angle angle.cc angle.h)。这样做是为了别人引用的方便,不然引用路径上会有问题

  13. 这个tinyxml2神坑,坑了一上午,之前安装ros之类的时候应该是安了一个版本的tinyxml最后也布吉岛好不好使,现在下了个最新版本的tinyxml2,为了编译它把cmake都换了,也不知道会不会影响后续ros的编译。结果发现只要把tinyxml2的cpp和h 文件放到一个地方直接自己cmake一下就好了,别的库去link它就行,白费了半天时间

  14. map hdmap 这个库的编译比较麻烦,因为它内部的adapter和xml parser没有单元测试代码,所以在这里卡了半天,主要是写cmake list的各种粗心错误。经验是一定要完完全全仔仔细细的按照bazel文件的配置进行编译。编译过程中更新了proj4库,ubuntu18.04本身的库有点老,很多函数没有,更新之后就会少一个link错误。
    还有就是要仔细看编译错误给出的位置,undefined reference错误位置也是对的

  15. 按照Eigen官网推荐的cmakelists配置在ubuntu18.04 下会产生eigen dense no such file or directory问题,直接将所有的Eigen/Dense 替换为eigen3/Eigen/Dense就可以

  16. 并且在包含absl/strings/str_cat.h的时候,同样也会出现no such file or directory 的问题,这个布吉岛是哪的问题,目前解决方案是在顶层cmakelists中添加include_directories(path_to_absl)

  17. 在编译relative map navigation lane lib 的过程中发现,这个bazel写的和我之前理解的又不太一样,感觉缺东西,每每出现undefined reference之后,在根据需求添加相应的link库
    应该是这个lib直接link了cyber库,这样就包含了cyber中的所有lib,但是目前我还没有编译cyber

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

apollo ros联合编译进度及问题 的相关文章

随机推荐

  • JAVA工具篇--3 maven项目转gradle项目

    前言 xff1a 将已有的Maven 项目转换为Gradle 项目 xff1b 1 项目转换 xff1a 1 1 win 43 r 打开cmd命令窗口 然后进入到maven项目根目录后 xff0c 输入命令 gradle init span
  • 解决高度塌陷的几种方法

    引入 进行页面布局时 xff0c 为了能够达到自适应 xff0c 通常高度是不会进行固定设置的 xff0c 而使用float进行元素的浮动后 xff0c 由于没有内容的高度 xff0c 所以会发生父元素的高度塌陷问题 xff0c 为了解决此
  • Docker镜像、容器操作

    文章目录 一 Docker镜像操作1 搜索镜像2 获取镜像3 查看镜像查看下载到本地的所有镜像查看下载的镜像文件信息查看镜像详细信息 4 为本地的镜像添加新的标签5 镜像导出导入到本地导出镜像 xff0c 将镜像保存为本地文件导入镜像 xf
  • Python 爬虫库以及库函数总结&&踩坑

    1 Re库的基本使用 Re库介绍 xff1a Re库是Python的标准库 xff0c 主要用于字符串匹配 调用方式 xff1a import re 正则表达式的表示类型 xff1a raw string类型 xff08 原生字符串类型 x
  • mysql创建超级用户

    在安装MySql后只有一个超级管理权限的用户ROOT xff0c 而且ROOT限制只能在数据库本机上使用 xff0c 如果我们要远程管理MySql咋办呢 xff1f 那么事实上我们需要添加一个具有超级管理权限并且可能远程访问的超级用户 xf
  • 论文笔记:Diffusion-Convolutional Neural Networks (传播-卷积神经网络)

    Diffusion Convolutional Neural Networks xff08 传播 卷积神经网络 xff09 2018 04 09 21 59 02 1 Abstract 我们提出传播 卷积神经网络 xff08 DCNNs x
  • JavaEE——CSS3选择器

    声明 xff1a 本栏目所使用的素材都是凯哥学堂VIP学员所写 xff0c 学员有权匿名 xff0c 对文章有最终解释权 xff1b 凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记 CSS3选择器 选择器中的属性 xff1a 之前介绍过
  • vscode 调试 webpack

    在vscode生成的launch json配置文件 span class token punctuation span span class token string 34 version 34 span span class token
  • CentOS8安装

    文章目录 下载镜像安装CentOS8总结参考文档 下载镜像 国内有很多镜像站都可以下载到阿里镜像站或者网易镜像站等 这里使用的是网易镜像站链接 xff1a http mirrors 163 com centos 安装CentOS8 注意 x
  • prometheus基于文件的服务发现

    prometheus基于文件的服务发现 prometheus配置文件如下 xff1a span class token key atrule global span span class token punctuation span spa
  • MySQL8.0自定义表空间

    文章目录 MySQL8 0自定义表空间语法创建表空间语法修改表空间语法 示例参考文档 MySQL8 0自定义表空间 从MySQL 8 0开始允许用户自定义表空间 xff0c 不同表的表空间可以设置使用不同磁盘 xff0c 可以做到冷热数据的
  • SSH远程Ulimit不生效

    SSH远程Ulimit不生效 问题描述 操作系统 etc security limits conf文件内容如下 xff1a soft memlock unlimited hard memlock unlimited 使用远程连接工具moba
  • 常见加密算法及常见加密算法原理

    加密算法和协议 对称加密 简介 xff1a 加密和解密使用同一个密钥 常见的算法 xff1a DES xff1a Data Encryption Standard 3DES xff1a Triple DES AES xff1a Advanc
  • Zabbix利用SNMP方式监控

    SNMP简介 简单网络管理协议 xff08 SNMP xff0c Simple Network Management Protocol xff09 构成了互联网工程工作小组 xff08 IETF xff0c Internet Enginee
  • Ansible 利用copy模块复制多个文件

    今天写了一个Ansible自动化安装mysql的脚本 xff0c 用copy模块复制多个文件的时候格式总是出错 错误的内容是格式不对 xff0c 语法有问题 最后通过查看文档解决了 中文文档的循环部分的章节 xff1a http www a
  • xtrabackup恢复单表

    在一般生产环境下可能会删表 xff0c 这时候如果基于数据库恢复 xff0c 然后再把那个表恢复过来 xff0c 就比较麻烦 xff0c 这里提供一个基于物理备份直接恢复单表的方法 在innodb引擎设置独立表空间 xff0c 一般表对应的
  • Linux也支持远程桌面,看来是孤陋寡闻了。

    Linux也支持远程桌面 xff0c 看来是孤陋寡闻了 最近在学习树霉派 xff0c 一个超牛比的东西 xff0c 只有信用卡片般大小 xff0c 却是麻雀虽小 xff0c 五脏俱全 xff0c 里面装了Linux系统 xff0c 又不带显
  • MGR基本使用

    第一章 xff1a MGR介绍 MGR MySQL Group Replication 是一个MySQL Server插件 xff0c 可用于创建弹性 xff0c 高可用MySQL集群方案 有一个内置的组成员服务 xff0c 在任何给定的时
  • MySQL5.7安装半同步插件报错,错误码1126

    MySQL5 7安装半同步插件报错 xff0c 错误码1126 mysql gt INSTALL PLUGIN rpl semi sync master SONAME 39 semisync master so 39 ERROR 1126
  • apollo ros联合编译进度及问题

    0 进度 xff1a cyber base 全是头文件 xff0c 做成INTERFACE 库 xff0c cyber base cyber common xff1a 先分开构建 xff0c 最后合成cyber common库 cyber