自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liu-yonggang的专栏

未来不迎 当时不杂 既过不恋

  • 博客(119)
  • 收藏
  • 关注

原创 fastdds共享内存数据通信

fastrtps_port+“port_id”:用于控制发送的数据,包含循环队列MultiProducerConsumerRingBuffer,队列中包含共享内存Node成员,共享内存Cell[port_queue_capacity_]数组。当发送数据时,首先在segment_size中申请内存(申请BufferNode用于保存申请offset、size、引用计数),拷贝到segment里,生成SharedMemManager::Buffer &buffer对象。

2023-12-11 21:23:56 740 1

原创 iceoryx(冰羚)-共享内存数据传输

此外,它还提供了offer-stopOffer API,用于控制发布者端口是否可被发现用于订阅服务器端口。此外,它还提供了订阅/取消订阅API,控制订阅端口是否应尝试订阅匹配的发布端口。上面的操作都是在共享内存中,发布进程拿到PublisherPortData对象,转换成PublisherPortUser对象,进行数据发送。订阅进程拿到SubscriberPortData对象,转换成SubscriberPortUser对象,进行数据发送。

2023-12-03 17:18:12 533

转载 Nanolog日志

million。

2023-12-02 21:05:35 100

原创 iceoryx(冰羚)-进程间消息同步

iceoryx进程间消息同步,是用socket或管道实现的,定义在iceoryx\iceoryx_posh\include\iceoryx_posh\internal\runtime\ipc_interface_base.hpp消息类型定义具体消息格式

2023-12-02 11:18:57 573

原创 iceoryx(冰羚)-publisher注册RouDi进程

IPC通信支持socket和管道,IpcInterfaceUser ->RouDi进程的socket, IpcInterfaceCreator接收RouDi进程的消息socket。1、发UserApp启动,发布REG消息过程。

2023-12-02 10:56:46 461

原创 iceoryx(冰羚)-共享内存分配

MemoryProvider::create()创建共享内存,先计算所有memoryblock size的总数,在创建共享内存,然后再用内存分配器BumpAllocator分配各个MemoryBlock,并用m_memory记录开始地址。m_introspectionMemPoolBlock 提供性能参数内存块,默认10,为introspection工具提供数据源.它包含。将m_portPoolBlock加入到m_defaultMemory.m_managementShm。

2023-12-01 14:08:05 1126

原创 CyberRT-共享内存实现

CyberRT共享内存类图。

2023-11-23 12:03:15 294

原创 iceoryx(冰羚)-简介

RouDi是Routing and Discovery的缩写。RouDi负责通信设置,但实际上并不参与发布者与订阅者或客户端与服务器之间的通信。鲁迪可以被认为是iceoryx的总机操作员。它的另一个主要任务是设置共享内存,应用程序使用共享内存交换有效负载数据。RouDi有时被称为守护进程,它管理共享内存并负责服务发现,即使订阅者/客户端能够找到发布者/服务器提供的主题。它还跟踪所有已初始化运行时的应用程序,从而能够创建发布者、订阅者、服务器或客户端。它为应用程序查询此信息提供了便利。

2023-11-15 20:47:36 713 2

原创 iceoryx(冰羚)-通信中间件解析

iceoryx(冰羚)-ipc消息通信][iceoryx(冰羚)-共享内存实现]

2023-11-15 20:23:49 872

原创 iceoryx(冰羚)-Architecture

本文概述了Eclipseiceoryx体系结构,并解释了它的基本原理。

2023-11-15 20:16:44 488

原创 iceoryx(冰羚)-iceoryx_examples/callback

侦听器是线程安全的,可以不受限制地使用。但是要注意,所有提供的回调都是在侦听器的后台线程中同时执行的。如果你访问这个回调中的结构,你必须确保你是唯一一个访问它的人,或者用“std::mutex”之类的保护来访问它。

2023-11-15 10:19:32 260

原创 iceoryx(冰羚)-Service Discovery

