自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(109)
  • 收藏
  • 关注

原创 RTPS协议

期望数据怎样收发。

2024-04-16 10:28:58 114

原创 Fast DDS环境搭建

本文主要记录Fast DDS docker环境搭建和examples代码运行。

2024-04-15 21:45:58 630 1

原创 代码设计原则

总之,设计一个软件框架需要综合考虑多个方面,包括需求分析、架构设计、技术选型、模块化设计、接口设计、安全性考虑、性能优化、可扩展性、文档编写以及测试与验证等。通过认真考虑这些方面,可以设计出稳定、高效、安全的软件框架。通过深入了解需求,可以确保设计的框架能够满足用户的期望和需求。接口设计:定义模块之间的接口,确保模块之间的通信和数据交换的顺畅进行。文档编写:为软件框架编写详细的文档,包括设计文档、接口文档、用户手册等。通过合理的算法设计、数据结构选择、缓存策略等,可以提高软件的运行效率。

2024-03-28 17:48:29 503 1

原创 Fast DDS使用Demo大全

本文提供了Fast DDS所有功能的使用示例代码,用于自验证,调试Fast DDS代码,基于Fast DDS开发这几类用途。目前正在不断补充和晚上当中。

2024-03-18 22:08:11 241

原创 设计模式之工厂模式

工厂模式是一种创建新模式。

2024-03-16 17:46:56 886

原创 Fast DDS中的定时器

Fast DDS中的定时器主要有三个类组成:ResourceEvent,TimedEventImpl, TimedEvent。此时就开始按照指定的周期开始调用定时器函数&TestClass::timer_callback。第一步,初始化一个ResourceEvent 实例。

2024-03-13 20:48:14 247

原创 C++中的时间工具

本文主要记录C++标准中提供的时间处理工具,并提供简单实现的Linux平台的定时器demo;

2024-02-07 13:16:33 771

原创 序列化和反序列化

而序列化后的数据是平台无关的,可以在任何平台上被反序列化。因为序列化后的数据是以一种通用的格式(如JSON,XML等)存储的,所以在数据结构发生变化时,只需要更新序列化和反序列化的代码,而不需要修改网络协议。安全性:序列化后的数据更加安全,因为它可以对数据进行加密,防止数据在传输过程中被窃取或篡改。反序列化是序列化的逆过程,即将序列化的数据重新转化为原有的数据结构或对象。综上,尽管序列化和反序列化会带来一定的性能开销,但在进行网络通信时,通常建议使用序列化的方式来发送数据。

2024-01-25 21:01:23 530 1

原创 网络基础知识

当您尝试通过网络与IP地址为127.0.0.1的服务器建立连接时,实际上您正在与运行在您自己计算机上的服务器建立连接,而不是与网络上的其他服务器。IP地址127.0.0.1是一个特殊的IP地址,被称为本地回环地址或者localhost。这个地址经常在开发和测试过程中使用,允许开发者在没有网络连接的情况下测试网络应用程序,或者在不影响其他系统或网络的情况下测试网络连接。在计算机网络中,IP地址0.0.0.0有特殊的含义,其具体的含义取决于上下文。所以,IP地址0.0.0.0的具体含义取决于其被使用的上下文。

2024-01-16 21:01:38 2126 1

原创 网络组播的原理和使用

python实现一个使用socket模块创建一个组播套接字并将当前主机加入到该组播中。这个例子使用了组播地址"224.1.1.1"和端口5007,这个脚本可以用于验证功能或协助测试,定位问题。使用socket模块来获取当前主机的IP地址。

2024-01-15 11:19:19 457

原创 适配器模式

适配器模式和其C++实现

2024-01-11 18:59:52 480

原创 Fast DDS之UDP通信

本文主要记录Fast DDS中UDP通信的内容,包括UDP通信各中类对象的定义,关系,以及交互流程,并分析Fast DDS中UDP通信实现的优缺点,以及代码实现技巧等。

2024-01-03 14:15:22 466

原创 boost中的内存池

目录

2023-12-17 18:45:53 46

原创 内存模型与无锁编程

本文主要介绍C++新标准中的内存模型和无锁编程的原理和实现。

2023-12-14 15:56:00 820

原创 GUN特性总结

attribute 可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)书写特征为: attribute 前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribute__ 参数。当我们需要识别当前编译器能否支持GNU 语法拓展,我们可以使用 __GNU __ 宏作为区分。用于修饰函数时,它就相当于一个函数说明符,跟inline,Noreturn 属同一类。

2023-12-11 16:28:56 61

原创 iceoryx中的工具类

iceoryx中的工具类如:BumpAllocator,RelativePointer等代码分析。

2023-12-07 14:50:51 68

原创 自动驾驶框架

目录

2023-11-23 21:07:45 221

原创 自动驾驶术语汇总

L3(Level 3):有条件的自动化。车辆在某些条件下可以完全接管驾驶,如在高速公路上或者交通繁忙的市区,但在系统无法处理的情况下,驾驶员需要在一定的预警时间内接管车辆。这个级别的车辆可以在某些情况下接管驾驶,如高速公路驾驶,但驾驶员仍需随时准备接管控制。L1(Level 1):驾驶员辅助。这个级别的车辆有一些可以帮助驾驶员的系统,如自适应巡航控制或车道保持辅助,但是驾驶员仍然需要全程控制车辆。LCC(S):车道居中控制(Lane Centering Control System)

