Skip to content

Arm teleop fixes#169

Merged
ConnorNeed merged 4 commits into
mainfrom
arm-teleop-fixes
Jul 13, 2026
Merged

Arm teleop fixes#169
ConnorNeed merged 4 commits into
mainfrom
arm-teleop-fixes

Conversation

@ConnorNeed

Copy link
Copy Markdown
Member

This pull request introduces several important improvements and fixes across the arm control, hardware interface, and teleop subsystems. The main themes are: improved safety and feedback for arm teleoperation, more robust and accurate TalonSRX motor control (especially for crossover/continuous joints), and the addition of a service to stop arm motion. There are also configuration and URDF updates to support these changes.

Arm Teleop Improvements:

  • Refactored the ArmTeleop state machine to provide more informative states (e.g., NO_MESSAGE, UNPLUG_ERROR, WIGGLE_WARNING, IDLE) and improved initialization checks, including better user feedback and error handling when the joystick is not ready or needs to be replugged (arm_teleop.hpp, arm_teleop.cpp). [1] [2] [3] [4] [5] [6] [7] [8] [9]
  • Added state publishing and readiness checks to ensure the arm only responds to commands when properly initialized. [1] [2]
  • Improved mapping of joystick throttle to joint and Cartesian velocities for smoother and safer teleoperation. [1] [2] [3]

Arm Control / Motion Group:

  • Added a stop service (std_srvs/Trigger) to the MoveGroupNode, allowing external components to immediately halt arm motion safely. [1] [2] [3] [4] [5]
  • Reduced maximum allowed velocities for linear, rotational, and joint movements in the arm configuration to improve safety and control.

TalonSRX Motor Control (Hardware Interface):

  • Refactored position/velocity conversion logic to use new ticks_to_rads and rads_to_ticks helpers, improving accuracy and clarity, especially for joints in crossover (continuous) mode. [1] [2] [3] [4]
  • Fixed and simplified handling of crossover mode for continuous joints, ensuring correct position tracking and command execution.
  • Set ConfigFeedbackNotContinuous(false) to standardize feedback configuration.

URDF/Configuration Updates:

  • Updated URDF to use the new crossover parameter for continuous joints, matching the code changes.

Safety and Usability:

  • Lowered velocity limits in the arm configuration YAML file for safer teleoperation and control.

These changes together improve the safety, reliability, and user feedback for arm teleoperation and hardware control.

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 improves rover arm teleoperation safety/UX, adds an explicit “stop motion” service to the arm MoveGroup node, and refines TalonSRX continuous-joint (“crossover”) handling and related configuration/URDF parameters.

Changes:

  • Refactors ArmTeleop into more explicit readiness/error states and scales teleop velocities by joystick throttle.
  • Adds a ~/stop (std_srvs/Trigger) service to MoveGroupNode to stop motion immediately.
  • Updates TalonSRX rad↔tick conversion logic and switches URDF joint config from continuous to crossover, plus lowers arm servo velocity limits.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/URDF/rover_urdf/urdf/arm_urdf.ros2_control.xacro Switches continuous-joint flagging to the new crossover parameter.
src/Teleop-Control/joystick_control/src/arm_teleop.cpp Implements new teleop state machine, readiness checks, state publishing, and throttle scaling.
src/Teleop-Control/joystick_control/include/arm_teleop.hpp Updates state enum and adds helpers for readiness/state publishing.
src/HW-Devices/hardware/src/TalonSRXWrapper.cpp Refactors conversions and crossover position tracking; standardizes Talon feedback configuration.
src/HW-Devices/hardware/include/TalonSRXWrapper.hpp Adds conversion helpers and stores raw position for crossover computations.
src/Arm/arm_control/src/MoveGroupNode.cpp Adds ~/stop service callback to stop MoveGroup motion.
src/Arm/arm_control/include/arm_control/MoveGroupNode.hpp Declares the new stop service and includes Trigger definition.
src/Arm/arm_control/config/arm_config.yaml Reduces max linear/rotational/joint speed scaling for safer arm motion.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/Teleop-Control/joystick_control/src/arm_teleop.cpp
Comment thread src/Teleop-Control/joystick_control/src/arm_teleop.cpp Outdated
Comment thread src/HW-Devices/hardware/include/TalonSRXWrapper.hpp Outdated
Comment thread src/HW-Devices/hardware/src/TalonSRXWrapper.cpp Outdated
ConnorNeed and others added 3 commits July 13, 2026 03:41
Apply suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@ConnorNeed
ConnorNeed merged commit 2b708fd into main Jul 13, 2026
6 checks passed
@ConnorNeed
ConnorNeed deleted the arm-teleop-fixes branch July 13, 2026 18:43
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