IPC通道(例如消息队列或UNIX域套接字)上的服务发现是不可执行的,因为传输的数据较大,这可能会导致多个帧的传输。如果发现大量高频服务,例如在启动时,IPC通道可能会成为瓶颈。

2023-11-14 21:15:23 259

原创 iceoryx(冰羚)-Listener设计

Listener是除WaitSet之外实现推送方法来检测特定事件并对其作出反应。监听器为用户提供了附加具有相应事件和回调的对象的能力。每当对象接收到指定的事件时,就会在Listener后台线程中调用相应的回调作为响应。WaitSet的两个关键区别是侦听器是事件驱动的而不是像WaitSet和Listener创建的那样由事件和状态驱动一个单独的后台线程,在该线程中执行事件回调,而在WaitSet中用户必须显式调用事件回调。##术语由附加对象用于通知Listener/WaitSet事件发生。

2023-11-14 20:39:22 221 1

原创 Fast-DDS 编译demo

示例 gdb examples/cpp/dds/HelloWorldExampleSharedMem/DDSHelloWorldExampleSharedMem。将build/src/cpp/ 目录添加到LD_LIBRARY_PATH。(gdb)delete breakpoints 断点编号 //删除断点。(gdb)thread apply all bt //查看所有线程堆栈。运行build/examples/cpp/dds 目录。(gdb)bt //查看当前线程堆栈。5、用gdb 打印堆栈。

2023-10-20 09:42:41 249

原创 ros2 代码风格检查

注意:和Uncrustify一样,ament_uncrustify也会直接修改源代码文件,所以在使用之前最好备份你的代码。ament_uncrustify是一个用于ROS2项目的代码格式化工具,它使用Uncrustify作为底层的格式化工具。这个命令会输出不符合规则的代码行和文件。–config选项用于指定格式化规则的配置文件。这个命令会自动修复不符合规则的代码,并且把修复后的代码写回原来的文件。3.ament_uncrustify 命令详情。

2023-10-10 14:35:01 84

原创 查看kernel 是否支持trace

查看kernel 是否支持trace。

2023-08-30 13:35:09 71

原创 临江仙·送钱穆父

最后二句“人生如逆旅,我亦是行人。然而分别虽久,各自也有自己人生不同的艰难困苦,但再见面依然是欢乐开怀,彼此心意相通,互相一笑就犹如沐浴着春天般的暖阳。”,这句则是赞扬友人的品格高尚,犹如秋天的竹子一般始终高风亮节。元祐初年,苏轼朝为起居舍人,钱穆父为中书舍人,两人志趣相投,感情深厚。然而自从上一次在京城别后,到此次再次相见已经是时隔三年了,各自的于人世间奔走漂泊,俩人始终都没有安定下来。这是一首赠别词,却不同于一般送别诗词的缠绵伤感、哀怨悲凉的风格,写的豪放又有情韵,洒脱又富有哲理,很有苏轼诗词的风格。

2023-07-20 19:32:50 85

原创 工作任务管理表

2023-07-20 13:33:02 56

原创 使用shell 脚本运行命令

【代码】使用shell 脚本运行命令。

2022-12-14 15:13:39 318 1

原创 rqt_graph 报No module named ‘python_qt_binding.QtSvg‘

解决方法

2022-12-07 14:02:35 422 1

原创 vs code .clang-format格式化错误问题

使用window 上vscode-> format document .格式化成功。1、在Ubuntu中安装 clang-format插件。2、将.clang-format文件放到项目目录中。3、在代码文件中,右键format document。windows 用ssh 远程到 Linux 代码。项目中代码需要格式化。

2022-11-23 15:19:53 1355

原创 cmake(1)

构建系统描述了如何使用构建工具从项目的源代码构建项目的可执行文件和库,以实现过程的自动化。例如,构建系统可以是用于命令行生成工具的生成文件,也可以是用于集成开发环境(IDE)的项目文件。该项目使用cmake语言(7)手册中描述的文件指定其构建系统,从名为CMakeLists.txt的顶级文件开始。使用<path to existing build>作为构建树,并从其CMakeCache.txt文件加载到源树的路径,该文件必须已经由以前运行的CMake生成。要使用CMake构建软件项目,请生成项目构建系统。

