gazebo安装_【ROS 学习笔记】Gazebo

本文详细介绍了如何在ROS中使用Gazebo进行仿真,包括gazebo_ros_pkgs元功能包的作用,gazebo_ros的用法,如打开世界模型和生成URDF机器人,以及gazebo_plugins中的各种插件类型和添加方法。此外,还提及了gazebo与ros_control的结合。

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

0. 简介

官网镇楼:

Gazebo​gazebosim.org
f2d45e5c3ebec19f850a89d4df7f563a.png

Gazebo 同我们常用的 vrep, adams 一样,都是内置物理引擎(Physics Engine)的动力学仿真软件,只不过 ROS 直接集成了 Gazebo,像其他开源软件(OpenCV,OMPL)一样。

By the way,vrep 也是提供了 ros 接口的,不过我一般用内置的 lua 脚本、外部的 python、甚至 matlab 来实现 vrep 仿真。

先看下 gazebo 官方教程有哪些版块,如下:

5a1540c79b1cb35fd926503327dac570.png
Gazebo tutorial: overview

再看下与 ROS 相关的版块有哪些,如下:

f035f637f1001e1de5918e3fb012b7ab.png
Gazebo_ros: overview

1. gazebo_ros_pkgs 元功能包

Gazebo 通过 gazebo_ros_pkgs元功能包与 ROS 建立连接。

https://github.com/ros-simulation/gazebo_ros_pkgs

gazebo_ros_pkgs is a set of ROS packages that provide the necessary interfaces to simulate a robot in the Gazebo 3D rigid body simulator for robots. It integrates with ROS using ROS messages, services and dynamic reconfigure.
From https://wiki.ros.org/gazebo_ros_pkgs

gazebo_ros_pkgs 元功能包默认安装路径 opt/ros/kinetic/share,里面只有一个 package.xml 文件,看下里面的内容:

<?xml version="1.0"?>
<package format="2">
  <name>gazebo_ros_pkgs</name> <!-- This is a meta package! -->
  <version>2.5.19</version>
  <description>Interface for using ROS with the <a href="http://gazebosim.org/">Gazebo</a> simulator.</description>

  <maintainer email="jrivero@osrfoundation.org">Jose Luis Rivero</maintainer>

  <license>BSD,LGPL,Apache 2.0</license>

  <url type="website">http://gazebosim.org/tutorials?cat=connect_ros</url>
  <url type="bugtracker">https://github.com/ros-simulation/gazebo_ros_pkgs/issues</url>
  <url type="repository">https://github.com/ros-simulation/gazebo_ros_pkgs</url>

  <author>John Hsu, Nate Koenig, Dave Coleman</author>

  <buildtool_depend>catkin</buildtool_depend>

  <exec_depend>gazebo_dev</exec_depend>
  <exec_depend>gazebo_msgs</exec_depend>
  <exec_depend>gazebo_plugins</exec_depend>
  <exec_depend>gazebo_ros</exec_depend>

  <export>
    <metapackage/>
  </export>
</package>

gazebo_ros_pkgs 元功能包包含了gazebo_ros, gazebo_plugins, gazebo_msgs 子功能包,如下图所示:

e4c8a6342861a8498e15abe55be23352.png
gazebo_ros_pkgs interface
  • gazebo_ros: provides ROS plugins that offer message and service publishers for interfacing with Gazebo through ROS.
  • gazebo_plugins: robot-independent Gazebo plugins for sensors, motors and dynamic reconfigurable components.
  • gazebo_msgs: message and service data structures for interacting with Gazebo from ROS.

2. gazebo_ros

Usage:

rosrun gazebo_ros debug
rosrun gazebo_ros gazebo    # launch both the Gazebo server and GUI.
rosrun gazebo_ros gbdrun
rosrun gazebo_ros server
rosrun gazebo_ros client    # launch the Gazebo GUI
rosrun gazebo_ros spawn_model
rosrun gazebo_ros perf

(1)Using roslaunch to Open World Models

  • pkg="gazebo_ros"
  • 启动 empty Gazebo world
