第九篇:ROS的gazebo三维物理仿真环境联合使用

文章目录

开发管理相关博客专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138258301

开发经验及方法博客专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138256324

嵌入式系统平台硬软件底层开发相关博客专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138229695

机器人导航系统架构及业务模块组合策略的相关博客专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138202210

运动学与动力学基础知识相关博客专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138201806

机器人传感器及感知相关教程及博客请关注专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138507260

机器人定位相关教程及博客请关注专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138199360

机器人地图建立相关教程及博客请关注专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138199063

机器人动作策略规划相关教程及博客请关注专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138175048

机器人全局路径规划相关教程及博客请关注专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138174918

机器人局部轨迹规划相关教程及博客请关注专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138174730

机器人轨迹跟踪控制相关教程及博客请关注专栏:
https://blog.youkuaiyun.com/qq_35635374/article/details/138168913

本文先对gazebo三维物理仿真环境做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章


提示:以下是本篇文章正文内容

一、gazebo介绍

gazebo是三维物理仿真平台,强调的是创建一个虚拟的仿真环境。gazebo不是显示工具,强调的是仿真,它不需要数据,而是创造数据.gazebo本身就是一款机器人的仿真软件,基于ODE的物理引擎,可以模拟机器人以及环境中的很多物理特性%2c不仅可以仿真机器人的运动功能,还可以仿真机器人的传感器数据。而这些数据就可以放到rviz中显示,所以使用gazebo的时候,经常也会和rviz配合使用。另外,【防盗标记–盒子君hzj】rviz配合其他功能包也可以建立一个简单的仿真环境,比如rviz+ArbotiX,可以参考《ROS by Example》
教程见:http://www.ros.org/wiki/simulator_gazebo/Tutorials

.
.

二、应用场景

1.测试机器人算法

2.机器人的设计【防盗标记–盒子君hzj】

3.显示场景下的回溯测试
.
.

三、gazebo的特点

  1. 动力学仿真:支持多种高性能的物理引擎,例如ODE、Bullet、SimBody、DART等

  2. 三维可视化环境:支持显示逼真的三维环境,包括光线、纹理、影子。

  3. 传感器仿真:支持传感器数据的仿真,同时可以仿真传感器噪声。

  4. 可扩展插件:用户可以定制化开发插件,扩展gazebo的功能,满足个性化的需求。

  5. 多种机器人模型:官方提供PR2、Pioneer2 DX、TurtleBot等机器人模型,当然也可以使用自己创建的机器人模型。

  6. TCP/IP传输:gazebo可以实现远程仿真,后台仿真和前台显示通过网络通信。
    【防盗标记–盒子君hzj】

  7. 云仿真:gazebo仿真可以在Amazon、Softlayer等云端运行,也可以在自己搭建的云服务器上运行。

终端工具:用户可以使用gazebo提供的命令行工具在终端实现仿真控制。

四、gazebo安装并运行

1.安装

与rviz一样,如果已经安装了桌面完整版的ROS,那么可以直接跳过这一步,否则,请使用以下命令进行安装:

$ sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control

2.运行

安装完成后,在终端中使用如下命令启动ROS和gazebo【防盗标记–盒子君hzj】
$ roscore

$ rosrun gazebo_ros gazebo或者打开gazebo:直接在终端输入$ gazebo
.

五、gazebo界面介绍

在这里插入图片描述
0 :3D视图区

1 :工具栏
用于选择、移动、旋转和缩放对象的按钮;创建简单形状(例如立方体、球体、圆柱体);和复制/粘贴

2 :模型列表
WORLD:显示当前在场景中的模型,并允许您查看和修改模型参数【防盗标记–盒子君hzj】

INSERT:用于向模拟添加新对象(模型)。要查看模型列表,可能需要单击箭头以展开文件夹。在要插入的模型上单击(并释放),然后在场景中再次单击以添加该模型

LAYERS:组织并显示仿真中可用的不同可视化组(如果有)

3 :模型属性项

4 :时间显示区

.
.

六、gazebo和ros的接口功能包

gazebo仿真的元素搭建都是有对应的msgs的,也有对应的api函数,学会这些自己也可以搭建

