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

评论

10条评论
  1. 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

  2. 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

  3. Gravatar 头像

    xiaoma 回复

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

    • 古月

      古月 回复

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

  4. Gravatar 头像

    弓长张 回复

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

    • 古月

      古月 回复

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

      • Gravatar 头像

        小张 回复

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

发表评论

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

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