- 博客(333)
- 收藏
- 关注
原创 cyberdog_bringup 主launch.py文件的生成与调用机制
自动生成机制:通过CMake脚本在编译时根据YAML配置文件自动生成各级launch.py文件唯一主文件:根据README.md中的说明,系统确保存在唯一的主launch.py文件负责启动所有节点预处理功能:通过manual.py中的preprocessing()函数处理特殊命令行参数进程管理:支持重启模式,可以在启动前关闭同名的历史进程命名空间隔离:基于主机名和MAC地址生成唯一命名空间,确保多实例运行时的隔离性通过这种设计,系统实现了对机器人各节点的统一管理、灵活配置和可靠启动。
2025-10-10 12:56:58
324
原创 RAID 全面普及与深度解析
RAID(Redundant Array of Independent Disks,独立磁盘冗余阵列)是通过硬件或软件技术提升性能:多盘并行读写,突破单盘 IO 上限;数据冗余:通过校验或镜像,避免单盘/多盘故障导致数据丢失;扩展容量:逻辑磁盘容量 = 多块物理盘容量总和(扣除冗余占用部分)。⚠️ 关键误区:RAID 不是“备份”——RAID 解决的是“磁盘故障”问题,无法应对误删除、病毒、天灾等,需搭配备份工具(如 Veeam、rsync)使用。入门阶段。
2025-10-10 09:40:34
1103
原创 C++ 插件机制详解
首先定义主程序与插件都需遵守的接口(通常放在独立的头文件中,供双方包含)。接口需包含插件的核心功能和生命周期管理方法。// plugin_interface.h(主程序和插件都需包含)// 抽象基类:日志插件接口public:// 纯虚函数:核心功能(输出日志)// 纯虚函数:销毁插件实例(避免主程序直接delete导致的析构问题)protected:// 保护析构:禁止主程序直接删除实例,必须通过destroy()C++插件机制通过动态链接库和接口抽象。
2025-09-30 10:10:57
929
原创 Bazel target-syntax解析
Bazel 8.4.1的目标模式语法(Target pattern syntax)是指定构建/测试目标的核心规则,其基础是BUILD文件标签语法,可实现“单个目标”到“一组目标”的灵活指定,支持绝对路径、相对路径、通配符、减法筛选等能力,最终目的是精准控制Bazel的构建/测试范围。
2025-09-30 08:38:34
1021
原创 Bazel 8.4.1 Startup Options解析
Bazel 8.4.1的启动选项位置约束:所有启动选项必须放在bazel命令的左侧(如“bazel --output_base=/tmp/foo build //base”)。格式约束:选项名称与对应值之间不允许有空格(正确:–host_jvm_args=-Xmx1400m;错误:–host_jvm_args = -Xmx1400m)。优先级规则:命令行中显式设置的启动选项,优先级高于所有bazelrc配置文件(包括工作区、用户家目录、系统级bazelrc)。
2025-09-30 08:38:07
804
原创 嵌入式软件分层方案设计
这套完整方案包括了系统的架构设计和具体的实施计划。架构设计明确了各层的职责和模块组成,实施计划则提供了短期、中期和长期的具体任务,确保架构调整能够有序进行。通过这些优化,系统将变得更加模块化、可维护和可扩展,能够更好地支持业务需求的变化和系统的持续演进。
2025-09-30 08:37:36
1051
原创 md文件跳转方式有哪些
在 Markdown(.md 文件)中,跳转功能主要通过实现,核心是利用的基础格式,根据跳转目标的不同(外部网页、同一文件内锚点、其他 .md 文件),衍生出多种具体方式。
2025-09-30 08:36:20
781
原创 gtest中的gmock作用
GMock 是 gtest 的“搭档”,它通过模拟对象解决了单元测试中“依赖难以控制”的核心问题,让测试更聚焦于目标代码的逻辑验证,同时提供了灵活的方式预设行为和验证交互,是 C++ 单元测试中处理复杂依赖的重要工具。
2025-09-16 10:23:19
531
原创 Bazel help命令解析
版本标识:文档基于版本,是该版本Bazel工具的核心帮助入口。核心用法:明确Bazel命令的通用格式为,其中<command>为具体操作指令,<options>为该命令的附加配置参数。bazel sync(文档明确其功能为“Syncs all repositories specified in the workspace file”);拉取外部仓库到本地指定文件夹的方案:使用命令,并通过参数指定目标文件夹(文档说明vendor。
2025-09-13 11:35:45
868
原创 bazel build命令
版本:文档基于版本,聚焦命令的使用与配置。核心功能:通过指定<options>(选项)和<targets>(目标),构建用户指定的项目目标,目标语法细节可通过查询。选项查看方式--short。
2025-09-13 11:24:46
983
原创 Bazel 8.4.1 的“bazel clean“命令
Bazel 8.4.1 的命令用于删除 Bazel 生成的输出(如目标文件)和元数据,核心功能通过选项扩展:--expunge(或-x)是最彻底的清理选项,会删除整个工作树并停止服务器;可单独清理远程依赖缓存(默认路径需参考说明);--async支持异步执行清理以避免阻塞终端。命令还包含大量细分选项,涵盖构建执行控制(如--jobs控制并行任务数,默认“auto”)、工具链配置(如--compiler指定编译器)、输出控制、测试环境配置、远程缓存执行等场景,可根据需求灵活组合使用,部分选项(如。
2025-09-13 10:57:27
752
原创 std::promise
是线程间通信的“结果生产者”,与配合,提供了灵活的异步结果传递机制。它的核心价值在于:允许开发者在一个线程中“承诺”结果,在另一个线程中“获取”结果,同时通过共享状态保证线程安全。使用时需注意结果设置、生命周期和线程安全等问题。
2025-09-12 09:27:24
974
原创 std::promise常见的使用错误
的错误多源于对其“共享状态管理”和“生命周期”的疏忽。每个promise仅能生成一个future;必须且只能设置一次结果(值或异常);确保promise在设置结果前存活,且不被多线程并发修改;正确处理移动语义和引用类型的生命周期。遵循这些原则可有效避免大多数使用错误。
2025-09-12 09:26:57
740
原创 Colcon 高级应用
Colcon 支持通过配置文件或命令行参数,自定义 CMake 变量、编译选项、安装规则等,适配特殊场景(如 Debug 模式、交叉编译、自定义依赖路径)。colcon.pkgColcon 采用插件化架构,可通过安装第三方插件或自定义命令,扩展其功能(如打包、代码格式化、文档生成等)。若现有命令无法满足需求(如自定义代码检查、自动生成文档),可通过 Python 编写 Colcon 插件扩展命令。创建 Python 包,结构如下:colcon-my-command/
2025-09-12 09:26:33
1100
原创 C++ 钻石继承问题
在C++中,是多重继承中一种特殊的菱形结构问题,其核心是一个派生类通过两条不同路径继承自同一个间接基类,从而引发一系列问题。
2025-09-12 09:26:10
416
原创 GDB调试C++ 虚函数列表
命令作用x/nxg 地址以十六进制打印 n 个8字节指针(适合看虚表)info symbol 地址将内存地址映射到函数名p *对象指针查看对象内存布局(含 vptr 和成员变量)让 GDB 显示对象的实际类型(而非声明类型)call 函数调用函数并执行(如。
2025-09-12 09:25:50
627
原创 linux下CMake工程构建
通过以上流程,可在Linux环境下高效实现CMake外部构建,保持源码目录整洁的同时,充分利用Linux的编译工具链特性。安装时若提示“Permission denied”,前缀加。原因:源文件未被正确包含或链接库缺失。命令返回CPU核心数)。Linux终端下可通过。自动适配CPU核心数(之后可直接在终端输入。
2025-09-12 09:25:29
446
原创 左值、右值和左值引用、右值引用
概念本质绑定规则(核心)典型用途左值有名称、可寻址的表达式可被左值引用()或const左值引用绑定存储持久数据(变量、对象)右值临时、不可寻址的表达式可被右值引用(&&)或const左值引用绑定临时结果、字面量左值引用(左值的别名只能绑定左值(非 const 版本)避免拷贝、修改原对象右值引用(&&右值的别名只能绑定右值(或被std::move转换的左值)实现移动语义、延长右值生命周期左值用左值引用绑定,右值用右值引用绑定const左值引用是“万能接口”。
2025-09-12 09:25:07
440
原创 ROS2 节点间的通信
通信方式模式适用场景关键特性话题发布-订阅(异步)持续数据传输(如传感器数据)多对多、单向、无反馈服务请求-响应(同步)即时反馈的短任务(如查询)一对一、双向、阻塞等待动作目标-反馈-结果长时间任务(如导航)可取消、实时反馈、异步处理参数键值对配置节点配置与动态调整可查询/修改、支持回调根据具体需求选择合适的通信方式,是ROS2节点协作的关键。
2025-09-12 09:24:49
1053
原创 ROS2驱动开发
优先使用标准接口:ROS2已定义大量通用消息类型(如),避免重复造轮子。例:里程计数据用,图像数据用。自定义接口:若硬件数据无对应标准消息,需创建自定义msg(数据传输)、srv(控制指令)或action(复杂任务)。示例:自定义超声波传感器消息(std_msgs/Header header # 时间戳和坐标系float32 distance # 距离(单位:米)bool is_valid # 数据是否有效。
2025-09-12 09:24:28
1189
原创 CyberDog模块硬件连接
CyberDog(以小米开源四足机器人为例)的硬件模块连接遵循“主控制器为核心,分布式子系统协同”的架构,通过标准化接口和总线实现各模块的通信与控制。(或Jetson Xavier NX,高配版)作为主计算单元,集成GPU用于AI计算(如视觉识别、运动规划)。电机与主系统的连接依赖。这种架构既保证了各模块的独立工作,又通过标准化接口实现了高效协同,适合机器人动态运动场景的稳定性需求。核心控制器是CyberDog的“大脑”,负责统筹所有模块的协作,通常采用。连接,低功耗模块(传感器、LED)采用。
2025-09-12 09:24:07
691
原创 SLAM、路径规划、运动控制算法
模块核心问题关键输出技术关键词典型应用SLAM我在哪?环境是什么样?环境地图+自身坐标激光/视觉传感器、图优化、回环检测所有自主移动机器人(无GPS场景)路径规划从A到B怎么走最好?无碰撞参考轨迹全局(A*/RRT*)、局部(DWA/TEB)自动驾驶、AGV、无人机运动控制怎么精准执行轨迹?执行器控制指令PID/MPC、轨迹跟踪、闭环控制机器人、机械臂、无人机SLAM提供“认知基础”,路径规划提供“决策方案”,运动控制提供“执行保障”
2025-09-12 09:23:48
863
原创 P2P技术剖析
P2P技术的核心价值是打破对中心化服务器的依赖,通过节点平等协作实现资源的高效共享与传输。从早期的BitTorrent到如今的区块链,P2P技术不断进化,在文件共享、实时通信、加密货币等领域展现出不可替代的优势。尽管面临安全、合规等挑战,但随着技术的成熟和应用场景的拓展,P2P将成为构建“去中心化互联网”(Web3.0)的核心基础设施之一。
2025-09-12 09:23:20
1018
原创 流媒体传输P2P技术
流媒体传输P2P技术,是将与结合的技术方案。其核心目标是解决传统“客户端-服务器(C/S)”流媒体架构中“中心服务器带宽瓶颈、单点故障、用户并发量受限”等问题,通过让用户节点(Peer)之间直接共享流媒体数据,实现高效、可扩展的流媒体分发。
2025-09-12 08:39:42
715
原创 PX4-Autopilot的技术栈
PX4的技术栈设计兼顾了实时性、可靠性和扩展性,使其能够在从嵌入式硬件到桌面环境的各种平台上运行,并支持多种类型的飞行器。
2025-09-12 08:38:55
286
原创 PX4-Autopilot整体分析
PX4-Autopilot是一个开源、跨平台的无人机飞控系统,采用模块化设计,支持多种飞行器类型(多旋翼、固定翼、VTOL、无人车等)。此外,PX4还提供了丰富的API和中间件,支持开发者扩展和定制功能,如添加新的传感器驱动、控制算法或应用模块。PX4支持通过配置文件和参数系统进行高度定制,适应不同的硬件平台和应用场景。目录下,采用分层架构,从传感器输入到执行器输出形成完整的控制链。关键控制参数在代码中通过参数系统管理,如多旋翼位置控制的参数包括。目录下的配置文件,可以快速配置不同类型的飞行器。
2025-09-12 08:38:41
1325
原创 P2P技术框架
P2P技术框架(Peer-to-Peer Technology Framework)是一套用于实现的系统性体系,并非单一软件或协议,而是由等组成的有机整体。其核心目标是打破传统C/S(客户端/服务器)架构的中心化依赖,让网络中的每个“节点(Peer)”既作为客户端消费资源,也作为服务器提供资源,从而提升系统的可扩展性、容错性和资源利用率。
2025-09-11 16:02:17
944
原创 P2P开源流媒体传输库
是实时流媒体P2P传输的工业级解决方案,支持低延迟(50-300ms)传输、NAT穿透和动态码率调整,广泛用于视频会议、直播连麦等场景。的P2P流媒体服务器,支持多种编码格式(MP3、H.264等),节点间自动转发流数据,适合构建去中心化直播平台。Libtorrent是成熟的P2P文件共享库,通过扩展可支持视频点播(边下载边播放),核心是。这些项目均提供完整的编译脚本和示例,可根据场景需求选择并扩展。,适合非实时场景(如电影点播)。WebRTC的C++核心库(PeerCast是专注于。
2025-09-11 16:01:58
1039
1
原创 可视化门铃流媒体网络传输软件开发详细设计
MQTT消息格式// 具体消息内容设备状态消息控制命令消息本详细设计文档提供了可视化门铃流媒体网络传输软件的全面设计方案,涵盖了系统架构、模块设计、数据模型、界面设计、网络协议、安全设计等各个方面。该方案注重实时性、安全性和用户体验,同时考虑了系统的可扩展性和可维护性。通过实施本设计方案,可以开发出一套高性能、稳定可靠的可视化门铃流媒体传输系统,满足用户对家庭安全和便捷交互的需求。
2025-09-11 16:01:19
795
原创 ROS2 系统架构
ROS2的架构通过分层设计、DDS中间件、模块化抽象,解决了ROS1的分布式、实时性、安全性痛点,更适配现代机器人开发需求(如多机器人协同、工业控制、自动驾驶)。理解其分层逻辑和核心组件(节点、话题、DDS、QoS),是掌握ROS2开发的基础。
2025-09-11 15:59:39
975
原创 ROS2核心库
ROS2的库体系以核心客户端库(rcl/rclcpp/rclpy)为入口,通过中间件适配库(rmw/rosidl)连接DDS通信层,辅以生命周期/参数管理库提升系统鲁棒性,结合开发工具库简化开发流程,最终通过功能模块库提供开箱即用的机器人功能。这些库相互协作,形成了灵活、高效、可扩展的ROS2生态。
2025-09-11 15:59:16
907
原创 LVGL源码分析
LVGL源代码通过对象系统、样式系统、渲染系统等模块的协同,实现了轻量、高效、可移植的嵌入式GUI解决方案。其核心设计围绕“硬件无关”和“高效渲染”,适合资源受限的场景,同时通过面向对象的思想简化了UI开发和扩展。理解这些核心模块和数据结构,是深入使用和定制LVGL的基础。
2025-09-11 15:57:08
886
原创 libunwind使用
libunwind通过获取上下文。用(本地)或(远程)初始化游标。调用unw_step遍历栈帧,结合和获取函数信息。配合addr2line解析行号,完成问题定位。相比系统原生backtracelibunwind提供了更稳定、更灵活的栈回溯能力,适合生产环境的日志收集和问题诊断。
2025-09-11 15:56:33
625
原创 C++方式实现LVGL界面管理
使用C++14实现一个LVGL界面管理框架,封装界面的创建、打开、关闭、隐藏以及跨界面消息传递等功能。这个实现采用面向对象思想,将LVGL的C接口封装为C++类,便于管理和扩展。进行界面管理和消息传递。这种设计既保留了LVGL的灵活性,又通过C++的面向对象特性提高了代码的可维护性和可扩展性。类并实现自己的界面逻辑,通过。宏注册界面,然后使用。
2025-09-11 15:56:01
169
原创 linux网络编程
在Linux环境下使用C++进行TCP/IP编程,主要依赖系统提供的socketAPI(属于POSIX标准)。以下是基于C++的TCP服务器和客户端实现示例,包含完整代码和说明。
2025-09-11 15:55:32
219
原创 C++插件化架构的实际开发经验
C++插件化架构的核心是“平衡灵活性与复杂性”,实际开发中需在接口设计、内存管理、跨平台兼容等方面做足细节。建议从小规模场景起步(如先实现1-2个核心插件),逐步完善框架能力,同时重视工程化工具(模板、测试、监控)的建设,才能在保证稳定性的前提下,充分发挥插件化的扩展优势。
2025-09-11 15:54:47
1007
原创 C++多层继承与多重继承父类指针转换以及注意事项
无论是多层继承还是多重继承,都支持父类指针指向子类对象(向上转型),这是多态的基础。多层继承的核心注意事项是:虚析构、成员访问范围、向下转型安全性。多重继承需额外关注:成员二义性、菱形继承的虚继承解决、指针地址偏移问题。合理使用父类指针可以简化代码(如用统一的父类指针容器管理不同子类对象),但需根据继承结构的复杂性针对性规避风险。
2025-09-11 15:00:22
980
原创 OpenHarmony中IRemoteObject、IRemoteBroker、IRemoteStub和IRemoteProxy类详解
总结:这四个类共同构成了OpenHarmony系统中进程间通信的基础框架,通过清晰的职责划分和模板设计,提供了灵活、高效、类型安全的跨进程通信机制。是OpenHarmony IPC系统中最基础的抽象接口,定义了进程间通信对象的基本行为。是一个中介接口,为客户端和服务端提供统一的接口抽象。是一个模板类,作为服务端实现的基类。是一个模板类,作为客户端代理的基类。
2025-09-11 13:39:42
865
原创 OpenHarmony同一设备同一进程内通信机制详解
总结:OpenHarmony通过精心设计的IPC框架,在保持统一接口的同时,对同一进程内通信进行了优化,实现了高效的组件间调用。而非跨进程通信的方式实现,避免了序列化/反序列化和进程间数据传输的开销。OpenHarmony IPC框架针对同一进程内通信做了特殊优化,通过。
2025-09-11 13:37:53
353
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