(1)gazebo_ros
主要用于gazebo的接口封装、gazebo服务端和客户端的启动、URDF模型的生成【防盗标记–盒子君hzj】

(2)gazebo_msgs
主要是gazebo的话题msg和服务srv的数据结构

(3)gazebo_plugins
主要用于gazebo的通用传感器插件

(4)gazebo_ros_api_plugins\gazebo_ros_path_plugins
这两个gazebo的插件实现接口的封装

官方教程

http://gazebosim.org/tutorials?tut=custom_messages&cat=transport
.
.

七、搭建仿真环境步骤【重点!!!】

1.gazebo的服务器和客户端

(gazebo的底层引擎)
服务器gzserver:用于模拟物理、渲染和传感器的服务器
客户端gzclient:提供图形界面以可视化模拟并与模拟交互的客户端【防盗标记–盒子君hzj】

客户端和服务器使用gazebo通信库进行通信

.
.

2.【环境模型文件】构建环境几何模型【.world/.sdf】

(有关环境配置的都在这里,包括静态对象、灯光等等)
【这个一般都要自己搭建–以.world模型文件的形式】

(1)环境几何模型目录

(1)世界对象
如建筑物和灯光

(2)静态对象
标记为静态的实体(在SDF中具有<Static>true</Static>元素的实体)是仅具有碰撞几何体的对象。所有不打算移动的对象都应标记为静态

(3)动态对象
标记为动态的实体(缺少<static>元素或在SDF中设置为false)是同时具有惯性和碰撞几何体的对象。

.
.

(2)静态简单场景搭建

1. 方法一:直接使用gazebo的GUI收录的模型/自己下载gazebo的模型数据库,然后保存成为.world文件

后续也能通过参数修改

(1)【快速搭建】Gazebo 界面GUI提供了一组简单的形状:长方体、球体和圆柱体
(2)【非常有用】Gazebo的模型数据库model database是所有类型模型的存储库,包括机器人、桌子和建筑物
(3)环境搭建完成后,选择“文件”菜单的“保存”,格式为.world文件,若要重新打开,进入.world文件目录下,输入指令$gazebo XXX.world

官方教程
【创建环境】http://gazebosim.org/tutorials?tut=build_world&cat=build_world
【修改环境】http://gazebosim.org/tutorials?tut=modifying_world&cat=build_world
.
.

2. 方法二:使用Building Editor自己画模型(主要是围墙和房子),然后保存成为.world文件

在gazebo菜单栏中选择Edit –; Building Editor,可以打开Building Editor界面。选择左侧的绘制选项,然后在上侧窗口中使用鼠标绘制,下侧窗口中即可实时显示绘制的仿真环境。【防盗标记–盒子君hzj】

参考官方教程
http://gazebosim.org/tutorials?cat=build_world&tut=building_editor

.
.

3.方法三:在github上搜索开源的环境模型,拿过来直接用【这个还是自己搭建比较好】

github打发~~
.
.

(3)动态复杂场景搭建

查阅gazebo官网提供的教程,一般使用world插件的方法进行导入

.
.

(4)修改已经搭建好的.world文件的方法

去到放置.world文件的目的,运行指令$gazebo XXX.world,修改完成后覆盖保存一下【防盗标记–盒子君hzj】
.
.

注意

(1)仿真环境应该尽可能保持简单,不然出问题很难搞

.
.

3.【机器人模型文件】构建机器人几何模型【.urdf/.xacro】

(有关机器人本体的构造配置都在这里,包括机器人的机械构造、几何链接关系)
【这个能用别人的模型就用别人的模型–以describe功能包模型文件的形式】

(0)机器人/障碍物的几何模型目录结构原理

(1)模型的内涵

	能够以编程方式或通过GUI将模型动态加载到仿真中
	模型定义了具有动力学、运动学和视觉特性的物理实体
	模型可能有一个或多个插件,这些插件会影响模型的行为【防盗标记–盒子君hzj】

(2)模型数据库的目录结构

(1)【插件】Plugins Directory
(2)【几何结构】Meshes Directory
(3)【材料】Material Directory
(4)Database Config
(5)Model Config
(6)Model SDF
(7)Model SDF.ERB

