C++[29]

可变参数模板和折叠表达式的工程示例

多传感器融合算法往往都需要一个时间同步算法,时间同步算法的输入一般是多个带时间戳的传感器数据。 使用C++不久的人,往往会给这多个传感器的类分别创建实例,在处理的时候再根据传感器数量进行遍历。这样写没有问题,就是不够优雅。 学习可变参数模板和折叠表达式需要先对C++中的Template有一定了解。模

IMU的数据

我一个做感知的威森莫要用IMU... 昨天想获取Unitree GO2的IMU数据,跑官方SDK的时候,忘记修改底层代码,导致发送了一些控制命令,狗突然就动了起来,差点把狗搞坏,险些让我“曾经有一份工作”,至今心有余悸。 GITHUB上似乎没有现成的获取GO2 IMU数据的代码,自己采集成功之后开源

C++模板

C++是一门强类型语言,编写一个通用函数,能把任意类型的变量传进去处理,通过把通用逻辑设计为模板来摆脱类型限制 C++中的模板语法,实际上是在为C++提供泛型(Generic Programming)的机制。 最常见的泛型应用在STL的容器中。 类模板 Class Templates用于生成类。 没

C++11及其之后的新特性(简单介绍)

C++11 自动类型推导 auto需要注意的是: 必须在定义时初始化auto类型的变量 auto类型不能定义数组 一旦初始初始化,就不可更改类型 auto x = 5; auto y = 3.14; auto a; // 错误 auto array[10]; //错误 auto a = 10;

ROS1的launch文件

之前一直是 rosrun方式启动ros节点的, 一是因为懒, 二是因为我只负责一个节点, 用不到launch方式. 这次遇到了不能保存ROS日志的bug, 换成launch方式启动就能成功保存日志了... Launch文件 ROS中 .launch 文件可以同时启动多个 node, 包括 rosco

C++ STL容器的底层原理

C++ STL 容器是使用频率超高的基础设施,只有了解各个容器的底层原理,才能得心应手地用好不同的容器,做到用最合适的容器干最合适的事情[1]。看了文章[1],可惜其中对容器方法的底层几乎没有提及,那就自己边查边写吧。本文大部分内容来自cplusplus.com/reference/ 。 C++ S

ROS不使用自带OpenCV以及替换cv_bridge

系统:Ubuntu20.04 平台:Jetson Orin NX ROS:ROS2 Foxy OpenCV:4.5.4 with CUDA 问题源自编译时警告: /usr/bin/ld: warning: libopencv_imgcodecs.so.4.2, needed by /opt/ros/

ROS2的消息发布和订阅&图像发布和订阅

ROS2的编译 colcon 是 ROS2 编译的工具。ROS2 的工作空间与 ROS1 保持一样的目录结构: <workspace> ├── build # 编译时自动生成,包含编译的中间文件 ├── install # 编译时自动生成,包含编译的结果:可执行文件,库文件,

道路目标流量统计算法

实现流量统计算法有两个前提: 能够实现目标检测,最基本的前提,必须能够识别到视频帧中的车辆和行人。 能够进行目标跟踪,在检测的基础上,为目标分配一个唯一的ID。流量计数依赖于目标的唯一ID。 目标检测算法以YOLO系列为例。 跟踪算法以ByteTrack跟踪结果为例。将检测结果objects作为By

我还在学CUDA编程(四)——内存管理及访问模式

内存管理 内存分配和释放 CUDA编程模型存在HOST和DEVICE两个异构系统,每个异构系统都有独立的内存空间。 在HOST上,可以使用下面语句分配全局内存: cudaError_t cudaMalloc(void ** devPtr,size_t count) 要注意的是第一个参数,是指针的指针