To get back to my own original topic again :-) I found that the following change to the body of receive_nmea in nmea.py in the tinypilot does allow me to switch to compass mode even when a route is active.
if line[3:6] == 'APB' and time.time() - self.last_apb_time > 1
and self.last_values['ap.mode'] == 'gps' and self.last_values['ap.enabled']:
self.last_apb_time = time.time()
data = line[7:len(line)-3].split(',')
#if self.last_values['ap.enabled']:
# mode = 'compass' if data[13] == 'M' else 'gps'
# if self.last_values['ap.mode'] != mode:
# self.client.set('ap.mode', mode)
command = float(data[12])
xte = float(data[2])
xte = min(xte, 0.15) # maximum 0.15 miles
if data[3] == 'L':
xte = -xte
command += 300*xte; # 30 degrees for 1/10th mile
if abs(self.last_values['ap.heading_command'] - command) > .1:
self.client.set('ap.heading_command', command)
I had overlooked what was said in another thread, in which you explain the background of this functionality. I understand the design rationale now, but still, for my purpose I'd like to have it switched it off, like above. Is it possible to make this behaviour dependent on a parameter, so it can be switched on or off by an end user without having to change code?
Thx,
if line[3:6] == 'APB' and time.time() - self.last_apb_time > 1
and self.last_values['ap.mode'] == 'gps' and self.last_values['ap.enabled']:
self.last_apb_time = time.time()
data = line[7:len(line)-3].split(',')
#if self.last_values['ap.enabled']:
# mode = 'compass' if data[13] == 'M' else 'gps'
# if self.last_values['ap.mode'] != mode:
# self.client.set('ap.mode', mode)
command = float(data[12])
xte = float(data[2])
xte = min(xte, 0.15) # maximum 0.15 miles
if data[3] == 'L':
xte = -xte
command += 300*xte; # 30 degrees for 1/10th mile
if abs(self.last_values['ap.heading_command'] - command) > .1:
self.client.set('ap.heading_command', command)
I had overlooked what was said in another thread, in which you explain the background of this functionality. I understand the design rationale now, but still, for my purpose I'd like to have it switched it off, like above. Is it possible to make this behaviour dependent on a parameter, so it can be switched on or off by an end user without having to change code?
Thx,