Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR targets video streaming stability/quality by improving GStreamer pipeline configuration, adding a ROS2 service to export pipeline graphs for debugging, tightening RTP/FEC configuration, and adding a drivetrain command timeout to prevent runaway behavior during network disruptions.
Changes:
- Added
GraphDotROS2 service and hooked it intoBaseVideoNodeto return a GStreamer DOT graph of the current pipeline. - Updated RTP sender/receiver GStreamer pipeline strings (payload types, encoder settings, and FEC-related elements).
- Adjusted video compositor pipeline to keep a consistent output size and added per-camera caps overrides; added a chassis controller
cmd_timeout.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/URDF/rover_urdf/config/ros2_controllers.yaml | Sets non-zero cmd_timeout to stop motion on command loss. |
| src/interfaces/srv/GraphDot.srv | Introduces new service definition for returning pipeline DOT graph text. |
| src/interfaces/CMakeLists.txt | Registers the new service for ROSIDL generation. |
| src/Cameras/video_streaming/src/rtp_node.cpp | Updates RTP sender pipeline: explicit PTs and encoder/FEC property tweaks; adjusts bitrate→resolution threshold. |
| src/Cameras/video_streaming/src/rtp_client_node.cpp | Updates RTP receiver pipeline: adds demux/capsfilter and sets explicit FEC PT. |
| src/Cameras/video_streaming/src/input_node.cpp | Forces a stable compositor sink_0 size via a black test source; adds per-camera width/height/framerate parameters; fixes sink pad indexing. |
| src/Cameras/video_streaming/src/base_video_node.cpp | Adds ~/graph_dot service to export pipeline DOT graph. |
| src/Cameras/video_streaming/launch/video_streaming.launch.py | Changes RTP destination IP in launch configuration. |
| src/Cameras/video_streaming/include/video_streaming/base_video_node.hpp | Declares GraphDot service member and includes the generated interface header. |
| src/Cameras/video_streaming/config/cameras.yaml | Adds explicit Drive camera caps (width/height/framerate) and encoded flag. |
Comments suppressed due to low confidence (1)
src/Cameras/video_streaming/src/input_node.cpp:159
- In the error path where the compositor pad can't be retrieved (see the subsequent
if (!pad)block), the function returns withoutgst_object_unref(compositor), leaking the compositor reference. Ensure the compositor is unref'd on all early-return paths (e.g., unref before returning or use an RAII guard).
std::string pad_name = "sink_" + std::to_string(i + 1);
GstPad *pad = gst_element_get_static_pad(compositor, pad_name.c_str());
if (!pad) {
RCLCPP_ERROR(this->get_logger(), "Failed to get compositor pad: %s",
pad_name.c_str());
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
d3e8d8b to
f9e068e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Some fixes from today: