Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pass clock to tf2_ros::buffer #340

Merged
merged 1 commit into from
Aug 8, 2018
Merged

Pass clock to tf2_ros::buffer #340

merged 1 commit into from
Aug 8, 2018

Conversation

sloretz
Copy link
Contributor

@sloretz sloretz commented Jul 26, 2018

connects to ros2/geometry2#67

@sloretz sloretz added the in progress Actively being worked on (Kanban column) label Jul 26, 2018
@sloretz sloretz self-assigned this Jul 26, 2018
Copy link
Contributor

@tfoote tfoote left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good to go with the associated change in tf2.

@sloretz sloretz merged commit 3931ade into ros2 Aug 8, 2018
@sloretz sloretz removed the in progress Actively being worked on (Kanban column) label Aug 8, 2018
@sloretz sloretz deleted the use_ros2_time branch August 8, 2018 23:06
botteroa-si added a commit to bosch-io/rviz that referenced this pull request Aug 9, 2018
wjwwood pushed a commit to bosch-io/rviz that referenced this pull request Sep 6, 2018
wjwwood pushed a commit that referenced this pull request Sep 8, 2018
* Extract frame transformer from interface

* Delete tf2 dependency from frame_manager

* Improve interface

* Fix uncrustify

* Add tests for interface in frame_manager

* Add frame_transform_tf test

* Use weak_ptr instead of shared_ptr for internal object

* Add visibility control

* Fix linters

* Delete superfluous code

* Add missing include to fix build

* Change name of FrameTransformer member of FrmeManager

* Refactor frame_transformer_tf_test

* Add methods to TFWrapper and make buffer_ private

* Fix rviz_default_plugins after changes in TFWrapper

* Change name of wrapper_ to tf_wrapper_

* Minor refactoring

* Create TransformationManager class

* Add getTypeId() method to FrameTransformer

* Use TransformationManager class

* Add structs and helpers for Time, PoseStamped and TransformationStamped

* Remove ROS dependencies from frame_manager.hpp

* Fix tests and mocks

* Update and fix rviz_default_plugins mocks

* Add visibility control to structs.hpp

* Add visibility control to helper methods

* Add unit tests for helper methods

* Fix Windows warnings

* Move FrameTransformer and TransformationManager to namespace transformation

* Fix build

* Make FrameTransformer::transform() return a PoseStamped and rename FrameTransformer::lastAvailableTransform()

* Refactor frame_transformer.hpp

* Refactor tf_wrapper and frame_transformer_tf

* Add struct.cpp and make also structs ros-independent

* Fix Windows build

* Add tests for new conversion methods and refactor structs and tests

* Fix uncrustify

* Use rclcpp::Time instead of rviz_common::tranformation::time in FrameTransformer

* Fix Windows warnings

* Add TransformationPanel to change transformation plugin at runtime

Note: The panel is not yet functional and requires the implementation
of a TransformationManager

* Better naming for init method

* Remove unused imports

* Use the TransformationManager in the TransformationPanel

The TransformationManager is used to retrieve the available plugins
and to set the transform after selecting it in the GUI

* Move FrameTransformerTF to rviz_default_plugins

* Add documentation to frame_transformer.hpp

* Replace the button group by a PropertyTreeWidget with radio buttons

Now the design fits better with the rest of the panels.

Note: The QTreeView does not allow to place QWidgets into the column,
thus the self implemented radio button group.

* Cleanup: typos

* Fix linters

* Move TFWrapper and FrameTransformerTFTest to rviz_default_plugins

* Extend TransformationManager to take ROS node in constructor

* Correct namespaces and includes

* Load FrameTransformerTF using pluginlib

* Fix linters

* Rename FrameTransformerTF to TFFrameTransformer

Equivalent to naming scheme for Displays, Panels, etc.

* Add DummyTransformer

* Fix connection between TransformationManager and FrameManager

* Add virtual destructor to FrameTransformer to avoid crash when changing transformer

* Use shared_ptr instead of unique_ptr to be consistent with signal definition

* Move transformation_manager.hpp to include folder (to be used in rviz_default_plugins)

* Draw checkbox instead of radio button in RadioButtonProperty

This prevents rendering issues on macOS, where the radio button would
be cut off on the bottom.

* Rename RadioButtonProperty into GroupedCheckboxProperty

* Minor style fixes in TransformationManager

* Store pointer to TransformationManager in TransformationPanel

* Add tests for DummyTransformer

* Minor refactoring

