<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本次內容主要是上週內容的延續,主要畫出kitti車的行駛的軌跡
同樣的,我們先來看看最終實現的效果:
接下來就進入一步步的編碼環節。。。
計算移動距離
#定義計算GPS距離方法 def computer_great_circle_distance(lat1,lon1,lat2,lon2): delta_sigma = float(np.sin(lat1*np.pi/180)*np.sin(lat2*np.pi/180)+ np.cos(lat1*np.pi/180)*np.cos(lat2*np.pi/180)*np.cos(lon1*np.pi/180-lon2*np.pi/180)) return 6371000.0*np.arccos(np.clip(delta_sigma,-1,1)) #使用GPS計算距離 gps_distance += [computer_great_circle_distance(imu_data.lat,imu_data.lon,prev_imu_data.lat,prev_imu_data.lon)]
IMU_COLUMN_NAMES = ['lat','lon','alt','roll','pitch','yaw','vn','ve','vf','vl','vu','ax','ay','az','af', 'al','au','wx','wy','wz','wf','wl','wu','posacc','velacc','navstat','numsats','posmode', 'velmode','orimode'] #獲取IMU資料 imu_data = read_imu('/home/wsj/data/kitty/RawData/2011_09_26/2011_09_26_drive_0005_sync/oxts/data/%010d.txt'%frame) #使用IMU計算距離 imu_distance += [0.1*np.linalg.norm(imu_data[['vf','vl']])]
import matplotlib.pyplot as plt plt.figure(figsize=(20,10)) plt.plot(gps_distance, label='gps_distance') plt.plot(imu_distance, label='imu_distance') plt.legend() plt.show()
顯然,IMU計算的距離較為平滑。
prev_imu_data = None locations = [] for frame in range(150): imu_data = read_imu('/home/wsj/data/kitty/RawData/2011_09_26/2011_09_26_drive_0005_sync/oxts/data/%010d.txt'%frame) if prev_imu_data is not None: displacement = 0.1*np.linalg.norm(imu_data[['vf','vl']]) yaw_change = float(imu_data.yaw-prev_imu_data.yaw) for i in range(len(locations)): x0, y0 = locations[i] x1 = x0 * np.cos(yaw_change) + y0 * np.sin(yaw_change) - displacement y1 = -x0 * np.sin(yaw_change) + y0 * np.cos(yaw_change) locations[i] = np.array([x1,y1]) locations += [np.array([0,0])] prev_imu_data =imu_data plt.figure(figsize=(20,10)) plt.plot(np.array(locations)[:, 0],np.array(locations)[:, 1])
class Object(): def __init__(self, center): self.locations = deque(maxlen=20) self.locations.appendleft(center) def update(self, center, displacement, yaw): for i in range(len(self.locations)): x0, y0 = self.locations[i] x1 = x0 * np.cos(yaw_change) + y0 * np.sin(yaw_change) - displacement y1 = -x0 * np.sin(yaw_change) + y0 * np.cos(yaw_change) self.locations[i] = np.array([x1,y1]) if center is not None: self.locations.appendleft(center) def reset(self): self.locations = deque(maxlen=20) #建立釋出者 loc_pub = rospy.Publisher('kitti_loc', MarkerArray, queue_size=10) #獲取距離和旋轉角度 imu_data = read_imu('/home/wsj/data/kitty/RawData/2011_09_26/2011_09_26_drive_0005_sync/oxts/data/%010d.txt'%frame) if prev_imu_data is None: for track_id in centers: tracker[track_id] = Object(centers[track_id]) else: displacement = 0.1*np.linalg.norm(imu_data[['vf','vl']]) yaw_change = float(imu_data.yaw - prev_imu_data.yaw) for track_id in centers: # for one frame id if track_id in tracker: tracker[track_id].update(centers[track_id], displacement, yaw_change) else: tracker[track_id] = Object(centers[track_id]) for track_id in tracker:# for whole ids tracked by prev frame,but current frame did not if track_id not in centers: # dont know its center pos tracker[track_id].update(None, displacement, yaw_change) prev_imu_data = imu_data def publish_loc(loc_pub, tracker, centers): marker_array = MarkerArray() for track_id in centers: marker = Marker() marker.header.frame_id = FRAME_ID marker.header.stamp = rospy.Time.now() marker.action = marker.ADD marker.lifetime = rospy.Duration(LIFETIME) marker.type = Marker.LINE_STRIP marker.id = track_id marker.color.r = 1.0 marker.color.g = 1.0 marker.color.b = 0.0 marker.color.a = 1.0 marker.scale.x = 0.2 marker.points = [] for p in tracker[track_id].locations: marker.points.append(Point(p[0], p[1], 0)) marker_array.markers.append(marker) loc_pub.publish(marker_array)
到此這篇關於Python中使用kitti資料集實現自動駕駛——繪製出所有物體的行駛軌跡的文章就介紹到這了,更多相關kitti資料集自動駕駛內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45