定义IDL数据类型及和ros2 msg的关系

1. ros2 为了兼容ros1, 只适配IDL中数据类型的子集,不支持enum及map数据类型,可用其他形式代替。

如对于IDL的枚举 enum,定义为如下形式可被ros2识别: 

        module Color_Enum
        {
            const uint8 COLOR_BLUE  = 0;  
            const uint8 COLOR_RED   = 1;
            const uint8 COLOR_BLACK  = 2;  
        };
        uint8 color;

对于map数据类型,可替换为:

       struct map_demo
       {
            uint32 key;
            string value;
       }
       struct Frame_map
       {
            sequence frame_map;
       };

2. 对于IDL的map类型来说,目前还只支持基本数据,暂不支持自定义类型Maps should support non-primitive types [13386] · Issue #83 · eProsima/Fast-DDS-Gen · GitHub

3. 对于同一个.idl文件中定义的多个struct来说,需要根据ros2数据规则,定义多个.msg文件才可被ros2识别.

你可能感兴趣的:(idl,ros2,msg)