视频
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