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) |
Packages
Name | Version |
---|---|
qml_ros2_plugin | 1.25.2 |
README
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
CONTRIBUTING
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) |
Packages
Name | Version |
---|---|
qml_ros2_plugin | 1.25.2 |
README
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
CONTRIBUTING
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) |
Packages
Name | Version |
---|---|
qml_ros2_plugin | 1.25.2 |
README
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
CONTRIBUTING
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) |
Packages
Name | Version |
---|---|
qml_ros2_plugin | 1.25.2 |
README
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