2023-11-23 20:35:38 1428 3

原创 Linux下PDB调试

Linux平台Python调试

2023-11-23 13:26:17 128

原创 ROS2中Executors对比和优化

ros2 executor介绍和优化

2023-11-21 20:15:21 237

原创 C++之type traits

Type traits在C++中,尤其是模板中应用极为广泛。

2023-11-20 17:13:33 166

原创 iceoryx之Roudi

iceoryx守护进程代码分析

2023-11-18 15:05:19 292

原创 Linux内存分配和工具使用

linux内存分配原理和内存相关问题排查思路和工具

2023-11-14 21:02:24 182

原创 python正则表达式

Python正则表达式使用总结

2023-11-08 10:36:30 385

原创 Fast DDS之Topic

Publications 关联到一个topic,subscriptions 关联到广义的TopicDescription。

2023-10-24 13:30:55 102

原创 Fast DDS之Subscriber

Subscriber扮演容器的角色,里面可以有很多DataReaders,它们使用Subscriber的同一份SubscriberQos配置。Subscriber可以承载不同Topic和数据类型的DataReader对象。

2023-10-19 21:20:27 279

原创 Fast DDS之Publisher

DataWriter归属于Publisher,对DataWriter来说,Publisher就是一个创建工厂。每个DataWriter在创建之处绑定到一个Topic,所以Topic必须先于DataWriter创建。instance的handler。如果handle是非空,那么它必须要被TypeSupport的getKey()获取到,否则write函数会失败。默认的DataWriterQos可以通过Publisher实例函数get_default_datawriter_qos()获取。

2023-10-19 17:31:22 185

原创 Fast DDS介绍

Fast DDS是一个DCPS(data-centric)数据中心的发布-订阅模型中间件,主要关注应用程序中处理和发送数据。

2023-10-18 16:58:13 280

原创 Fast DDS之Logging

大于等于Log::Kind级别的log会输出到STDERR中,其他的输出到STDOUT中。支持0或多个consumers,通过函数 Log::RegisterConsumer() 注册,Log::ClearConsumers()清空所有comsumers。标准输出,默认的输出方式。log模块的cmake中LOG_CONSUMER_DEFAULT 值为AUTO,STDOUT,或者没有被其他设置时。可以将log输入到文件中,并且可以使用write或append模式,清空写或追加log到log文件中。

2023-10-12 19:56:01 195

原创 Fast DDS之RTPS

Fast DDS中RTPS层相关内容

2023-10-10 20:11:04 252

原创 4+1视图与UML

4+1视图和UML的概念和用法

2023-10-10 11:24:02 877

原创 Fast DDS之共享内存

transport层负责为DDS用户数据收发和服务发现提供通信。包含UDP,TCP,SHM。

2023-10-07 21:50:53 530

原创 Fast DDS之Discovery

目录发现阶段发现机制Simple DiscoveryStatic DiscoveryDiscovery ServerManual Discovery发现阶段Participant Discovery Phase(PDP):这个阶段DomainParticipant通过周期性的广播消息获取互相的存在。默认情况下使用广播地址和端口,也有可能使用单播指定一系列地址Endpoint Discovery Phase (EDP):这个阶段DataWriters 和 DataReaders互相获取对方。为了实现这

2023-09-20 09:26:35 612 1

原创 Fast DDS之Domain

Domain可以认为是一个虚拟的网络用于运行所有在同一个domain中和隔离不同domain的APP。每个domain有一个唯一的uint32的domainId。当一个app需要加入domain时就需要使用这个domainId创建一个DomainParticipant,DomainParticipant的创建使用DomainParticipantFactory这个单例。使用DomainParticipant的GuidPrefix_t来区分是否在同意主机运行。

2023-09-11 16:46:10 176

原创 Fast DDS之Entity

目录EntityEntity

2023-09-01 09:24:19 142

原创 ROS2 CLI工具

【代码】ROS2 CLI工具。

2023-08-29 10:49:46 124

原创 ROS2之topic

ROS2之topic

2023-08-28 22:53:30 698

原创 ROS2中的node

【代码】ROS2中的node。

2023-08-28 22:46:52 94

原创 C++顺序容器

标准库定义了三个顺序容器适配器:stack(栈适配器),queue(队列适配器),priority_queue(优先队列),所有的适配器都要求容器具有添加,删除,以及访问尾元素的能力。传递给assign的迭代器不能指向调用assign的容器;• 若线性表需要频繁查找,很少进行插入和删除操作时,应该采用顺序存储结构;• 链表:O(n):需要遍历前面所有项以得到下标对应的项。• 数组:O(n):需要移动其后所有项的位置。单向链表,通过改变给定元素之后的元素完成。• 频繁插入和删除需要采用链表结构。

2023-08-24 22:35:39 135

原创 装饰(Decorator)模式

装饰模式是对象结构型模式,动态地给一个对象添加一些额外的职责。就增加的功能来说装饰器模式相比生成子类更为灵活。

2023-07-16 12:21:57 126

空空如也

空空如也

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

TA关注的人

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