2022-11-06 19:21:33 567

原创 cmake guides

cmake构建系统(7)手册旨在帮助开发人员扩展维护构建系统的知识,并熟悉cmake中可以表示的构建目标。cmake包(7)手册解释了如何创建可由基于cmake的第三方构建系统轻松使用的包。这将详细说明运行cmake(1)或cmake gui(1)可执行文件所需的步骤,以及如何选择生成器,以及如何完成构建。CMake是一个管理源代码构建的工具。最初,CMake被设计为Makefile的各种方言的生成器,如今CMake生成Ninja等现代构建系统以及Visual Studio和Xcode等IDE的项目文件。

2022-11-06 16:48:10 249

原创 cmake 学习 cmake-package(7)

cmake-packages(7)installforeach 使用configure_file使用foreach 使用说明

2022-11-05 21:14:13 1037

原创 cmake 工具链(7)

CMake使用实用工具链来编译、链接库和创建档案,以及驱动构建的其他任务。可用的工具链实用程序取决于启用的语言。在正常构建中,CMake会根据系统自省和默认值自动确定主机构建的工具链。在交叉编译场景中,可以使用有关编译器和实用程序路径的信息指定工具链文件。...

2022-07-15 15:58:33 1385

原创 ros2 topic 源码解析

ros2 命令加载过程ros2 topic代码位置:ros2\src\ros2cli\ros2topic最终运作在ros2topic文件中setup.py 定义挂载点,加载命令的执行函数from setuptools import find_packagesfrom setuptools import setuppackage_name = 'ros2topic'setup( name=package_name, version='0.13.1', packages=f

2022-04-01 13:25:38 2895

原创 C++解析XML 工具非常好用

开源解析XML 小工具,非常好用https://pugixml.org

2022-03-02 10:05:00 697

原创 apollo cyber RT模块调研

cyber RT总体框架图cyber RT内部模块example talker参考链接apollo github官网源码中有doc,API介绍Apollo项目代码这文章中提供了ROS的调试工具与Cyber RT框架提供的工具对比。问题:在看代码时,出现函数名后面对应类型, 没看懂。感觉是告诉auto 返回类型。template <typename MessageT>auto Node::CreateWriter(const proto::RoleAttributes&

2022-02-11 14:53:57 584 1

原创 ubuntu 18.04 成功编译 ros2 rqt源码

ubuntu 18.04 成功编译 ros2 rqt源码遇到的问题很多,大概总结一下1、Qt、PyQt5 版本问题2、rqt源码问题,没个分支都不一样。3、运行库问题。各种链接不到。4、sip 生成c++代码问题。问题太多了,在这就不写了。大家有什么问题,可以问我哦。...

2022-01-26 18:39:51 1728

原创 ros2pkg python代码解析

python module加载 init.py的作用ros2 加载过程ros2pkg 文件目录|-- CHANGELOG.rst|-- package.xml|-- resource| `-- ros2pkg|-- ros2pkg| |-- __init__.py| |-- api| | |-- __init__.py| | `-- create.py| |-- command| | |-- __init__.py //说明这是一个包|

2022-01-20 08:58:33 678

原创 ros2 命令加载过程

ros2 命令#!/usr/bin/python3# EASY-INSTALL-ENTRY-SCRIPT: 'ros2cli==0.13.1','console_scripts','ros2'import reimport sys# for compatibility with easy_install; see #2198__requires__ = 'ros2cli==0.13.1'try: from importlib.metadata import distribution

2022-01-19 17:16:18 2426

原创 python sip生成C++ 文件demo

… _ref-using:Using SIPBindings are generated by the SIP code generator from a number of specificationfiles, typically with a .sip extension. Specification files look verysimilar to C and C++ header files, but often with additional information (inthe

2022-01-16 12:37:40 1017

原创 FastRTPS-安装手顺

1 基本要求1.1 Boost 库和头文件eProsima Fast RTPS 需要 Boost 发行版,因此用户必须安装 1.57 版。按照 boost 发行版中包含的说明进行安装。Windows 安装程序已经为必要的 boost 库提供了 boost 二进制文件。不过,某些测试可能需要用户编译 boost 头文件。1.2 Windows 7 32 位和 64 位1.2.1 Visual C++ 2010 或 2013 可再发行包安装。eProsima Fast RTPS 需要 Visual

2022-01-09 18:05:23 992

原创 FastRTSP 内部设计

进程间共享内存模型概述本文档描述了用于交换数据消息的软件组件的进程间共享内存通信的模型。该模型的目标是提供适用于实时发布-订阅 DDS(数据分发服务)的基于共享内存的传输层。语境eProsima 已收到商业提案,以实施共享内存传输作为其 FastRPTS 产品的改进。本文档中列出的目标是从客户提案中提取的。对标准网络传输的改进减少操作系统内核调用:这对于 UDP / TCP 等传输是不可避免的(即使使用环回接口)。大消息支持:网络堆栈需要对大数据包进行分段。避免数据序列化/反序列化过程:这

2022-01-09 17:45:16 2149

原创 FastRTSP 设计概要

进程内传输几个要求,每个都有一个部分。识别本地端点同一进程上的端点在其 GUID 前缀的前 8 个八位字节上具有相同的内容。GUID_t 重构提供方法is_builtin()、is_on_same_process_as(other_guid)和is_on_same_host_as(other_guid)考虑其他改进将 Guid.h 拆分为三个标头(guid、prefix 和 entity_id)将 EntityId_t 转换为 uint32_t在 GuidPrefix_t 上使用联合来

2022-01-09 17:20:06 847

原创 FastRTPS - eProsima FASTRTPSGEN Manual

1 介绍eProsima FASTRTPSGEN 是一个Java 应用程序,它使用IDL 文件中定义的数据类型生成源代码。此生成的源代码可在您的应用程序中使用,以便发布和订阅您定义类型的主题。要声明结构化数据,您必须使用 IDL(接口定义语言)格式。 IDL 是一种规范语言,由 OMG(Object Management Group)制作,它以与语言无关的方式描述接口,使不共享相同语言的软件组件之间能够进行通信。eProsima FASTRTPSGEN 是一个读取 IDL 文件并解析 OMG IDL

2022-01-09 17:07:54 1476

原创 ros2 代码结构及源码解析

一、ros2 软件架构二、ros2 命令代码解析1.ros2 action 源码解析2.ros2 bag 源码解析3.ros2 run 源码解析4.ros2 launch 源码解析三、ros2 相关模块介绍fastrtsp 源码解析

2022-01-09 14:01:44 6154

原创 Ubuntu 18.04安装sshd遇到的问题

出现上面的错误解决方法:安装openssh-server(以ubuntu操作系统为例)$ sudo apt install openssh-server$ sudo /etc/init.d/ssh start进入ssh debug模式/usr/sbin/sshd -dssh:Privilege separation user sshd does not exist解决vim /etc/passwd 加上sshd:x:109:65534::/var/run/sshd:/usr/sbi.

2022-01-08 17:22:45 728

原创 ros2 run命令代码分析

这里以ros2 run demo_nodes_cpp talker为示例ros2 是python 文件, which ros2 :查看ros2位置#!/usr/bin/python3# EASY-INSTALL-ENTRY-SCRIPT: 'ros2cli==0.13.1','console_scripts','ros2'import reimport sys# for compatibility with easy_install; see #2198__requires__ = 'ros

2022-01-04 20:59:12 1854

原创 ros2中vcs import src < ros2.repos 命令

vcstool用于维护来自多个版本控制系统的项目工作区的命令行工具。vcstool

2021-12-25 21:45:11 1521

空空如也

空空如也

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

TA关注的人

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