自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(206)
  • 资源 (2)
  • 收藏
  • 关注

原创 【ROS2】Begginer : CLI tools - 理解 ROS 2 话题

ROS2 CLI tools Topic

2025-09-20 23:04:20 227

原创 【ROS2】Beginner: CLI tools

ROS2 Beginner CLI tools

2025-09-20 21:38:36 601

原创 【FastDDS】DDS-XTypes动态类型使用:编写类似 ROS2 的topic pub命令行工具

DDS-XTypes

2025-09-16 19:51:07 732

原创 【ROS2】Concept(Advanced )

ROS 基础概念,进阶篇

2025-09-16 19:12:45 927

原创 【ROS2】Concept(Intermediate)

ROS2 基础概念,中级篇

2025-09-16 10:50:01 982

原创 【ROS2】Concept(Basic)

ROS 基础概念,初级篇

2025-09-15 00:11:29 970

原创 【FastDDS】Examples ( 01-benchmark )

Fast-DDS的benchmark示例通过发布/订阅模式测试通信性能,支持多种消息类型(16KB-8MB)和传输协议(SHM/UDPv4)。核心包含发布者统计吞吐量、订阅者验证接收,通过XML配置QoS策略(可靠性/持久性)。运行时可自定义消息大小、传输协议等参数,输出吞吐量等指标,用于评估不同场景下的性能表现。

2025-09-10 19:59:51 791

原创 【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 396

原创 【FastDDS】FastCDR和ProtoBuf在FastDDS中的应用

FastDDS中,FastCDR是原生序列化工具,深度集成且符合DDS标准,适用于跨平台实时通信;而Protocol Buffers需通过扩展适配,用于复用现有消息定义。FastCDR是默认选择,确保标准兼容性,ProtoBuf则为生态集成提供灵活性,两者互补而非替代。选择取决于是否需遵循DDS标准或兼容ProtoBuf生态。

2025-09-08 20:04:42 1178

原创 【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 593 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 601

原创 【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 1378

原创 MCAP :机器人数据容器的全面实践指南

MCAP数据格式详解。

2025-09-06 22:28:16 729

原创 Fast DDS原生程序ROS2 Rviz Debug工具接入--Overview

摘要: 计划针对FastDDS缺乏调试工具的问题,借鉴ROS2生态开发工具链。具体包括:1)研究并移植ROS2的rosbag录制与回放工具;2)结合FastDDS现有工具(如DDS Spy)补充数据调试功能;3)定制化迁移RVIZ等可视化工具。项目将通过Gitee仓库开源,并同步更新开发过程博客。目标是为FastDDS构建类似ROS2的完整调试工具链,提升开发效率。

2025-09-06 21:49:03 211

原创 【FastDDS】XTypes Extensions

第一部分详细说明了DataRepresentationQosPolicy,该策略定义了DataWriter和DataReader之间通信所使用的数据表示形式,包括XCDR、XML和XCDR2三种可选格式。第二部分描述了TypeConsistencyEnforcementQosPolicy(未来版本实现),该策略规定了数据类型一致性检查规则,包括类型强制转换、序列边界、字符串边界等参数的设置。两个策略均不可在实体启用后修改,并提供了C++配置示例。

2025-09-06 19:03:30 801

原创 【FastDDS】 Entity Policy 之 扩展Qos策略

为了保持 DataReaders 和 DataWriters 中的 DisablePositiveACKsQosPolicy 之间的兼容性,如果 DataWriter 禁用了此 QoS,则 DataReader 不能启用此 QoS。定期发送心跳(参见 WriterTimes)之外,可靠的 DataWriters 还使用一种机制在向 DataReaders 传递数据的同一消息中附加心跳子消息。不能在已启用的实体上修改。此QoS配置参与者的流控制器列表,以便这些流控制器之后可在其DataWriters上使用。

2025-09-06 17:02:47 591

原创 【FastDDS】 Entity Policy 之 标准Qos策略

