9. 记录收藏
文章平均质量分 82
一些问题
Ray.so
自驾系统软件开发,业余爱好SLAM、CV、AR、VR、机器人。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux网络性能瓶颈:深入剖析skb缓冲区丢包
本文分析了Linux系统中skb缓冲区丢包的三大核心原因:1)RingBuffer分配失衡,包括硬件缓冲区溢出(RX_OVERRUNS)和skb分配失败(RX_DROPPED);2)内核层队列与软中断处理瓶颈,如接收队列溢出(Softnet Backlog)和NET_RX_SOFTIRQ处理不足;3)硬件层多核CPU中断负载不均,涉及RSS队列未启用和中断亲和性配置错误。通过监控/proc/net/dev、softnet_stat等指标及调整netdev_budget参数,可有效诊断和解决丢包问题。原创 2025-11-24 16:36:10 · 67 阅读 · 0 评论 -
Linux内核默认规则qdisc发展: fq_codel / mq
流量控制~原创 2025-11-20 15:30:24 · 161 阅读 · 0 评论 -
Linux常用网络工具
摘要: Linux网络工具分为6大类:1)测速工具(iperf3、speedtest-cli)用于带宽测试;2)抓包工具(tcpdump、Wireshark)实现流量分析;3)配置工具(ip/ifconfig/route)管理网络参数;4)防火墙工具(iptables/nftables)控制访问策略;5)诊断工具(ping/traceroute/curl)检测连通性;6)监控工具(iftop/nload)实时查看流量。这些工具覆盖网络配置、测试、排障等日常运维场景,支持命令行和图形化操作原创 2025-11-14 17:03:35 · 828 阅读 · 0 评论 -
大文件传输
大文件传输的整形流控面临多重技术挑战:需动态感知网络带宽波动并实时适配,平衡突发流量抑制与带宽利用率;匹配接收端处理能力,应对长距离传输的延迟反馈;实现多路径流量的协同整形,并针对卫星链路、公网P2P等差异化场景调整策略。核心在于通过精准感知和预测机制,在抑制突发的同时最大化传输效率。原创 2025-10-20 19:21:26 · 567 阅读 · 0 评论 -
自动驾驶传感器数据录制过程中的五大系统性挑战
车端点云数据录制在Linux系统中面临五大系统性挑战。原创 2025-10-10 12:38:14 · 1011 阅读 · 0 评论 -
交叉编译工具链
交叉编译工具链可通过多种方式获取:1)通过包管理器安装(如Ubuntu的gcc-arm-linux-gnueabihf);2)从官网下载预编译版本(如ARM官方工具链或Linaro);3)从开源网站获取特定版本;4)使用crosstool-ng自动构建。不同方法适用于不同架构(32/64位ARM)和需求,部分工具链需手动下载依赖包。原创 2025-09-22 22:35:56 · 688 阅读 · 0 评论 -
【FastDDS】Examples ( 01-benchmark )
Fast-DDS的benchmark示例通过发布/订阅模式测试通信性能,支持多种消息类型(16KB-8MB)和传输协议(SHM/UDPv4)。核心包含发布者统计吞吐量、订阅者验证接收,通过XML配置QoS策略(可靠性/持久性)。运行时可自定义消息大小、传输协议等参数,输出吞吐量等指标,用于评估不同场景下的性能表现。原创 2025-09-10 19:59:51 · 1007 阅读 · 0 评论 -
【Git】cherry-pick和merge日常开发中使用注意事项
Git开发中,merge和cherry-pick是两种核心代码整合方式。merge适用于完整功能分支合并,保留完整历史,建议配合--no-ff参数使用;cherry-pick则用于跨分支复制特定提交,适合修复bug或迁移误提交。关键区别在于:merge整合全部分支提交,而cherry-pick选择性复制。最佳实践是以merge为主保持历史清晰,谨慎使用cherry-pick避免历史混乱。两者合理搭配能提升开发效率与代码库整洁度。原创 2025-09-10 15:58:29 · 537 阅读 · 0 评论 -
【FastDDS】FastCDR和ProtoBuf在FastDDS中的应用
FastDDS中,FastCDR是原生序列化工具,深度集成且符合DDS标准,适用于跨平台实时通信;而Protocol Buffers需通过扩展适配,用于复用现有消息定义。FastCDR是默认选择,确保标准兼容性,ProtoBuf则为生态集成提供灵活性,两者互补而非替代。选择取决于是否需遵循DDS标准或兼容ProtoBuf生态。原创 2025-09-08 20:04:42 · 1406 阅读 · 0 评论 -
【ROS2】ament_CMake (2-example)
ament_cmake 是 ROS 2 的核心 C++ 构建工具,基于 CMake 扩展并深度适配 ROS 2 生态。它简化了编译流程并提供依赖管理、测试等功能。标准包结构包含 CMakeLists.txt 和 package.xml 两个核心配置文件,前者定义构建逻辑,后者声明元信息和依赖。ament_cmake 扩展了关键命令如 ament_target_dependencies 来自动处理依赖关系,并通过固定目录结构(如必须的 include/包名 子目录)确保兼容性。典型功能包括自动安装目标文件、导原创 2025-09-08 17:19:00 · 825 阅读 · 1 评论 -
【ROS2】ament_CMake (1-overview)
ament_cmake是ROS 2生态中基于CMake扩展的C++核心构建系统,旨在标准化ROS 2包的构建流程。它通过package.xml声明依赖关系,在CMakeLists.txt中实现编译、安装等逻辑,提供自动化依赖管理(如ament_target_dependencies)和统一构建路径。相比原生CMake,ament_cmake简化了ROS 2特有功能的实现,支持跨平台构建和扩展功能(如测试、文档生成)。作为ROS 2开发的基础组件,它使开发者能专注于代码逻辑,提升开发效率。原创 2025-09-08 17:16:45 · 939 阅读 · 0 评论 -
【ROS2】代码仓内容概述
ROS2核心组件分类梳理:1)基础构建工具链(ament系列);2)DDS中间件及通信适配层;3)ROS核心库(rcl/rclcpp等)与消息系统;4)命令行与调试工具(ros2cli/rosbag2);5)插件机制(pluginlib);6)可视化工具(RViz/RQT);7)机器人模型(URDF/几何库);8)第三方依赖封装;9)示例代码。系统采用模块化设计,涵盖构建系统、通信中间件、核心功能、工具链和扩展机制,支持C++/Python开发,形成完整的机器人软件开发生态。原创 2025-09-08 16:44:29 · 1488 阅读 · 0 评论 -
【FastDDS】Layer DDS之Domain ( 06-Partitions )
DDS(数据分发服务)中的分区(Partition)机制提供了在域(Domain)和主题(Topic)之外的逻辑通信隔离,具有动态修改、低开销和多分区归属特性。发布者和订阅者需共享至少一个共同分区才能通信,支持通配符匹配实现灵活分组。分区与端点绑定而非数据绑定,历史数据可能随分区变更而改变接收者。通过C++代码或XML配置可便捷管理分区,适用于需要精细化控制通信范围的分布式系统。原创 2025-09-03 20:14:01 · 648 阅读 · 0 评论 -
【FastDDS】Layer Transport ( 02-Transport API )
摘要: Fast DDS传输层API提供了灵活的通信机制实现框架。核心包括TransportDescriptorInterface(传输描述符)用于配置传输,TransportInterface(传输实例)负责实际消息分发。Locator(定位器)唯一标识通信通道,支持IPv4/IPv6地址映射。特别提供了IPLocator辅助类简化IP定位器配置,支持DNS解析和端口管理。此外,API支持通过ChainingTransport实现传输链式调用,允许在消息收发前后进行预处理。该设计使开发者能灵活配置网络参数原创 2025-09-05 18:25:19 · 319 阅读 · 0 评论 -
【FastDDS】Layer DDS之Subscriber ( 05-DataReader)
本文详细介绍了Fast DDS中的DataReader组件,包括其基本概念、QoS配置及默认设置。DataReader是订阅者的关键组件,用于接收特定主题的数据。其行为由DataReaderQos控制,包含18个可配置策略。文章还阐述了默认QoS的设置方法及特殊值DATAREADER_QOS_DEFAULT在不同场景下的含义差异,提供了代码示例展示如何创建和修改DataReader的QoS配置。原创 2025-09-04 09:26:09 · 244 阅读 · 0 评论 -
【FastDDS】Layer DDS之Publisher (07-Creating a DataWrite)
本文总结了Fast DDS中DataWriter的创建与删除方法。创建DataWriter通过Publisher的create_datawriter()实现,需绑定Topic并配置QoS策略,支持默认QoS、自定义QoS或基于XML配置文件创建。可选参数包括监听器和StatusMask。自定义PayloadPool可优化数据传输管理。删除DataWriter使用Publisher的delete_datawriter()方法。文中提供了各场景的代码示例和注意事项,强调错误检查的必要性。原创 2025-09-04 08:54:46 · 311 阅读 · 0 评论 -
【FastDDS】Discovery ( 02-General Discovery Settings )
本文介绍了RTPS协议中的通用发现设置,包括四种核心配置:发现协议选项(如SIMPLE、SERVER等)、参与者过滤标志、租约期限(控制参与者活跃状态时长)和公告周期(PDP公告发送频率)。这些设置通过WireProtocolConfigQos类的builtin成员定义,支持C++和XML两种配置方式。文章详细说明了各参数的用途、取值选项及推荐配置,如建议公告周期应短于租约期限以保证活跃度检测,同时避免过多元流量。这些设置共同构成了DDS系统中发现机制的基础配置。原创 2025-09-05 15:10:54 · 352 阅读 · 0 评论 -
【FastDDS】Layer DDS之Publisher (06-DataWriterListener)
Fast DDS中的DataWriterListener是一个抽象类,用于定义DataWriter状态变化时的回调函数,包含匹配状态变化(on_publication_matched)、QoS不兼容(on_offered_incompatible_qos)、活跃度丢失(on_liveliness_lost)等核心回调。其中on_unacknowledged_sample_removed用于处理样本未被确认即移除的情况,其判断标准取决于可靠性QoS策略。用户可通过继承该类并重写特定回调函数来实现自定义处理逻辑原创 2025-09-04 08:52:54 · 294 阅读 · 0 评论 -
【FastDDS】Layer DDS之Subscriber ( 01-overview )
Fast DDS订阅者机制概述:订阅者(Subscriber)通过创建数据读取器(DataReader)接收匹配主题(Topic)的数据更新。核心组件包括订阅者QoS配置、监听器设置、数据读取器创建与管理。数据访问支持多种方式:回调处理、等待线程、非阻塞调用等。关键数据结构SampleInfo包含样本状态、视图状态等14种元数据信息。系统提供完整的生命周期管理,包括基于配置文件的创建和删除操作,以及数据样本的借用/返回机制,实现高效的数据分发与处理。原创 2025-09-04 09:15:44 · 465 阅读 · 0 评论 -
【FastDDS】Layer DDS之Publisher (05-DataWriter)
Fast DDS中的DataWriter概述 DataWriter是Fast DDS中负责数据发布的核心组件,主要特点包括: 基本概念:DataWriter依附于Publisher,绑定到特定Topic,通过write()函数发布数据变化 QoS控制:提供22种QoS策略,包括持久性、可靠性、历史记录等,其中部分策略创建后不可修改 默认QoS:可通过Publisher设置默认DataWriterQos,但不会影响已创建的DataWriter实例 特殊值:DATAWRITER_QOS_DEFAULT表示使用当原创 2025-09-04 08:49:53 · 691 阅读 · 0 评论 -
【FastDDS】Layer DDS之Subscriber ( 03-SubscriberListener详解 )
摘要:Fast DDS中的SubscriberListener是一个抽象类,用于定义订阅者状态变化时的回调函数。它继承自DataReaderListener,其回调仅在关联的DataReader无监听器或被禁用时触发。新增的on_data_on_readers()回调在订阅者的任一DataReader有新数据时被调用,但不对多次变化进行排队。用户可通过继承该类并重写所需回调函数来实现自定义处理逻辑,示例展示了如何实现on_data_on_readers()回调来响应新数据通知。原创 2025-09-04 09:21:33 · 236 阅读 · 0 评论 -
【FastDDS】Discovery ( 05-Discovery Server Settings)
服务器发现机制概述 本文介绍了基于客户端-服务器模式的DDS发现机制,其中元流量由服务器管理,而非简单发现模式中的广播方式。原创 2025-09-05 15:19:58 · 670 阅读 · 0 评论 -
Fast-DDS Spy 工具
包括DDS配置和规格配置 , 概述如下dds:domain: 0allowlist:blocklist:topics:qos:specs:qos:logging:filter:error: ""publish:domain: 0。原创 2025-05-27 18:16:02 · 667 阅读 · 0 评论 -
【FastDDS】Layer DDS之Domain ( 02-DomainParticipant )
Fast DDS的域参与者(DomainParticipant)是应用程序接入特定域的入口点,负责管理该域内的所有实体。它提供创建发布者、订阅者和主题的工厂功能,并通过DomainParticipantQos控制其行为。DomainParticipantQos包含多种服务质量策略,如用户数据、资源限制、传输配置等,部分策略可在运行时修改。系统提供默认QoS配置,可通过工厂模式进行动态调整。使用时需注意:某些QoS策略在创建后不可修改,统计支持可能影响实际使用的QoS值,修改原创 2025-09-03 21:55:11 · 379 阅读 · 0 评论 -
【FastDDS】快速使用简述 ( 01-DDS、RTPS定义)
DDS(数据分发服务)是一种以数据为中心的发布-订阅通信协议,包含发布者、订阅者、主题和域四大核心元素,通过QoS策略保证通信质量。RTPS(实时发布-订阅)是支持DDS的底层协议,基于UDP/IP等传输方式,通过RTPS参与者及其端点(写入器和读取器)实现数据交换。Fast DDS作为实现,支持多种配置变更默认通信流程,同时保持核心的发布-订阅机制不变。两者共同构建了高效的分布式通信中间件。原创 2025-09-05 13:00:37 · 486 阅读 · 0 评论 -
【FastDDS】Layer RTPS (详解)
Fast DDS的RTPS层实现与配置 Fast DDS的RTPS层提供了对通信协议的底层控制,与DDS层元素一一对应但功能更精细。原创 2025-09-05 10:14:07 · 626 阅读 · 0 评论 -
【FastDDS】Discovery ( 04-STATIC Discovery Settings)
Fast DDS 静态发现机制概述 Fast DDS 提供静态发现功能,可在已知网络拓扑时替代动态发现协议,完全消除 EDP 阶段的元流量。关键特性包括: 配置方式:通过 XML 文件或代码显式配置所有参与实体(数据写入器/读取器) 核心设置: 禁用 SEDP 并启用 STATIC EDP 必须完整定义远程实体信息(主题、数据类型、QoS 等) 支持多文件配置和有效性检查 优势: 节省网络带宽 避免动态发现开销 适用于固定拓扑场景 限制: 仅能与配置中明确定义的对等方通信 需要严格匹配远程实体配置 配置文件原创 2025-09-05 15:15:45 · 319 阅读 · 0 评论 -
【FastDDS】Layer DDS之Core (详解)
FastDDS Layer DDS : Core 部分详解原创 2025-09-03 20:04:57 · 497 阅读 · 0 评论 -
【FastDDS】Layer DDS之Publisher (03-PublisherListener)
本文总结了Fast DDS中的PublisherListener功能。PublisherListener是抽象类,用于定义发布者状态变化时的回调,默认空实现,需用户特化实现。它继承自DataWriterListener,能响应数据写入器事件,但仅当数据写入器无监听器或其StatusMask禁用回调时才会触发。PublisherListener本身未新增回调函数,具体回调列表和实现示例可参考DataWriterListener文档。原创 2025-09-04 08:45:38 · 199 阅读 · 0 评论 -
【FastDDS】Layer DDS之Domain ( 04-DomainParticipantFactory)
本文介绍了Fast DDS中的DomainParticipantFactory核心功能。DomainParticipantFactory是单例对象,负责创建和销毁DomainParticipant,其行为可通过DomainParticipantFactoryQos进行配置,其中关键参数autoenable_created_entities决定DomainParticipant是否自动启用。文章还演示了如何通过XML配置文件创建DomainParticipant,支持自动或手动加载配置文件,简化QoS设置过程原创 2025-09-03 22:02:59 · 85 阅读 · 0 评论 -
【FastDDS】Layer DDS之Publisher (01-overview)
摘要: Fast DDS的发布者(Publisher)是DDS架构中负责数据发布的核心组件,由域参与者创建并管理多个数据写入器(DataWriter)。其行为通过PublisherQos策略控制,包含可变与不可变策略(如分区策略可动态修改,而表示策略不可变)。默认QoS可通过域参与者配置,并支持通过PublisherListener实现事件回调(如QoS不匹配、数据发布状态等)。开发者可通过继承监听器类重写回调函数,实现对发布状态的自定义监控。原创 2025-09-04 08:23:30 · 697 阅读 · 0 评论 -
【FastDDS】Layer DDS之Subscriber ( 04-Creating a Subscriber)
本文总结了Fast DDS中订阅者(Subscriber)的创建与删除方法: 订阅者创建:通过DomainParticipant的create_subscriber()函数实现,需指定QoS参数,可选监听器和状态掩码。创建失败返回空指针。 配置文件创建:使用create_subscriber_with_profile()通过XML配置文件创建订阅者,需先加载配置文件。 订阅者删除:通过delete_subscriber()删除,前提是删除所有关联的DataReader实体,否则会报错。原创 2025-09-04 09:23:49 · 305 阅读 · 0 评论 -
【FastDDS】Layer DDS之Domain ( 03-DomainParticipantListener)
Fast DDS 的 DomainParticipantListener 是用于监听域参与者状态变化的抽象类,继承自多个监听器接口,可响应各类实体事件。它提供以下核心功能:1) 处理域参与者发现、移除和QoS变更;2) 数据读写器发现事件;3) 安全认证事件(需启用安全功能)。示例代码展示了如何实现自定义监听器,包括带忽略标志的重载版本,其中可根据条件决定是否忽略新发现的实体。所有回调函数均有默认空实现,用户只需重写所需功能。事件会优先由最具体的实体监听器处理,DomainParticipantListen原创 2025-09-03 22:00:01 · 111 阅读 · 0 评论 -
【FastDDS】Layer DDS 之 Topic
FastDDS源码学习系列:DDS层 Topic 详解。原创 2025-09-02 20:10:45 · 1140 阅读 · 0 评论 -
【FastDDS】Layer DDS之Subscriber ( 02-Subscriber详解 )
Fast DDS中的订阅者(Subscriber)是管理多个数据读取器(DataReader)的容器,通过SubscriberQoS配置组行为。订阅者QoS包含Presentation、Partition等策略,可使用set_qos()修改。系统启动时使用默认构造的SubscriberQoS,可通过DomainParticipant修改默认值而不影响现有订阅者。原创 2025-09-04 09:19:40 · 408 阅读 · 0 评论 -
【FastDDS】Layer DDS之Publisher (04-Creating a Publisher)
Fast DDS发布者管理摘要 Fast DDS中发布者(Publisher)的创建与删除操作如下: 发布者创建: 通过DomainParticipant的create_publisher()创建 参数包括PublisherQos(必选)和Listener/StatusMask(可选) 也可使用create_publisher_with_profile()基于XML配置创建 发布者删除: 通过DomainParticipant的delete_publisher()删除 必须先删除发布者包含的所有DataWr原创 2025-09-04 08:47:27 · 252 阅读 · 0 评论 -
【FastDDS】Layer DDS之Domain (01-overview)
Fast DDS的域(Domain)模块提供了分布式应用的逻辑隔离机制,通过域ID标识不同通信平面。域参与者(DomainParticipant)是加入域的核心对象,包含服务质量配置(QoS)和监听器功能。域参与者工厂(DomainParticipantFactory)支持通过XML配置文件和默认配置创建域参与者。分区(Partitions)在域内实现更细粒度的隔离,支持通配符匹配。该模块通过虚拟网络概念使多个应用共享物理网络而不互相干扰,同时提供灵活的配置方式和资源管理机制,确保分布式通信的稳定性和效率。原创 2025-09-03 21:49:55 · 176 阅读 · 0 评论 -
【FastDDS】概述 Library Overview
Fast DDS是一种高性能的DDS规范实现,为分布式应用提供以数据为中心的通信中间件。其分层架构包含应用层、DDS层、RTPS层和传输层,支持多种协议如UDP、TCP和共享内存。关键实体包括域参与者、发布者/订阅者、数据写入器/读取器等,均可通过QoS机制配置。Fast DDS采用多线程并发模型,内置多种发现协议,并支持安全认证、数据分区等扩展功能。该框架既符合DDS标准,又能通过RTPS协议实现跨平台互操作,适用于构建复杂的分布式实时系统。原创 2025-09-05 12:52:14 · 428 阅读 · 0 评论 -
【FastDDS】Layer DDS之Core (overview)
本文档详细介绍了DDS通信系统的核心模块,包含三个主要组件:实体(Entity)、策略(Policy)和状态(Status)。实体是具有状态且可配置的通信对象,包含多种类型和通用特征(如标识符、QoS策略、监听器等)。策略部分详述了标准QoS策略(如截止期限、持久性等)以及eProsima和XTypes扩展策略。状态部分定义了各类通信状态(如数据可用、活跃度变更等)。最后还介绍了条件与等待集机制,包括守卫条件、状态条件和读取条件。这些组件共同构成了DDS通信的基础架构。原创 2025-09-03 15:20:51 · 338 阅读 · 0 评论 -
【FastDDS】Discovery ( 01-overview )
Fast DDS 提供了多种发现机制用于自动匹配数据写入器和读取器,包括简单发现(默认兼容RTPS标准)、静态发现(可跳过SEDP阶段)、集中式的发现服务器架构以及手动RTPS发现。发现过程分为参与者发现(PDP)和端点发现(EDP)两个阶段,PDP通过多播/单播公告确认参与者存在,EDP则匹配主题和数据类型相同的端点。系统支持配置发现协议、租约期限等通用参数,以及各机制特有设置如静态EDP XML配置、服务器定位器等。此外还支持通过监听器实现发现回调功能。原创 2025-09-05 15:08:05 · 592 阅读 · 0 评论
分享