Gazebo依靠模型数据库来存储和维护仿真中可用的模型,模型数据库是社区支持的资源
git clone https://github.com/osrf/gazebo_models

.
.

(1)简单的机器人/障碍物模型构建【使用gazebo的界面GUI的Model Editor实现】

注意这种方法仅仅适合用Model Editor的

(1)机械外形【simple shapes/custom shapes】
方法一:用GUI简单的几何图形搭建一个简单的机器人【防盗标记–盒子君hzj】
方法二:用SVG files画一些机械小零件

官方教程
http://gazebosim.org/tutorials?cat=model_editor_top&tut=extrude_svg

(2)插入传感器【Model Database】
从gazebo的模型数据库中插入现有的传感器模型

第一个列表包含本地计算机上可用的模型

第二个列表包含gazebo官方的模型,在线模型数据库下载它们时,将显示更多信息
(3)添加插件【Model Plugins】
简单的插件可以使用gazebo现有的插件,复杂的插件可以通过编程的方法创建自己的插件【防盗标记–盒子君hzj】
(4)最后通过GUI保存模型

参考官方教程
http://gazebosim.org/tutorials?cat=guided_b&tut=guided_b3

.
.

(2)复杂的机器人模型构建【自己借助工具或者编程实现】

1)方法一:通过简单的URDF/xacro文件编程实现

1、名称

Unified Robot Description Format 统一机器人描述格式

2、优点

1、可以解析URDF文件中使用XML格式描述的机器人模型【防盗标记–盒子君hzj】
2、ROS同时也提供URDF文件的C++解析器

3、机器人结构分解
连杆link

格式:
<link name="<link name">
    <inertial>......</inertial>
    <visual>......</visual>
    <colliion>......</colliion>
<link>

参数:
  <inertial>:描述link的惯性参数:惯性矩阵
  <visual>:描述link部分的外观参数:外观、尺寸、颜色
 <colliion>:描述link的碰撞属性:碰撞参数

关节join

格式:
<joint name="joint name"type="joint type">
    <parent link="parent link"/>
    <child link="child link"/>
    <calibration......./>
    <dynamics....../>
    <limit....../>
    <....../>
</joint>

参数
<parent link>:连接关节的前一个连杆,必须要的
<child link>:连接关节的后一个连杆,必须要的
<calibration>:关节的参考位置,用来校准绝对的关节位置的
<dynamics>:描述关节的物理属性,例如阻尼值、静摩擦力,经常在动力学仿真上用到【防盗标记–盒子君hzj】
<limit>:描述关节运动的极限值,包括上下限位置、速度限制、力矩限制等
<mimic>:描述该关节和已有关节的关系
<safety _controller>:描述安全控制器参数

关节类型
1、(重要)continuous:旋转关节,可以围绕单轴做无限旋转
2、(重要)revolute:旋转关节,进可以围绕单轴做有限角度旋转
3、prismastic:平滑关节,可以沿着某一轴线移动,带有位置限制
等等

4、建立仿真模型urdf实操(让rviz模型可视化)【涉及launch文件】
在这里插入图片描述

2)方法二:专有的场景零件,使用SDF文件自己编程实现
(1)创建环境外形模型meshes

方法一:在Google 的 3D 仓库里面进行寻找
链接为:https://3dwarehouse.sketchup.com/

方法二:使用三维建模软件构建环境,并导入gazebo 【防盗标记–盒子君hzj】
Blender、Sketchup、soildworks

(2)编写.sdf环境文件

在这里插入图片描述
官方教程
http://gazebosim.org/tutorials?tut=build_model&cat=build_robot

.
.

3)方法三:通过soildworks工具导入

把设计文件转化成urdf文件再导入到机器人模型【防盗标记–盒子君hzj】
.
.

4)方法四:通过github上开源的下载,改一改使用【我常用这种方法–偷鸡】

注意
(1)创建一个机器人,放在gazebo的环境(URDF\Xacro,可以自己创建也可以GitHub)[构建一个模型很麻烦,因为不精准,网上找就行]

.
.

(3)两个xacro模型连接到同一个总的xacro模型的方法

【用于连接同一个机器人的父模型(躯干)与子模型(手臂)】
【用于连接机器人模型和传感器模型】

注意