Fast DDS 标准 Qos 策略

2025-09-06 15:54:25 941

原创 【FastDDS】Environment variables

FastDDS 环境变量

2025-09-06 15:24:40 847

原创 【FastDDS】XML profiles

FastDDS XML Profiles

2025-09-06 15:16:17 879

原创 【FastDDS】Persistence Service

Fast DDS的持久化机制允许DomainParticipants在重启后恢复状态,支持参与者、发布者、订阅者及数据四种持久化类型。通过PersistenceQosPolicy配置,可选择VOLATILE、TRANSIENT_LOCAL或TRANSIENT三种持久级别,并指定存储位置。系统提供文件系统和SQLite两种默认插件,也支持自定义插件实现。持久化数据会自动恢复实体状态和订阅关系,但会增加系统开销,需注意安全性和配置一致性。Fast DDS提供了示例程序展示持久化功能的使用。

2025-09-06 14:04:50 647

原创 【FastDDS】Layer Transport ( 06-DataShare & InterProcess & Locator & interfaceConfig )

DataShare & InterProcess Delivery + Locator + interfaceConfig

2025-09-06 14:01:15 842

原创 【FastDDS】Layer Transport ( 05-Shared Memory Transport)

共享内存传输(SHM)是Fast DDS提供的在同一主机上实现快速进程间通信的机制。它通过共享内存段传递数据,相比传统网络传输具有三大性能优势:支持大型消息传递(仅受内存限制)、减少内存复制次数、降低系统调用开销。关键概念包括共享内存段(Segment)、段缓冲区(Segment Buffer)、缓冲区描述符(Buffer Descriptor)和通信端口(Port)。配置时需注意段大小设置,过小会导致数据丢失风险。

2025-09-06 13:07:34 758

原创 【FastDDS】Layer Transport ( 04-TCP Transport )

Fast DDS : Transport TCP

2025-09-06 12:46:17 1181

原创 【FastDDS】Layer Transport ( 03-UDP Transport )

本文介绍了eProsima Fast DDS中UDP传输的配置方法。UDP是一种无连接的传输方式,Fast DDS实现了UDPv4和UDPv6两种传输类型,它们共享相同的传输描述符参数,包括缓冲区大小、网络过滤、TTL等设置。文章详细说明了如何通过C++代码或XML配置文件启用和自定义UDP传输,包括线程配置和性能优化选项(如非阻塞发送)。文中还提供了两种配置方式的示例代码,帮助开发者在Fast DDS应用中实现UDP通信。

2025-09-06 12:37:24 565

原创 【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 287

原创 【FastDDS】Layer Transport ( 01-overview )

Fast DDS传输层概述:该传输层提供DDS实体间的通信服务,支持多种传输协议,包括默认的UDPv4和共享内存(SHM)传输。

2025-09-05 18:17:51 248

原创 【FastDDS】Discovery ( 06-DomainParticipantListener Discovery Callbacks )

本文介绍了Fast DDS中DomainParticipantListener的发现回调实现。

2025-09-05 15:22:46 70

原创 【FastDDS】Discovery ( 05-Discovery Server Settings)

服务器发现机制概述 本文介绍了基于客户端-服务器模式的DDS发现机制,其中元流量由服务器管理,而非简单发现模式中的广播方式。

2025-09-05 15:19:58 601

原创 【FastDDS】Discovery ( 04-STATIC Discovery Settings)

Fast DDS 静态发现机制概述 Fast DDS 提供静态发现功能,可在已知网络拓扑时替代动态发现协议,完全消除 EDP 阶段的元流量。关键特性包括: 配置方式:通过 XML 文件或代码显式配置所有参与实体(数据写入器/读取器) 核心设置: 禁用 SEDP 并启用 STATIC EDP 必须完整定义远程实体信息(主题、数据类型、QoS 等) 支持多文件配置和有效性检查 优势: 节省网络带宽 避免动态发现开销 适用于固定拓扑场景 限制: 仅能与配置中明确定义的对等方通信 需要严格匹配远程实体配置 配置文件

