11from ..component import Component
22from ..interface .gem import GEMInterface ,GEMVehicleCommand ,GEMVehicleReading
33import time
4+ from ...state import AllState , VehicleIntentEnum
45
56TURN_OFF = 0
67TURN_LEFT = 1
@@ -19,7 +20,7 @@ def __init__(self, vehicle_interface : GEMInterface):
1920 def rate (self ):
2021 """Requested update frequency, in Hz"""
2122 return 0.5
22-
23+
2324 def initialize (self ):
2425 """Run first"""
2526 print ("BlinkDistress Component Initialized." )
@@ -32,28 +33,31 @@ def cleanup(self):
3233 self .send_turn_command (TURN_OFF )
3334 # pass
3435
35- def update (self ):
36+ def update (self , intent ):
3637 """Run in a loop"""
3738 # we need to set up a GEMVehicleCommand which encapsulates all commands that will be
3839 # sent to the drive-by-wire system, simultaneously. To avoid doing arbitrary things
3940 # to the vehicle, let's maintain the current values (e.g., accelerator, brake pedal,
4041 # steering angle) from its current readings.
41- current_time = time .time ()
42- if current_time - self .last_update_time >= 2 : # Change signal every 2 seconds
43- if self .turn_state == TURN_OFF :
44- self .turn_state = TURN_LEFT
45- elif self .turn_state == TURN_LEFT :
46- self .turn_state = TURN_RIGHT
47- else :
48- self .turn_state = TURN_OFF
42+ if intent .intent == VehicleIntentEnum .HALTING :
43+ current_time = time .time ()
44+ if current_time - self .last_update_time >= 2 : # Change signal every 2 seconds
45+ if self .turn_state == TURN_OFF :
46+ self .turn_state = TURN_LEFT
47+ elif self .turn_state == TURN_LEFT :
48+ self .turn_state = TURN_RIGHT
49+ else :
50+ self .turn_state = TURN_OFF
4951
50- self .send_turn_command (self .turn_state )
51- self .last_update_time = current_time
52-
52+ self .send_turn_command (self .turn_state )
53+ self .last_update_time = current_time
54+ else :
55+ self .send_turn_command (TURN_OFF )
56+
5357 # Read vehicle sensor data
5458 vehicle_reading = self .vehicle_interface .get_reading ()
5559 print (f"Vehicle Speed: { vehicle_reading .speed :.2f} m/s" )
56- print (f"Acceleration: { vehicle_reading .accelerator_pedal_position - vehicle_reading .brake_pedal_position :.2f} m/s ²" )
60+ print (f"Acceleration: { vehicle_reading .accelerator_pedal_position - vehicle_reading .brake_pedal_position :.2f} m/s ²" )
5761 # command = self.vehicle_interface.command_from_reading()
5862 # TODO: alter command to execute turn signals, then uncomment line below to send
5963 # the command to vehicle
@@ -80,5 +84,4 @@ def send_turn_command(self, turn_signal):
8084
8185 def healthy (self ):
8286 """Returns True if the element is in a stable state."""
83- return True
84-
87+ return True
0 commit comments