首页 > 系统相关 >Linux下eCal测试计划及进度记录

Linux下eCal测试计划及进度记录

时间:2024-09-18 10:23:32浏览次数:7  
标签:测试计划 git cmake ecal eCal dev cd Linux commit

完整的源代码包:

# 安装依赖
sudo apt-get install git cmake doxygen graphviz build-essential zlib1g-dev
sudo apt-get install libhdf5-dev libprotobuf-dev libprotoc-dev protobuf-compiler 
sudo apt-get install libcurl4-openssl-dev libqwt-qt5-dev libyaml-cpp-dev

# 解压
tar -xzf dros_ecal_all_no_git.tar.gz

# 编译
# Ubuntu16.04上需要升级cmake,到3.16.0及以上版本
cd dros_ecal_all_no_git
mkdir build
cmake ..
make -j4
 

下面是完整源码下载及安装步骤:ecal5.12.0

git clone https://github.com/eclipse-ecal/ecal.git
cd ecal
git checkout v5.12.0
git submodule init

# 这一步耗时会有点长,有些可能需要多次尝试才成功
# 若一直不成功,可以跳过,等cmake报错时根据报错的提示手动处理,见下文cmake报错的处理
git submodule update

# 如果出现qtbase5-dev依赖报错,可以不安装qtbase5-dev
sudo apt-get install git cmake doxygen graphviz build-essential zlib1g-dev qtbase5-dev
sudo apt-get install libhdf5-dev libprotobuf-dev libprotoc-dev protobuf-compiler 
sudo apt-get install libcurl4-openssl-dev libqwt-qt5-dev libyaml-cpp-dev

# 进CMakeLists.txt
# 63行下增加一行,内容: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
# 72行, HAS_QT5选项改为OFF
# 76行, HAS_FTXUI选项改为OFF, 这个依赖C++17,Ubuntu16.04上编不过
# 115行, ECAL_THIRDPARTY_BUILD_PROTOBUF选项改为ON

# Ubuntu16.04上需要升级cmake,到3.16.0及以上版本

# protobuf 切换到3.14.0版本
cd thirdparty/protobuf
git checkout v3.14.0
cd ../..

# asio 切换到1.12.1版本
cd thirdparty/asio
git checkout asio-1-12-1
cd ../..
mkdir build
cd build
cmake .. 
make -j4

# cmake报错缺少的thirdparty中的模块
# 直接进thirdparty,先删除对应模块的文件夹,然后从github上手动clone对应的工程代码

# demo 测试
# 打开一个终端
cd ecal/build/bin
./ecal_sample_person_snd

# 打开另一个终端
cd ecal/build/bin
./ecal_sample_person_rec
 
 

附:ecal5.12.0 thirdparty各工程原依赖版本

# ecal-5.12.0 thirdparty各工程默认依赖版本

# asio: v1.24.0,            commit-147f722
# curl: v7.81.0,            commit-801bd51
# finetftp-server:          commit-9ff999d
# ftxui: v4.0.0,            commit-d301fab
# googletest: v1.11.0,      commit-e2239ee
# hdf5:                     commit-eaebce0
# libssh2:                  commit-159d4c8
# protobuf: v3.11.4         commit-d0bfd52
# recycle:                  commit-c542570
# simpleini: v4.19          commit-9b3ed7e
# spdlog: v1.11.0           commit-ad0e89c
# tclap: v1.2.4             commit-349170a
# tcp_pubsub: v1.0.2        commit-f59da78
# termcolor:                commit-b3cb0f3
# tinyxml2: v9.0.0          commit-1dee28e                 
# udpcap:                   commit-07bede4
# yaml-cpp:                 commit-c73ee34
# zlib: v1.2.11             commit-cacf7f1

 

自带工具使用笔记:

工具在dros/thirdparty/ecal/bin/文件夹下

ecal_mon_cli:

# 显示所有的topic
./ecal_mon_cli -l
# 对某个string_msg 发布消息
./ecal_mon_cli -m "msg" -p topic_name
# 显示某个topic的占用带宽
./ecal_mon_cli -b topic_name

ecal_rec:

# 采集数据,-r duration 表示采集时长为 duration秒,-d rec_dir 指定数据保存目录
# 会自动在rec_dir下新建以时间戳开头的文件夹,保存数据
./ecal_rec -r duration(sec) -d rec_dir

# 黑名单选项, list格式用逗号分隔, eg: "Topic1,Topic2"
--blacklist <list>
# 白名单选项, list格式用逗号分隔, eg: "Topic1,Topic2"
--whitelist <list>