* Add PluginInformation struct to rviz_common::Factory

This allows a factory user to conveniently get all information for one plugin.

* Improve interface of TransformationManager and its usage in TransformationPanel

* Rename DummyTransformer into IdentityFrameTransformer

* Omit "FrameManager" from TFFrameManager plugin name

This is equivalent to how e.g. Displays are named

* Add convenience base class for displays that only work with TFTransformer

* Allow LaserScan display to handle changes of the FrameTransformer type

* Add tests for LaserScanDisplay new functionality

* Minor cleanup in Transformer user interface

* Refactor factories to work with PluginInfo

This improves the interaction with factories since all attributes of a
plugin are immediately available and do not have to be retrieved
separately.

* Change design: from a base common class (OnlyTfCompatibleBaseDisplay) to a delegate object (TransformerHandlerDelegate)

* Handle user triggered enable/disable events when using wrong transformer.

* Expose a method to check if the current transformer is the correct one, to be used in the Display::update() method

* Rename TransformerHandlerDelegate to TransformerGuard

* Add tests for TransformerGuard

* Remove no longer actual laser_scan_display_test.cpp and fix linters

* Move TransformerGuard to namespace transformation

* Use TransformerGuard in TFDisplay to make it handle changes of the FrameTransformer type

* Add config loading and saving to TransformationManager

Also improves error handling.

* Use TransformGuard in RobotModelDisplay

* Make TransformerGuard check the transformer when display is added

* Harmonize comment style in frame_transformer.hpp and add TODO for commented out method

* Add visibility control to the IdentityTransformer

* Add a TransformerGuard test and fix broken one

* Rename structs members without the final underscore

* Use namespace ::testing in ros_conversion_helpers_test.cpp

* Add new FrameManager tests and refactor old ones

* Fix typo

* Add visibility control to TFFrameTransformer and to TransformerGuard

* Fix typo in filename

q

* Fix pluginlib icon loading crash on missing plugin

This also fixes the segfault on startup when the transformer to load
is not available

* Refactor transformer_guard.hpp and relative tests

* Cleanup naming in transformer_guard.hpp

* Improve TransformerGuard tests

* Use relative path to import identity_transformer.hpp

* Always use TF transformer in visual tests

* Reorder and fix includes in pluginlib_factory.hpp

* Small refactorings in dialogs and display_factory

* Rename dummy_transformer_test to identity_transformer_test

* Add description to grouped checkbox property and group

* Change name of class InternalFrameTransformer to TransformationLibraryConnector and of relative getters

* Minor fixes

* Refactor structs.cpp

* Update README

* Update plugins development guide

* Fix typos in ros_conversion_helper_test.cpp

* Fix points marker behavior on missing transform

The old routine did not return when transformation fails, which resulted
in strange visual behavior on Windows

* Set focus policy in TransformationPanel to hide selection boxes

* Refactor TransformerGuard so that it checks the type of the transformer itself rather than of the connector

-To accomplish this modification the new method getTransformer had to be added to rviz_common::FrameManager

* Add comment regarding transformer_name in TransformerGuard

* Fix uncrustify and cpplint

* Condense documentation, remove trailing whitespaces

* Fix Copyrights

* Fix transformer guard test

* Update comment in transformer_guard.hpp and insert TF as default transformer in visual testing config

* Pass clock to tf2::Buffer contructor

-Necessary after PR #340

* Fix tests and uncrustify

* Minor cleanups

- use "::WeakPtr" convention
- add missing visibility macro to TransformationManager
- retain information about tf exceptions when re-throwing
- fix documentation typo

* Remove reset button from transformer panel

- superfluous for small amount of checkboxes
- Code-Style: reorder functions in transformer panel

* style and whitespace fixes

Signed-off-by: William Woodall <william@osrfoundation.org>

* use ++ suffix in loop iterators (cppcheck)

Signed-off-by: William Woodall <william@osrfoundation.org>

* suppress Ogre warnings when interpreting single header (autocomplete)

Signed-off-by: William Woodall <william@osrfoundation.org>

* initialize member variable in constructor

Signed-off-by: William Woodall <william@osrfoundation.org>

* Implement workaround for missing Qt clicked event

- Clicking on the transformers view, sometimes the clicked
  event is only sent to the underlying property, not the tree view
- This results in weird behaviour of the gui
- With this fix, it can only (rarely) happen that the click does nothing

* doc style cleanup

* fixup

Signed-off-by: William Woodall <william@osrfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants