背景介绍


在第十五届全国大学生智能汽车竞赛创意组比赛( 在南京信息工程大学举行 )过程中,百度深度学习组在开始比赛的时候,前三组参赛队伍使用网线下载程序。引起部分参赛队伍的质疑,担心违反在比赛过程中使用第三方服务器辅助进行车模运行决策。

竞赛组委会根据参赛队伍反馈,即时调整比赛规范,要求之后的队伍不再使用网线下载程序。

▲ 现场进行Linux操作记录检查过程

对于已经比赛过的参赛队伍的成绩是否认定有效,还是允许他们重新比赛。这其中竞赛组委会和参赛队伍之间出现了处理方案不断的升级对抗讨论。这其中主要涉及到比赛的形式公平还是实质公平的判别。

  • 形式公平:是参赛队伍都遵从同样的比赛流程和要求;
  • 实质公平:是指参赛队伍在比赛过程中没有采用不公平竞争手段来谋求竞赛优势;

最终组委会采用实质公平检查方式,对于已经参赛队伍的代码和操作流程进行核实,检查他们的车模在运行过程中是否使用了不公平的技术手段来谋求车模比赛优势。

经过现场调查,确定两支队伍比赛都未使用不公平手段来谋求车模比赛优势,比赛成绩有效。

01提交相关资料


1.发送过来的EMAIL

尊敬的评委老师:您们好!压缩文件内为我们比赛时使用的代码。捕获.png为小车在比赛期间使用过的指令(history指令输出,第490-501行),证实我们连网线进行智能交通比赛未使用任何作弊手段,并没有因为网线而提供比赛成绩。已与卓晴老师商议,并通过百度刘青华老师以及现场其他外校成员共同监督并核实。若有任何问题,劳烦各位老师及时联系我们。谢谢老师!此致敬礼!东北大学秦皇岛分校 NEUQ人工智能一队2020.08.26---微信:13764676578尊敬的评委老师:我的百度智能小车经由百度刘青华老师,相关参赛技术人员的审查过后,我们的小车内的edgeboard所搭载的linux系统在比赛连接网线运行过程中并没有运行能够提升比赛成绩的程序,并且我们记录的比赛最好成绩是第一次运行程序所获得的成绩。所运行的代码以及代码审查时的检查依据在附件发送,编写这个文档的视频稍后发送。南信大ai智能车队2020.08.26

2.代码检查

(1) 东北大学秦皇岛分校

▲ 东北大学秦皇岛分校代码查验截图

(2) 南京信息工程大学

▲ 南信大代码检查截图

