- 博客(9)
- 收藏
- 关注
原创 makefile知识回顾
1. "=" 赋值不一定是前面定义好的,也可能是后面定义的值2. ":=" 赋值不会使用后面定义的变量,只能使用前面已经定义好的3. "?=" 如果前面已经没有赋值,就是当前的,如果没有赋值,就是前面赋值4. "+=" 追加字符$@ 规则中的目标集合 $@ 表示匹配式中定义的目标集合$< 依赖文件集合中的第一个文件,如果依赖文件是以模式(即“%”)定义的,那么“$<”就是符合模式的一系列的文件集合$^ 所有依赖文件的集合,使用空格分开,如果在依赖文件中有多个重复的文件,
2025-06-19 14:21:48
357
原创 C++ 结构化绑定
C++17 引入,结构化绑定允许用户将一个聚合类型(如数组、结构体、std::pair、std::tuple 等)中的多个元素一次性解包到多个变量中。expression 应该是一个可以分解为多个成员的对象(如结构体、元组等)没有私有或受保护的(private/protected)非静态数据成员。var1, var2, ... 是从对象中提取出的各个字段的名称。不支持类内部有私有成员的结构体,必须是聚合类型。不支持非静态数据成员的类;没有用户定义的构造函数。
2025-06-17 21:25:37
295
原创 ROS2 与ROS1 的异同
DDS(Data Distribution Service for Real-time Systems) 是一种用于设备间高效、可靠地交换数据的通信标准,广泛应用于航空航天、国防、汽车、医疗等对实时性要求较高的领域。ROS2 是ROS1的传承与升级版本,借鉴了ROS的许多设计和实现,核心概念并没有变化,并加以改进和扩展,实时性、嵌入式系统等。ROS2 抽象了DDS的复杂性,通过其 核心库rcl(ROS Client Library)封装了DDS的交互逻辑,ROS2 去中心化的,分布式的系统架构。
2025-06-17 20:57:48
288
原创 正点原子[第二期] Linux 之RAM 裸机篇 第七讲
设备接通电源或者复位后,硬件的复位逻辑会让ARM处理器从固定的地址开始执行,这个地址通常位于芯片内部的启动ROM中。启动ROM代码运行,通过读取寄存器和配置引脚的状态去决定系统从哪里加载后续的程序。
2025-06-14 22:21:53
245
原创 自己导出的 target 是否也会像 ROS 2 官方包一样,自动传递依赖?
是否会被安装配置文件识别 ❌ 否 ✅ 是(配合 ament_export_dependencies())是否暴露依赖给用户 ❌ 否(默认 PRIVATE) ✅ 是(通过 PUBLIC)
2025-06-12 21:51:37
201
原创 CMake与ROS2构建系统如何管理依赖关系
如果 Eigen3 本身又依赖了其他库(比如 Threads 或 Boost),而这些依赖也被正确地通过 ament_export_dependencies() 导出了,那么你只需要写 ament_target_dependencies(my_target Eigen3),就能间接链接这些依赖。静态库 (.a) 不包含依赖,对象文件的集合。动态库(.so) 运行时链接依赖,但不打包依赖。使用的非ROS2功能包 (如普通第三方库)自定义库并希望别人方便使用。
2025-06-12 21:35:05
610
原创 ament_cmake简介与使用教程
用于简化目标(可执行文件或库)的依赖管理,它不仅会处理链接库的问题,还会自动为你的目标添加必要的包含目录(即头文件路径),这样你就不需要手动调用 target_include_directories()ROS2用于构建C++包的标准构建系统接口,简化包之间的依赖管理,自动导出配置文件、支持测试、安装等功能。处理传递性依赖:如果某个依赖项自身也有依赖项,那么这些间接依赖也会被正确处理。设置包含目录:自动将所有依赖项的头文件路径添加到你的目标中。链接库:自动链接所有依赖项的库到你的目标上。
2025-06-10 11:09:54
627
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1