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

如何通过ROS2终端命令在Gazebo中移动物体?

解决ROS2 Humble下Gazebo移动立方体的问题

一、修复/set_entity_state服务调用语法错误

你之前的命令报错是因为ROS2中SetEntityState服务的请求结构是嵌套的:请求根节点只有state字段,name、pose、reference_frame都属于state下的EntityState类型字段,不能直接放在根层级。

正确的服务调用命令:

ros2 service call /set_entity_state gazebo_msgs/srv/SetEntityState "{state: {name: 'cube1', pose: {position: {x: 20.0, y: 0.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}, reference_frame: 'world'}}"
  • 注意:数值建议加小数点(如20.0),字符串用单/双引号包裹,确保JSON结构嵌套正确;如果不需要修改姿态,orientation可以保留默认的四元数(w=1.0,其余为0)。

二、用ros2 topic pub实现移动

Gazebo提供了/gazebo/set_entity_state话题(类型为gazebo_msgs/msg/EntityState),可以直接发布话题来移动立方体,命令如下:

ros2 topic pub --once /gazebo/set_entity_state gazebo_msgs/msg/EntityState "{name: 'cube1', pose: {position: {x: 20.0, y: 0.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}, reference_frame: 'world'}"
  • --once参数表示只发布一次消息;如果需要持续发布(比如保持位置),可以去掉该参数并添加--rate 10(每秒发布10次)。

内容的提问来源于stack exchange,提问作者ErMo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:45:28