# -*- coding:utf-8 -*-
"""
get image from camera:/dev/video2  424*240
deal 128 *128     256*256
get the angle     object_detect
"""
import os
import v4l2capture
from ctypes import *
import struct, array
from fcntl import ioctl
import cv2
import numpy as np
import time
from sys import argv
import getopt
import sys, select, termios, tty
import threading
import paddlemobile as pm
from paddlelite import *
import codecs
#import paddle
import multiprocessing
#import paddle.fluid as fluid
#from IPython.display import display
import math
import functools
from PIL import Image
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
from PIL import ImageFont
from PIL import ImageDraw
from collections import namedtuple
from datetime import datetime
# from user import user_cmd
path = os.path.split(os.path.realpath(__file__))[0]+"/.."
camera = "/dev/video2"
vels  = 1605                          #预设速度
crop_size = 128
# ii = 0
# error_last = 0                      #原本想在a的计算公式中加入PID
def dataset(video):            #图像采集与二值化处理  lower_hsv = np.array([21, 39, 64])                   #HSV阈值设定21 39 64   26 43 46upper_hsv = np.array([40, 255, 255])                 #40 255 255            34 255 255select.select((video,), (), ())        image_data = video.read_and_queue()frame = cv2.imdecode(np.frombuffer(image_data, dtype=np.uint8), cv2.IMREAD_COLOR)# 保存彩色图片和二值化图片# global ii# cv2.imwrite(path +"/Auto_Driver_img/" + str(ii) + '.jpg', frame)     #保存彩色图片           hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)mask = cv2.inRange(hsv, lowerb=lower_hsv, upperb=upper_hsv)       #二值化处理# cv2.imwrite(path +"/Auto_Driver_hsv/" + str(ii) + '.jpg', mask)        #保存二值化图片# ii = ii + 1img = Image.fromarray(mask)img = img.resize((128, 128), Image.ANTIALIAS)#img = cv2.resize(img, (128, 128))img = np.array(img).astype(np.float32)img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)img = img / 255.0;img = np.expand_dims(img, axis=0)img_256 = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)img_256 = Image.fromarray(img_256)return img_256,img;
def load_model():                #加载车道线模型valid_places =   (Place(TargetType.kFPGA, PrecisionType.kFP16, DataLayoutType.kNHWC),Place(TargetType.kHost, PrecisionType.kFloat),Place(TargetType.kARM, PrecisionType.kFloat),);config = CxxConfig();config.set_model_file("/home/root/workspace/deepcar/deeplearning_python/src/model_xu/model_infer/model");           #设置车道线模型文件的路径config.set_param_file("/home/root/workspace/deepcar/deeplearning_python/src/model_xu/model_infer/params");config.set_valid_places(valid_places);predictor = CreatePaddlePredictor(config);return predictor;
def predict(predictor, image, z):                   #预测转角img = image; i = predictor.get_input(0);i.resize((1, 3, 128, 128));z[ 0,0:img.shape[1], 0:img.shape[2] + 0, 0:img.shape[3]] = imgz = z.reshape(1, 3, 128, 128);frame1 = cv2.imdecode(np.frombuffer(img, dtype=np.uint8), cv2.IMREAD_COLOR)cv2.imwrite("zzzzz_test.jpg", frame1)i.set_data(z)predictor.run();out = predictor.get_output(0);score = out.data()[0][0];return score;
train_parameters = {    "data_dir": "data","train_list": "train.txt","eval_list": "eval.txt","class_dim": -1,"label_dict": {},"num_dict": {},"image_count": -1,"continue_train": True,     # 是否加载前一次的训练参数,接着训练"pretrained": False,"pretrained_model_dir": "./pretrained-model","save_model_dir": "./yolo-model","model_prefix": "yolo-v3","freeze_dir": "model_xu/label_detect/freeze_model",            #标志物模型的路径"use_tiny": True,         "max_box_num": 2,          # 一幅图上最多有多少个目标"num_epochs": 280,"train_batch_size": 16,      # 对于完整 yolov3,每一批的训练样本不能太多,内存会炸掉;如果使用 tiny,可以适当大一些"use_gpu": False,"yolo_cfg": {"input_size": [3, 448, 448],    # 原版的边长大小为608,为了提高训练速度和预测速度,此处压缩为448"anchors": [7, 10, 12, 22, 24, 17, 22, 45, 46, 33, 43, 88, 85, 66, 115, 146],"anchor_mask": [[6, 7, 8], [3, 4, 5], [0, 1, 2]]},"yolo_tiny_cfg": {"input_size": [3, 224, 224],"anchors": [ 0,1,  0,2,  1,3,  2,4,  3,1,  4,1],"anchor_mask": [[3, 4, 5], [0, 1, 2]]},"ignore_thresh": 0.7,"mean_rgb": [127.5, 127.5, 127.5],"mode": "train","multi_data_reader_count": 4,"apply_distort": True,"nms_top_k": 300,"nms_pos_k": 300,"valid_thresh": 0.01,"nms_thresh": 0.45,"image_distort_strategy": {"expand_prob": 0.5,"expand_max_ratio": 4,"hue_prob": 0.5,"hue_delta": 18,"contrast_prob": 0.5,"contrast_delta": 0.5,"saturation_prob": 0.5,"saturation_delta": 0.5,"brightness_prob": 0.5,"brightness_delta": 0.125},"sgd_strategy": {"learning_rate": 0.01,"lr_epochs": [30, 50, 65],"lr_decay": [1, 0.5, 0.25, 0.1]},"early_stop": {"sample_frequency": 50,"successive_limit": 3,"min_loss": 2.5,"min_curr_map": 0.84}
}
def init_train_parameters():        #初始化训练参数,主要是初始化图片数量,类别数# label_list文件路径label_list =  "./model_xu/label_detect/label_list"      #os.path.join(train_parameters['data_dir'], "label_list")           index = 0with codecs.open(label_list, encoding='utf-8') as flist:lines = [line.strip() for line in flist]for line in lines:train_parameters['num_dict'][index] = line.strip()train_parameters['label_dict'][line.strip()] = indexindex += 1train_parameters['class_dim'] = index
def load_model_detect():                                       ues_tiny = train_parameters['use_tiny']yolo_config = train_parameters['yolo_tiny_cfg'] if ues_tiny else train_parameters['yolo_cfg']target_size = yolo_config['input_size']anchors = yolo_config['anchors']anchor_mask = yolo_config['anchor_mask']label_dict = train_parameters['num_dict']class_dim = train_parameters['class_dim']path1 = train_parameters['freeze_dir']              #标志物模型文件的路径model_dir = path1                                             pm_config1 = pm.PaddleMobileConfig()pm_config1.precision = pm.PaddleMobileConfig.Precision.FP32     pm_config1.device = pm.PaddleMobileConfig.Device.kFPGA        #pm_config.prog_file = model_dir + '/model'#pm_config.param_file = model_dir + '/params'pm_config1.model_dir = model_dirpm_config1.thread_num = 8    predictor1 = pm.CreatePaddlePredictor(pm_config1)return predictor1
def angle_process1(angle):                    #a的计算公式if angle>0.4 and angle<0.6:           #a = int(angle*600 + 1200)elif angle <= 0.4:a = int(angle*710 + 550)          #790 620else:a = int(angle*930 + 1560)         #900 1540return (a)
def angle_process2(angle):              #只用于限速路段if (angle>0.4) and (angle<0.6):a = int(angle*600 + 1200)elif angle<=0.4:a = int(angle*790 + 620)    else:a = int(angle*770 + 1200)       #750,1100return a
def object_dect(origin):             # 检测标志物(20帧的罪魁祸首)tensor_img = origin.resize((256,256), Image.BILINEAR)        # resize 256*256if tensor_img.mode != 'RGB':tensor_img = tensor_img.convert('RGB')tensor_img = np.array(tensor_img).astype('float32').transpose((2, 0, 1))  # HWC to CHWtensor_img -= 127.5tensor_img *= 0.007843tensor_img = tensor_img[np.newaxis, :]tensor = pm.PaddleTensor()tensor.dtype =pm.PaddleDType.FLOAT32tensor.shape  = (1,3,256,256)tensor.data = pm.PaddleBuf(tensor_img)paddle_data_feeds1 = [tensor]outputs1 = predictor1.Run(paddle_data_feeds1)assert len(outputs1) == 1, 'error numbers of tensor returned from Predictor.Run function !!!'bboxes = np.array(outputs1[0], copy = False)# print("bboxes.shape",bboxes.shape)t_labels = []t_scores = []t_boxes = []center_x = []center_y = []ob_x = -1    ob_y = -1ob_flag = -1if len(bboxes.shape) == 1 :print("No object found in video")return -2, -2, -2else:labels = bboxes[:, 0].astype('int32')scores = bboxes[:, 1].astype('float32')boxes = bboxes[:, 2:].astype('float32')  for i in range(len(labels)):if scores[i] > 0.4 :t_labels.append(labels[i])t_scores.append(scores[i])center_x.append((int((boxes[i][0]+boxes[i][2])/2)*240/448))center_y.append((int(boxes[i][1]+boxes[i][3])/2)*240/448*0.75)print(t_labels)print(t_scores)if len(t_labels) >= 1 :ob_flag = t_labels[0]ob_x = center_x[0]ob_y = center_y[0]print(ob_flag)else:ob_flag = -1ob_x = -1ob_y = -1return ob_flag , ob_x , ob_y           #返回的是“label编号”、“标志物中心点横向距离”与“纵向距离”
if __name__ == "__main__":video = v4l2capture.Video_device(camera)video.set_format(320,240, fourcc='MJPG')video.create_buffers(1)video.queue_all_buffers()video.start()predictor = load_model();init_train_parameters()predictor1 = load_model_detect()    vel = int(vels)lib_path = path + "/lib" + "/libart_driver.so"so = cdll.LoadLibrarylib = so(lib_path)car = "/dev/ttyUSB0"z = np.zeros((1, 128, 128, 3))if (lib.art_racecar_init(38400, car.encode("utf-8")) < 0):raisepass# angle_count = 0detect_flag = Truetemp_flag = FalseOB_flag = -1OB_x = -1 OB_y = -1cross_count = 0red_line_count = 0obstacle_count = 0limit_10_count = 0park_count = 0turn_left_count = 0cone_count = 0cross_recognize = Truered_line_recognize = Trueobstacle_recognize = Truelimit_10_recognize = Truepark_recognize = True# park_recognize1 = True# park_recognize2 = Falseturn_left_recognize = Truecone_recognize = True# record_a = open('/home/root/workspace/deepcar/deeplearning_python/a.txt','a')# record_angle = open('/home/root/workspace/deepcar/deeplearning_python/angle.txt','a')      start_time = time.time()        #进循环体之前计个时while 1:fps_time = time.time()          #用于最后计算帧率# if (time.time() - start_time) <= 7:#     detect_flag = False# elif (time.time() - start_time) <= 8:#     detect_flag = True# else:#     pass#计数# angle_count += 1           #本来想用于"每5张照片检测一次标志物",后来方案舍弃# 车道线预测origin,img = dataset(video)z = np.zeros((1, 128, 128, 3))angle = predict(predictor, img, z)   a = angle_process1(angle)# print("angle:",angle,"   a:",a)# record_angle.write(str(angle))      #记录angle值(0~1之间)# record_angle.write('\n')   # record_a.write(str(a))          #记录a值(600~2200左右)# record_a.write('\n')   #标志物检测# detect_flag = False            #设置为False,只检测车道线(一直保持30帧左右)if ( detect_flag == True ):OB_flag ,OB_x ,OB_y = object_dect(origin)print(OB_flag ,OB_x ,OB_y)#    label_list如下:#    0   blue           used#    1   cancel_10 #    2   crossing       used#    3   limit_10       used#    4   obstacle       used#    5   park           used#    6   red            used#    7   red_line       used#    8   straight#    9   tire #    10  turn_left      used# 各标志物的控制动作# crossing     (OK)if OB_flag == 2 and cross_recognize == True and (time.time()-start_time > 7.5):cross_count += 1if cross_count >= 4 and OB_y >= 90 and not temp_flag :   #OB_y 100  所有OB_y减25detect_flag = Falsetemp_flag = TrueFLAG_time = time.time() if temp_flag:if (time.time() - FLAG_time) <= 0.3:      #刹车vel = 1470a = 1500elif (time.time() - FLAG_time) <= 1.1:      #停1秒vel = 1500a = 1500elif (time.time() - FLAG_time) <= 2:      #起步vel = 1605else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605cross_count = 0cross_recognize = False#red_line     (OK) if OB_flag == 7 and red_line_recognize == True:red_line_count += 1if red_line_count >= 4 and OB_y >= 40 and not temp_flag :detect_flag = Falsetemp_flag = TrueFLAG_time = time.time() if temp_flag:if (time.time() - FLAG_time) <= 0.3:      #刹车vel = 1495a = 1500elif (time.time() - FLAG_time) <= 1.2:    #坡道停车1秒vel = 1540a = 1500elif (time.time() - FLAG_time) <= 6.4:    #坡道起步vel = 1605else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605red_line_count = 0red_line_recognize = False#obstacle    (OK)if OB_flag == 4 and obstacle_recognize == True:obstacle_count += 1if obstacle_count >= 2 and OB_y >= 35 and not temp_flag :detect_flag = Falsetemp_flag = TrueFLAG_time = time.time() if temp_flag:if OB_x <= 145:  #偏右if (time.time() - FLAG_time) <= 0.3:    #刹车vel = 1475a = 1500elif (time.time() - FLAG_time) <= 0.65:    #原地左转vel = 1500a = 1980elif (time.time() - FLAG_time) <= 1.51:    #左前方驶入超车道0.86  0.8vel = 1605a= 1500elif (time.time() - FLAG_time) <= 2.23:    #原地右转0.62 0.55     0.62       0.68s   原0.88svel = 1500a= 686elif (time.time() - FLAG_time) <=2.77:    #右前方驶入主干道vel = 1605a= 1500     elif (time.time() - FLAG_time) <=12.99:    #从十字路口到驶出环岛vel = 1605else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605obstacle_count = 0obstacle_recognize = Falseelif OB_x <= 175:  #正  电量16.2if (time.time() - FLAG_time) <= 0.3:    #刹车vel = 1475a = 1500elif (time.time() - FLAG_time) <= 0.65:    #原地左转vel = 1500a = 1980elif (time.time() - FLAG_time) <= 1.45:    #左前方驶入超车道0.8  原0.77vel = 1605a= 1500elif (time.time() - FLAG_time) <= 2.04:    #原地右转0.5 0.55     0.62       0.68s   原0.88svel = 1500a= 686elif (time.time() - FLAG_time) <=2.22:    #右前方驶入主干道vel = 1605a= 1500     elif (time.time() - FLAG_time) <=12.44:    #从十字路口到驶出环岛vel = 1605else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605obstacle_count = 0obstacle_recognize = Falseelse:      #偏左if (time.time() - FLAG_time) <= 0.3:    #刹车vel = 1475a = 1500elif (time.time() - FLAG_time) <= 0.65:    #原地左转0.25  0.35vel = 1500a = 1980elif (time.time() - FLAG_time) <= 1.43:    #左前方驶入超车道0.78 0.8  原0.77vel = 1605a= 1500elif (time.time() - FLAG_time) <= 2.03:    #原地右转0.6 0.62vel = 1500a= 686elif (time.time() - FLAG_time) <=2.41:    #右前方驶入主干道vel = 1605a= 1500     elif (time.time() - FLAG_time) <=12.63:    #从十字路口到驶出环岛vel = 1605else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605obstacle_count = 0obstacle_recognize = False# #red cone # if OB_flag == 6 and cone_recognize == True:#     cone_count += 1#     if cone_count >= 4 and OB_y >= 70 and not temp_flag :#         detect_flag = False#         temp_flag = True#         FLAG_time = time.time()#     if temp_flag :#         if (time.time() - FLAG_time) <= 0.3:    #刹车#             vel = 1475#             a = 1500#         elif (time.time() - FLAG_time) <= 0.7:    #原地右转0.5s#             vel = 1500#             a = 1060#         elif (time.time() - FLAG_time) <= 1.85:    #斜向右前方行驶1.15    原1.2s   #             vel = 1545#             a = 1500#         elif (time.time() - FLAG_time) <= 2.35:    #回正0.5s#             vel = 1545#             a = 1860#         elif (time.time() - FLAG_time) <= 2.75:    #直行一小段0.4s#             vel = 1545#             a = 1500 #         elif (time.time() - FLAG_time) <= 3.15:     #原地左转 0.45s   3.05#             vel = 1500#             a = 1940#         elif (time.time() - FLAG_time) <= 4.8:    #斜向左前方行驶1.45s  原1.5s#             vel = 1545#             a = 1500#         elif (time.time() - FLAG_time) <= 5.2:    #回正0.75s  原0.65s#             vel = 1500#             a = 1050                            #原1060#         else:#             OB_flag = -1 #             detect_flag = True#             temp_flag = False#             vel = 1605#             cone_count = 0#             cone_recognize = False#red cone if OB_flag == 6 and cone_recognize == True:cone_count += 1if cone_count >= 4 and OB_y >= 45 and not temp_flag :detect_flag = Falsetemp_flag = TrueFLAG_time = time.time()print(OB_x)print(OB_x)print(OB_x)if temp_flag :if OB_x <= 90:  #超级偏右if (time.time() - FLAG_time) <= 0.3:    #刹车vel = 1475elif (time.time() - FLAG_time) <= 0.7:    #原地右转0.5svel = 1500a = 1060elif (time.time() - FLAG_time) <= 1.4:    #斜向右前方行驶0.7   1   1.15    原1.2s   vel = 1545a = 1500elif (time.time() - FLAG_time) <= 1.9:    #回正0.5svel = 1545a = 1860elif (time.time() - FLAG_time) <= 2.7:    #直行一小段0.8 0.4svel = 1545a = 1500 elif (time.time() - FLAG_time) <= 3.1:     #原地左转 0.45s   3.05vel = 1500a = 1940elif (time.time() - FLAG_time) <= 4.88:    #斜向左前方行驶1.45s  原1.5svel = 1545a = 1500elif (time.time() - FLAG_time) <= 5.48:    #0.5   回正0.75s  原0.65svel = 1500a = 1050                            #   1050 原1060else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605cone_count = 0cone_recognize = Falseelif OB_x <= 100:  #偏右if (time.time() - FLAG_time) <= 0.3:    #刹车vel = 1475elif (time.time() - FLAG_time) <= 0.7:    #原地右转0.5svel = 1500a = 1060elif (time.time() - FLAG_time) <= 1.7:    #斜向右前方行驶1   1.15    原1.2s   vel = 1545a = 1500elif (time.time() - FLAG_time) <= 2.2:    #回正0.5svel = 1545a = 1860elif (time.time() - FLAG_time) <= 2.5:    #直行一小段0.3svel = 1545a = 1500 elif (time.time() - FLAG_time) <= 2.9:     #原地左转 0.45s   3.05vel = 1500a = 1940elif (time.time() - FLAG_time) <= 4.98:    #斜向左前方行驶1.98 1.88  1.45s  原1.5svel = 1545a = 1500elif (time.time() - FLAG_time) <= 5.58:    #0.5   回正0.75s  原0.65svel = 1500a = 1050                            #   1050 原1060else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605cone_count = 0cone_recognize = Falseelif OB_x <= 130:   #正if (time.time() - FLAG_time) <= 0.3:    #刹车vel = 1475elif (time.time() - FLAG_time) <= 0.7:    #原地右转0.5svel = 1500a = 1060elif (time.time() - FLAG_time) <= 1.85:    #斜向右前方行驶1.15    原1.2s   vel = 1545a = 1500elif (time.time() - FLAG_time) <= 2.35:    #回正0.5svel = 1545a = 1860elif (time.time() - FLAG_time) <= 2.75:    #直行一小段0.4svel = 1545a = 1500 elif (time.time() - FLAG_time) <= 3.15:     #原地左转 0.45s   3.05vel = 1500a = 1940elif (time.time() - FLAG_time) <= 4.8:    #斜向左前方行驶1.3 1.4 1.55  1.65  1.45s  原1.5svel = 1545a = 1500elif (time.time() - FLAG_time) <= 5.4:    #回正0.55 0.4 0.75s  原0.65svel = 1500a = 1050                            #原1060else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605cone_count = 0cone_recognize = Falseelse:                #偏左if (time.time() - FLAG_time) <= 0.3:    #刹车vel = 1475elif (time.time() - FLAG_time) <= 0.8:    #原地右转0.5svel = 1500a = 1060elif (time.time() - FLAG_time) <= 2.05:    #斜向右前方行驶1.15    原1.2s   vel = 1545a = 1500elif (time.time() - FLAG_time) <= 2.55:    #回正0.5svel = 1545a = 1860elif (time.time() - FLAG_time) <= 2.95:    #直行一小段0.4svel = 1545a = 1500 elif (time.time() - FLAG_time) <= 3.35:     #原地左转 0.45s   3.05vel = 1500a = 1940elif (time.time() - FLAG_time) <= 5.05:    #斜向左前方行驶1.6 1.7  1.65  1.45s  原1.5svel = 1545a = 1500elif (time.time() - FLAG_time) <= 5.45:    #回正0.75s  原0.65svel = 1500a = 1050                            #原1060else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605cone_count = 0cone_recognize = False#limit_10               if OB_flag == 3 and limit_10_recognize == True:limit_10_count += 1if limit_10_count >= 4 and OB_y >= 145 and not temp_flag :detect_flag = Falsetemp_flag = TrueFLAG_time = time.time() if temp_flag:if (time.time() - FLAG_time) <= 8:    #限速路段慢速行驶8秒vel = 1530                #1528a = angle_process2(angle)elif (time.time() - FLAG_time) <= 10.8:    #出cancel_10之后,保持一段时间的30帧vel = 1605detect_flag = Falseelse:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605obstacle_count = 0limit_10_recognize = False#turn_left     (OK)if OB_flag == 10 and turn_left_recognize == True:turn_left_count += 1if turn_left_count >= 4 and OB_y >= 160 and not temp_flag :detect_flag = Falsetemp_flag = TrueFLAG_time = time.time() if temp_flag:# if (time.time() - FLAG_time) <= 3:#   detect_flag = False if (time.time() - FLAG_time) <= 0.3:           #减速vel = 1520elif (time.time() - FLAG_time) <= 2.05:           #慢速过弯vel = 1575elif (time.time() - FLAG_time) <= 4:         #保持一段时间的30帧vel = 1605else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1605red_line_count = 0turn_left_recognize = False# parkif OB_flag == 5 and park_recognize == True:park_count += 1if park_count >= 4 and OB_y >= 127 and not temp_flag :     #oby 125detect_flag = Falsetemp_flag = TrueFLAG_time = time.time() if temp_flag: # if (time.time() - FLAG_time) <= 0.3:    #刹车0.3#     vel = 1460#     a = 1500# elif (time.time() - FLAG_time) <= 0.5:   #停0.2#     vel = 1500#     a = 1500# elif (time.time() - FLAG_time) <= 2.1:   #往前0.3#     vel = 1534# elif (time.time() - FLAG_time) <= 3:#     vel = 1470# elif (time.time() - FLAG_time) <= 3.3:#     vel = 1530# elif (time.time() - FLAG_time) <= 3.5:#     vel = 1500# elif (time.time() - FLAG_time) <= 5:#     vel = 1475#     a = 1140if (time.time() - FLAG_time) <= 0.3:    #刹车0.3vel = 1460a = 1500elif (time.time() - FLAG_time) <= 1.5:     #往前1.2 1.1 0.8 0.5vel = 1535    #1535  电量低了需要速度加上去1540,不然走不动# a = 1500elif (time.time() - FLAG_time) <= 1.7:     #刹车0.2vel = 1485a = 1500elif (time.time() - FLAG_time) <= 2.0:     #停0.3vel = 1500a = 1500elif (time.time() - FLAG_time) <= 2.8:     #退0.8 0.7vel = 1473                            #1475 1482a = 1500elif (time.time() - FLAG_time) <= 3.0:     #刹车0.2vel = 1520a = 1500elif (time.time() - FLAG_time) <= 5.17:     #边倒边转2.12 2.1 2vel = 1475a = 1200elif (time.time() - FLAG_time) <= 6.16:     #直倒1.12 1.2 1 0.85vel = 1475a = 1500 elif (time.time() - FLAG_time) <= 6.46:     #进库后刹车0.3vel = 1530a = 1500elif (time.time() - FLAG_time) > 6.46:       #熄火vel = 1500a = 1500# elif (time.time() - FLAG_time) > 1.5:       #熄火#     vel = 1500#     a = 1500else:OB_flag = -1 detect_flag = Truetemp_flag = Falsevel = 1550park_count = 0park_recognize = Falselib.send_cmd(vel, a)                        #发送给下位机控制指令print("!!!!!!!!!!!!!! fps:",1/(time.time() - fps_time))        #计算当前帧率