2025-09-05 15:15:45 267

原创 【FastDDS】Discovery ( 03-SIMPLE Discovery Settings)

摘要: eProsima Fast DDS通过简单发现协议(SPDP和SEDP)实现DDS实体间的端到端发现。SPDP用于域参与者间的相互发现,SEDP用于端点(数据写入器/读取器)的发现。关键配置包括: 初始公告:通过多轮广播(默认5次,间隔100ms)提高发现成功率; 简单EDP属性:控制端点发现行为(如仅发布或订阅); 初始对等方:指定目标参与者的IP/端口列表,支持单播和多播(默认端口7400+域ID计算)。配置示例展示了C++和XML实现方式,适用于无多播支持的场景。

2025-09-05 15:13:03 513

原创 【FastDDS】Discovery ( 02-General Discovery Settings )

本文介绍了RTPS协议中的通用发现设置,包括四种核心配置:发现协议选项(如SIMPLE、SERVER等)、参与者过滤标志、租约期限(控制参与者活跃状态时长)和公告周期(PDP公告发送频率)。这些设置通过WireProtocolConfigQos类的builtin成员定义,支持C++和XML两种配置方式。文章详细说明了各参数的用途、取值选项及推荐配置,如建议公告周期应短于租约期限以保证活跃度检测,同时避免过多元流量。这些设置共同构成了DDS系统中发现机制的基础配置。

2025-09-05 15:10:54 320

原创 【FastDDS】Discovery ( 01-overview )

Fast DDS 提供了多种发现机制用于自动匹配数据写入器和读取器,包括简单发现(默认兼容RTPS标准)、静态发现(可跳过SEDP阶段)、集中式的发现服务器架构以及手动RTPS发现。发现过程分为参与者发现(PDP)和端点发现(EDP)两个阶段,PDP通过多播/单播公告确认参与者存在,EDP则匹配主题和数据类型相同的端点。系统支持配置发现协议、租约期限等通用参数,以及各机制特有设置如静态EDP XML配置、服务器定位器等。此外还支持通过监听器实现发现回调功能。

2025-09-05 15:08:05 502

原创 【FastDDS】快速使用简述 ( 02-快速使用案例)

本文介绍了使用Fast DDS实现简单的发布-订阅应用的步骤。主要内容包括:通过IDL定义HelloWorld数据类型结构;使用Fast DDS-Gen工具生成C++支持代码;编写发布者程序创建DDS实体并循环发送消息。示例展示了Fast DDS应用的基本开发流程,包括域参与者、发布者、主题和数据写入器等核心概念的实现。文中提供了完整的C++代码片段,涵盖初始化、消息发布和匹配监听等功能。该实现可作为Fast DDS开发的基础模板,帮助开发者快速构建分布式数据分发系统。

2025-09-05 13:15:56 524

原创 【FastDDS】快速使用简述 ( 01-DDS、RTPS定义)

DDS(数据分发服务)是一种以数据为中心的发布-订阅通信协议,包含发布者、订阅者、主题和域四大核心元素,通过QoS策略保证通信质量。RTPS(实时发布-订阅)是支持DDS的底层协议,基于UDP/IP等传输方式,通过RTPS参与者及其端点(写入器和读取器)实现数据交换。Fast DDS作为实现,支持多种配置变更默认通信流程,同时保持核心的发布-订阅机制不变。两者共同构建了高效的分布式通信中间件。

2025-09-05 13:00:37 403

原创 【FastDDS】概述 Library Overview

Fast DDS是一种高性能的DDS规范实现,为分布式应用提供以数据为中心的通信中间件。其分层架构包含应用层、DDS层、RTPS层和传输层,支持多种协议如UDP、TCP和共享内存。关键实体包括域参与者、发布者/订阅者、数据写入器/读取器等,均可通过QoS机制配置。Fast DDS采用多线程并发模型,内置多种发现协议,并支持安全认证、数据分区等扩展功能。该框架既符合DDS标准,又能通过RTPS协议实现跨平台互操作,适用于构建复杂的分布式实时系统。