(1)创建一个机器人,放在gazebo的环境(URDF\Xacro,可以自己创建也可以GitHub)[构建一个模型很麻烦,因为不精准,网上找就行]

.
.
.

4.【构建/使用环境插件】【.pluin】

(实现传感器数据处理、控制等复杂功能,包括六种类型的插件)
【嵌入到系统中使用,不能单独使用】【防盗标记–盒子君hzj】
【这个能用别人的插件就用别人的插件–以插件的形式】

(1)构建自己的插件的方法

1)从零构建一个插件的泛型方法

官方教程1
http://gazebosim.org/tutorials?tut=plugins_hello_world&cat=write_plugin

官方教程2
http://gazebosim.org/tutorials?tut=ros_plugins&cat=connect_ros
.
.
.

2)gazebo插件的类型、构建+编译+使用方法

目前有6种类型的插件,每个插件类型都由Gazebo的不同组件管理

(1)【环境场景插件】World

World插件连接到World,控制World属性,例如物理引擎、环境照明等
构建的官方教程http://gazebosim.org/tutorials?tut=plugins_world&cat=write_plugin

(2)【机器人模型插件–控制】Model

Model插件连接到Gazebo中的特定机器人模型并控制该模型,控制关节和模型的状态
构建的官方教程http://gazebosim.org/tutorials?tut=plugins_model&cat=write_plugin

(3)【传感器插件】Sensor

Sensor插件到一个特定的传感器,获取传感器信息并控制传感器属性【防盗标记–盒子君hzj】
在后面有详细说

(4)【系统插件】System

System插件在命令行中指定,并在Gazebo启动时首先加载。这个插件让用户可以控制启动过程
官方教程http://gazebosim.org/tutorials?tut=system_plugin&cat=write_plugin

(5)【可视化插件】Visual

GUI覆盖视为位于渲染窗口顶部的透明2D层,可视化参数
官方教程http://gazebosim.org/tutorials?tut=gui_overlay&cat=user_input

(6)【界面插件】GUI
.
.
.

3)从零构建一个32线的激光雷达传感器插件

【构建好了插件放在哪里都能用了】【防盗标记–盒子君hzj】
参考官方教程
http://gazebosim.org/tutorials?cat=guided_i&tut=guided_i1
.
.
.

4)测试插件的的基本方法(以激光雷达为例)
(1)Start roscore
source /opt/ros/<DISTRO>/setup.bash
roscore
(2)In a new terminal, start Gazebo
cd ~/velodyne_plugin/build
source /opt/ros/<DISTRO>/setup.bash
gazebo ../velodyne.world
(3)In a new terminal, use rostopic to send a velocity message.
source /opt/ros/<DISTRO>/setup.bash
rostopic pub /my_velodyne/vel_cmd std_msgs/Float32 1.0

.
.
.

(2)使用别人构建的插件的方法【重点】

0)主要原理与步骤

(1)第一步:在gazebo中可以通过插入一些插件,来仿真机器人的传感器、执行驱动器的特性,这些插件通过元素中的标签描述

(2)第二步:在传感器的urdf/xacro.sdf文件中,通过使用标签先把传感器模型(带插件)包含进来机器人子模型中,再通过标签连接不同模型

(3)第三步:(大型模型才会这么做,选做)先用xacro文件为传感器创建一个传感器模型和配置,再把传感器的xacro模型与配置通过二次标签嵌入到机器人的xacro文件【防盗标记–盒子君hzj】

官方教程
http://gazebosim.org/tutorials?tut=add_laser&cat=build_robot
.
.
.

1)使用机器人本体插件
(1)【Model插件】小车运动控制插件类

(1)差速底盘驱动插件
很多机器人本体都采用差速驱动的方式,gazebo提供差速机器人的仿真插件,可以直接将下边的代码放到URDF文件中,修改相应的参数,指定运动控制需要订阅的主题,让机器人在gazebo中动起来