一些细节点:

  • Subscriber初始化线程不安全,多线程并行初始化Subscriber会崩溃,貌似和初始化时一些全局变量有关
    • 复现方式:
      • 主线程中在没有初始化任何Subscriber的情况下,连续启动多个子线程,每个子线程一进入就进行各自的Subscriber初始化,会在第二个子线程的Subscriber初始化里头挂掉,如下图
  • 避免方式:
    • 在开启任何子线程之前,先在主线程初始化一个Subscriber
    • 或者,在第一个子线程开启后sleep数百毫秒
  • protobuf::message 不能循环修改和发送,否则会有内存泄漏
    • 复现方式:
    • protobuf_publisher pub;
      lidar_scan_message msg;
      Loop:
          add a point to msg;
          pub.Send(msg);
  • 避免方式:
  • protobuf_publisher pub;
    Loop:
        lidar_scan_message msg;
        add points to msg;
        pub.Send(msg);


标签:测试计划,git,cmake,ecal,eCal,dev,cd,Linux,commit
From: https://www.cnblogs.com/xcywt/p/18413954

相关文章

  • 初学者学好linux的方法二
    Linux操作系统启动流程:初学者对Linux操作系统启动流程的理解,能有助于后期在企业中更好的维护Linux服务器,能快速定位系统问题,进而解决问题。Linux操作系统启动流程如图3-4所示:图3-4系统启动流程(1) 加载BIOS计算机电源加电质检,首先加载基本输入输出系统(BasicInputOutputSystem,BIO......
  • Linux内核中cpu_capacity是什么?
    cpu_capacity在Linux内核中,cpu_capacity是用于表示每个CPU的处理能力的一个参数,通常用于调度器的负载均衡。它表明不同的CPU核心在计算资源分配中的相对性能,尤其在异构多核架构(如ARM的big.LITTLE架构)中,不同的核心可能具有不同的计算能力。主要概念同构和异构架构:在同构架......
  • CSP初赛知识点:Linux 系统
    CSP初赛知识点:Linux系统前言近年CSP初赛几乎前5道选择题都有一两道有关Linux系统的使用,所以作为备战CSP-J/S2024的资料,整理下来啦。祝各位今年所有考试都能考出自己满意的成绩!1、常用文件操作命令以下设文件名均为csp,需要复制或修改成的文件名均为rp。功能......
  • Linux基础3-基础工具4(git,冯诺依曼计算机体系结构)
    上篇文章:Linux基础3-基础工具3(make,makefile,gdb详解)-CSDN博客本章重点:1.git简易使用2.冯诺依曼计算机体系结构介绍一.git使用 1.1什么是git?    git是用于管理代码版本的一种工具,我们在如GitHub,Gitee中创立自己的仓库后。        我们在本地使......
  • linux驱动开发-内核并发 poll 和 lock
    内核并发poll加lock执行流程用户空间进程调用write将数据写入设备:执行char_write,更新event_triggered并唤醒等待的进程。有进程因此等待:正在执行的char_read会检查event_triggered,如果为0,执行等待。数据可用时:事件被触发(event_triggered被设为1),之前因等待而被......
  • linux驱动开发-内核异步通知
    驱动/内核异步通知在Linux驱动程序中,异步通知机制允许内核模块在特定事件发生时主动通知用户空间进程。这样的设计通常用于管理输入输出操作,确保用户程序可以及时获得数据或状态变化而无需频繁查询设备状态。在Linux驱动中,常见的异步通知机制主要有以下几种:信号(Sign......
  • linux用户管理基本命令
    目录禁止非root用户连接配置文件/etc/group/etc/gshadow/etc/passwd/etc/shadow用户组管理groupaddgroupmodgroupdel用户管理useraddusermoduserdelpasswd主要组和附属组gpasswdnewgrpsuidgroups禁止非root用户连接在etc目录下创建nologin的空文件即可touch/etc/nologin配置......
  • 【Linux 20】线程控制
    文章目录......
  • Linux基础命令
    一、嵌入式、Linux背景嵌入式:硬件与软件相结合定制、为硬件设计相关代码来进行操作,代码测试,烧进板子,通过语音、图像、按钮等操作方式来调用。操作系统种类:DosWindowsUnixMacChmod osAndroid->华为、小米、中兴等等iOS介绍一下Linux:结构:一棵倒置的树/bin   ......
  • Linux系统与服务构建运维
    使用ext4文件系统格式化逻辑卷mylv。命令如下:一、Linux操作系统安装1.学习目标(1)了解服务器操作系统安装。(2)了解CentOS系统的安装。2.节点规划IP主机名节点192.168.200.10localhostLinux服务器节点3.基础准备使用本地PC环境的VMWareWorkstation软件进行实......