|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 2.26.30 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
2.26.30 (2026-03-10)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action clients. Now prints a warning on the console instead.
- Fixed topic return when not subscribed.
- Updated publisher documentation.
- Enable logger service only from jazzy upwards since it is not available in humble.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged qml_ros2_plugin at Robotics Stack Exchange
|
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
| Version | 1.26.31 |
| License | MIT |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/StefanFabian/qml_ros2_plugin.git |
| VCS Type | git |
| VCS Version | master |
| Last Updated | 2026-03-10 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Stefan Fabian
Authors
Scientific Works
If you are using this module in a scientific context, feel free to cite this paper:
@INPROCEEDINGS{fabian2021hri,
author = {Stefan Fabian and Oskar von Stryk},
title = {Open-Source Tools for Efficient ROS and ROS2-based 2D Human-Robot Interface Development},
year = {2021},
booktitle = {2021 European Conference on Mobile Robots (ECMR)},
}
QML ROS2 Plugin
Connects QML user interfaces to the Robot Operating System 2 (ROS2). Please be aware that this loses some of the semantic information that the message type would normally provide, since you can subscribe to any message without specifying the type, and the type is only checked if you do specify it.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service Client, Action Client, TfTransform, Ament Index, and querying topics, services, and actions.
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface utilizes Tf and a velocity publisher to control and display the turtle demo, requiring less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml.
Logging
Logging is supported and correctly reports from which QML file and line the message came!
import Ros2 1.0
Item {
function doesWork() {
Ros2.debug("A debug message")
// Set the logging level to Debug (default is usually Info)
Ros2.getLogger().setLoggerLevel(Ros2LoggerLevel.Debug);
Ros2.debug("A debug message that is actually logged.")
Ros2.info("I have some information")
Ros2.warn("This is the last warning")
Ros2.error("Great! Now there's an error.")
Ros2.fatal("I'm dead")
Ros2.info("Just so you know, fatal does not kill a node. Though they usually die after logging fatal")
}
// ...
}
Check the logging example in the examples directory!
Quickstart
Check the examples in the examples directory for a quick introduction on how to use this module.
Can be used to create a Subscription to any topic and message type that is available on your system.
The type does not need to be known at the time of compilation.
Installation
You can either build this repository as part of your ROS2 workspace as you would any other ROS2 package, or
set the CMake option GLOBAL_INSTALL to ON, which installs the plugin in your global qml module directory.
Please note that the plugin will still require a ROS2 environment when loaded to be able to load the message
libraries.
You can install the dependencies using rosdep:
The following command assumes you are in the src folder of your ROS 2 workspace
rosdep install --from-paths . --ignore-packages-from-source
Documentation
You can find the documentation on readthedocs.io.
Alternatively, you can follow the steps below to build it yourself.
Dependencies
- Doxygen
- Sphinx
- sphinx_rtd_theme
- Breathe
Example for Ubuntu
Install dependencies
sudo apt install doxygen python3-sphinx python3-sphinx-rtd-theme python3-breathe
Build documentation
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.26.31 (2026-03-10)
- Revert humble incompatible changes.
- Contributors: Stefan Fabian
1.26.30 (2026-03-09)
- Fixed yaml conversion not handling QJSValue correctly.
- Backport improvements from qml6_ros2_plugin.
- Added backport workflow.
- Updated name of DESTDIR to avoid confusion with cmake variable and fixed code to not use generator expressions in final code where they are not evaluated.
- Use a symlink instead of installing twice. This fixes issues where an application may link against both files through plugins which separates the singletons as they exist per inode and creates complex issues.
- Also install to lib to enable other packages to use this as a library.
- Add funding information to FUNDING.yml
- Feature/backport qt6 improvements
(#13)
- Improved reliability of tests.
- Docs and examples updated.
- Moved logging helper to private src folder.
- Fixed rare crash when queuing service calls.
- Improved service robustness and recovery when service becomes temporarily unavailable.
- Added isActive property to GoalHandle.
- Updated message conversion to be more flexible and include message type name.
- Fixed queryTopics also finding hidden action topics.
- Allow getting array elements as reference.
- Add MessageItemModel as implementation of QAbstractItemModel for the visualization and editing of messages.
* Added append and replace method for Array. Added conversion flags to allow disabling of lazy array evaluation.
- Fixed ServiceClient pendingRequests property decremented after callback is invoked and missing change signal if service not ready.
- Fixed high spinning CPU load when using Zenoh.
- Added isValidTopic to Ros2 singleton.
- Fixed documentation.
- Fixed ImageTransportSubscription ignoring enabled when topic is changed.
- Update README.md
- Update README.
- Catch some more exceptions just in case.
- Improved test reliability.
- Improved test reliability for FastDDS.
- Fixed test which was broken during cherry picking.
- Formatting.
- Small fixes.
- Fixed length distribution mistake in tests.
- Use replace instead of spliceList.
- Fixed min array length in test cases and some compile warnings.
- Try to improve test robustness involving ROS communication.
- Fixed a weird threading bug with the wait mechanism in ServiceClient when the Service was not ready. Added pendingRequests property.
- Renamed aboutToShutdown signal in wrapper in accordance with Ros2Qml singleton. Fixed test after change of how cleanup is done.
- Wait in service request until service is ready.
- Updated logging docs.
- Added more clean shutdown method to avoid middleware crashes due to destruction order of static singletons.
- Added name and type property to ActionClient.
- Added query methods for services and actions.
- Hopefully fixed a weird crash in service client destructor.
- Fixed QJSValue not assigned to CompoundArrayMessage element.
- Fixed crash in action client when trying to extract callback and updated docs.
- Formatting.
- Added pre-commit hook.
- Wait for service client to connect when sending request instead of failing. This enables use right after creation without having to wait until the service is connected.
- Added update watcher to fire status changed events for GoalHandle.
- QoS wrapper to set Quality of Service settings for Publishers,
Subscriptions and Services
(#12)
- Added QoS settings to configure publishers, subscriptions and service clients.
* Improved throttle rate logic and allow to set it to 0 to receive all message. This is especially useful if you want to use a keep_last policy >1, maybe even with transient_local.
- Updated docs.
* Fixed sendGoalSync not actually returning a GoalHandle ever. Will now return one with the future and a status of Unknown until it the future is done.
- Improved test wait logic.
- Improved subscribe logic.
- Added init options to set namespace or domain id.
- Add getter for hostname.
- Fix Subscription Full example code
- Catch exceptions when creating subscripts, service or action
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_gtest | |
| ament_lint_auto | |
| example_interfaces | |
| ros_babel_fish_test_msgs | |
| std_srvs | |
| ament_index_cpp | |
| rclcpp | |
| image_transport | |
| ros_babel_fish | |
| tf2_ros |