Qol fixes aug2 - #186
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR refactors video preset distribution from a request/response service into a latched pub/sub topic, enhances joystick teleop controls (drive throttle, turn lock, mast servo initialization behavior), adds a system-telemetry service to query active topics, and updates bringup to launch rosbridge via a new Python launch file.
Changes:
- Replaced
GetPresetsservice usage with/video_presetstopic using the newinterfaces::msg::VideoPresetsmessage. - Added joystick drive throttle + “lock turn” support, plus new mast default parameter wiring.
- Added
/system/get_topicsservice and updated rosbridge launch invocation.
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Teleop-Control/system-telemetry-cpp/src/node_status_publisher.cpp | Adds /system/get_topics service implementation. |
| src/Teleop-Control/system-telemetry-cpp/include/system-telemetry-cpp/node_status_publisher.hpp | Declares service callback and new service member. |
| src/Teleop-Control/joystick_control/src/drive.cpp | Subscribes to presets + drive throttle; adds turn-lock and mast publish gating. |
| src/Teleop-Control/joystick_control/include/drive.hpp | Updates interfaces (VideoPresets subscription, throttle callback, new params/state). |
| src/Teleop-Control/joystick_control/src/arm_teleop.cpp | Updates MoveIt service client names to new interface namespace. |
| src/Teleop-Control/joystick_control/config/pxn.yaml | Adds default_servo_m parameter. |
| src/Teleop-Control/joystick_control/config/3dpro.yaml | Adds default_servo_m parameter. |
| src/interfaces/srv/GetTopics.srv | Introduces new service for listing topics and types. |
| src/interfaces/srv/GetPresets.srv | Removes old presets listing service definition. |
| src/interfaces/msg/VideoPresets.msg | Adds new message for preset pub/sub distribution. |
| src/interfaces/CMakeLists.txt | Registers new msg/srv and removes old presets service from interface generation. |
| src/HW-Devices/science_sensors/science_sensors/panoramic.py | Adds bottom-cropping helper and applies it after decode. |
| src/Cameras/video_streaming/src/preset_node.cpp | Publishes presets via transient-local topic instead of servicing requests. |
| src/Cameras/video_streaming/include/video_streaming/preset_node.hpp | Replaces service member with presets publisher member. |
| src/Cameras/video_streaming/config/presets.yaml | Adds DriveMastPreset definition and includes it in the preset list. |
| src/Bringup/launch/websocket.launch.py | Adds new Python launch file for rosbridge websocket. |
| setup/start_rover.sh | Updates web server launch command to use the new bringup launch file. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+4
to
6
| #include <interfaces/msg/node_list.hpp> | ||
| #include <interfaces/srv/get_topics.hpp> | ||
| #include <rclcpp/rclcpp.hpp> |
Comment on lines
+1
to
+17
| import os | ||
|
|
||
| from ament_index_python.packages import get_package_share_directory | ||
|
|
||
| from launch import LaunchDescription | ||
| from launch.actions import ( | ||
| DeclareLaunchArgument, | ||
| RegisterEventHandler, | ||
| IncludeLaunchDescription, | ||
| ) | ||
| from launch.launch_description_sources import PythonLaunchDescriptionSource | ||
| from launch.conditions import IfCondition | ||
| from launch.substitutions import LaunchConfiguration, Command | ||
| from launch_ros.actions import Node, ComposableNodeContainer | ||
| from launch_ros.descriptions import ComposableNode | ||
| from launch_ros.parameter_descriptions import ParameterValue | ||
| from launch.event_handlers import OnProcessStart |
ConnorNeed
force-pushed
the
Qol-fixes-aug2
branch
from
August 3, 2026 01:14
fe785ad to
8de3c85
Compare
codeflight1
approved these changes
Aug 3, 2026
ConnorNeed
force-pushed
the
Qol-fixes-aug2
branch
from
August 3, 2026 01:19
8de3c85 to
ef475c2
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.
This pull request introduces several major improvements and refactorings across the video streaming, teleoperation, and system telemetry components. The most significant changes are the migration from service-based video preset management to a publisher/subscriber model, enhancements to joystick control (including a new drive throttle and turn lock feature), improved camera handling, and the addition of a service to query active topics in the system telemetry node.
Video Preset Management Refactor:
Replaced the video preset service (
GetPresets) with a publisher/subscriber approach using the newinterfaces::msg::VideoPresetsmessage. ThePresetNodenow publishes presets on/video_presets, and the teleopdrivenode subscribes to this topic instead of requesting via a service. This simplifies preset distribution and improves reliability. [1] [2] [3] [4] [5] [6]Added a new video preset,
DriveMastPreset, which combines the "Drive" and "Mast" camera sources, and updated the preset configuration accordingly. [1] [2]Joystick Teleop Enhancements:
Introduced a drive throttle feature: a new subscriber listens to
/drive_throttleand scales the robot's speed accordingly. Also added a "lock turn" button to disable turning/strafe when pressed. Both features are configurable via parameters. [1] [2] [3] [4] [5] [6]Improved camera control logic: now initializes the mast servo to a default value, ensures mast servo commands are only published when changed, and prevents camera preset cycling if no presets have been received. [1] [2] [3]
Added the
default_servo_mparameter to joystick config files for consistent mast servo initialization. [1] [2]System Telemetry Improvements:
/system/get_topicsservice to theNodeStatusPublishernode, allowing clients to query all active topics and their types. [1] [2] [3] [4]Other Notable Changes:
Migrated the web server launch command to use a new ROS 2 launch file (
bringup/websocket.launch.py) instead of the old XML launch. [1] [2]In the science sensor panoramic module, added a method to crop the bottom of images to remove video stream artifacts. [1] [2]
Updated arm teleop service client names to match new interface conventions.