{"id":13676297,"url":"https://github.com/ros2/rviz","last_synced_at":"2025-04-04T19:15:09.592Z","repository":{"id":37546178,"uuid":"101726150","full_name":"ros2/rviz","owner":"ros2","description":"ROS 3D Robot Visualizer","archived":false,"fork":false,"pushed_at":"2023-12-12T10:12:39.000Z","size":17015,"stargazers_count":223,"open_issues_count":118,"forks_count":190,"subscribers_count":28,"default_branch":"rolling","last_synced_at":"2023-12-13T10:29:06.701Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause-clear","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ros2.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null}},"created_at":"2017-08-29T06:19:09.000Z","updated_at":"2023-12-07T01:53:00.000Z","dependencies_parsed_at":"2023-10-16T20:55:19.500Z","dependency_job_id":"62d677ad-2d44-4012-902e-f7d4f53a8255","html_url":"https://github.com/ros2/rviz","commit_stats":null,"previous_names":[],"tags_count":258,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ros2%2Frviz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ros2%2Frviz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ros2%2Frviz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ros2%2Frviz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ros2","download_url":"https://codeload.github.com/ros2/rviz/tar.gz/refs/heads/rolling","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234923,"owners_count":20905854,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T13:00:22.105Z","updated_at":"2025-04-04T19:15:09.559Z","avatar_url":"https://github.com/ros2.png","language":"C++","funding_links":[],"categories":["C++","Packages","🗣️ Human-Robot Interaction"],"sub_categories":["Ecosystem"],"readme":"# RViz\n\nThis branch is currently contained in the main `ros2.repos` file of ROS 2 and can be used for ROS 2.\nThe latest release will be available with your ROS 2 download.\n\nROS 2 does not have a wiki yet. To learn about RViz and its functionality, please refer to the ROS RViz [wiki page](http://www.ros.org/wiki/rviz).\n\n## Features\n\n### Already ported\nThese features have already been ported from `ros-visualization/rviz` to `ros2/rviz`.\nThe basic documentation can still be found on the RViz [wiki page](http://www.ros.org/wiki/rviz).\nFor some displays, the [documentation is updated](docs/FEATURES.md).\n\n| Displays              | Tools         | View Controller       | Panels          |\n| --------------------- | ------------- | --------------------- | --------------- |\n| Axes                  | Move Camera   | Orbit                 | Displays        |\n| Camera                | Focus Camera  | XY Orbit              | Help            |\n| DepthCloud            | Measure       | First Person          | Selections      |\n| Effort                | Select        | Third Person Follower | Time            |\n| Fluid                 | 2D Nav Goal   | Top Down Orthographic | Tool Properties |\n| Grid                  | Publish Point |                       | Views           |\n| Grid Cells            | Initial Pose  |\n| Illuminance           | Interact      |\n| Image                 |\n| Interactive Marker    |\n| Laser Scan            |\n| Map                   |\n| Marker                |\n| Marker Array          |\n| Odometry              |\n| Point Cloud (1 and 2) |\n| Point                 |\n| Polygon               |\n| Pose                  |\n| Pose Array            |\n| Pose With Covariance  |\n| Range                 |\n| Relative Humidity     |\n| Robot Model           |\n| Temperature           |\n| TF                    |\n| Wrench                |\n\n\n### Not yet ported\nOther features:\n- Stereo\n\nIn case you wished to see those features in RViz for ROS 2, feel free to add a pull request.\nMake sure to read the developer guide below and the migration guide.\n\n### New features\n#### Pluggable transformation library\n\nIn RViz for ROS 1 the frames transformation library used is tf2 (detailed information about it can be found [here](http://wiki.ros.org/tf2)).\nIn 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.\nDevelopers can create and use their own plugins to provide custom transformation behavior.\n\nTwo plugins are bundled with RViz:\n- a plugin for tf2 (`TFFrameTransformer`, in `rviz_default_plugins`), which provides the standard tf2 functionality and which is used as a default\n- a trivial plugin (`IdentityFrameTransformer`, in `rviz_common`), which always performs identity transforms.\n  This plugin is used by default if the tf2 plugin is not available and no other valid plugin is specified.\n\nAs anticipated, in order for the user to choose the plugin to use, RViz provides a dedicated panel: the `Transformation` panel.\n\nNote: 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).\nIn order to take this possibility into account, the `TransformerGuard` class is provided.\nAdding it to a display ensures that the display will be disabled and won't function in case the wrong transformer is used.\n\nMore 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](docs/plugin_development.md).\n\n## Developer Guide\n\n### Build\n#### Building RViz together with ROS 2\n\nThe simplest way to build from source is to use the official installation guide, since RViz is part of the official ROS 2 repos file.\n\nhttps://docs.ros.org/en/rolling/Installation.html\n\n#### Building RViz in a separate workspace\n\nWhen developing for RViz, it can be beneficial to build it in a separate workspace.\n\n**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.\nMake sure to have a source build of ROS 2 available (see installation procedure above).\n\nCreate a new workspace:\n\n```\n$ mkdir -p ~/rviz2_ws/src\n$ cd ~/rviz2_ws/src\n```\n\nClone these repositories into the source folder:\n\n```\n$ git clone https://github.com/ros2/rviz.git\n```\n\nThen build all the packages with this command:\n\n```\n$ colcon build --merge-install\n```\nThe `--merge-install` flag is optional but ensures a cleaner environment which is helpful for development.\n\nMore instructions and examples to come.\n\nIn addition to the [ROS 2 Developer Guide](https://docs.ros.org/en/rolling/Contributing/Developer-Guide.html) we suggest the following.\n\n### Testing\n\nMain rationale here is to create code that can be well tested by avoiding highly coupled components.\n\n* Avoid free functions (cannot be mocked).\n* Create abstract base classes (interface) for dependencies.\n  (This allows for a mock to be completely independent of the actual implementing class.)\n* Use only the interface in the dependent code.\n* Specify dependencies as a constructor argument.\n* Prefer `std::unique_ptr` for storing the dependency instead of a raw pointer.\n\n### Migration\n\nWhen migrating from `ros-visualization/rviz` to `ros2/rviz`, please see the more extensive [migration guide](docs/migration_guide.md).\n\n### Plugin Development\n\nPlugins can extend RViz at different extension points:\n- Displays\n- Panels\n- Tools\n- Frames transformation library\n- View Controllers\n\nMore information on writing plugins can be found in the [plugin development guide](docs/plugin_development.md).\n\n## Icon Copyrights\n\nThis package contains Public Domain icons downloaded from http://tango.freedesktop.org/releases/.\n\nUpstream Authors (2005-2009):\n\n- Ulisse Perusin `\u003culi.peru@gmail.com\u003e`\n- Steven Garrity `\u003csgarrity@silverorange.com\u003e`\n- Lapo Calamandrei `\u003ccalamandrei@gmail.com\u003e`\n- Ryan Collier `\u003crcollier@novell.com\u003e`\n- Rodney Dawes `\u003cdobey@novell.com\u003e`\n- Andreas Nilsson `\u003cnisses.mail@home.se\u003e`\n- Tuomas Kuosmanen `\u003ctigert@tigert.com\u003e`\n- Garrett LeSage `\u003cgarrett@novell.com\u003e`\n- Jakub Steiner `\u003cjimmac@novell.com\u003e`\n\nOther icons and graphics contained in this package are released into the\nPublic Domain as well.\n\nAuthors (2012-2017):\n\n- David Gossow\n- Chad Rockey\n- Kei Okada\n- Julius Kammerl\n- Acorn Pooley\n- Rein Appeldoorn\n\nCopyright notice for all icons and graphics in this package:\n\n```\nPublic Domain Dedication\n\nCopyright-Only Dedication (based on United States law) or Public Domain\nCertification\n\nThe person or persons who have associated work with this document (the\n\"Dedicator\" or \"Certifier\") hereby either (a) certifies that, to the best\nof his knowledge, the work of authorship identified is in the public\ndomain of the country from which the work is published, or (b)\nhereby dedicates whatever copyright the dedicators holds in the work\nof authorship identified below (the \"Work\") to the public domain. A\ncertifier, moreover, dedicates any copyright interest he may have in\nthe associated work, and for these purposes, is described as a\n\"dedicator\" below.\n\nA certifier has taken reasonable steps to verify the copyright\nstatus of this work. Certifier recognizes that his good faith efforts\nmay not shield him from liability if in fact the work certified is not\nin the public domain.\n\nDedicator makes this dedication for the benefit of the public at\nlarge and to the detriment of the Dedicator's heirs and successors.\nDedicator intends this dedication to be an overt act of relinquishment\nin perpetuity of all present and future rights under copyright law,\nwhether vested or contingent, in the Work. Dedicator understands that\nsuch relinquishment of all rights includes the relinquishment of all\nrights to enforce (by lawsuit or otherwise) those copyrights in the\nWork.\n\nDedicator recognizes that, once placed in the public domain, the Work\nmay be freely reproduced, distributed, transmitted, used, modified,\nbuilt upon, or otherwise exploited by anyone for any purpose, commercial\nor non-commercial, and in any way, including by methods that have not\nyet been invented or conceived.\n```\n\nSource: http://creativecommons.org/licenses/publicdomain/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fros2%2Frviz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fros2%2Frviz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fros2%2Frviz/lists"}