2025-09-05 12:52:14 317

原创 【FastDDS】Layer RTPS (详解)

Fast DDS的RTPS层实现与配置 Fast DDS的RTPS层提供了对通信协议的底层控制,与DDS层元素一一对应但功能更精细。

2025-09-05 10:14:07 587

原创 【FastDDS】Layer DDS之Subscriber ( 08-SampleInfo)

Fast DDS中的SampleInfo结构体提供了数据样本的元信息,包含样本状态、视图状态和实例状态等关键成员,用于跟踪数据读取情况、实例生命周期变化。它还包含时间戳、实例句柄、发布者标识等信息,帮助应用程序了解数据来源和上下文。通过检查SampleInfo中的valid_data字段,可以区分有效数据样本与状态通知。这些元数据对于实现可靠的数据处理、实例管理和请求-响应交互模式至关重要。

2025-09-05 10:13:38 211

原创 【FastDDS】Layer DDS之Subscriber ( 09-Accessing received data)

Fast DDS提供了多种接收数据访问方式:通过读取(read)或提取(take)操作获取数据,其中提取会移除数据而读取保留数据。应用程序可通过序列高效借用接收队列内存,但需及时归还。数据处理时需检查SampleInfo的有效性,可通过监听器回调或等待集机制异步获取数据。等待集允许线程专门等待新数据到达,通过条件触发和超时控制实现可靠的数据接收处理。

2025-09-05 00:19:59 757

原创 【FastDDS】Layer DDS之Subscriber ( 07-Creating a DataReader)

Fast DDS中数据读取器(DataReader)的创建与删除方法总结。创建时需通过订阅者实例的create_datareader()函数,指定主题和QoS策略,可选择添加监听器或使用配置文件;删除时需先删除其创建的实体再调用delete_datareader()。提供了三种创建方式:基本QoS配置、基于XML配置文件和自定义PayloadPool,每种方式都需检查返回值有效性。删除操作要求确保所有关联实体已先被删除。

2025-09-04 09:34:19 847

原创 【FastDDS】Layer DDS之Subscriber ( 06-DataReaderListener)

Fast DDS中的DataReaderListener是一个抽象类,用于处理DataReader状态变化事件。它定义了8个核心回调函数,包括数据可用通知、订阅匹配状态变化、QoS不兼容等事件响应机制。用户通过继承该类并重写所需回调函数来实现自定义处理逻辑。事件触发遵循"最特定实体优先"原则,从DataReader逐级向上传递。这种机制提供了灵活的事件处理方式,开发者只需实现与业务相关的回调,无需处理全部事件。典型应用场景包括实时数据接收、发布者状态监控和QoS策略管理等。

2025-09-04 09:29:18 284

包括:1)使用Python通过随机序列吸附法生成颗粒图像的代码;2)提取图像颗粒轮廓直径,生成Graph;3)训练GCN模型

包括:1)使用Python通过随机序列吸附法生成颗粒图像的代码;2)提取图像颗粒轮廓直径,生成Graph;3)训练GCN模型。 对应的博客为:https://blog.csdn.net/rayso9898/article/details/131047958

2023-06-05

VTK8.0.0 编译好的库 : Qt5.9 + VS2015 + pcl1.8.1 + vtk8.0

对应的版本: Qt5.9 + VS2015 + pcl1.8.1 + vtk8.0, PCL库版本和VS VTK版本无比对应。参考其他博客试错了将近一周,各种Bug不断,终于搞好了。 https://blog.csdn.net/rayso9898/article/details/113000822

2021-01-24

XIANDUAN.rar

使用Qt绘制线段,可以动态调整线段的位置

2021-01-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除