• Stars
    star
    287
  • Rank 144,232 (Top 3 %)
  • Language
    C++
  • License
    BSD 3-Clause Clea...
  • Created about 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ROS 3D Robot Visualizer

RViz

This branch is currently contained in the main ros2.repos file of ROS 2 and can be used for ROS 2. The latest release will be available with your ROS 2 download.

ROS 2 does not have a wiki yet. To learn about RViz and its functionality, please refer to the ROS RViz wiki page.

Features

Already ported

These features have already been ported from ros-visualization/rviz to ros2/rviz. The basic documentation can still be found on the RViz wiki page. For some displays, the documentation is updated.

Displays Tools View Controller Panels
Axes Move Camera Orbit Displays
Camera Focus Camera XY Orbit Help
DepthCloud Measure First Person Selections
Effort Select Third Person Follower Time
Fluid 2D Nav Goal Top Down Orthographic Tool Properties
Grid Publish Point Views
Grid Cells Initial Pose
Illuminance Interact
Image
Interactive Marker
Laser Scan
Map
Marker
Marker Array
Odometry
Point Cloud (1 and 2)
Point
Polygon
Pose
Pose Array
Pose With Covariance
Range
Relative Humidity
Robot Model
Temperature
TF
Wrench

Not yet ported

Other features:

  • Stereo

In case you wished to see those features in RViz for ROS 2, feel free to add a pull request. Make sure to read the developer guide below and the migration guide.

New features

Pluggable transformation library

In RViz for ROS 1 the frames transformation library used is tf2 (detailed information about it can be found here). In RViz for ROS 2 the frames transformation library is now pluggable, meaning that different transformation library plugins can be loaded and changed dynamically in the gui. Developers can create and use their own plugins to provide custom transformation behavior.

Two plugins are bundled with RViz:

  • a plugin for tf2 (TFFrameTransformer, in rviz_default_plugins), which provides the standard tf2 functionality and which is used as a default
  • a trivial plugin (IdentityFrameTransformer, in rviz_common), which always performs identity transforms. This plugin is used by default if the tf2 plugin is not available and no other valid plugin is specified.

As anticipated, in order for the user to choose the plugin to use, RViz provides a dedicated panel: the Transformation panel.

Note: Not all transformation plugins are necessarily compatible with all RViz displays (e.g. some of the default displays, like the TF display, can only work with tf2). In order to take this possibility into account, the TransformerGuard class is provided. Adding it to a display ensures that the display will be disabled and won't function in case the wrong transformer is used.

More detailed information on how to write a transformation plugin and on how to handle transformation specific displays can be found in the plugin development guide.

Developer Guide

Build

Building RViz together with ROS 2

The simplest way to build from source is to use the official installation guide, since RViz is part of the official ROS 2 repos file.

https://docs.ros.org/en/rolling/Installation.html

Building RViz in a separate workspace

When developing for RViz, it can be beneficial to build it in a separate workspace.

Note: When building the current ros2 branch from source, the latest ROS 2 release for all dependencies might not be sufficient: it could be necessary to build the ROS 2 master branch. Make sure to have a source build of ROS 2 available (see installation procedure above).

Create a new workspace:

$ mkdir -p ~/rviz2_ws/src
$ cd ~/rviz2_ws/src

Clone these repositories into the source folder:

$ git clone https://github.com/ros2/rviz.git

Then build all the packages with this command:

$ colcon build --merge-install

The --merge-install flag is optional but ensures a cleaner environment which is helpful for development.

More instructions and examples to come.

In addition to the ROS 2 Developer Guide we suggest the following.

Testing

Main rationale here is to create code that can be well tested by avoiding highly coupled components.

  • Avoid free functions (cannot be mocked).
  • Create abstract base classes (interface) for dependencies. (This allows for a mock to be completely independent of the actual implementing class.)
  • Use only the interface in the dependent code.
  • Specify dependencies as a constructor argument.
  • Prefer std::unique_ptr for storing the dependency instead of a raw pointer.

Migration

When migrating from ros-visualization/rviz to ros2/rviz, please see the more extensive migration guide.

Plugin Development

Plugins can extend RViz at different extension points:

  • Displays
  • Panels
  • Tools
  • Frames transformation library
  • View Controllers

More information on writing plugins can be found in the plugin development guide.

Icon Copyrights

This package contains Public Domain icons downloaded from http://tango.freedesktop.org/releases/.

Upstream Authors (2005-2009):

Other icons and graphics contained in this package are released into the Public Domain as well.

Authors (2012-2017):

  • David Gossow
  • Chad Rockey
  • Kei Okada
  • Julius Kammerl
  • Acorn Pooley
  • Rein Appeldoorn

Copyright notice for all icons and graphics in this package:

Public Domain Dedication

Copyright-Only Dedication (based on United States law) or Public Domain
Certification