※ 结论


对于两个学校参赛队伍代码以及Linux的操作历史纪录检查可以证明,这两个队伍在操作和运行过程中,没有使用本机辅助竞赛车模运行。符合比赛要求。他们的比赛成绩有效。

关于第十五届深度学习组比赛中前三支队伍使用网线问题调查相关推荐

  1. 二十五个深度学习相关公开数据集

    转 [干货]二十五个深度学习相关公开数据集 2018年04月18日 13:42:53 阅读数:758 (选自Analytics Vidhya:作者:Pranav Dar:磐石编译) 目录 介绍 图像处 ...

  2. 第十五届智能车赛比赛 比赛组织参考文档

    第十五届全国大学生智能车竞赛 比赛组织参考文档 作者:卓晴博士 全国大学生智能车竞赛秘书处 2020-07-27 Monday 2020年由于全球新冠肺炎大流行的影响,使得第十五届智能车竞赛在组织比赛 ...

  3. 【CS231n】十五、深度学习的高效算法和硬件设计_一只神秘的大金毛_新浪博客...

    一.大纲 emmm,硬件及算法加速部分是博主实验室的主要研究领域,总算可以多说点体会而不是疯狂翻译和贴图了. 主讲人是韩松,清华电子系本科,Stanford Phd,深鉴科技创始人之一,主要工作在深度 ...

  4. 【CS231n】十五、深度学习的高效算法和硬件设计

    一.大纲 emmm,硬件及算法加速部分是博主实验室的主要研究领域,总算可以多说点体会而不是疯狂翻译和贴图了. 主讲人是韩松,清华电子系本科,Stanford Phd,深鉴科技创始人之一,主要工作在深度 ...

  5. (二十五)深度学习目标检测:RCNN

    RCNN RCNN主要分为3个大部分 第一部分产生候选区域: 第二部分对每个候选区域使用CNN提取长度固定的特征: 第三个部分使用一系列的SVM进行分类: 第四个部分使用回归器精细修正候选框位置: R ...

  6. 第十五届全国大学生智能汽车竞赛竞速赛规则(讨论稿)

    竞速比赛规则 这是竞赛规则讨论稿,正式规则将会在竞赛网站公布: smartcar.cdstm.cn/index 第十五届竞赛规则导读 参加过往届比赛的队员可以通过下面内容了解第十五届规则主要变化.如果 ...

  7. 第十五届全国大学生智能汽车竞速比赛规则 (预览)

    竞速比赛规则 第十五届竞赛规则导读 参加过往届比赛的队员可以通过下面内容了解第十五届规则主要变化.如果第一次参加比赛,则建议对于本文进行全文阅读. 竞速比赛共分为为四个组别.详细情况参加文档第一节中的 ...

  8. 第十五届全国大学生智能车竞赛百度人工智能组相关文件链接

    ▲ 第十五届全国大学生智能车竞赛人工智能创意比赛 第15届全国大学生智能汽车竞赛 | 人工智能挑战赛(百度) 第十五届全国大学生智能汽车竞赛人工智能创意赛 第十五届全国大学生智能汽车竞赛百度人工智能正 ...

  9. 第十五届全国大学生智能汽车竞赛创意组比赛进入全国总决赛队伍名单

    第十五届全国大学生智能汽车竞赛 创意组比赛进入全国总决赛队伍名单 01百度深度学习组总决赛队伍名单 根据参加创意组别复选赛队伍提交作品综合成绩大于60分,共43支队伍,进入创意组别全国总决赛.另外补充 ...

