Skip to content

Qol fixes aug2 - #186

Merged
ConnorNeed merged 7 commits into
mainfrom
Qol-fixes-aug2
Aug 3, 2026
Merged

Qol fixes aug2#186
ConnorNeed merged 7 commits into
mainfrom
Qol-fixes-aug2

Conversation

@ConnorNeed

Copy link
Copy Markdown
Member

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 new interfaces::msg::VideoPresets message. The PresetNode now publishes presets on /video_presets, and the teleop drive node 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_throttle and 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_m parameter to joystick config files for consistent mast servo initialization. [1] [2]

System Telemetry Improvements:

  • Added a /system/get_topics service to the NodeStatusPublisher node, 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.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 GetPresets service usage with /video_presets topic using the new interfaces::msg::VideoPresets message.
  • Added joystick drive throttle + “lock turn” support, plus new mast default parameter wiring.
  • Added /system/get_topics service 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 thread src/Teleop-Control/joystick_control/src/drive.cpp
Comment on lines +4 to 6
#include <interfaces/msg/node_list.hpp>
#include <interfaces/srv/get_topics.hpp>
#include <rclcpp/rclcpp.hpp>
Comment thread src/Teleop-Control/joystick_control/include/drive.hpp
Comment thread src/HW-Devices/science_sensors/science_sensors/panoramic.py Outdated
Comment thread src/Bringup/launch/websocket.launch.py Outdated
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
ConnorNeed merged commit 464137d into main Aug 3, 2026
@codeflight1
codeflight1 deleted the Qol-fixes-aug2 branch August 6, 2026 19:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants