ROS中Gazebo无法加载自定义机器人,卡在等待/gazebo/spawn_urdf_model服务
解决ROS中Gazebo未启动导致机器人模型无法生成的问题
你的launch文件仅启动了spawn_model节点,没有启动Gazebo仿真环境,因此spawn_model会一直等待Gazebo提供的/gazebo/spawn_urdf_model服务,最终导致进程停滞、Gazebo窗口无法打开。以下是具体解决思路:
1. 修改launch文件,添加Gazebo启动逻辑
在原launch文件中加入启动Gazebo的代码,推荐使用官方的empty_world.launch(适合空场景测试),修改后的示例如下:
<?xml version="1.0" ?> <launch> <!-- 启动Gazebo空世界,确保GUI显示 --> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="gui" value="true" /> </include> <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mrm_description)/urdf/mrm.xacro'"/> <arg name="x" default="0"/> <arg name="y" default="0"/> <arg name="z" default="0.5"/> <node name="mybot_spawn" pkg="gazebo_ros" type="spawn_model" output="screen" args="-param robot_description -urdf -model mrm -x $(arg x) -y $(arg y) -z $(arg z)"/> </launch>
2. 分步验证排查
- 先单独启动Gazebo:执行
roslaunch gazebo_ros empty_world.launch,确认Gazebo窗口正常打开。 - 新开终端运行你原来的spawn.launch文件,如果此时机器人能正常生成,即可确认问题根源是原launch缺少Gazebo启动步骤。
3. 额外检查项
- 确保
gazebo_ros包已正确安装:针对Noetic版本执行sudo apt install ros-noetic-gazebo-ros,其他ROS版本替换对应版本号即可。 - 确认工作区已编译并source:执行
catkin_make(或catkin build)后,运行source devel/setup.bash。
内容的提问来源于stack exchange,提问作者lorenzo21
相关产品推荐
相关产品推荐

