ROS探索总结(五十九)—— gazebo和rviz有具体的区别吗?哪个更好用?

  • 内容
  • 评论
  • 相关

知乎原文链接:

https://www.zhihu.com/question/268658280/answer/340190866

 

简单来讲,两者的主要功能不同,没办法比较哪个更好用,如果做ROS开发,一般两个都得会。

rviz是三维可视化工具,强调把已有的数据可视化显示;

gazebo是三维物理仿真平台,强调的是创建一个虚拟的仿真环境。

rviz需要已有数据。

rviz提供了很多插件,这些插件可以显示图像、模型、路径等信息,但是前提都是这些数据已经以话题、参数的形式发布,rviz做的事情就是订阅这些数据,并完成可视化的渲染,让开发者更容易理解数据的意义。

image

gazebo不是显示工具,强调的是仿真,它不需要数据,而是创造数据。

我们可以在gazebo中免费创建一个机器人世界,不仅可以仿真机器人的运动功能,还可以仿真机器人的传感器数据。而这些数据就可以放到rviz中显示,所以使用gazebo的时候,经常也会和rviz配合使用。当我们手上没有机器人硬件或实验环境难以搭建时,仿真往往是非常有用的利器。

image

rviz的官方介绍:

 

gazebo的官方介绍:

 

综上,如果你手上已经有机器人硬件平台,并且在上边可以完成需要的功能,用rviz应该就可以满足开发需求。

如果你手上没有机器人硬件,或者想在仿真环境中做一些算法、应用的测试,gazebo+rviz应该是你需要的。

另外,rviz配合其他功能包也可以建立一个简单的仿真环境,比如rviz+ArbotiX,可以参考《ROS by Example》,但是其中rviz的本质还是处理显示的部分。

 

参考链接:

ROS技术点滴 —— Rviz三维可视化平台

ROS技术点滴 —— Gazebo物理仿真平台

ROS技术点滴 —— gazebo中的常用插件

ROS技术点滴 —— rviz plugin

微信 OR 支付宝 扫描二维码
为本文作者 打个赏
pay_weixinpay_weixin

评论

