V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coala
V2EX  ›  程序员

[ROS] rosbridge CBOR-RAW 格式中"bytes"是如何解码?

  •  
  •   coala ·
    qq418745 · 2022-12-30 09:57:42 +08:00 · 1250 次点击
    这是一个创建于 689 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这里的 3.1.4 CBOR-RAW encoding ( cbor-raw ) 章节介绍了 CBOR-RAW 格式

    https://github.com/RobotWebTools/rosbridge_suite/blob/ros2/ROSBRIDGE_PROTOCOL.md

    我按照 CBOR 格式解开一个例子数据

    "a365746f706963722f636f6e6e65637465645f636c69656e7473636d7367a364736563731a63abf3fd656279746573581a010000000a0000003137322e31372e302e31d8f3ab6307c87615656e736563731a3765560e626f70677075626c697368"

    https://cbor.me/ --可解析 SBOR

    {
     "topic": "/connected_clients",
     "msg": {
       "secs": 1672213501,
       "bytes": h'010000000A0000003137322E31372E302E31D8F3AB6307C87615',
       "nsecs": 929388046
     },
     "op": "publish"
    }
    

    bytes 按照 rosbag 解码的思路行不通, 这个 bytes 应该如何解析?

    4 条回复    2022-12-31 02:32:32 +08:00
    NessajCN
        2
    NessajCN  
       2022-12-30 12:06:42 +08:00   ❤️ 1
    "bytes"那条给你的是 ROS serialization format,
    https://wiki.ros.org/roscpp/Overview/MessagesSerializationAndAdaptingTypes#Deserializing_from_Memory
    你如果想自己解码的话就照着给定的 type(rosbridge_msgs/ConnectedClients)调方法,类似
    ros::serialization::Serializer<rosbridge_msgs::ConnectedClients>::read(stream, my_value);
    (没试过,不一定准)
    coala
        3
    coala  
    OP
       2022-12-30 15:21:14 +08:00
    @NessajCN 感谢, 我主要不会 C++ , 因为 rosjava 很久没人维护, 我今天找了 python 和 JS 的库在试了.
    yenkn
        4
    yenkn  
       2022-12-31 02:32:32 +08:00   ❤️ 1
    竟然能在 V2EX 看到 ROS 的问题,楼上说的没错,这个 bytes 就是 ROS 的 serialization format ,本质上只是按顺序把数据一个个序列化,java 的话可以看一下 https://github.com/rosjava/rosjava_bootstrap ,把 msg 文件生成成 java 类之后直接调用对应类的 serialize/deserialize 函数应该就可以直接按照 msg 定义解析二进制数据了,JS 的话可以看看 https://github.com/foxglove/rosmsg-serialization
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6163 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:42 · PVG 10:42 · LAX 18:42 · JFK 21:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.