The person or persons who have associated work with this document (the
"Dedicator" or "Certifier") hereby either (a) certifies that, to the best
of his knowledge, the work of authorship identified is in the public
domain of the country from which the work is published, or (b)
hereby dedicates whatever copyright the dedicators holds in the work
of authorship identified below (the "Work") to the public domain. A
certifier, moreover, dedicates any copyright interest he may have in
the associated work, and for these purposes, is described as a
"dedicator" below.

A certifier has taken reasonable steps to verify the copyright
status of this work. Certifier recognizes that his good faith efforts
may not shield him from liability if in fact the work certified is not
in the public domain.

Dedicator makes this dedication for the benefit of the public at
large and to the detriment of the Dedicator's heirs and successors.
Dedicator intends this dedication to be an overt act of relinquishment
in perpetuity of all present and future rights under copyright law,
whether vested or contingent, in the Work. Dedicator understands that
such relinquishment of all rights includes the relinquishment of all
rights to enforce (by lawsuit or otherwise) those copyrights in the
Work.

Dedicator recognizes that, once placed in the public domain, the Work
may be freely reproduced, distributed, transmitted, used, modified,
built upon, or otherwise exploited by anyone for any purpose, commercial
or non-commercial, and in any way, including by methods that have not
yet been invented or conceived.

Source: http://creativecommons.org/licenses/publicdomain/

More Repositories

1

ros2

The Robot Operating System, is a meta operating system for robots.
3,426
star
2

examples

Example packages for ROS 2
C++
683
star
3

ros2_documentation

ROS 2 docs repository
Python
541
star
4

rclcpp

rclcpp (ROS Client Library for C++)
C++
536
star
5

demos

C++
491
star
6

ros1_bridge

ROS 2 package that provides bidirectional communication between ROS 1 and ROS 2
C++
435
star
7

rclpy

rclpy (ROS Client Library for Python)
Python
288
star
8

rosbag2

C++
272
star
9

design

Design documentation for ROS 2.0 effort
JavaScript
224
star
10

common_interfaces

A set of packages which contain common interface files (.msg and .srv).
C++
220
star
11

ros2cli

ROS 2 command line interface tools
Python
173
star
12

rmw_zenoh

RMW for ROS 2 using Zenoh as the middleware
C++
171
star
13

rmw_fastrtps

Implementation of the ROS Middleware (rmw) Interface using eProsima's Fast RTPS.
C++
155
star
14

rmw_iceoryx

rmw implementation for iceoryx
C++
153
star
15

ros2_tracing

Tracing tools for ROS 2.
Python
137
star
16

rcl

Library to support implementation of language specific ROS Client Libraries.
C++
128
star
17

launch

Tools for launching multiple processes and for writing tests involving multiple processes.
Python
123
star
18

geometry2

A set of ROS packages for keeping track of coordinate transforms.
C++
120
star
19

rclc

ROS Client Library for the C language.
C
113
star
20

rmw_cyclonedds

ROS 2 RMW layer for Eclipse Cyclone DDS
C++
112
star
21

turtlebot2_demo

C++
95
star
22

rmw

The ROS Middleware (rmw) Interface.
C
95
star
23

sros2

tools to generate and distribute keys for SROS 2
Python
89
star
24

freertps

a free, portable, minimalist, work-in-progress RTPS implementation
C
89
star
25

rosidl

Packages which provide the ROS IDL (.msg) definition and code generation.
C++
74
star
26

ros2_embedded_nuttx

This repository isn't actively being worked on. If you would like to take over maintainership please open a ticket on https://github.com/ros2/ros2
C
72
star
27

message_filters

C++
70
star
28

realtime_support

Minimal real-time testing utility for measuring jitter and latency.
C++
61
star
29

rcutils

Common C functions and data structures used in ROS 2
C
56
star
30

launch_ros

Tools for launching ROS nodes and for writing tests involving ROS nodes.
Python
55
star
31

domain_bridge

Bridge communication across different ROS 2 domains.
C++
52
star
32

ci

ROS 2 CI Infrastructure
Python
48
star
33

rmw_connextdds

ROS 2 RMW layer for RTI Connext DDS Professional and RTI Connext DDS Micro.
C++
47
star
34

example_interfaces

Msg, Srv, etc. ROS interfaces used in examples
CMake
47
star
35

system_tests

C++
38
star
36

rcl_interfaces

A repository for messages and services used by the ROS client libraries
C++
38
star
37

rcpputils

C++
31
star
38

tutorials

C++
30
star
39

ros2_embedded_freertos

This repository isn't actively being worked on. If you would like to take over maintainership please open a ticket on https://github.com/ros2/ros2 -- ROS 2 for embedded devices.
C
29
star
40

rmw_connext

Implementation of the ROS Middleware (rmw) Interface using RTI's Connext DDS.
C++
26
star
41

