Skip to content

Commit 334972c

Browse files
committed
WIP: use latest isar
1 parent 9af8820 commit 334972c

2 files changed

Lines changed: 44 additions & 104 deletions

File tree

src/isar_robot/robotinterface.py

Lines changed: 37 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import time
44
from collections.abc import Callable
55
from datetime import UTC, datetime
6-
from queue import Queue
76
from threading import Thread
87

98
from alitra import Position
@@ -27,7 +26,7 @@
2726
)
2827
from robot_interface.models.robots.media import MediaConfig
2928
from robot_interface.robot_interface import RobotInterface
30-
from robot_interface.telemetry.mqtt_client import MqttTelemetryPublisher
29+
from robot_interface.telemetry.mqtt_client import TelemetryParameters
3130

3231
from isar_robot import inspections, telemetry
3332
from isar_robot.config.settings import settings
@@ -137,88 +136,48 @@ def inspection_handler_with_crash():
137136
def initialize(self) -> None:
138137
return
139138

140-
def _get_pose_telemetry(self, isar_id: str, robot_name: str) -> str:
139+
def _get_pose_telemetry(self) -> str:
141140
current_target: Position | None = None
142141
if self.mission_simulation:
143142
current_task = self.mission_simulation.current_task()
144143
if current_task and isinstance(current_task, InspectionTask):
145144
current_target = current_task.robot_pose.position
146145

147-
return self.telemetry.get_pose_telemetry(
148-
isar_id=isar_id, robot_name=robot_name, current_target=current_target
149-
)
150-
151-
def _get_battery_telemetry(self, isar_id: str, robot_name: str) -> str:
152-
return self.telemetry.get_battery_telemetry(
153-
isar_id=isar_id, robot_name=robot_name, is_home=self.robot_is_home
154-
)
155-
156-
def get_telemetry_publishers(
157-
self, queue: Queue, isar_id: str, robot_name: str
158-
) -> list[Thread]:
159-
publisher_threads: list[Thread] = []
160-
161-
pose_publisher: MqttTelemetryPublisher = MqttTelemetryPublisher(
162-
mqtt_queue=queue,
163-
telemetry_method=self._get_pose_telemetry,
164-
topic=f"isar/{isar_id}/pose",
165-
interval=settings.ROBOT_POSE_PUBLISH_INTERVAL,
166-
retain=False,
167-
)
168-
pose_thread: Thread = Thread(
169-
target=pose_publisher.run,
170-
args=[isar_id, robot_name],
171-
name="ISAR Robot Pose Publisher",
172-
daemon=True,
173-
)
174-
publisher_threads.append(pose_thread)
175-
176-
battery_publisher: MqttTelemetryPublisher = MqttTelemetryPublisher(
177-
mqtt_queue=queue,
178-
telemetry_method=self._get_battery_telemetry,
179-
topic=f"isar/{isar_id}/battery",
180-
interval=settings.ROBOT_BATTERY_PUBLISH_INTERVAL,
181-
retain=False,
182-
)
183-
battery_thread: Thread = Thread(
184-
target=battery_publisher.run,
185-
args=[isar_id, robot_name],
186-
name="ISAR Robot Battery Publisher",
187-
daemon=True,
188-
)
189-
publisher_threads.append(battery_thread)
190-
191-
obstacle_status_publisher: MqttTelemetryPublisher = MqttTelemetryPublisher(
192-
mqtt_queue=queue,
193-
telemetry_method=self.telemetry.get_obstacle_status_telemetry,
194-
topic=f"isar/{isar_id}/obstacle_status",
195-
interval=settings.ROBOT_OBSTACLE_STATUS_PUBLISH_INTERVAL,
196-
retain=False,
197-
)
198-
obstacle_status_thread: Thread = Thread(
199-
target=obstacle_status_publisher.run,
200-
args=[isar_id, robot_name],
201-
name="ISAR Robot Obstacle Status Publisher",
202-
daemon=True,
203-
)
204-
publisher_threads.append(obstacle_status_thread)
205-
206-
pressure_publisher: MqttTelemetryPublisher = MqttTelemetryPublisher(
207-
mqtt_queue=queue,
208-
telemetry_method=self.telemetry.get_pressure_telemetry,
209-
topic=f"isar/{isar_id}/pressure",
210-
interval=settings.ROBOT_PRESSURE_PUBLISH_INTERVAL,
211-
retain=False,
212-
)
213-
pressure_thread: Thread = Thread(
214-
target=pressure_publisher.run,
215-
args=[isar_id, robot_name],
216-
name="ISAR Robot Pressure Publisher",
217-
daemon=True,
218-
)
219-
publisher_threads.append(pressure_thread)
220-
221-
return publisher_threads
146+
return self.telemetry.get_pose_telemetry(current_target=current_target)
147+
148+
def _get_battery_telemetry(self) -> str:
149+
return self.telemetry.get_battery_telemetry(is_home=self.robot_is_home)
150+
151+
def get_telemetry_publishers(self) -> list[TelemetryParameters]:
152+
return [
153+
TelemetryParameters(
154+
name="ISAR Robot Pose Publisher",
155+
method=lambda: self._get_pose_telemetry(),
156+
topic="pose",
157+
interval=settings.ROBOT_POSE_PUBLISH_INTERVAL,
158+
),
159+
TelemetryParameters(
160+
name="ISAR Robot Battery Publisher",
161+
method=lambda: self._get_battery_telemetry(),
162+
topic="battery",
163+
interval=settings.ROBOT_BATTERY_PUBLISH_INTERVAL,
164+
),
165+
TelemetryParameters(
166+
name="ISAR Robot Obstacle Status Publisher",
167+
method=lambda: self.telemetry.get_obstacle_status_telemetry(),
168+
topic="obstacle_status",
169+
interval=settings.ROBOT_OBSTACLE_STATUS_PUBLISH_INTERVAL,
170+
),
171+
TelemetryParameters(
172+
name="ISAR Robot Pressure Publisher",
173+
method=lambda: self.telemetry.get_pressure_telemetry(),
174+
topic="pressure",
175+
interval=settings.ROBOT_PRESSURE_PUBLISH_INTERVAL,
176+
),
177+
]
178+
179+
def get_utility_threads(self) -> list[Thread]:
180+
return []
222181