<gazebo>
  <plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so">
    <alwaysOn>true</alwaysOn>
    <updateRate>${update_rate}</updateRate>
    <leftJoint>base_link_right_wheel_joint</leftJoint>
    <rightJoint>base_link_left_wheel_joint</rightJoint>
    <wheelSeparation>0.5380</wheelSeparation>
    <wheelDiameter>0.2410</wheelDiameter>
    <torque>20</torque>
    <commandTopic>cmd_vel</commandTopic>
    <odometryTopic>odom</odometryTopic>
    <odometryFrame>odom</odometryFrame>
    <robotBaseFrame>base_footprint</robotBaseFrame>
  </plugin>
</gazebo>

(2)在关节Jink和连杆link中设置速度(PID)插件

在关节Jink和连杆link中设置速度【防盗标记–盒子君hzj】
官方教程http://gazebosim.org/tutorials?tut=set_velocity&cat=

(3)接触传感器【Contact Sensor】

接触传感器检测两个物体之间的碰撞,并报告与接触相关的力的位置
官方教程http://gazebosim.org/tutorials?tut=contact_sensor&cat=sensors

(4)关节的力与力矩传感器插件【Force/Torque Sensor】

在关节上使用力/扭矩传感器。该传感器将力和扭矩读数发布到主题。
官方教程http://gazebosim.org/tutorials?tut=force_torque_sensor&cat=sensors

(5)通用控制接口ros_control

控制通用接口
官方教程http://gazebosim.org/tutorials?tut=ros_control&cat=connect_ros

(6)重力PID补偿插件

在Gazebo中使用模型插件进行重力补偿,以及如何补充内置PID关节控制器
官方教程http://gazebosim.org/tutorials?tut=gravity_compensation&cat=plugins

(7)【model插件】JointEvent事件触发插件

当关节的位置(或速度或施加的力)进入或离开指定范围时,JointEvent将在sim_事件主题上发送消息【防盗标记–盒子君hzj】
官方教程http://gazebosim.org/tutorials?tut=joint_events&cat=

.
.
.

(2)【Sensor插件】小车传感器类

【xacro文件之间可以进行嵌套】
官方教程http://gazebosim.org/tutorials?tut=ros_gzplugins&cat=connect_ros

1、仿真二维雷达数据
因为带示例在我的知识库,后续转移过来~
.

2、仿真摄像头数据
因为带示例在我的知识库,后续转移过来~【防盗标记–盒子君hzj】
.

3、仿真三维激光雷达数据
因为带示例在我的知识库,后续转移过来~
.

4、仿真RealSense双目相机数据
因为带示例在我的知识库,后续转移过来~
.

5、深度相机集成插件
因为带示例在我的知识库,后续转移过来~
.
.
.

2)使用world环境插件
(1)【world插件】动态的人行走的场景(actor)

【作为动态障碍物】
博客教程http://gazebosim.org/tutorials?tut=actor#Scriptedtrajectories
官方教程http://gazebosim.org/tutorials?tut=actor&cat=build_robot
.

(2)为世界坐标系下的任意link指定随机的运动速度

【Random Velocity Plugin】【作为动态障碍物】【防盗标记–盒子君hzj】

为世界上的link指定随机速度,可以设置x、y和z速度分量的最大和最小允许值以及速度幅值。此外,还可以设置时间段,在此时间段之后,速度可以自行更改。设置“速度幅值”后,将自行设置方向

官方教程http://gazebosim.org/tutorials?tut=plugins_random_velocity&cat=

.

(3)获取机器人在gazebo的定位信息

以插件形式获取:可以在机器人的urdf模型中加入插件

    <!-- Fake localization plugin -->
    <plugin name="ground_truth_odometry" filename="libgazebo_ros_p3d.so">
      <alwaysOn>true</alwaysOn>
      <updateRate>100.0</updateRate>
      <bodyName>base_link</bodyName>
      <topicName>base_pose_ground_truth</topicName>
      <gaussianNoise>0.01</gaussianNoise>
      <frameName>map</frameName>-->
        <!-- initialize odometry for fake localization-->
      <xyzOffsets>0 0 0</xyzOffsets>
      <rpyOffsets>0 0 0</rpyOffsets>
    </plugin>

以订阅者形式获取
订阅话题/gazebo/model_states,找到对应模型的名称
【防盗标记–盒子君hzj】

