forked from ros-visualization/rviz
-
Notifications
You must be signed in to change notification settings - Fork 3
/
mainpage.dox
102 lines (76 loc) · 4.87 KB
/
mainpage.dox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/**
\mainpage
\htmlinclude manifest.html
\b rviz is a 3d visualization program for robots using ROS.
\b rviz can be extended by writing \b plugins.
(See <a href="http://ros.org/doc/hydro/api/rviz_plugin_tutorials/html">RViz Plugin Tutorials</a>.)
\b librviz is a library for including \b rviz visualization
capabilities in your own applications. (See <a href="http://ros.org/doc/hydro/api/librviz_tutorial/html">Librviz Tutorial</a>.)
\section display_plugin_classes Display Plugin Classes
The main classes relevant when writing display plugins are:
\li rviz::Display This is the superclass of things that can be added to the
list of displays. Subclasses generally subscribe to ROS messages
and show 3D things in the visualization window.
\li rviz::VisualizationManager This is the central manager class of RViz.
Most things you write with RViz will access one of these.
\li rviz::FrameManager subscribes to TF messages to know where all the
coordinate frames are. It has a (settable) "Fixed Frame" and
functions for finding the pose of any other frame relative to it.
This is the main class to use when you need to know where something
is in space.
\li The rviz::Property subclasses like rviz::IntProperty,
rviz::FloatProperty, rviz::StringProperty,
rviz::RosTopicStringProperty, rviz::BoolProperty, etc. are created by
rviz::Display subclasses to define user-editable properties which
get saved to config files.
\li The ogre-helper classes are useful for making some common types of
3D objects show up in the render window: rviz::Arrow, rviz::Axes,
rviz::BillboardLine, rviz::Grid, rviz::MovableText, and
rviz::PointCloud.
\section panel_plugin_classes Panel Plugin Classes
The main classes relevant when writing panel plugins are:
\li rviz::Panel is the superclass of custom panels defined in plugins.
\li rviz::Config represents a config file, which rviz::Panel
subclasses need to use in order to save their custom data (since
they don't use Property objects).
\section librviz_classes Librviz Classes
When writing an application using librviz, some additional important
classes are:
\li rviz::VisualizationFrame is the main RViz window, including the
menus, toolbar, dockable sub-windows, etc.
\li rviz::VisualizationPanel is a stripped-down RViz window (not used
in the actual RViz executable) which has only the
rviz::DisplaysPanel on the left and an rviz::RenderPanel on the
right. This widget has no menu, no toolbar, and cannot have other
widgets "dock" with it. This is a great widget to start with
because hide the list of displays to see a "pure" 3D view in your
application, but you can still show the display list and add or
remove displays interactively if you need to. It also includes an
rviz::VisualizationManager and a call to ros::init(), so there is
less bookkeeping to do.
\li rviz::RenderPanel is the main 3D view widget. Using this directly
in your code gives the most flexibility, at the cost of added
complexity. If you use this, you will need to create an
rviz::VisualizationManager yourself and also call ros::init().
The <a href="http://ros.org/doc/api/librviz_tutorial/html">Librviz
Tutorial</a> demonstrates this.
\section external_apis External APIs
RViz uses several external libraries which show up in its API. Here are some of the major ones:
\li <a href="http://www.ros.org/doc/api/roscpp/html/classros_1_1NodeHandle.html">ros::NodeHandle</a>
is one of the main ROS classes, used for subscribing and publishing on topics.
\li <a href="http://www.ros.org/doc/api/roscpp/html/namespaceros.html#a7f5c939b8a0548ca9057392cc78d7ecb">ros::init()</a>
function, used to initialize a ROS node. Only needed if you want to use an rviz::RenderPanel on its own.
\li <a href="http://www.ros.org/doc/api/tf/html/c++/classtf_1_1MessageFilter.html">tf::MessageFilter</a>
filters incoming ROS messages based on their coordinate frame
header and the frame data currently available from <a
href="http://www.ros.org/wiki/tf">TF</a>.
\li <a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1SceneManager.html">Ogre::SceneManager</a>,
<a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1SceneNode.html">Ogre::SceneNode</a>,
<a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1Vector3.html">Ogre::Vector3</a>,
<a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1Quaternion.html">Ogre::Quaternion</a>,
<a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1ManualObject.html">Ogre::ManualObject</a>,
<a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1Entity.html">Ogre::Entity</a>, and
<a href="http://www.ogre3d.org/docs/api/html/classOgre_1_1Material.html">Ogre::Material</a>
are just a few of the many classes from the <a href="http://www.ogre3d.org">Ogre3D</a>
graphics library which you may need when playing inside RViz.
*/