ROS2_ros2的bag数据-_通过duckdb查看db3数据

视频

 cv_img = bridge.imgmsg_to_cv2(data, "bgr8")
 depth_img = bridge.imgmsg_to_cv2(data, "16UC1")
 ffmpeg-python
 视频编码 fourcc:全名Four-Character Codes,四字符代码,该编码由四个字符组成	 

读取数据集

  读取Parquet 读取json 以及jsonl 格式数据集

读取ros2录得数据

01.查看插件 
     SELECT extension_name, installed, description FROM duckdb_extensions();

02.加载插件   https://extensions.duckdb.org/v1.3.0/linux_amd64/sqlite_scanner.duckdb_extension.gz
  ## gzip -dk sqlite_scanner.duckdb_extension.gz

  INSTALL sqlite;  ## 离线安装 INSTALL '/opt/data/sqlite_scanner.duckdb_extension';
  LOAD sqlite;     

03.使用插件 ###use the ATTACH statement with the sqlite or sqlite_scanner type

   ATTACH 'D:\rosbag2.db3' (TYPE sqlite); 
   PRAGMA database_list;	   
   USE rosbag2;   ## 要使用对应文件名的这个
   SHOW TABLES;
04.使用 DESCRIBE 命令来查看表的结构。这个命令会显示表的列名、数据类型以及其他相关信息
    四张表: messaegs schema topics  metadata

    describe metadata;
	      id metadata_version metadata
	describe schema	 ;
	      schema_version ros_distro  eg: 3 humble
	describe topics ;
	     id  name type  serialization_format offerd_qos_profiles
		 id: 等于表messages中的topic_id
		 type:
		    ROS2提供了大量标准消息类型,广泛应用于各种机器人系统和应用程序。这些消息被组织在std_msgs包中
			   std_msgs/Header.msg 是一种常用的标准消息,它包含时间戳、坐标帧和序列号信息,常用于消息的同步与时间戳管理
			eg:sensor_msgs/msg/CompressedImage.msg
             std_msgs/msg/Header header
             string format
             uint8[] data				
			   
		serialization_format
			消息的序列化和反序列化  CDR (Common Data Representation) 格式作为序列化方式
		    在ROS2中,消息在通过网络发送或存储到文件之前需要序列化,在接收端则进行反序列化以还原原始数据结构。
              ROS2支持多种序列化格式,包括但不限于以下几种:
                 -cdr(Common Data Representation)格式:一种高效的二进制序列化格式,广泛用于ROS系统中。
				 -XML 格式:人类可读但体积较大,适用于调试和需要人类阅读的场景。
            ‌CDR序列化是 CORBA(通用对象请求代理体系结构)中用于IDL(接口定义语言)数据类型与底层字节流相互转换的标准化方法‌ 
               一种是标准的 CDR(Common Data Representation)序列化机制
			   eProsima Fast CDR是一个C ++库,提供两种序列化机制。 一种是标准CDR序列化机制,另一种是修改标准的更快实现
			
           CORBA体系结构 CORBA(Common ObjectRequest Broker Architecture,公共对象请求代理体系结构)
		       是对象管理组织(Object Management Group,OMG)为
		       解决分布式计算环境(Distributed Computing Environment,DCE)中,
		       硬件和软件系统的互连而提出的一种解决方案 
            
            主要分为三个部分: 
			   接口定义语言(IDL) 对象请求代理(ORB)  ORB之间的互操作协议IIOP	
                  IDL 是CORBA定义的一种接口定义语言,并且CORBA定义了IDL到各语言的映射关系(Ada,C,C++,Smalltalk,Java,Python),通过映射关系实现跨语言				   
			      ORB  CORBA的核心,对象之间建立关系的中间件,使用ORB用户可以调用服务对象(本地,网络连接的其他机器)上的方法
				  
			DDS(Data Distribution Service)是一种以数据为中心的分布式通信协议,由OMG(Object Management Group)发布	
        QoS policies (策略):基本QoS配置文件包括以下策略设置
		     History (历史): Reliability (可靠性):  Durability (持久性) 
			 Deadline (截止时间):  Lifespan (寿命)  Liveliness_Lease_Duration (租约持续时间): 
			 depth   Liveliness  avoid_ros_namspace_conventitons
			OMG组织已经提出了22种标准的QoS策略 ,开放了9种?
	describe messages;
       id  topic_id  timestamp  data		
			 
 数据导出 
     COPY lineitem TO 'lineitem.csv';	 

DDS协议

DDS标准主要分为以下四个部分。
 第一部分是核心标准,包括DDS协议、RTBS协议、Cecired协议以及X-TYPE协议等。
 第二部分是扩展标准,其中定义了像XML协议、RPZ协议等。
 第三部分是网关协议标准,主要定义了DDS协议与其他协议之间转换的标准和规范要求。
 第四部分是API标准,针对不同的编程语言如C、C++、Java等,规定了实现相应DDS通信中间件功能所需遵循的API接口规范要求

ZeroMQ,简称ZMQ、0MQ

An open-source universal messaging library,顾名思义就是一个可调用的快速消息通信网络库。	  
 Kafka、
 RabbitMQ、 RabbitMQ是一个AMQP实现,传统的messaging queue系统实现,基于Erlang
 RocketMQ 
 
 ZeroMQ只是一个网络编程的Pattern库,将常见的网络请求形式(分组管理,链接管理,发布订阅等)模式化、组件化,简而言之socket之上、MQ之下
   偏重于实时数据通信场景
   用 zmq 方便地做socket ZeroMQ具有一个独特的非中间件的模式,更像一个socket library
   普通的 socket 是端到端的(1:1的关系),而 ZMQ 却是可以N:M 的关系
   ZeroMQ套接字是与传输层无关的:ZeroMQ套接字对所有传输层协议定义了统一的API接口。
     默认支持 进程内(inproc) ,进程间(IPC) ,多播,TCP协议,在不同的协议之间切换只要简单的改变连接字符串的前缀。可
    ZeroMQ仅提供非持久性的队列

商汤 sensecore

针对不同中间件,做了统一适配层(RSCL)封装,屏蔽不同的中间件和底软的差异,
   为上层SenseAuto Pilot应用软件提供统一化接口,同时包括录制回放、性能分析、数据的切分、可视化等工具链都基于统一适配层实现。
   统一适配层(RSCL) 针对不同的中间件封装 

底层DDS

FastDDS(原名Fast-RTPS)是一种基于DDS(Data Distribution Service)标准的实现,由eProsima开发。它是一个开源的中间件,专为高性能分布式系统设计

参考

 https://docs.ros2.org/foxy/api/sensor_msgs/index-msg.html
 https://docs.ros.org/en/humble/
 https://docs.ros.org/en/
 https://github.com/eProsima/Fast-CDR
 ROS2通讯服务质量Qos介绍与样例
 ros2从db3包中提取出录制的图像 https://blog.csdn.net/CHNNNNNNNN/article/details/146485376    
 使用ROS发布aligned_depth_to_color/image_raw话题读取深度信息   https://zhuanlan.zhihu.com/p/4334332782   
 深度学习输入图像尺寸惯用 图像深度信息获取       https://blog.51cto.com/u_16099265/8947465
posted @ 2025-06-27 18:03  辰令  阅读(160)  评论(0)    收藏  举报