void _modelStatesCallback(const gazebo_msgs::ModelStatesConstPtr &msg)
{
  int modelCount = msg->name.size();

  for(int modelInd = 0; modelInd < modelCount; ++modelInd)
  {
      if(msg->name[modelInd] == "turtlebot3")
      {
          _current_pose.pose = msg->pose[modelInd];
          _current_velocity.twist = msg->twist[modelInd];
          break;
      }
  }
}

.

(4)基于事件触发

(1)【world插件】Occupied Event
每当模型占据指定的三维区域时,OccuppiedEvent将发送有关主题的消息【防盗标记–盒子君hzj】
官方教程
.http://gazebosim.org/tutorials?tut=occupiedevent&cat=plugins

(2)【world插件】环境触发事件的动作(Trigger an Action)
官方教程
http://gazebosim.org/tutorials?tut=contain_plugin&cat=plugins

.
.

3)【可视化插件】Visual

作用
GUI覆盖视为位于渲染窗口顶部的透明2D层,可视化参数

官方教程
http://gazebosim.org/tutorials?tut=gui_overlay&cat=user_input

注意

ROS的gazebo的仿真插件需要什么功能插件可以去官网里面找,或者wiki【防盗标记–盒子君hzj】
.
.
.

5.通过launch文件导入相关gazebo需要的东西【gazebo.launch】

(有关启动gazebo组件的都在这里)
【这个一般是是自己实现的–gazabo的launch】

一级的demo_run.launch

【这个launch是启动整个工程的】
其他模块的启动…

<!---Gazebo---->
<include file="$(gazebo所在的功能包)/.../launch/gazebo.launch">

.
.

二级的gazebo.launch

【这个launch 是专门处理gazebo的】

(1)使用roslaunch命令打开环境World Models仿真环境

1)命令(不带参数):roslaunch gazebo.launch
2)命令(带参数):roslaunch gazebo_ros empty_world.launch paused:=true use_sim_time:=false gui:=true throttled:=false recording:=false debug:=true verbose:=true gui_required:=true

(2)编写gazebo.launch的原理

(1)【几何环境加载】world文件加载的原理
先创建一个空的empty gazebo环境,再通过world_name加载.world文件的路径进去【防盗标记–盒子君hzj】

(2)【机器人模型文件加载】xacro文件加载原理
机器人模型一般是再网上下载下来的,已经是一个带有传感器和控制插件的功能包了,像再launch上启动一个功能包这样启动它就行了

(3)【插件文件的加载】
插件文件一般都嵌入到了world几何环境和model机器人模型中了,具体怎么操作看插件的使用章节,
带有模型的插件是不会独立使用的,一些独立的系统的可视化的插件可以,
如rqt_steering插件(rqt工具包有比较多的独立插件)、robot_state_publisher(用于发布TF)

(4)......

.
.

(3)gazebo.launch通常启动类型的步骤

启动gazebo环境也是启动一个总的launch,进而启动一堆仿真相关的机械外形、控制、传感器数据、环境数据、插件数据、坐标转换的东西!
(1)【环境几何模型】设置gazebo的参数(最常用时这个了)
不设置的话,使用默认参数

paused  在暂停状态下启动Gazebo(默认为false)
use_sim_time  告知ROS节点请求时间以获取通过ROS主题/时钟发布的Gazebo发布的模拟时间(默认为true)
gui  启动Gazebo的用户界面窗口(默认为true)
gui_required  当gzclient(用户界面窗口)退出时终止启动脚本(默认为false)
headless  启用gazebo状态日志记录
debug  Start gzserver (Gazebo Server) in debug mode using gdb (default false)
verbose 使用--verbose运行gzserver和gzclient,向终端打印错误和警告(默认为false)
server_required  当gzserver(Gazebo服务器)退出时终止启动脚本(默认为false)
world_name  这个就是我们建立.world文件的目录

(2)【机器人模型】在gazebo中加载机器人模型xacro(robot_description)
(3)【插件】运行robot_state_publisher节点,用于发布TF
(4)【插件】加载小车控制器rqt_steering
(5)【插件】启动rqt steering GUI【插件】

官方教程
http://gazebosim.org/tutorials?tut=ros_roslaunch&cat=connect_ros

6.搭建ROS工程,用ROS工程编写源代码

