C++[26]
可变参数模板和折叠表达式的工程示例
多传感器融合算法往往都需要一个时间同步算法,时间同步算法的输入一般是多个带时间戳的传感器数据。 使用 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 = 1
ROS1的launch文件
之前一直是 rosrun 方式启动ros节点的, 一是因为懒, 二是因为我只负责一个节点, 用不到 launch 方式. 这次遇到了不能保存 ROS 日志的 bug, 换成 launch 方式启动就能成功保存日志了... Launch文件 ROS中 .launch 文件可以同时启动多个 node,
C++ STL容器的底层原理
C++ STL 容器是使用频率超高的基础设施,只有了解各个容器的底层原理,才能得心应手地用好不同的容器,做到用最合适的容器干最合适的事情 [1]。 看了文章 [1] 开头,以为必有高论,然而对容器方法的底层几乎没有提及,那就自己边查边写吧。本文大部分内容来自 cplusplus.com/refere
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/r
ROS2的消息发布和订阅&图像发布和订阅
ROS2 的编译 colcon 是 ROS2 的编译工具。ROS2 的工作空间与 ROS1 基本保持相同的目录结构: <workspace>
├── build # 编译时自动生成,包含编译中间文件
├── install # 编译时自动生成,包含编译结果:可执行文件、库文件
道路目标流量统计算法
实现流量统计算法有两个前提: 能够实现目标检测,最基本的前提,必须能够识别到视频帧中的车辆和行人。 能够进行目标跟踪,在检测的基础上,为目标分配一个唯一的ID。流量计数依赖于目标的唯一ID。 目标检测算法以YOLO系列为例。 跟踪算法以 ByteTrack 跟踪结果为例。将检测结果的 objects
我还在学CUDA编程(四)——内存管理及访问模式
内存管理 内存分配和释放 CUDA 编程模型中存在 Host 和 Device 两个异构系统,每个系统都有相对独立的内存空间。 在 Host 代码中,可以使用下面的函数分配 Device 全局内存: cudaError_t cudaMalloc(void **devPtr, size_t count