Skip to content

Commit beb3aa9

Browse files
Temporary fix for Lizard issue 66 (#213)
We still notice issues with zauberzeug/lizard#66 (`Unknown Property "level"` and `Unknown Property "active"`) until then setting them to 0 and false on p0 helps. Depends on zauberzeug/rosys#216
1 parent 3d296b2 commit beb3aa9

File tree

5 files changed

+29
-11
lines changed

5 files changed

+29
-11
lines changed

field_friend/hardware/safety.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,23 +82,22 @@ def __init__(self, robot_brain: rosys.hardware.RobotBrain, *,
8282
elif isinstance(flashlight, FlashlightHardwareV2):
8383
lizard_code += f' {flashlight.name}_front.off(); {flashlight.name}_back.off();'
8484
if mower is not None:
85-
lizard_code += f' m0.off();'
85+
lizard_code += ' m0.off();'
8686
lizard_code += 'end\n'
8787
# implement stop call for estops and bumpers
8888
for name in estop.pins:
8989
lizard_code += f'when estop_{name}.level == 0 then stop(); end\n'
9090
if isinstance(bumper, rosys.hardware.BumperHardware):
9191
for name in bumper.pins:
92-
# TODO: remove level = 0 when lizard issue 66 is fixed. https://github.com/zauberzeug/lizard/issues/66
93-
lizard_code += f'bumper_{name}.level = 0\n'
9492
lizard_code += f'when bumper_{name}.level == 1 then stop(); end\n'
9593

9694
# implement stop call for "ground check" reference sensors
9795
if isinstance(y_axis, ChainAxisHardware):
9896
lizard_code += f'when {y_axis.name}_ref_t.level == 1 then {wheels.name}.speed(0, 0); end\n'
9997
if isinstance(z_axis, TornadoHardware):
10098
if isinstance(y_axis, YAxisStepperHardware) or isinstance(y_axis, YAxisCanOpenHardware):
101-
lizard_code += f'when {z_axis.name}_ref_knife_ground.active == false then {wheels.name}.speed(0, 0); {y_axis.name}.stop(); end\n'
99+
lizard_code += f'when {z_axis.name}_ref_knife_ground.active == false then \
100+
{wheels.name}.speed(0, 0); {y_axis.name}.stop(); end\n'
102101

103102
# implement watchdog for rosys modules
104103
lizard_code += f'when core.last_message_age > 1000 then {wheels.name}.speed(0, 0); end\n'

field_friend/hardware/status_control.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from rosys.hardware.expander import ExpanderHardware
22
from rosys.hardware.module import ModuleHardware
33
from rosys.hardware.robot_brain import RobotBrain
4+
from rosys.helpers import remove_indentation
45

56

67
class StatusControlHardware(ModuleHardware):
@@ -13,8 +14,13 @@ def __init__(self, robot_brain: RobotBrain, *,
1314
self.rdyp_status: bool = False
1415
self.vdp_status: bool = False
1516
self.heap: int = 0
16-
lizard_code = f'rdyp_status = Input({rdyp_pin})\n'
17-
lizard_code += f'vdp_status = {expander.name + "."}Input({vdp_pin})\n'
17+
lizard_code = remove_indentation(f'''
18+
rdyp_status = Input({rdyp_pin})
19+
vdp_status = {expander.name + "."}Input({vdp_pin})
20+
# TODO: remove when lizard issue 66 is fixed.
21+
vdp_status.level = 0
22+
vdp_status.active = false
23+
''')
1824
core_message_fields = [
1925
'rdyp_status.level',
2026
'vdp_status.level',

field_friend/hardware/tornado.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,8 @@ def __init__(self, robot_brain: rosys.hardware.RobotBrain, *,
138138
self.motor_error = False
139139

140140
lizard_code = remove_indentation(f'''
141-
{name}_motor_z = {expander.name + "." if motors_on_expander and expander else ""}ODriveMotor({can.name}, {z_can_address}{', 6'if self.odrive_version == 6 else ''})
142-
{name}_motor_turn = {expander.name + "." if motors_on_expander and expander else ""}ODriveMotor({can.name}, {turn_can_address}{', 6'if self.odrive_version == 6 else ''})
141+
{name}_motor_z = {expander.name + "." if motors_on_expander and expander else ""}ODriveMotor({can.name}, {z_can_address}{', 6'if self.odrive_version == 6 else ''})
142+
{name}_motor_turn = {expander.name + "." if motors_on_expander and expander else ""}ODriveMotor({can.name}, {turn_can_address}{', 6'if self.odrive_version == 6 else ''})
143143
{name}_motor_z.m_per_tick = {m_per_tick}
144144
{name}_motor_turn.m_per_tick = {1/12.52}
145145
{name}_motor_z.limits({self.speed_limit}, {self.current_limit})
@@ -158,15 +158,23 @@ def __init__(self, robot_brain: rosys.hardware.RobotBrain, *,
158158
{name}_ref_knife_stop.inverted = false
159159
{name}_ref_knife_ground = {expander.name + "." if end_stops_on_expander or ref_knife_ground_pin_expander and expander else ""}Input({ref_knife_ground_pin})
160160
{name}_ref_knife_ground.inverted = true
161-
{name}_z = {expander.name + "." if motors_on_expander and expander else ""}MotorAxis({name}_motor_z, {name + "_end_bottom" if is_z_reversed else name + "_end_top"}, {name + "_end_top" if is_z_reversed else name + "_end_bottom"})
162161
163-
# TODO: remove when lizard issue 66 is fixed. https://github.com/zauberzeug/lizard/issues/66
162+
# TODO: remove when lizard issue 66 is fixed.
163+
{name}_end_top.level = 0
164+
{name}_end_top.active = false
165+
{name}_end_bottom.level = 0
166+
{name}_end_bottom.active = false
164167
{name}_ref_motor.level = 0
168+
{name}_ref_motor.active = false
165169
{name}_ref_gear.level = 0
170+
{name}_ref_gear.active = false
166171
{name}_ref_knife_stop.level = 0
172+
{name}_ref_knife_stop.active = false
167173
{name}_ref_knife_ground.level = 0
168174
{name}_ref_knife_ground.active = false
169175
176+
{name}_z = {expander.name + "." if motors_on_expander and expander else ""}MotorAxis({name}_motor_z, {name + "_end_bottom" if is_z_reversed else name + "_end_top"}, {name + "_end_top" if is_z_reversed else name + "_end_bottom"})
177+
170178
bool {name}_is_referencing = false
171179
bool {name}_ref_motor_enabled = false
172180
bool {name}_ref_gear_enabled = false

field_friend/hardware/y_axis_canopen_hardware.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ def __init__(self, robot_brain: rosys.hardware.RobotBrain, *,
3838
{name}_end_l.inverted = {str(end_stops_inverted).lower()}
3939
{name}_end_r = {expander.name + "." if end_stops_on_expander and expander else ""}Input({end_r_pin})
4040
{name}_end_r.inverted = {str(end_stops_inverted).lower()}
41+
# TODO: remove when lizard issue 66 is fixed.
42+
{name}_end_l.level = 0
43+
{name}_end_l.active = false
44+
{name}_end_r.level = 0
45+
{name}_end_r.active = false
4146
{name} = {expander.name + "." if motor_on_expander and expander else ""}MotorAxis({name}_motor, {name + "_end_l" if reversed_direction else name + "_end_r"}, {name + "_end_r" if reversed_direction else name + "_end_l"})
4247
''')
4348
core_message_fields = [

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ geopy
66
shapely
77
fiona
88
geopandas
9-
rosys == v0.18.2
9+
rosys == v0.18.3
1010
uvicorn == 0.28.1

0 commit comments

Comments
 (0)