223182
def robot_status(self) -> RobotStatus:
224183
if self.mission_simulation and not self.mission_simulation.mission_done:

src/isar_robot/telemetry.py

Lines changed: 7 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import random
2-
from datetime import UTC, datetime
32

43
from alitra import Frame, Orientation, Pose, Position
54
from robot_interface.models.robots.battery_state import BatteryState
@@ -85,45 +84,27 @@ def _get_battery_state(self, is_home: bool | None = None) -> BatteryState:
8584

8685
return BatteryState.Charging if is_home else BatteryState.Normal
8786

88-
def get_battery_telemetry(
89-
self, isar_id: str, robot_name: str, is_home: bool | None = None
90-
) -> str:
87+
def get_battery_telemetry(self, is_home: bool | None = None) -> str:
9188
battery_payload: TelemetryBatteryPayload = TelemetryBatteryPayload(
9289
battery_level=self._get_battery_level(is_home=is_home),
9390
battery_state=self._get_battery_state(is_home=is_home),
94-
isar_id=isar_id,
95-
robot_name=robot_name,
96-
timestamp=datetime.now(UTC),
9791
)
9892
return battery_payload.model_dump_json()
9993

100-
def get_pose_telemetry(
101-
self, isar_id: str, robot_name: str, current_target: Position | None
102-
) -> str:
94+
def get_pose_telemetry(self, current_target: Position | None) -> str:
10395
pose_payload: TelemetryPosePayload = TelemetryPosePayload(
104-
pose=self._get_pose(current_target=current_target),
105-
isar_id=isar_id,
106-
robot_name=robot_name,
107-
timestamp=datetime.now(UTC),
96+
pose=self._get_pose(current_target=current_target)
10897
)
10998
return pose_payload.model_dump_json()
11099

111-
def get_obstacle_status_telemetry(self, isar_id: str, robot_name: str) -> str:
100+
def get_obstacle_status_telemetry(self) -> str:
112101
obstacle_status_payload: TelemetryObstacleStatusPayload = (
113-
TelemetryObstacleStatusPayload(
114-
obstacle_status=_get_obstacle_status(),
115-
isar_id=isar_id,
116-
robot_name=robot_name,
117-
timestamp=datetime.now(UTC),
118-
)
102+
TelemetryObstacleStatusPayload(obstacle_status=_get_obstacle_status())
119103
)
120104
return obstacle_status_payload.model_dump_json()
121105

122-
def get_pressure_telemetry(self, isar_id: str, robot_name: str) -> str:
106+
def get_pressure_telemetry(self) -> str:
123107
pressure_payload: TelemetryPressurePayload = TelemetryPressurePayload(
124-
pressure_level=_get_pressure_level(),
125-
isar_id=isar_id,
126-
robot_name=robot_name,
127-
timestamp=datetime.now(UTC),
108+
pressure_level=_get_pressure_level()
128109
)
129110
return pressure_payload.model_dump_json()

0 commit comments

Comments
 (0)