Ask Your Question

Revision history [back]

There are several visualisations tools in ROS. I think that the main ones are rviz, rqt and gazebo. [..] I know that Gazebo is used for simulating robots, [..]

As Gazebo isn't a visualisation tool, but a dynamics simulator, I don't believe there is actually much overlap between it and the other tools you mention (yes, Gazebo has a UI component, but that's not a generic visualisation tool, it's completely tied to gzserver). See also #q316396.

As to the others:

  • RViz is "[..] a 3D visualizer for the Robot Operating System (ROS) framework" according to the description of its Github repository.

  • RQT is "[..] a Qt-based framework for GUI development for ROS" according the wiki page.

So one is a complete 3D visualisation environment for (supported) ROS messages, while the other is a Qt based software framework in which you create plugins -- that can also visualise supported ROS messages, but also many, many other things (2D plotting (or graphing) of time series data, submitting service requests, determining the dependencies of packages, invoking actions, changing logger levels, inspecting message and service definitions, interfacing with dynamic_reconfigure servers, etc).

At some point the developers of RQT decided that it made sense to be able to have small, plugin based and dockable "UI-lets" which would allow anyone to create an arbitrary combination of those plugins to create their own "control panel" with which they can create a UI for a specific robot or application.

All of that could have been written as RViz plugins, but that would mean that all of that could also only be used from within RViz, which would mean that the overhead of rendering the full 3D visualisation would also always be incurred.


I'm not sure there is a definitive answer which should be used when, it also partly comes down to personal preference I believe, combined with what it is that you'd like to visualise.

A (very) old discussion on this topic: [ros-users] Should I write plugins for rqt or rviz?

There are several visualisations tools in ROS. I think that the main ones are rviz, rqt and gazebo. [..] I know that Gazebo is used for simulating robots, [..]

As Gazebo isn't a visualisation tool, but a dynamics simulator, I don't believe there is actually much overlap between it and the other tools you mention (yes, Gazebo has a UI component, but that's not a generic visualisation tool, it's completely tied to gzserver). See also #q316396.

As to the others:

  • RViz is "[..] a 3D visualizer for the Robot Operating System (ROS) framework" according to the description of its Github repository.

  • RQT is "[..] a Qt-based framework for GUI development for ROS" according the wiki page.

So one is a complete "batteries included", ready-to-use 3D visualisation environment for (supported) ROS messages, while the other is a Qt based software framework in which you create plugins -- that can also visualise supported ROS messages, but also many, many other things (2D plotting (or graphing) of time series data, submitting service requests, determining the dependencies of packages, invoking actions, changing logger levels, inspecting message and service definitions, interfacing with dynamic_reconfigure servers, etc).

At some point the developers of RQT decided that it made sense to be able to have small, plugin based and dockable "UI-lets" which would allow anyone to create an arbitrary combination of those plugins to create their own "control panel" with which they can create a UI for a specific robot or application.

All of that could have been written as RViz plugins, but that would mean that all of that could also only be used from within RViz, which would mean that the overhead of rendering the full 3D visualisation would also always be incurred.


I'm not sure there is a definitive answer which should be used when, it also partly comes down to personal preference I believe, combined with what it is that you'd like to visualise.

A (very) old discussion on this topic: [ros-users] Should I write plugins for rqt or rviz?

There are several visualisations tools in ROS. I think that the main ones are rviz, rqt and gazebo. [..] I know that Gazebo is used for simulating robots, [..]

As Gazebo isn't a visualisation tool, but a dynamics simulator, I don't believe there is actually much overlap between it and the other tools you mention (yes, Gazebo has a UI component, but that's not a generic visualisation tool, it's completely tied to gzserver). See also #q316396.

As to the others:

  • RViz is "[..] a 3D visualizer for the Robot Operating System (ROS) framework" according to the description of its Github repository.

  • RQT is "[..] a Qt-based framework for GUI development for ROS" according the wiki page.

So one is a "batteries included", ready-to-use 3D visualisation environment for (supported) ROS messages, while the other is a Qt based software framework in which you create plugins -- that can also visualise supported ROS messages, but also many, many other things (2D plotting (or graphing) of time series data, submitting service requests, determining the dependencies of packages, invoking actions, changing logger levels, inspecting message and service definitions, interfacing with dynamic_reconfigure servers, etc).

At some point the developers of RQT decided that it made sense to be able to have small, plugin based and dockable "UI-lets" which would allow anyone to create an arbitrary combination of those plugins to create their own "control panel" with which they can create a UI for a specific robot or application.

All of that could have been written as RViz plugins, but that would mean that all of that could also only be used from within RViz, which would mean that the overhead of rendering the full 3D visualisation would also always be incurred.


I'm not sure there is a definitive answer which should be used when, it also partly comes down to personal preference I believe, combined with what it is that you'd like to visualise.

A (very) old discussion on this topic: [ros-users] Should I write plugins for rqt or rviz?

There are several visualisations tools in ROS. I think that the main ones are rviz, rqt and gazebo. [..] I know that Gazebo is used for simulating robots, [..]

