# Bridge ROS and GST with `ros-gst-bridge` The `ros-gst-bridge` sample application is a tool that facilitates seamless integration between Robot Operating System (ROS) and GStreamer. It supports the efficient streaming and processing of multimedia data, such as video and audio, between ROS nodes and GStreamer pipelines. Note For more information, see the [ros-gst-bridge](https://github.com/BrettRD/ros-gst-bridge) GitHub repo. ## Pipeline flow for `ros-gst-bridge`
Driver
Hardware
Driver
Qualdomm IM SDK gstreamer pluginsOutput
Camera
Audio
DSP/HTP/GPU
audio stream
video stream
AI/ML application
HDMI display
media files
waylandsink
filesink
ros topics
ros gst bridge
## ROS nodes/topics used in `ros-gst-bridge` ROS GST bridge allows customization of ROS 2 topics. For details about the customization process, see the open source project: [ros-gst-bridge](https://github.com/BrettRD/ros-gst-bridge). ## Prerequisites You have completed the following settings in [Set up the environment for running sample applications](https://docs.qualcomm.com/doc/80-70023-265/topic/quick_start.html#setup-demo-qs). - Set up the device - Set up the host docker ## Run out-of-the-box `ros-gst-bridge` ### Run the `rosimagesink` case 1. Start a terminal and run the following command to run the `rosimagesink` case. # Set the ROS_DOMAIN_ID (ssh) source /usr/share/qirp-setup.sh (ssh) export ROS_DOMAIN_ID=55 (ssh) gst-launch-1.0 videotestsrc ! videoconvert ! rosimagesink ros-topic="image" Copy to clipboard 2. Start the `rqt`. For more information, see [rqt](https://wiki.ros.org/rqt). # YOUR_HOST_IP is the IP address of the Host where you want to view the sample output, for more information, see `rqt `_. (ssh) export DISPLAY=YOUR_HOST_IP:0 (ssh) export ROS_DOMAIN_ID=55 (ssh) rqt Copy to clipboard 3. Select the following buttons in sequence. Plugins --> Visualization --> Image View 4. Select topic `/image` by manual on rqt console, then picture show on `rqt` successfully. ### Run the `rostextsink` case 1. Start a terminal and run the following command to publish a text message. # Set the ROS_DOMAIN_ID (ssh) source /usr/share/qirp-setup.sh (ssh) export ROS_DOMAIN_ID=55 (ssh) ros2 topic pub /input_text std_msgs/msg/String "{data: 'Hello World'}" Copy to clipboard 2. Start second terminal and run the following command to run the `rostextsink` case. # Set the ROS_DOMAIN_ID (ssh) source /usr/share/qirp-setup.sh (ssh) export ROS_DOMAIN_ID=55 (ssh) gst-launch-1.0 rostextsrc topic="/input_text" ! rostextsink ros-topic="/output_text" Copy to clipboard 3. Start third terminal and run the following command to check the text result. # Set the ROS_DOMAIN_ID (ssh) source /usr/share/qirp-setup.sh (ssh) export ROS_DOMAIN_ID=55 (ssh) ros2 topic echo /output_text Copy to clipboard 4. The text message `Hello World` is displayed on the terminal. For more `rosaudiosink` cases, see [ros-gst-bridge](https://github.com/BrettRD/ros-gst-bridge). ## Run out-of-the-box `ros-gst-bridge` with Qualcomm IM SDK The Qualcomm® Intelligent Multimedia SDK (IM SDK) is a unified SDK across Internet of Things (IOT) segments. This SDK enables seamless multimedia and AI/ML application deployment. The AI/ML [GStreamer command-line use cases](https://docs.qualcomm.com/doc/80-70023-50/topic/gstreamer-application-use-cases.html) sample applications provide custom use cases that show how to use the AI/ML GStreamer features of the Qualcomm Linux platform. ### Run the `pose detection` case (ONLY supports QCS6490 devices) 1. Power on the device and connect to the HDMI cable, and then download the model and label files according to [IM SDK prerequisites for running the AL/ML sample applications](https://docs.qualcomm.com/doc/80-70023-50/topic/download-model-and-label-files.html). 2. In the terminal of the target device, run the following command to activate the display. (ssh) export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 Copy to clipboard 3. Start a terminal and run the following command to run the `pose detection` case. The Qualcomm IM SDK uses `queue ! waylandsink fullscreen=true sync=false` to output AI inference results to the display, it can be replaced with `queue ! rosimagesink sync=true ros-topic="gst_image"` to transform Qualcomm IM AI gst elements results to ROS 2 topics. The following is a `Pose detection` example. Note This example relies on the basic functions of Qualcomm Intelligent Multimedia (IM) SDK, update your commandline according to the Qualcomm IM SDK commandline usage if you need a different use case. For more details, see the [Qualcomm IM SDK Reference](https://docs.qualcomm.com/doc/80-70023-50/topic/gstreamer-application-use-cases.html). (ssh) gst-launch-1.0 -e \ qtiqmmfsrc name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! tee name=split \ split. ! queue ! qtimetamux name=metamux ! queue ! qtivoverlay ! queue ! rosimagesink sync=true ros-topic="gst_image" \ split. ! queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \ external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/etc/models/hrnet_pose_quantized.tflite ! queue ! \ qtimlvpose threshold=51.0 results=2 module=hrnet labels=/etc/labels/hrnet_pose.labels \ constants="hrnet,q-offsets=<8.0>,q-scales=<0.0040499246679246426>;" ! text/x-raw ! queue ! metamux. Copy to clipboard Last Published: Dec 29, 2025 [Previous Topic Convert between NV12 and RGB888 with](https://docs.qualcomm.com/bundle/publicresource/80-70023-265/topics/qrb-ros-color-space-convert_5_2_9.md) [Next Topic Enable core audio with](https://docs.qualcomm.com/bundle/publicresource/80-70023-265/topics/qrb-ros-audio-service.md)