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

    XML格式的launch文件启动后ros2 param list读取不到参数

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

      我用XML格式写了一个ROS2的launch文件,如下:

      <launch>
          <node pkg="gmc_sensor" exec="gnss_node" name="gnss_node">
              <param name="gnss_ip_addr"  value="192.168.8.1"/>
              <param name="gnss_net_port" value="11211"/>
          </node>
      </launch>
      

      在c++的节点文件中,读取两个参数值。

      this->declare_parameter("gnss_ip_addr");
      bool ret = this->get_parameter("gnss_ip_addr", gnssIpAddr_);
      

      节点文件被launch文件启动成功,正常运行。
      同时,我在终端输入:

      ros2 param list
      

      返回: Exception while calling service of node '/gnss_node': None

      查了网上很多教程,也没搞清楚我到底哪里出错了。
      请教,我的代码哪里有问题?为什么没有参数可查?

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

        @凌云 试试这个

        ROS2的参数其实是用服务实现的,小鱼是怎么知道的呢?

        随意运行一个节点,你使用下面的指令,就可以看到多出来很多的参数相关的服务。

        ros2 service list
        

        比如启动乌龟模拟器

        ros2 run turtlesim turtlesim_node
        

        在这里插入图片描述
        多出来的这些服务就是用于操作这个节点的参数的

        /turtlesim/describe_parameters
        /turtlesim/get_parameter_types
        /turtlesim/get_parameters
        /turtlesim/list_parameters
        /turtlesim/set_parameters
        /turtlesim/set_parameters_atomically
        

        我们如何使用服务查看参数呢?

        手动调一下服务就行了~

        ros2 service call /turtlesim/list_parameters rcl_interfaces/srv/ListParameters "{prefixes: [],depth: 0}"
        

        在这里插入图片描述

        这里可以看到结果里的四个参数

        names=['background_b', 'background_g', 'background_r', 'use_sim_time']
        

        采用ros2 param list再看看对不对

        ros2 param list
        

        在这里插入图片描述
        是不是长的一样

        总结

        通过上面的实验告诉我们ROS2的参数操作其实就是通过服务通信方式实现的,获取参数列表,set和get操作就是操作相应的服务。

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

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