最新文章

  1. 安装phpcms时出现Warning: ob_start(): output handler \'ob_gzhandler\' conflicts with \'zlib
  2. 自己生产签名和数字证书的方法
  3. Qt 读取XML文档的简单示例
  4. 很好很强大,这款AI开发神器的图像标注吊打labelme
  5. python保存至对应目录_python相对目录的基本用法(一)
  6. Python之旅Day8 socket网络编程
  7. mysql 日期类型比价_MySQL 日期时间类型怎么选?
  8. 浅谈Normalize.css
  9. POJ 3415 后缀数组+单调栈
  10. 工作日志(一)、jquery上传插件uploadify的使用
  11. 使用 matlab 数据集的生成(generate datasets)
  12. Node.js(express) + MongoDB(mongoose) 简单开发(二)
  13. android 控件获取rect,Android自定义View圆形进度条控件(三)
  14. PreferenceActivity和PreferenceFragment对比
  15. 酷睿i3 10105f参数 i310105f属于什么水平 i3 10105f性能怎么样
  16. python首字母大写其他小写_python大小写转换,首字母大写,去除特殊字符的简单示例...
  17. 发表Nature等杂志四十多篇论文老师带您学单细胞测序数据挖掘和课题设计 2020年1月11-12日 上海...
  18. php 里面的echo啥意思,echo的含义 echo 有哪些含义,有什么功能
  19. 卧槽,javaCV不到十行代码实现图片OCR文字识别
  20. 怎么把文件push到手机根目录_Android应用Push至设备system目录

热门文章

  1. 在UE4 Editor中改变一个变量时同时更新相关联的其它变量
  2. 基础IPsec-remote基本配置
  3. ipmsg 绑定tcp错误
  4. Volley 源码解析之图片请求
  5. linux下查看Mysql默认编码、修改默认编码
  6. UBI 文件系统移植 sys 设备信息【转】
  7. linux目录结构   各个目录文件作用
  8. webstrom常用键
  9. Laravel: 基础篇
  10. delphi 属性编辑器