roslaunch gazebo_ros empty_world.launch

参数(Arguments):

  • paused: start Gazebo in a paused state (default false)
  • use_sim_time: tells ROS nodes asking for time to get the Gazebo-published simulation time, published over the ROS topic /clock (default true)
  • gui: Launch the user interface window of Gazebo (default true)
  • recording: enable gazebo state log recording
  • debug: start gzserver (Gazebo Server) in debug mode using gdb (default false)
  • verbose: run gzserver and gzclient with --verbose, printing errors and warnings to the terminal (default false)

其他的 Demo Worlds:

roslaunch gazebo_ros willowgarage_world.launch
roslaunch gazebo_ros mud_world.launch
roslaunch gazebo_ros shapes_world.launch
roslaunch gazebo_ros rubble_world.launch

其中,mud_world.launch文件内容如下:

<launch>
  <!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="worlds/mud.world"/> <!-- Note: the world_name is with respect to GAZEBO_RESOURCE_PATH environmental variable -->
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="recording" value="false"/>
    <arg name="debug" value="false"/>
  </include>
</launch>
  • CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(YOURROBOT_gazebo_plugins)

find_package(catkin REQUIRED COMPONENTS
  gazebo_ros
)

# Depend on system install of Gazebo
find_package(gazebo REQUIRED)

include_directories(include ${catkin_INCLUDE_DIRS} ${GAZEBO_INCLUDE_DIRS} ${SDFormat_INCLUDE_DIRS})

# Build whatever you need here
add_library(...) # TODO

catkin_package(
    DEPENDS
      gazebo_ros
    CATKIN_DEPENDS
    INCLUDE_DIRS
    LIBRARIES
)
  • package.xml
<build_depend>gazebo_ros</build_depend>
<exec_depend>gazebo_ros</exec_depend>

(2)Using roslaunch to Spawn URDF Robots

"ROS Service Call" Robot Spawn Method
This method uses a small python script calledspawn_modelto make a service call request to thegazebo_rosROS node (named simply "gazebo" in the rostopic namespace) to add a custom URDF into Gazebo.
rosrun gazebo_ros spawn_model -file `rospack find MYROBOT_description`/urdf/MYROBOT.urdf -urdf -x 0 -y 0 -z 1 -model MYROBOT

# -file 指定 model xml 文件的路径
# -urdf 显示地指定 xml 文件是 urdf 文件
# -x -y -z 初始 pose

5740549b58f1a86cfdc0209ebdaa11de.png
spawn_model

3. gazebo_plugins

(1)Plugins 类型

  • ModelPlugins: provide access to the physics::Model API
  • SensorPlugins: provide access to the sensors::Sensor API
  • VisualPlugins: provide access to the rendering::Visual API

(2)添加 ModelPlugins

ModelPluginis inserted in the URDF inside the<robot>element. It is wrapped with the<gazebo>pill, to indicate information passed to Gazebo.

例如:

<robot>
  ... robot description ...
  <gazebo>
    <plugin name="differential_drive_controller" filename="libdiffdrive_plugin.so">
      ... plugin parameters ...
    </plugin>
  </gazebo>
  ... robot description ...
</robot>

(3)添加 SensorPlugins

Sensors in Gazebo are meant to be attached to links, so the <gazebo> element describing that sensor must be given a reference to that link.

例如:

<robot>
  ... robot description ...
  <link name="sensor_link">
    ... link description ...
  </link>

  <gazebo reference="sensor_link">
    <sensor type="camera" name="camera1">
      ... sensor parameters ...
      <plugin name="camera_controller" filename="libgazebo_ros_camera.so">
        ... plugin parameters ..
      </plugin>
    </sensor>
  </gazebo>

</robot>

4. gazebo && ros_control

移步至之前的博客:

丁洪凯:【ROS 学习笔记】ros_control​zhuanlan.zhihu.com
6c6af3c2e5fb9b4396e3f391a700df6e.png

