fix: 阻止重复遥操作节点继续运行

This commit is contained in:
2026-08-04 14:36:16 +08:00
parent 1fefae34e5
commit b24165640d
2 changed files with 11 additions and 2 deletions
+4 -1
View File
@@ -8,7 +8,7 @@
from pathlib import Path from pathlib import Path
from launch import LaunchDescription from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument, OpaqueFunction from launch.actions import DeclareLaunchArgument, OpaqueFunction, Shutdown
from launch.substitutions import LaunchConfiguration, PathJoinSubstitution from launch.substitutions import LaunchConfiguration, PathJoinSubstitution
from launch_ros.actions import Node from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageShare from launch_ros.substitutions import FindPackageShare
@@ -47,6 +47,9 @@ def _udp_receiver_node() -> Node:
executable="udp_controller_receiver", executable="udp_controller_receiver",
name="udp_controller_receiver", name="udp_controller_receiver",
output="screen", output="screen",
on_exit=Shutdown(
reason="XR UDP receiver exited; stopping arm_debug launch"
),
parameters=[{ parameters=[{
"udp_host": LaunchConfiguration("udp_host"), "udp_host": LaunchConfiguration("udp_host"),
"udp_port": LaunchConfiguration("udp_port"), "udp_port": LaunchConfiguration("udp_port"),
+7 -1
View File
@@ -3,7 +3,7 @@ from pathlib import Path
import pytest import pytest
from launch import LaunchContext from launch import LaunchContext
from launch.actions import DeclareLaunchArgument from launch.actions import DeclareLaunchArgument, Shutdown
from launch.utilities import perform_substitutions from launch.utilities import perform_substitutions
@@ -35,3 +35,9 @@ def test_mujoco_mode_requires_both_arms() -> None:
with pytest.raises(ValueError, match="arm:=both"): with pytest.raises(ValueError, match="arm:=both"):
arm_debug_launch._validate_mujoco_mode("left", True) arm_debug_launch._validate_mujoco_mode("left", True)
def test_udp_receiver_exit_shuts_down_launch() -> None:
receiver = arm_debug_launch._udp_receiver_node()
assert isinstance(receiver._ExecuteLocal__on_exit, Shutdown)