|
1 | 1 | import os
|
2 | 2 | from pathlib import Path
|
3 |
| -from typing import Sequence |
| 3 | +from queue import Queue |
| 4 | +from threading import Thread |
| 5 | +from typing import List, Sequence |
4 | 6 |
|
5 | 7 | from alitra import MapAlignment, Transform, align_maps
|
6 | 8 | from robot_interface.models.initialize import InitializeParams
|
7 | 9 | from robot_interface.models.inspection.inspection import Inspection
|
8 | 10 | from robot_interface.models.mission import InspectionStep, Step, StepStatus
|
9 | 11 | from robot_interface.robot_interface import RobotInterface
|
| 12 | +from robot_interface.telemetry.mqtt_client import MqttTelemetryPublisher |
10 | 13 |
|
11 | 14 | from isar_turtlebot.ros_bridge.ros_bridge import RosBridge, RosBridgeInterface
|
12 | 15 | from isar_turtlebot.turtlebot import Turtlebot
|
@@ -41,3 +44,38 @@ def get_inspections(self, step: InspectionStep) -> Sequence[Inspection]:
|
41 | 44 | def initialize(self, params: InitializeParams) -> None:
|
42 | 45 | if params.initial_pose:
|
43 | 46 | self.turtlebot.set_initial_pose(params.initial_pose)
|
| 47 | + |
| 48 | + def get_telemetry_publishers(self, queue: Queue, robot_id: str) -> List[Thread]: |
| 49 | + publisher_threads: List[Thread] = [] |
| 50 | + |
| 51 | + pose_publisher: MqttTelemetryPublisher = MqttTelemetryPublisher( |
| 52 | + mqtt_queue=queue, |
| 53 | + telemetry_method=self.turtlebot.get_pose_telemetry, |
| 54 | + topic=f"isar/{robot_id}/pose", |
| 55 | + interval=1, |
| 56 | + retain=True, |
| 57 | + ) |
| 58 | + pose_thread: Thread = Thread( |
| 59 | + target=pose_publisher.run, |
| 60 | + args=[robot_id], |
| 61 | + name="ISAR Turtlebot Pose Publisher", |
| 62 | + daemon=True, |
| 63 | + ) |
| 64 | + publisher_threads.append(pose_thread) |
| 65 | + |
| 66 | + battery_publisher: MqttTelemetryPublisher = MqttTelemetryPublisher( |
| 67 | + mqtt_queue=queue, |
| 68 | + telemetry_method=self.turtlebot.get_battery_telemetry, |
| 69 | + topic=f"isar/{robot_id}/battery", |
| 70 | + interval=1, |
| 71 | + retain=True, |
| 72 | + ) |
| 73 | + battery_thread: Thread = Thread( |
| 74 | + target=battery_publisher.run, |
| 75 | + args=[robot_id], |
| 76 | + name="ISAR Turtlebot Battery Publisher", |
| 77 | + daemon=True, |
| 78 | + ) |
| 79 | + publisher_threads.append(battery_thread) |
| 80 | + |
| 81 | + return publisher_threads |
0 commit comments