Refactor and enhance XR-RM teleoperation functionality
This commit is contained in:
@ -44,7 +44,7 @@ class UdpControllerReceiver(Node):
|
||||
self._quat_order = str(self.get_parameter("quat_order").value).lower()
|
||||
|
||||
# UDP 接收使用非阻塞模式,避免没有手柄数据时卡住 ROS2 定时器。
|
||||
self._publishers = {
|
||||
self._controller_publishers = {
|
||||
"left": self.create_publisher(XrController, left_topic, 10),
|
||||
"right": self.create_publisher(XrController, right_topic, 10),
|
||||
}
|
||||
@ -78,7 +78,7 @@ class UdpControllerReceiver(Node):
|
||||
except (KeyError, TypeError, ValueError) as exc:
|
||||
self.get_logger().warn(f"XR 手柄字段错误:{exc}", throttle_duration_sec=1.0)
|
||||
continue
|
||||
self._publishers[msg.hand].publish(msg)
|
||||
self._controller_publishers[msg.hand].publish(msg)
|
||||
|
||||
def _iter_controller_payloads(self, payload: Any) -> Iterable[tuple[str, Mapping[str, Any]]]:
|
||||
if isinstance(payload, list):
|
||||
@ -214,9 +214,12 @@ def main(args: list[str] | None = None) -> None:
|
||||
node = UdpControllerReceiver()
|
||||
try:
|
||||
rclpy.spin(node)
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
finally:
|
||||
node.destroy_node()
|
||||
rclpy.shutdown()
|
||||
if rclpy.ok():
|
||||
rclpy.shutdown()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user