choco-packages

Chocolatey package configurations for upstream dependencies
PowerShell
25
star
42

rosbag2_bag_v2

rosbag2 plugin for replaying ros1 version2 bag files
C++
24
star
43

rmw_dps

Implementation of the ROS Middleware (rmw) Interface using Intel's Distributed Publish & Subscribe.
C++
23
star
44

buildfarm_perf_tests

Performance tests which run regularly on the buildfarm
C++
23
star
45

rmw_implementation

CMake infrastructure and dependencies for rmw implementations
C++
21
star
46

openrobotics_darknet_ros

ROS 2 interface to darknet, an open source neural network library.
C++
20
star
47

rosidl_python

rosidl support for Python
EmberScript
19
star
48

ros_core_documentation

Documentation for the Core ROS 2 packages which does not fit into one of the individual packages' documentation.
Python
17
star
49

ros_network_viz

Python
17
star
50

rcl_logging

Logging implementations for ROS 2.
C++
16
star
51

rmw_gurumdds

Implementation of the ROS middleware interface using GurumNetworks GurumDDS.
C++
13
star
52

ros_testing

Single point of entry for writing tests which involve Nodes in ROS 2.
Python
13
star
53

rosidl_typesupport

Packages which provide the typesupport for ROS messages and services
C++
13
star
54

eigen3_cmake_module

Adds a custom find module for Eigen3
CMake
12
star
55

rmw_dds_common

C++
11
star
56

rmw_opensplice

Implementation of the ROS Middleware (rmw) interface using PrismTech's OpenSplice DDS.
C++
11
star
57

variants

Variants for ROS 2 (implemented as ament packages)
CMake
9
star
58

cookbook

A set of recipes for doing common tasks in ROS 2
C++
9
star
59

ros_workspace

Package to set ROS environment and configuration variables for ROS 2.
CMake
7
star
60

performance_test_fixture

Test fixture and CMake macro for using osrf_testing_tools_cpp with Google Benchmark
C++
7
star
61

tsc_working_group_governance_template

7
star
62

unique_identifier_msgs

CMake
6
star
63

rosidl_dds

Python
6
star
64

tlsf

Snapshot of TLSF allocator
C
6
star
65

detection_visualizer

ROS 2 package with a node that draws bound boxes for debugging computer vision nodes.
Python
6
star
66

rosidl_runtime_py

Runtime utilities for working with generated ROS interfaces in Python
Python
5
star
67

ros2_dds_profiles_examples

Example dds profiles to configure DDS correctly for different use cases
Python
5
star
68

rosidl_typesupport_gurumdds

Typesupport package which generates interfaces used by rmw_gurumdds.
EmberScript
4
star
69

python_cmake_module

CMake module for finding Python in a consistent way for all ROS 2 packages.
CMake
4
star
70

ament_cmake_ros

Python
4
star
71

darknet_vendor

CMake wrapper around darknet, an open source neural network framework.
CMake
4
star
72

ros2_generate_interface_docs

Python
4
star
73

middleware_working_group

Working group focused on functionality provided by the communication middleware and the language specific client libraries.
4
star
74

test_interface_files

CMake
3
star
75

rosidl_typesupport_opensplice

rosidl typesupport for PrismTech's OpenSplice DDS.
EmberScript
3
star
76

pybind11_vendor

Vendor package for pybind11.
CMake
3
star
77

tinyxml_vendor

Vendor package for providing tinyxml within a cmake package
CMake
2
star
78

rosidl_typesupport_fastrtps

rosidl typesupport for eProsima's FastRTPS
EmberScript
2
star
79

spdlog_vendor

Vendor package for spdlog
CMake
2
star
80

rosidl_dynamic_typesupport

Unified Interface for Dynamic (Runtime) Typesupport and Serialization
C
2
star
81

tinyxml2_vendor

temporary vendor package for tinyxml2
CMake
2
star
82

libyaml_vendor

CMake wrapper downloading and building libyaml
C++
2
star
83

orocos_kdl_vendor

CMake
2
star
84

unique_identifier

ROS 2 support for Universally Unique Identifiers
C++
1
star
85

rmw_freertps

rmw implementation using freertps
C++
1
star
86

netperf

C++
1
star
87

ros2.github.io

website for ros2.org
HTML
1
star
88

mimick_vendor

CMake
1
star
89

yaml_cpp_vendor

Vendor package for providing yaml cpp within a cmake package
CMake
1
star
90

ros2doc

i can haz docs?
Python
1
star
91

ros2cli_common_extensions

CMake
1
star
92

poco_vendor

CMake shim over the poco library: https://github.com/pocoproject/poco
CMake
1
star
93

rosidl_typesupport_connext

rosidl typesupport for RTI's Connext DDS.
EmberScript
1
star
94

docs.ros2.org

HTML
1
star