【系统开发基础储备】ROS开发步骤(第二篇)
和上面博客的步骤一致,转战一下~
.
.

7.从gazebo中获取仿真得到的数据

【以.rviz、插件、订阅者的形式】
(获取数据之前先实现自己的源码)

(1)构建rviz可视化配置文件【.rviz】

(有关数据可视化的都在rviz,有关仿真环境的都要在gazebo)【防盗标记–盒子君hzj】
在rviz中配置好,直接导出文件就好,仿真数据的获取都是用插件的形式得到的,无论是控制插件、传感器插件、环境插件

注意
一般在gazebbo中看不出来具体效果,可以把gazebo的界面关了,太耗算力
rviz可视化gazebo的模型和场景的数据,都是通过参数服务器来的,而不是通过接收话题来的

(2)通过gazebo的GUI,显示发布出去的话题

(3)gazebo的屏幕截图

.
.
.

八、注意

gazebo的坐标系使用的是右手坐标系

gazebo常出现的问题
频繁开启关闭gazrbo仿真环境会报错误,因为gazebo在没有完全退出的时候就再次开启(垃圾电脑更是这样)【防盗标记–盒子君hzj】

解决办法

$killall gzserver
$killall gzclient

参考资料

(1)gazebo的教程:http://www.gazebosim.org/tutorials

(2)自己需要什么功能可以去gazebo的官网上去搜索,按照wiki和Tutorials的教程部署下来

(3)具体参考的工程,或者要偷源码可以直接运行官方教程,部署下来,分析他怎么实现的

相关技术专栏推荐

(1)计算技术&硬软件开发工程篇
https://blog.youkuaiyun.com/qq_35635374/category_12821115.html

(2)计算机技术基础&开发经验
https://blog.youkuaiyun.com/qq_35635374/category_11471204.html

(3)嵌入式系统硬软件开发
https://blog.youkuaiyun.com/qq_35635374/category_11464543.html

(4)开发技术管理
https://blog.youkuaiyun.com/qq_35635374/category_12344669.html

(5)机器人/自动驾驶导航算法篇
https://blog.youkuaiyun.com/qq_35635374/category_12825966.html

(6)导航系统架构及业务模块组合策略
https://blog.youkuaiyun.com/qq_35635374/category_11464757.html

(7)运动学与动力学基础知识
https://blog.youkuaiyun.com/qq_35635374/category_11471199.html

(8)多传感器标定、数据融合与状态估计
https://blog.youkuaiyun.com/qq_35635374/category_11464733.html

(9)定位、地图建立、地图管理SLAM合集
https://blog.youkuaiyun.com/qq_35635374/category_12805256.html

(10)定位location
https://blog.youkuaiyun.com/qq_35635374/category_11464501.html

(11)地图mapping
https://blog.youkuaiyun.com/qq_35635374/category_11464370.html

(12)机器人决策规划控制合集
https://blog.youkuaiyun.com/qq_35635374/category_12804215.html

(13)任务决策规划mission_planner
https://blog.youkuaiyun.com/qq_35635374/category_12344770.html

(14)动作策略规划motion_planner
https://blog.youkuaiyun.com/qq_35635374/category_12176372.html

(15)全局路线规划global_planner
https://blog.youkuaiyun.com/qq_35635374/category_12176370.html

(16)局部路径规划local_planner
https://blog.youkuaiyun.com/qq_35635374/category_12176374.html

(17)轨迹跟踪控制模块Path_tracking
https://blog.youkuaiyun.com/qq_35635374/category_12176376.html

(18)机器人实战篇
https://blog.youkuaiyun.com/qq_35635374/category_12821111.html

(19)足式机器人&机械臂控制合集
https://blog.youkuaiyun.com/qq_35635374/category_11523332.html

(20)自动驾驶&无人机导航合集
https://blog.youkuaiyun.com/qq_35635374/category_12804317.html

(21)四足机器人MIT Cheetah mini
https://blog.youkuaiyun.com/qq_35635374/category_11523325.html

(22)自动驾驶Autoware
https://blog.youkuaiyun.com/qq_35635374/category_11523328.html

(23)无人机fast_planner
https://blog.youkuaiyun.com/qq_35635374/category_11523335.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RoboticsTechLab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值