![]() |
qml_ros2_plugin package from qml_ros2_plugin repoqml_ros2_plugin |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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
Tags | No category tags. |
Version | 1.25.2 |
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 | 2025-06-20 |
Dev Status | DEVELOPED |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
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). For the ROS 1 version click here.
Please be aware that this loses some of the semantic information that the type of a message would normally provide.
Currently, has support for the following:
Logging, Publisher, Subscription, ImageTransportSubscription, Service client, ActionClient, TfTransform, Ament index and querying topics
License: MIT
https://github.com/StefanFabian/qml_ros2_plugin/assets/2090520/c45280cf-24fe-4ff1-8423-30035deda10d
This demo interface uses Tf and a velocity publisher to control and display the turtle demo with less than 200 lines of code for the entire interface.
It is available in the examples folder as turtle_demo_control.qml
.
Note: For full examples including ROS init calls and shutdown handling checkout the examples directory.
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")
}
// ...
}
Subscribers
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.
Usage example:
import Ros2 1.0
Item {
width: 600
height: 400
Subscription {
id: subscriber
topic: "/test"
onNewMessage: textField.text = message.data
}
Text {
text: "You can use the message directly: " + subscriber.message.data
}
Text {
id: textField
text: "Or you can use the newMessage signal."
}
}
Image Transport
Can be used to stream camera images.
The default transport used is “compressed”.
The stream is exposed to QML as a QObject
with a QAbstractVideoSurface
based videoSurface
property
(see QML VideoOutput docs) and can be used
directly as source for the VideoOutput
control.
Multiple ImageTransportSubscribers for the same topic share a subscription to ensure the image is converted to a QML compatible format only once. Additionally, a throttleRate property allows to throttle the camera rate by subscribing for one frame and shutting down again at the given rate (see documentation).
File truncated at 100 lines see the full file
Changelog for package qml_ros2_plugin
1.25.2 (2025-02-07)
- Apply required changes due to change of array template parameters in ros_babel_fish.
- Updated communication test message fields in accordance to renaming in ros_babel_fish_test_msgs.
- Fixed crashes when exiting application due to node still being used.
- Added method to create an empty action goal for a given action with the Ros2 singleton.
- Fixed possible crash if querying services/actions before node is initialized and downgraded error to warning. Will just return no results if not initialized yet.
- Added convenience functions to get types for given topic/service/action.
- Added name and type properties to ServiceClient.
- Made image transport test more robust.
- Added graph queries getTopicNamesAndTypes, getServiceNamesAndTypes and getActionNamesAndTypes to Ros2 singleton.
- Small quality refactorings.
- Contributors: Stefan Fabian
1.0.1 (2024-08-19)
- Added missing dependencies.
- Contributors: Stefan Fabian
1.0.0 (2024-08-16)
- Initial release.
- Contributors: Stefan Fabian
Wiki Tutorials
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 |