gazebo执行Save World As 保存世界界面卡住不动的解决办法

在使用Virtualbox上的Ubuntu 18.04和Gazebo9.0时,遇到点击save world as导致界面卡死的现象。问题表现为屏幕变暗,无法弹出保存窗口。经过发现,实际上是界面未刷新,每次操作后需要最小化再最大化Gazebo以刷新保存界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

        在学习ROS Gazebo仿真,gazebo中加入任意模型,然后点击save world as然后卡死的问题一直无法解决。

        现象:点save as world屏幕变暗,无窗口弹出,点缩小再点开会出现储存路径但是卡在那里无法操作。

环境:

        Virtualbox + Ubuntu18.04 + Gazebo9.0

原因及解决:

        其实只是界面不刷新,此后每一步操作,无论是点击一个目录还是给文件命名,都需要再次最小化gazebo,最大化gazebo一遍,保存界面才会刷新。

在ROS 2 (Robot Operating System) 中,Gazebo是一个用于创建和模拟机器人环境的工具。如果你已经创建并保存了一个世界文件(通常是`.world`或`.gz_world`格式),你可以按照以下步骤在Gazebo中加载它: 1. **确保Gazebo已启动**: 打开终端,运行 `ros2 launch gazebo_ros empty_world.launch.py` 或者如果已经在运行Gazebo,可以关闭再重启,指定你要加载的世界文件。 2. **加载世界文件**: 使用`spawn_model`服务或者命令行工具,例如: - 如果你有模型名为`my_world.world`,可以在终端输入: ``` rosservice call /gazebo/spawn_sdf_model "{model_file: 'package://my_package/models/my_world.world'}" ``` 或者通过Python客户端: ```python import rclpy from gazebo_msgs.srv import SpawnEntity # 替换为实际的包名和模型名称 package_name = "my_package" model_name = "my_world" def load_world(): service = node.create_client(SpawnEntity, "/gazebo/spawn_entity") future = service.call_async({ "entity_xml": f'<model name="{model_name}"><uri>model://{package_name}/{model_name}.sdf</uri></model>' }) rclpy.spin_until_future_complete(node, future) if future.result() is not None: print(f"Model {model_name} spawned successfully.") else: print("Failed to spawn the model.") rclpy.init() node = rclpy.create_node("load_world") try: load_world() finally: rclpy.shutdown() 3. **查看和交互**: 一旦模型成功加载,你可以在Gazebo的用户界面(UI)中查看和操作它。 如果你想要列出所有当前加载的世界,可以在Gazebo UI中点击"World"菜单,然后选择"Open World",或者在命令行里运行 `rosservice call /gazebo/get_model_states` 来获取信息。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值