You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					69 lines
				
				2.0 KiB
			
		
		
			
		
	
	
					69 lines
				
				2.0 KiB
			| 
											6 years ago
										 | #!/usr/bin/env python
 | ||
|  | 
 | ||
|  | import matplotlib
 | ||
|  | matplotlib.use('TkAgg')
 | ||
|  | import matplotlib.pyplot as plt
 | ||
|  | 
 | ||
|  | import numpy as np
 | ||
|  | import zmq
 | ||
|  | from cereal.services import service_list
 | ||
|  | from selfdrive.config import Conversions as CV
 | ||
|  | import cereal.messaging as messaging
 | ||
|  | 
 | ||
|  | 
 | ||
|  | if __name__ == "__main__":
 | ||
|  |   live_map_sock = messaging.sub_sock(service_list['liveMapData'].port, conflate=True)
 | ||
|  |   plan_sock = messaging.sub_sock(service_list['plan'].port, conflate=True)
 | ||
|  | 
 | ||
|  |   plt.ion()
 | ||
|  |   fig = plt.figure(figsize=(8, 16))
 | ||
|  |   ax = fig.add_subplot(2, 1, 1)
 | ||
|  |   ax.set_title('Map')
 | ||
|  | 
 | ||
|  |   SCALE = 1000
 | ||
|  |   ax.set_xlim([-SCALE, SCALE])
 | ||
|  |   ax.set_ylim([-SCALE, SCALE])
 | ||
|  |   ax.set_xlabel('x [m]')
 | ||
|  |   ax.set_ylabel('y [m]')
 | ||
|  |   ax.grid(True)
 | ||
|  | 
 | ||
|  |   points_plt, = ax.plot([0.0], [0.0], "--xk")
 | ||
|  |   cur, = ax.plot([0.0], [0.0], "xr")
 | ||
|  | 
 | ||
|  |   speed_txt = ax.text(-500, 900, '')
 | ||
|  |   curv_txt = ax.text(-500, 775, '')
 | ||
|  | 
 | ||
|  |   ax = fig.add_subplot(2, 1, 2)
 | ||
|  |   ax.set_title('Curvature')
 | ||
|  |   curvature_plt, = ax.plot([0.0], [0.0], "--xk")
 | ||
|  |   ax.set_xlim([0, 500])
 | ||
|  |   ax.set_ylim([0, 1e-2])
 | ||
|  |   ax.set_xlabel('Distance along path [m]')
 | ||
|  |   ax.set_ylabel('Curvature [1/m]')
 | ||
|  |   ax.grid(True)
 | ||
|  | 
 | ||
|  |   plt.show()
 | ||
|  | 
 | ||
|  |   while True:
 | ||
|  |     m = messaging.recv_one_or_none(live_map_sock)
 | ||
|  |     p = messaging.recv_one_or_none(plan_sock)
 | ||
|  |     if p is not None:
 | ||
|  |       v = p.plan.vCurvature * CV.MS_TO_MPH
 | ||
|  |       speed_txt.set_text('Desired curvature speed: %.2f mph' % v)
 | ||
|  | 
 | ||
|  |     if m is not None:
 | ||
|  |       print("Current way id: %d" % m.liveMapData.wayId)
 | ||
|  |       curv_txt.set_text('Curvature valid: %s   Dist: %03.0f m\nSpeedlimit valid: %s   Speed: %.0f mph' %
 | ||
|  |                         (str(m.liveMapData.curvatureValid),
 | ||
|  |                           m.liveMapData.distToTurn,
 | ||
|  |                           str(m.liveMapData.speedLimitValid),
 | ||
|  |                           m.liveMapData.speedLimit * CV.MS_TO_MPH))
 | ||
|  | 
 | ||
|  |       points_plt.set_xdata(m.liveMapData.roadX)
 | ||
|  |       points_plt.set_ydata(m.liveMapData.roadY)
 | ||
|  |       curvature_plt.set_xdata(m.liveMapData.roadCurvatureX)
 | ||
|  |       curvature_plt.set_ydata(m.liveMapData.roadCurvature)
 | ||
|  | 
 | ||
|  |     fig.canvas.draw()
 | ||
|  |     fig.canvas.flush_events()
 |