Temperature Reading
Use hand.temperature to read the temperature of the 10 L20Lite joint motors in °C.
Temperature fields
| Field | Description |
|---|---|
thumb_flex | Thumb flexion motor |
thumb_abd | Thumb abduction motor |
index_flex | Index flexion motor |
middle_flex | Middle flexion motor |
ring_flex | Ring flexion motor |
pinky_flex | Pinky flexion motor |
index_abd | Index abduction motor |
ring_abd | Ring abduction motor |
pinky_abd | Pinky abduction motor |
thumb_yaw | Thumb rotation motor |
Read Temperature
Blocking Read
from realhand.exceptions import TimeoutError
try:
data = hand.temperature.get_blocking(timeout_ms=500)
print(f"Thumb flexion temperature: {data.temperatures.thumb_flex}°C")
except TimeoutError:
print("Read timed out")
Parameter
timeout_ms: Timeout in milliseconds, default100
Return value
TemperatureData: Containstemperatures(L20liteTemperature) andtimestamp
Exception
TimeoutError: No response before timeout
Cached Read
Read the most recent cached temperature data without blocking.
data = hand.temperature.get_snapshot()
if data:
print(f"Temperature: {data.temperatures.to_list()}")
Return value
TemperatureDataorNoneif no cached data is available
Streaming Read
Receive all sensor events through the top-level hand.stream() interface:
from realhand.hand.l20lite import SensorSource, TemperatureEvent
hand.start_polling({SensorSource.TEMPERATURE: 0.1})
try:
for event in hand.stream():
match event:
case TemperatureEvent(data=data):
print(f"Temperature: {data.temperatures.to_list()}")
finally:
hand.stop_polling()
hand.stop_stream()
Examples
Read All Joint Temperatures
from realhand import L20lite
with L20lite(side="left", interface_name="can0") as hand:
data = hand.temperature.get_blocking(timeout_ms=500)
# Access by field
print(f"Thumb flexion: {data.temperatures.thumb_flex}°C")
print(f"Index flexion: {data.temperatures.index_flex}°C")
# Convert to list
temps = data.temperatures.to_list()
print(f"All temperatures: {temps}")
# Index access
print(f"First joint motor: {data.temperatures[0]}°C")
Temperature Monitoring
from realhand import L20lite
from realhand.hand.l20lite import SensorSource, TemperatureEvent
with L20lite(side="left", interface_name="can0") as hand:
hand.start_polling({SensorSource.TEMPERATURE: 0.1})
try:
for event in hand.stream():
match event:
case TemperatureEvent(data=data):
for i, temp in enumerate(data.temperatures.to_list()):
if temp > 60.0:
print(f"Warning: joint motor {i} is overheating ({temp}°C)")
except KeyboardInterrupt:
pass
finally:
hand.stop_polling()
hand.stop_stream()