当前位置: 首页 > news >正文

Gazebo 启动时候配置物体

1. 准备模型

mkdir -p ~/.gazebo/models/table
echo 'export GAZEBO_MODEL_PATH=$HOME/.gazebo/models:$GAZEBO_MODEL_PATH' >> ~/.bashrc
source ~/.bashrc
# 从https://github.com/osrf/gazebo_models下载模型
# 桌子
cd ~/.gazebo/models/table
wget https://raw.githubusercontent.com/osrf/gazebo_models/master/table/model.sdf
wget https://raw.githubusercontent.com/osrf/gazebo_models/master/table/model.config

2. 通过world文件(方案一)

2.1 创建新world文件
cd ~/suo/ur_gazebo/install/ur_simulation_gazebo/share/ur_simulation_gazebo
mkdir worlds
cd worlds
touch compo.world
# 写入下面内容
	<?xml version="1.0"?>
	<sdf version="1.6">
	  <world name="default">
	    <!-- 原始UR5模型(由ur_sim_control.launch.py自动加载) -->
	    
	    <!-- 新增桌子模型 -->
	    <include>
	      <uri>model://table</uri>
	      <pose>1.5 0 0 0 0 0</pose>
	    </include>
	  </world>
	</sdf>

2.2. 修改启动文件
# 启动文件
/home/suoxd/suo/ur_gazebo/src/Universal_Robots_ROS2_Gazebo_Simulation/ur_simulation_gazebo/launch/ur_sim_control.launch.py
gazebo = IncludeLaunchDescription(
    PythonLaunchDescriptionSource(
        [FindPackageShare("gazebo_ros"), "/launch", "/gazebo.launch.py"]
    ),
    launch_arguments={
        "gui": gazebo_gui,
        "world": PathJoinSubstitution([
            FindPackageShare('ur_simulation_gazebo'), 
            'worlds', 
            'compo.world'  # 新增的世界文件
        ])
    }.items(),
)

在这里插入图片描述

2.3 手动拷贝world文件

在ROS 2中,安装非代码文件(如worlds、models、launch文件等)需要使用install(DIRECTORY …)命令。例如,安装launch文件时,可能会有类似install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})的指令。用户需要在CMakeLists.txt中添加类似的命令来安装worlds目录。或者,可以手动将worlds文件从src目录拷贝到install目录。
在这里插入图片描述

2.4 编译拷贝

修改ur_simulation_gazebo/CMakeLists.txt,增加对worlds目录的编译

install(
  DIRECTORY worlds/
  DESTINATION share/${PROJECT_NAME}/worlds
  FILES_MATCHING
  PATTERN "*.world"
)

重新编译项目
colcon build --packages-select ur_simulation_gazebo --cmake-force-configure

在这里插入图片描述

3. 通过节点(方案二)

# 启动文件
/home/suoxd/suo/ur_gazebo/src/Universal_Robots_ROS2_Gazebo_Simulation/ur_simulation_gazebo/launch/ur_sim_control.launch.py
    # 新建桌子节点
    spawn_table = Node(
        package='gazebo_ros',
        executable='spawn_entity.py',
        arguments=[
            '-entity', 'table', 
            '-x', '1.5', '-y', '0', '-z', '0',
            '-database', 'table'
        ],
        output='screen'
    )

    nodes_to_start = [
        robot_state_publisher_node,
        joint_state_broadcaster_spawner,
        delay_rviz_after_joint_state_broadcaster_spawner,
        initial_joint_controller_spawner_stopped,
        initial_joint_controller_spawner_started,
        gazebo,
        gazebo_spawn_robot,
        spawn_table,  #新增节点
    ]

在这里插入图片描述

4. 仿真启动

ros2 launch ur_simulation_gazebo ur_sim_control.launch.py ur_type:=ur5 launch_rviz:=false

在这里插入图片描述

相关文章:

  • llama.cpp编译
  • 任务11:路由器配置与静态路由配置
  • Web网页制作(静态网页):千年之恋
  • INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性
  • nlp培训重点-5
  • 【Python】Hydra 用法详解
  • web—HTML
  • 【Java篇】数据类型与变量:窥见程序的天地万象
  • wireshark点击快捷无法打开
  • 基于python大数据的招聘数据可视化与推荐系统
  • stackqueue
  • Python 实现图片提取文字
  • 基于yolov11的西红柿番茄叶子病害检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • WinForm模态与非模态窗体
  • 低空经济快速发展,无人机人才培养及校企实验室共建技术详解
  • Eclipse 查看 JAVA SE 23 官方API 源代码
  • 【0基础跟AI学软考高项】成本管理
  • 战争三年,乌克兰已满目疮痍
  • 数据结构第七节:AVL树(初阶)
  • 问题解决:AttributeError: ‘NoneType‘ object has no attribute ‘text‘
  • 河北邯郸回应被曝涉生猪未检疫、注水问题:将严厉查处违法行为
  • 南宁海关辟谣网传“查获600公斤稀土材料”:实为焊锡膏
  • 三人在共享单车上印小广告被拘,北京警方专项打击非法小广告
  • 大学2025丨苏大教授王尧:文科最大的危机是阐释世界的能力弱化
  • 调查丨永久基本农田沦为垃圾堆场,整改为何成“纸面工程”?
  • 淄博一酒店房间内被曝发现摄像头,当地警方已立案调查