25条评论
  1. Gravatar 头像

    小柳 回复

    古月老师你好,我在看您深蓝学院的视频的时候,自己做了个模型,xacro文件,通过launch文件启动,在rviz中模型能显示,但是在gazebo中没有模型显示,也没有报错,我启动您给的代码在gazebo中是可以显示的

  2. Gravatar 头像

    小李 回复

    您好 我按照您书上的教程做catvehicle时,第一个roslaunch总是会报错
    ERROR] [1552636867.665536579, 1089.476000000]: GazeboRosControlPlugin missing while using DefaultRobotHWSim, defaults to true.
    This setting assumes you have an old package with an old implementation of DefaultRobotHWSim, where the robotNamespace is disregarded and absolute paths are used instead.
    If you do not want to fix this issue in an old package just set to true.
    请问怎么解决 谢谢

    • 古月

      古月 回复

      @小李 有安装ros-XXXX-ros-controllers、ros-XXXX-ros-control、ros-XXXX-gazebo-ros-control么

    • Gravatar 头像

      张敏 回复

      @小李 我也遇到这个问题了 请问解决了吗

    • Gravatar 头像

      dc 回复

      @小李 你好,你试试在urdf模型中的ros_control中加入 gazebo_ros_control/DefaultRobotHWSim
      true试试

      • Gravatar 头像

        dc 回复

        @dc gazebo_ros_control/DefaultRobotHWSim
        true

  3. Gravatar 头像

    望月 回复

    老师您好,我现在需要仿真四麦克纳姆轮的机器人平台,我知道gazebo里有differential drive和skid steering drive的运动控制插件,请问gazebo里有没由全向轮控制器的插件?

    • 古月

      古月 回复

      @望月 PR2机器人的底盘就是全向移动底盘,可以参考一下

    • Gravatar 头像

      慕容 回复

      @望月 你好。可以交流一下吗,qq1261601062

  4. Gravatar 头像

    仰慕您的在校大学生 回复

    古月老师你好,我在看您深蓝学院的视频的时候听您介绍了谷歌的cartographer这个建图库,但实际我在跑的时候发生了这个错误。使用的例程是cartographer_ros_demo_rplidar.launch
    麻烦您抽空看一下是什么的原因,相应的launch文件和lidar.lua脚本都放置到了您视频所说的地方。

    F1210 21:57:06.467430 875 lua_parameter_dictionary.cc:83] Check failed: status == 0 (2 vs. 0) [string "-- Copyright 2016 The Cartographer Authors..."]:50: attempt to index global 'SPARSE_POSE_GRAPH' (a nil value)
    [FATAL] [1544450226.467716137]: F1210 21:57:06.000000 875 lua_parameter_dictionary.cc:83] Check failed: status == 0 (2 vs. 0) [string "-- Copyright 2016 The Cartographer Authors..."]:50: attempt to index global 'SPARSE_POSE_GRAPH' (a nil value)
    *** Check failure stack trace: ***
    @ 0x7fd8b1f095cd google::LogMessage::Fail()
    @ 0x7fd8b1f0b433 google::LogMessage::SendToLog()
    @ 0x7fd8b1f0915b google::LogMessage::Flush()
    @ 0x7fd8b1f0be1e google::LogMessageFatal::~LogMessageFatal()
    @ 0x5a3c19 cartographer::common::(anonymous namespace)::CheckForLuaErrors()
    @ 0x5a440e cartographer::common::LuaParameterDictionary::LuaParameterDictionary()
    @ 0x5a470d cartographer::common::LuaParameterDictionary::LuaParameterDictionary()
    @ 0x551a01 cartographer_ros::LoadOptions()
    @ 0x54cc73 cartographer_ros::(anonymous namespace)::Run()
    @ 0x54a734 main
    @ 0x7fd8addaf830 __libc_start_main
    @ 0x54c999 _start
    @ (nil) (unknown)
    [cartographer_node-1] process has died [pid 875, exit code -6, cmd /home/motherfucker/google_ws/install_isolated/lib/cartographer_ros/cartographer_node -configuration_directory /home/motherfucker/google_ws/install_isolated/share/cartographer_ros/configuration_files -configuration_basename rplidar.lua scan:=scan __name:=cartographer_node __log:=/home/motherfucker/.ros/log/6f494696-fc83-11e8-a3b5-80fa5b3b3003/cartographer_node-1.log].
    log file: /home/motherfucker/.ros/log/6f494696-fc83-11e8-a3b5-80fa5b3b3003/cartographer_node-1*.log

      • Gravatar 头像

        仰慕您的在校大学生 回复

        @古月 谢谢老师,我去确认一下那个lua脚本

      • Gravatar 头像

        仰慕您的在校大学生 回复

        @古月 哦对了,古月老师,鄙人听闻您参加过全国大学生智能车大赛(飞思卡尔),今年创意组的赛事就是用ROS去搭slam加自主导航的车……所以,鄙人可以要一个您的邮箱么?有问题的话可以比较方便向您请教。如果方便的话请您的把您的邮箱发送到 634904154@qq.com 打扰

  5. Gravatar 头像

    rose 回复

    您好,我想问一下,用ros控制pixhawk飞控,为啥用rivz收不到tf的运动?
    是要改下rosservice吗?

      • Gravatar 头像

        无知的学者 回复

        @古月 古月老师你好,我在看您深蓝学院的视频的时候听您介绍了谷歌的cartographer这个建图库,但实际我在跑的时候发生了这个错误。使用的例程是cartographer_ros_demo_rplidar.launch
        麻烦您抽空看一下是什么的原因,相应的launch文件和lidar.lua脚本都放置到了您视频所说的地方。

        F1210 21:57:06.467430 875 lua_parameter_dictionary.cc:83] Check failed: status == 0 (2 vs. 0) [string "-- Copyright 2016 The Cartographer Authors..."]:50: attempt to index global 'SPARSE_POSE_GRAPH' (a nil value)
        [FATAL] [1544450226.467716137]: F1210 21:57:06.000000 875 lua_parameter_dictionary.cc:83] Check failed: status == 0 (2 vs. 0) [string "-- Copyright 2016 The Cartographer Authors..."]:50: attempt to index global 'SPARSE_POSE_GRAPH' (a nil value)
        *** Check failure stack trace: ***
        @ 0x7fd8b1f095cd google::LogMessage::Fail()
        @ 0x7fd8b1f0b433 google::LogMessage::SendToLog()
        @ 0x7fd8b1f0915b google::LogMessage::Flush()
        @ 0x7fd8b1f0be1e google::LogMessageFatal::~LogMessageFatal()
        @ 0x5a3c19 cartographer::common::(anonymous namespace)::CheckForLuaErrors()
        @ 0x5a440e cartographer::common::LuaParameterDictionary::LuaParameterDictionary()
        @ 0x5a470d cartographer::common::LuaParameterDictionary::LuaParameterDictionary()
        @ 0x551a01 cartographer_ros::LoadOptions()
        @ 0x54cc73 cartographer_ros::(anonymous namespace)::Run()
        @ 0x54a734 main
        @ 0x7fd8addaf830 __libc_start_main
        @ 0x54c999 _start
        @ (nil) (unknown)
        [cartographer_node-1] process has died [pid 875, exit code -6, cmd /home/motherfucker/google_ws/install_isolated/lib/cartographer_ros/cartographer_node -configuration_directory /home/motherfucker/google_ws/install_isolated/share/cartographer_ros/configuration_files -configuration_basename rplidar.lua scan:=scan __name:=cartographer_node __log:=/home/motherfucker/.ros/log/6f494696-fc83-11e8-a3b5-80fa5b3b3003/cartographer_node-1.log].
        log file: /home/motherfucker/.ros/log/6f494696-fc83-11e8-a3b5-80fa5b3b3003/cartographer_node-1*.log

  6. Gravatar 头像

    xiaoma 回复

    你好,古月。我打算在gazebo上搭建一个abb机器人,然后研究强化学习做装配。现在urdf模型已经建立了而且放置到gazebo了。不知道接下来怎么去控制机器人,以及怎么将学习算法加进来。请指点一下。谢谢。

    • 古月

      古月 回复

      @xiaoma 机器人要用moveit来控制,建议看下ROS相关的书,或者《ROS机器人开发实践》,里边有详细的介绍,算法可以建立在moveit运动规划的API之上

  7. Gravatar 头像

    弓长张 回复

    有个问题一直不太清楚,就是机械臂轨迹规划算法在ROS中的配置问题,怎么测试自己的算法在ROS平台上用于机械臂轨迹规划呢?通过哪种方式会比较简单呢,还请古月大神指点一二

    • 古月

      古月 回复

      @弓长张 moveit当中的算法都是插件的形式集成的,资料较少,只能先研究现有代码,然后仿照实现

      • Gravatar 头像

        小张 回复

        @古月 古月大神请教一个简单的问题怎么从ROS系统删除已安装的MOVEIT和OMPL插件呢

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据