1a1dd43062aab361f7b39e29551f537f.png
<think>好的,我现在需要帮助用户寻找关于ROS的学习资料或笔记。用户提到了ROS学习教程、笔记以及开源机器人操作系统相关的资料。我需要结合提供的引用内容来回答,并且按照系统级指令的要求来组织内容。 首先,我需要回顾用户提供的四个引用内容: 引用1和2介绍了ROS的基本概念和用途,提到它是一个开源的软件框架,用于机器人软件开发,适用于多节点多任务的场景,应用广泛。 引用3提到仿真机器人gazebo和开源功能包,这可能涉及到ROS的仿真工具和学习资源。 引用4提到了在Ubuntu系统上运行程序时需要注意的权限问题,比如使用chmod命令,这可能与ROS环境配置相关。 接下来,用户需要学习资料和笔记。我需要根据这些引用内容,推荐相关的资源,并确保回答结构清晰,分步骤说明。 可能需要包括以下几个方面: 1. 官方文档和教程:ROS官网的教程是基础,适合入门。 2. 书籍推荐:结合引用中的内容,可能有相关书籍。 3. 开源项目和实践平台:如Gazebo仿真环境,结合引用3提到的内容。 4. 社区和论坛:如ROS Answers、GitHub等,用户可能在这里找到笔记和解决方案。 5. 注意事项:比如系统权限问题,引用4提到的chmod命令,需要在学习过程中注意。 需要确保回答中引用的每个部分都正确标注引用标识,例如[^1]、[^2]等。同时,根据用户要求生成相关问题,这些问题应该与ROS学习资料相关,帮助用户进一步探索。 现在需要组织这些信息,用清晰的结构分点说明,并且使用正确的LaTeX格式,虽然用户的问题中没有数学公式,但如果有的话需要按照规则处理。但在这个回答中可能不需要数学公式,所以主要注意中文回答和相关问题生成。 最后,检查是否符合所有系统级指令,特别是引用标注的位置是否正确,是否有生成相关问题,以及回答结构是否合理。</think>以下是关于ROS学习资料及笔记的整理和推荐: ### 1. **ROS官方文档与教程** - **核心内容**:ROS官方提供了完整的入门指南和进阶教程,涵盖节点通信、消息格式、工具链使用等基础内容[^2]。 - **学习路径**: 1. 安装ROS(推荐Ubuntu系统,注意权限设置[^4])。 2. 学习`roscore`、`rosnode`、`rostopic`等核心命令。 3. 实践消息发布/订阅、服务调用等基础通信模型。 --- ### 2. **推荐书籍与开源项目** - **书籍**: - *《ROS机器人编程实践》*:结合仿真工具Gazebo[^3],讲解机器人建模与算法实现。 - *《A Gentle Introduction to ROS》*:适合初学者的开源电子书。 - **开源项目**: - **TurtleBot3**:入门级移动机器人平台,配套教程详细。 - **MoveIt!**:机械臂运动规划框架,提供丰富的案例[^3]。 --- ### 3. **仿真工具与实战平台** - **Gazebo**:ROS官方推荐的仿真环境,支持多种机器人模型(如无人机、无人车)[^3]。 - **实践建议**: ```bash # 安装GazeboROS插件 sudo apt-get install ros-<distro>-gazebo-ros-pkgs ``` - 通过仿真实验验证SLAM、路径规划等算法。 --- ### 4. **社区资源与学习笔记** - **ROS Answers**:官方问答社区,可搜索常见问题(如权限错误)。 - **GitHub仓库**:搜索`ROS学习笔记`或`ROS Tutorial`,许多开发者分享代码与配置示例。 - **博客与视频**: - 知乎专栏“ROS从入门到放弃”提供避坑指南。 - YouTube频道“The Construct”提供免费ROS课程。 --- ### 5. **关键注意事项** - **系统权限**:在Ubuntu中运行ROS节点时,需使用`chmod +x`赋予可执行权限[^4]。 - **版本兼容性**:ROS 1(Noetic)与ROS 2(Foxy)差异较大,需明确学习目标版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值