You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅通过Launch文件调用ROS服务并集成运行turtlesim与自定义节点?

在ROS Launch文件中添加服务调用

当然可以将这些服务调用写入Launch文件,下面是具体实现方法:

你的核心需求是在turtlesim和自定义节点启动后,自动执行rosservice /turtle1/teleport_absolute和rosservice clear命令。由于ROS服务需要等待节点完全启动并注册服务后才能调用,所以必须加入服务等待逻辑,避免调用失败。

修改后的Launch文件

<launch>
    <!-- 启动turtlesim节点 -->
    <node name="turtlesim" pkg="turtlesim" type="turtlesim_node"/>
    <!-- 启动自定义割草节点 -->
    <node name="turtle_lawnmower" pkg="turtle_lawnmower" type="turtle_lawnmower_node"/>
    
    <!-- 初始化turtle位置并清除画布 -->
    <node name="turtle_init" pkg="bash" type="bash" 
          args="-c 'rosservice wait /turtle1/teleport_absolute; 
                   rosservice call /turtle1/teleport_absolute x=1.0 y=1.0 theta=0.0; 
                   rosservice wait /clear; 
                   rosservice call /clear'" 
          output="screen" required="false"/>
</launch>

关键说明

  • 服务等待逻辑:使用rosservice wait /服务名确保目标服务已经可用后再执行调用,避免因节点未完全启动导致的调用失败。
  • bash节点执行命令:通过bash包的bash节点,将多个服务命令串联执行,一次性完成初始化操作。
  • 参数说明:
    • required="false":即使这个初始化节点执行完成退出,也不会导致整个launch进程终止。
    • output="screen":可以在终端看到服务调用的输出信息,方便调试。

如果你的turtle不是默认的turtle1,只需要把命令中的/turtle1/teleport_absolute替换成对应的/turtleX/teleport_absolute即可。

内容的提问来源于stack exchange,提问作者nino dragičević

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:45:30