鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ROS2 参数监控功能是否可以监控自定义结构体参数?

    已定时 已固定 已锁定 已移动
    ROS 2相关问题
    ros2 参数监控 大量参数 结构体参数监控
    2
    5
    552
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 凌云凌
      凌云
      最后由 编辑

      ROS2的参数监控在官方教程中仅仅是监控了一两个int型和double型的参数。根据实际应用需求,我需要监控的参数接近100个,数量庞大的参数监控如果使用教程中的方式,每个参数定义一个回调函数,感觉不是很妥当。是否有更好的方式?是否可以自定义结构体参数,并对其进行监控,如果这样可行,那在回调函数中,获取这个结构体参数中各成员的值是否可以通过如下方法进行:
      auto cb = [this](const rclcpp::Parameter &p) {
      RCLCPP_INFO(this->get_logger(),
      "cb: received an update to parameter '%s' of type: %s: %.2f",
      p.component_a.get_name().c_str(),
      p.component_a.get_type_name().c_str(),
      p.component_a.as_double());
      }
      假设结构体参数为:
      typedef struct
      {
      component_a;
      component_b;
      }
      或者是否有更加合理的方式来实现这个功能?谢谢。

      小鱼小 1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @凌云
        最后由 编辑

        @凌云 根据我所知的,是不能的。不过是参数是支持string的,而string类型和结构体其实可以互转的。

        typedef struct  A
        {
        int a;
        int b;
        }test_a_t;
        
        test_a_t a1;
        
        string str_a1(reinterpret_cast<char*>(a1),sizeof(test_a_t));
        test_a_t a2 = reinterpret_cast<test_a_t>(str_a1.data());
        

        上述代码随手写的,静态转换上可能存在些问题,但一定是可以互转的。

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        凌云凌 1 条回复 最后回复 回复 引用 0
        • 凌云凌
          凌云 @小鱼
          最后由 编辑

          @小鱼 您的意思,把结构体参数转换成string型变量,然后监控这个变量吗。
          是否可以转换成字节数组型变量,这样是否更方便一点?就像结构体通信时编解码那样。

          小鱼小 1 条回复 最后回复 回复 引用 0
          • 小鱼小
            小鱼 技术大佬 @凌云
            最后由 编辑

            @凌云 字节数组理论也是可以的,只要能容纳数据就可。

            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

            凌云凌 1 条回复 最后回复 回复 引用 0
            • 凌云凌
              凌云 @小鱼
              最后由 编辑

              @小鱼 好的,谢谢解惑。我有空试试。

              1 条回复 最后回复 回复 引用 0
              • 第一个帖子
                最后一个帖子
              皖ICP备16016415号-7
              Powered by NodeBB | 鱼香ROS