As Gazebo isn't a visualisation tool, but a dynamics simulator, I don't believe there is actually much overlap between it and the other tools you mention (yes, Gazebo has a UI component, but that's not a generic visualisation tool, it's completely tied to gzserver). See also #q316396.

As to the others:

  • RViz is "[..] a 3D visualizer for the Robot Operating System (ROS) framework" according to the description of its Github repository.

  • RQT is "[..] a Qt-based framework for GUI development for ROS" according the wiki page.

So one is a "batteries included", ready-to-use 3D visualisation environment for (supported) ROS messages, while the other is a Qt [Qt](https://en.wikipedia.org/wiki/Qt_(software)) based software framework in which you create plugins -- that can also visualise supported ROS messages, but also many, many other things (2D plotting (or graphing) of time series data, submitting service requests, determining the dependencies of packages, invoking actions, changing logger levels, inspecting message and service definitions, interfacing with dynamic_reconfigure servers, etc).

At some point the developers of RQT decided that it made sense to be able to have small, plugin based and dockable "UI-lets" which would allow anyone to create an arbitrary combination of those plugins to create their own "control panel" with which they can create a UI for a specific robot or application.

All of that could have been written as RViz plugins, but that would mean that all of that could also only be used from within RViz, which would mean that the overhead of rendering the full 3D visualisation would also always be incurred.


I'm not sure there is a definitive answer which should be used when, it also partly comes down to personal preference I believe, combined with what it is that you'd like to visualise.

A (very) old discussion on this topic: [ros-users] Should I write plugins for rqt or rviz?

There are several visualisations tools in ROS. I think that the main ones are rviz, rqt and gazebo. [..] I know that Gazebo is used for simulating robots, [..]

As Gazebo isn't a visualisation tool, but a dynamics simulator, I don't believe there is actually much overlap between it and the other tools you mention (yes, Gazebo has a UI component, but that's not a generic visualisation tool, it's completely tied to gzserver). See also #q316396.

As to the others:

  • RViz is "[..] a 3D visualizer for the Robot Operating System (ROS) framework" according to the description of its Github repository.

  • RQT is "[..] a Qt-based framework for GUI development for ROS" according the wiki page.

So one is a "batteries included", ready-to-use 3D visualisation environment for (supported) ROS messages, while the other is a [Qt](https://en.wikipedia.org/wiki/Qt_(software)) based software framework in which you create plugins -- that can also visualise supported ROS messages, but also supports many, many other things (2D (2D plotting (or graphing) of time series data, data, submitting service requests, requests, determining the dependencies of packages, invoking actions, packages, introspecting actions, changing node logger levels, levels, inspecting message message and service definitions, definitions, interfacing with dynamic_reconfigure servers, servers, etc).

At some point the developers of RQT decided that it made sense to be able to have small, plugin based and dockable "UI-lets" which would allow anyone to create an arbitrary combination of those plugins to create their own "control panel" with which they can create a UI for a specific robot or application.

All of that could have been written as RViz plugins, but that would mean that all of that could also only be used from within RViz, which would mean that the overhead of rendering the full 3D visualisation would also always be incurred.


I'm not sure there is a definitive answer which should be used when, it also partly comes down to personal preference I believe, combined with what it is that you'd like to visualise.

A (very) old discussion on this topic: [ros-users] Should I write plugins for rqt or rviz?

There are several visualisations tools in ROS. I think that the main ones are rviz, rqt and gazebo. [..] I know that Gazebo is used for simulating robots, [..]

As Gazebo isn't a visualisation tool, but a dynamics simulator, I don't believe there is actually much overlap between it and the other tools you mention (yes, Gazebo has a UI component, but that's not a generic visualisation tool, it's completely tied to gzserver). See also #q316396.

As to the others:

  • RViz is "[..] a 3D visualizer for the Robot Operating System (ROS) framework" according to the description of its Github repository.

  • RQT is "[..] a Qt-based framework for GUI development for ROS" according the wiki page.

So one is a "batteries included", ready-to-use 3D visualisation environment for (supported) ROS messages, while the other is a [Qt](https://en.wikipedia.org/wiki/Qt_(software)) based software framework in which you create plugins -- that can also visualise supported ROS messages, but also supports many, many other things (2D plotting (or graphing) of time series data, submitting service requests, determining the dependencies of packages, introspecting actions, changing node logger levels, inspecting message and service definitions, interfacing with dynamic_reconfigure servers, etc).

At some point the developers of RQT decided that it made sense to be able to have small, plugin based and dockable "UI-lets" which would allow anyone to create an arbitrary combination of those plugins to create their own "control panel" with which they can create a UI for a specific robot or application.application:

rqt example

All of that could have been written as RViz plugins, but that would mean that all of that could also only be used from within RViz, which would mean that the overhead of rendering the full 3D visualisation would also always be incurred.


I'm not sure there is a definitive answer which should be used when, it also partly comes down to personal preference I believe, combined with what it is that you'd like to visualise.

A (very) old discussion on this topic: [ros-users] Should I write plugins for rqt or rviz?