ROS 2 gazebo 运行报错问题汇总(未完待续)

前情提要

最近在使用UBUNTU22.04 on WSL2来学习ROS2,在尝试ROS2 workshop给的Cartographer教程时遇到了不少报错问题,在此汇总。

1. ERROR: Service %s/spawn_entity unavailable. Was Gazebo started with GazeboRosFactory?

场景描述

最近在使用UBUNTU22.04 on WSL2来学习ROS2,在尝试ROS2 workshop给的Cartographer教程时,当执行完3.3.1的命令后,gazebo报错如下:

[spawn_entity.py-4] [ERROR] [1721906966.950634417] [spawn_entity]: Service %s/spawn_entity unavailable. Was Gazebo started with GazeboRosFactory?
[spawn_entity.py-4] [ERROR] [1721906966.950878273] [spawn_entity]: Spawn service failed. Exiting.

解决方案

新开一个命令行,输入如下命令后再开启gazebo。1

gazebo -s libgazebo_ros_init.so -s libgazebo_ros_factory.so myworld.world

这样做是为了确保gazebo加载了gazebo_ros_factory相关库。
PS. 该报错不止以上未加载gazebo_ros_factory等库这一种原因,还有可能源于服务、节点等命名问题,见2

2. ERROR: [gzserver-1]: process has died [pid 155210, exit code 255, cmd ‘gzserver /opt/ros/humble/share/turtlebot3_gazebo/worlds/turtlebot3_world.world -slibgazebo_ros_init.so -slibgazebo_ros_factory.so -slibgazebo_ros_force_system.so’].

解决方案

尝试了网上找到的两种方案,均未解决我的问题,但还是列在这里供大家参考。

  1. 安装所有gazebo相关包,source后再重试
sudo apt-get install ros-humble-gazebo-*
source /usr/share/gazebo/setup.bash
  1. 杀掉所有gazebo相关进程
    gazebo执行时主要工作的有两个进程:gzclient 和 gzserver。gzclient 负责仿真物理传感器和渲染等工作,gzserver则提供GUI接口,两者通过gazebo库函数进行通信。这两个进程不能正常停掉释放资源时,便会影响gazebo的正常启动与工作。杀掉这些进程并重新执行:
killall gzserver
killall gzclient

该方法对部分人奏效,但不包括我。

2024.7.30 更新:重启电脑后,再次启动wsl,此问题神奇解决,gzserver-1不再无故中止运行。玄学问题+1


  1. Was Gazebo started with GazeboRosFactory? error when launching urdf file ↩︎

  2. Service %s/spawn_entity unavailable. Was Gazebo started with GazeboRosFactory? ↩︎

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值