Skip to content

Commit 31e4169

Browse files
committed
WIP: use latest isar
1 parent 9af8820 commit 31e4169

2 files changed

Lines changed: 44 additions & 102 deletions

File tree

src/isar_robot/robotinterface.py

Lines changed: 37 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
)
2828
from robot_interface.models.robots.media import MediaConfig
2929
from robot_interface.robot_interface import RobotInterface
30-
from robot_interface.telemetry.mqtt_client import MqttTelemetryPublisher
30+
from robot_interface.telemetry.mqtt_client import TelemetryParameters
3131

3232
from isar_robot import inspections, telemetry
3333
from isar_robot.config.settings import settings
@@ -137,88 +137,48 @@ def inspection_handler_with_crash():
137137
def initialize(self) -> None:
138138
return
139139

140-
def _get_pose_telemetry(self, isar_id: str, robot_name: str) -> str:
140+
def _get_pose_telemetry(self) -> str:
141141
current_target: Position | None = None
142142
if self.mission_simulation:
143143
current_task = self.mission_simulation.current_task()
144144
if current_task and isinstance(current_task, InspectionTask):
145145
current_target = current_task.robot_pose.position
146146

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
147+
return self.telemetry.get_pose_telemetry(current_target=current_target)
148+
149+
def _get_battery_telemetry(self) -> str:
150+
return self.telemetry.get_battery_telemetry(is_home=self.robot_is_home)
151+
152+
def get_telemetry_publishers(self) -> list[TelemetryParameters]:
153+
return [
154+
TelemetryParameters(
155+
name="ISAR Robot Pose Publisher",
156+
method=lambda: self._get_pose_telemetry(),
157+
topic=f"pose",
158+
interval=settings.ROBOT_POSE_PUBLISH_INTERVAL,
159+
),
160+
TelemetryParameters(
161+
name="ISAR Robot Battery Publisher",
162+
method=lambda: self._get_battery_telemetry(),
163+
topic=f"battery",
164+
interval=settings.ROBOT_BATTERY_PUBLISH_INTERVAL,
165+
),
166+
TelemetryParameters(
167+
name="ISAR Robot Obstacle Status Publisher",
168+
method=lambda: self.telemetry.get_obstacle_status_telemetry(),
169+
topic=f"obstacle_status",
170+
interval=settings.ROBOT_OBSTACLE_STATUS_PUBLISH_INTERVAL,
171+
),
172+
TelemetryParameters(
173+
name="ISAR Robot Pressure Publisher",
174+
method=lambda: self.telemetry.get_pressure_telemetry(),
175+
topic=f"pressure",
176+
interval=settings.ROBOT_PRESSURE_PUBLISH_INTERVAL,
177+
),
178+
]
179+
180+
def get_utility_threads(self) -> list[Thread]:
181+
return []
222182

223183
def robot_status(self) -> RobotStatus:
224184
if self.mission_simulation and not self.mission_simulation.mission_done:

src/isar_robot/telemetry.py

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -85,45 +85,27 @@ def _get_battery_state(self, is_home: bool | None = None) -> BatteryState:
8585

8686
return BatteryState.Charging if is_home else BatteryState.Normal
8787

88-
def get_battery_telemetry(
89-
self, isar_id: str, robot_name: str, is_home: bool | None = None
90-
) -> str:
88+
def get_battery_telemetry(self, is_home: bool | None = None) -> str:
9189
battery_payload: TelemetryBatteryPayload = TelemetryBatteryPayload(
9290
battery_level=self._get_battery_level(is_home=is_home),
9391
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),
9792
)
9893
return battery_payload.model_dump_json()
9994

100-
def get_pose_telemetry(
101-
self, isar_id: str, robot_name: str, current_target: Position | None
102-
) -> str:
95+
def get_pose_telemetry(self, current_target: Position | None) -> str:
10396
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),
97+
pose=self._get_pose(current_target=current_target)
10898
)
10999
return pose_payload.model_dump_json()
110100

111-
def get_obstacle_status_telemetry(self, isar_id: str, robot_name: str) -> str:
101+
def get_obstacle_status_telemetry(self) -> str:
112102
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-
)
103+
TelemetryObstacleStatusPayload(obstacle_status=_get_obstacle_status())
119104
)
120105
return obstacle_status_payload.model_dump_json()
121106

122-
def get_pressure_telemetry(self, isar_id: str, robot_name: str) -> str:
107+
def get_pressure_telemetry(self) -> str:
123108
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),
109+
pressure_level=_get_pressure_level()
128110
)
129111
return pressure_payload.model_dump_json()

0 commit comments

Comments
 (0)