首页
首页 >> 自动驾驶 >> 正文

自动驾驶汽车英文缩写,自动驾驶汽车的介绍

日期:2019-07-11 13:04:10 来源:互联网 编辑:小道 阅读人数:154

1,自动驾驶汽车的介绍

自动驾驶汽车的介绍

自动驾驶汽车(Autonomous vehicles;Self-piloting automobile )又称无人驾驶汽车、电脑驾驶汽车、或轮式移动机器人,是一种通过电脑系统实现无人驾驶的智能汽车。自动驾驶汽车技术的研发,在20世纪也已经有数十年的历史,于21世纪初呈现出接...

2,自动驾驶汽车的技术原理是什么?

自动驾驶汽车的技术原理是什么?

一般来说,自动变速器的挡位分为P、R、N、D、2、1或L等。P(Parking):用作停车之用,它是利用机械装置去锁紧汽车的。转动部分,使汽车不能移动。当汽车需要在一固定位置上停留一段较长时间,或在停靠之后离开车辆前,应该拉好手制动及将拨杆推进“P”的位置上。要注意的是:车辆一定要在完全停止时才可使用P挡,要不然自动变速器的机械部分会受到损坏。另外,自动变速轿车上装置空挡启动开关,使得汽车只能在“P”或“N”挡才能启动发动机,以避免在其他挡位上误启动时使汽车突然前窜。R(Reverse):倒挡,车辆倒后之用。通常要按下拨杆上的保险按钮,才可将拨杆移至“R”挡。要注意的是:当车辆尚未完全停定时,绝对不可以强行转至“R”挡,否则变速器会受到严重损坏。N(Neutral):空挡。将拨杆置于“N”挡上,发动机与变速器之间的动力已经切断分离。如短暂停留可将拨杆置于此挡并拉出手制动杆,右脚可移离刹车踏板稍作休息。D(Drive):前进挡,用在一般道路行驶。由于各国车型有不同的设计;所以“D”挡一般包括从1挡至高挡或者2挡至高挡,并会因车速及负荷的变化而自动换挡。将拨杆放置在“D”挡上,驾车者控制车速快慢只要控制好油门踏板就可以了。

一、需要的条件:

1、交通标志规范化、统一化,电脑可以清晰识别。现在全国交通标志是完全统一的,圈圈叉叉,蓝底白底,各代表什么意思都清晰简单,任何司机一看就能识别。但问题是,这些标志十分不规范,同一个简单的“单行道”交通标志,有的画的硕大无比,有的又画得十分苗条,有的蓝色近乎墨黑,有的蓝色则又近乎银白。作为人,一眼看去就知道是单行道,但是电脑哪里能清楚区分,要是把“单行道”误认为“直行”标志,那麻烦就大了。而几乎任何一个标志都存在这类问题。要让汽车完全自动驾驶,对这个问题就不能有任何含糊。问题的解决之道有二,一是对全国的交通标志进行彻底的清理,使之规范、统一,二是对汽车电脑的识别系统进行超级优化,使之能够准确识别而不出错误。还有一种特殊的交通标志即交警指挥,他们左右手和手臂都是标志,每个交警都不一样,他们的指挥也自然各各不同。要想让电脑可以清晰识别其指挥,最佳的办法是交警指挥时,手中有一些特殊但统一的标志,或者干脆掌握着一个微型模拟电脑。

2、GPS导航的极度精确。现在GPS导航不是什么新鲜东西,但是其精确度非常糟糕,往往走过路口十几米了,导航仪才说,“前方50米路口左转”。对于人来说,马上就能判断导航不准确,跟实际情况不符。但作为自动驾驶中的汽车,它必须完全按照导航仪行进,即令有1米的判断误差,也极可能酿成重大的交通事故。其导航精度,误差只能允许在1厘米之内。这只能有赖于新一代卫星技术的提高,在未来50年内,实现平民化的精确的导航应该不是什么大难题,毕竟,几年之前,从地球上发射一枚导弹击中轨道上的卫星就已不是问题,从美国发射一枚洲际导弹打到印度某人家里也不是什么难题。现在只是需要把这种技术降低成本,实现普及。而卫星的精确导航,实际上不过是依赖计算机的高速运算罢了。

3、无所不在的数字自动化。现在的数字自动化已处处可见,很多手机都有语音识别功能,你只需要喊一声“阿玲”,手机就开始自动拨打“阿玲”的号码,这是微不足道的技术。在50年后,数字自动化也许无处不在,你喊一声“开门”,房门识别出你的声音便自动打开;你说一声“开灯”,灯打开了;你说“开电脑”,电脑开了。而你说“开车”,房间内部的通讯装置就将指令传达到车库里的汽车——无论车库有多远都无所谓了。汽车开到车库闸口,自动停下来刷缴费卡,然后再开到你的面前。它识别出你之后并打开车门。这种细枝末节的技术,如果有工厂愿意投入资金研发生产,2010年就可以变成现实。

4、汽车对道路上的人和物体的识别与判断。我们不能指望几十年之后人人遵守交通规则,马路上干净得只剩下来往的汽车,这种景象再过五百年可能也实现不了。路上有一只猫经过,或者有一只死鱼躺在那里,或者一个塑料娃娃被遗弃在路边,或者一个小孩骑自行车准备横穿马路。对于人来说,上面的情况或者直接开过去,或者停车,或者慢行,都能在一秒之内做出判断,但对于电脑来说,上面四件事物是非常难以区分的。小孩过不过来,猫过不过去,电脑都不好判断。但这也并非难题,汽车可以通过数学函数进行计算,算出汽车以何种速度行进不会撞上上述任何有着一定速度的事物。这需要设计极其准确的函数,还需要计算机反应极其敏捷,在几微妙里就可以判断形势、纳入计算,并得出汽车速度、方向的结论。

5、自动驾驶汽车大规模进入市场。所有条件都具备时,还必须有自动驾驶汽车出现。这种汽车的本质是一台会行走的电脑。现在的自动档汽车,档位、离合实现了自动化,对于自动驾驶汽车,还需要方向盘自动化、刹车自动化、油门自动化。五者都实现自动化时,就是一部全自动汽车。方向盘可以由GPS导航仪控制,一直行驶在规定路线即可。刹车、油门是同样的加减速技术,与汽车对道路上情况判断能力,属于同样的技术。目前飞机实现了自动驾驶,因为空中基本没有障碍物,这和陆地不同。火星着陆器也实现了完全自动驾驶,但其行动速度极其缓慢,判断一个普通的石块,也需要耗费它十几分钟的运算。汽车自动驾驶,需要电脑运行速度、智能水平起码比现在提高两倍。

3,全自动驾驶汽车有哪些

全自动驾驶汽车有哪些

目前市场上没有可以自动驾驶的汽车。

自动驾驶汽车依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作,让电脑可以在没有任何人类主动的操作下,自动安全地操作机动车辆。整个过程看似简单,实则十分复杂,一旦某个环节或系统出错,其后果不堪设想。如何保障系统稳定运行是目前自动驾驶汽车面临的最大瓶颈。

4,国家为什么支持自动驾驶汽车的发展

国家为什么支持自动驾驶汽车的发展

自动驾驶汽车对社会、驾驶员和行人均有益处。自动驾驶汽车的交通事故发生率几乎可以下降至零,即使受其他汽车交通事故发生率的干扰,自动驾驶汽车市场份额的高速增长也会使整体交通事故发生率稳步下降。自动驾驶汽车的行驶模式可以更加节能高效,因此交通拥堵及对空气的污染将得以减弱。

自动化汽车可以为美国节省数千亿美元的交通事故成本,交通拥堵成本以及运输过程中以人力提高生产力的成本。但它也可能使客运和货运过程涉及的数百万人失去工作。如果自动化汽车足够可靠,总有一天政府或将禁止人类驾驶员驾车,因为美国每年90%以上的交通事故人员伤亡是由驾驶员失误导致的。

无人驾驶汽车的普及将意味着政府对超宽车道、护栏、减速带、宽路肩甚至停止标志等交通基础设施的投入可以大大减少。

无人驾驶现在仍有很多问题,但也意味着发展空间很大。所以国家支持其发展。

5,求一段unity3D汽车自动驾驶的脚本代码

求一段unity3D汽车自动驾驶的脚本代码

1、把脚本直接连到汽车车身网格上,车身要有Rigidbody Component,要有四个轮子网格做子物体。 要想有声音的话还要有AudioSource Component。

2、打开Inspector,选择汽车脚本,把四个轮子连接到相对应的Transform参数上。设置wheelRadius参数为你轮子网格的大小。WheelCollider是自动生成的,所以无需手动添加。这样就能保证运行了,其他的声音和灰尘可以再添加。

脚本源代码如下:*/

#pragma strict

//maximal corner and braking acceleration capabilities

var maxCornerAccel=10.0;

var maxBrakeAccel=10.0;

//center of gravity height - effects tilting in corners

var cogY = 0.0;

//engine powerband

var minRPM = 700;

var maxRPM = 6000;

//maximum Engine Torque

var maxTorque = 400;

//automatic transmission shift points

var shiftDownRPM = 2500;

var shiftUpRPM = 5500;

//gear ratios

var gearRatios = [-2.66, 2.66, 1.78, 1.30, 1.00];

var finalDriveRatio = 3.4;

//a basic handling modifier:

//1.0 understeer

//0.0 oversteer

var handlingTendency = 0.7;

//graphical wheel objects

var wheelFR : Transform;

var wheelFL : Transform;

var wheelBR : Transform;

var wheelBL : Transform;

//suspension setup

var suspensionDistance = 0.3;

var springs = 1000;

var dampers = 200;

var wheelRadius = 0.45;

//particle effect for ground dust

var groundDustEffect : Transform;

private var queryUserInput = true;

private var engineRPM : float;

private var steerVelo = 0.0;

private var brake = 0.0;

private var handbrake = 0.0;

private var steer = 0.0;

private var motor = 0.0;

//private var skidTime = 0.0;

private var onGround = false;

private var cornerSlip = 0.0;

private var driveSlip = 0.0;

private var wheelRPM : float;

private var gear = 1;

//private var skidmarks : Skidmarks;

private var wheels : WheelData[];

private var wheelY = 0.0;

private var rev = 0.0;

//Functions to be used by external scripts

//controlling the car if required

//===================================================================

//return a status string for the vehicle

function GetStatus(gui : GUIText) {

gui.text="v="+(rigidbody.velocity.magnitude * 3.6).ToString("f1") km/h\ngear= "+gear+"\nrpm= "+engineRPM.ToString("f0");

//return an information string for the vehicle

function GetControlString(gui : GUIText) {

gui.text="Use arrow keys to control the jeep,\nspace for handbrake."; }

//Enable or disable user controls

function SetEnableUserInput(enableInput)

queryUserInput=enableInput;

//Car physics

//===================================================================

//some whee calculation data

class WheelData{ + "

var rotation = 0.0;

var coll : WheelCollider;

var graphic : Transform;

var maxSteerAngle = 0.0;

var lastSkidMark = -1;

var powered = false;

var handbraked = false;

var originalRotation : Quaternion;

};

function Start () {

//setup wheels

wheels=new WheelData[4];

for(i=0;i<4;i++)

wheels[i] = new WheelData();

wheels[0].graphic = wheelFL;

wheels[1].graphic = wheelFR;

wheels[2].graphic = wheelBL;

wheels[3].graphic = wheelBR;

wheels[0].maxSteerAngle=30.0;

wheels[1].maxSteerAngle=30.0;

wheels[2].powered=true;

wheels[3].powered=true;

wheels[2].handbraked=true;

wheels[3].handbraked=true;

for(w in wheels)

if(w.graphic==null)

Debug.Log("You need to assign all four wheels for the car script!"); if(!w.graphic.transform.IsChildOf(transform))

Debug.Log("Wheels need to be children of the Object with the car script");

w.originalRotation = w.graphic.localRotation;

//create collider

colliderObject = new GameObject("WheelCollider");

colliderObject.transform.parent = transform;

colliderObject.transform.position = w.graphic.position;

w.coll = colliderObject.AddComponent(WheelCollider);

w.coll.suspensionDistance = suspensionDistance;

w.coll.suspensionSpring.spring = springs;

w.coll.suspensionSpring.damper = dampers;

//no grip, as we simulate handling ourselves

w.coll.forwardFriction.stiffness = 0;

w.coll.sidewaysFriction.stiffness = 0;

w.coll.radius = wheelRadius;

//get wheel height (height forces are applied on)

wheelY=wheels[0].graphic.localPosition.y;

//setup center of gravity

rigidbody.centerOfMass.y = cogY;

//find skidmark object

// skidmarks = FindObjectOfType(typeof(Skidmarks));

//shift to first

gear=1;

//update wheel status

function UpdateWheels()

//calculate handbrake slip for traction gfx

handbrakeSlip=handbrake*rigidbody.velocity.magnitude*0.1;

if(handbrakeSlip>1)

handbrakeSlip=1;

totalSlip=0.0;

onGround=false;

for(w in wheels)

//rotate wheel

w.rotation += wheelRPM / 60.0 * -rev * 360.0 * Time.fixedDeltaTime; w.rotation = Mathf.Repeat(w.rotation, 360.0);

w.graphic.localRotation= Quaternion.Euler( w.rotation, w.maxSteerAngle*steer, 0.0 ) * w.originalRotation;

//check if wheel is on ground

if(w.coll.isGrounded)

onGround=true;

slip = cornerSlip+(w.powered?driveSlip:0.0)+(w.handbraked?handbrakeSlip:0.0); totalSlip += slip;

var hit : WheelHit;

var c : WheelCollider;

c = w.coll;

if(c.GetGroundHit(hit))

//if the wheel touches the ground, adjust graphical wheel position to reflect springs

w.graphic.localPosition.y-=Vector3.Dot(w.graphic.position-hit.point,transform.up)-w.coll.radius;

//create dust on ground if appropiate

if(slip>0.5 && hit.collider.tag=="Dusty")

groundDustEffect.position=hit.point;

groundDustEffect.particleEmitter.worldVelocity=rigidbody.velocity*0.5; groundDustEffect.particleEmitter.minEmission=(slip-0.5)*3; groundDustEffect.particleEmitter.maxEmission=(slip-0.5)*3;

groundDustEffect.particleEmitter.Emit(); }

//and skid marks

/*if(slip>0.75 && skidmarks != null)

w.lastSkidMark=skidmarks.AddSkidMark(hit.point,hit.normal,(slip-0.75)*2,w.lastSkidMark);

else

w.lastSkidMark=-1; */

// else w.lastSkidMark=-1;

totalSlip/=wheels.length;

//Automatically shift gears

function AutomaticTransmission()

if(gear>0)

if(engineRPM>shiftUpRPM&&gear

gear++;

if(engineRPM1)

gear--;

//Calculate engine acceleration force for current RPM and trottle

function CalcEngine() : float

if(brake+handbrake>0.;motor=0.0;;//ifcarisairborne,justre;if(!onGround);engineRPM+=(motor-0.3)*2;engineRPM=Mathf.Clamp(en;return0.0;;else;AutomaticTransmission();;engineRPM=whee

if(brake+handbrake>0.1)

motor=0.0;

//if car is airborne, just rev engine

if(!onGround)

engineRPM += (motor-0.3)*25000.0*Time.deltaTime;

engineRPM = Mathf.Clamp(engineRPM,minRPM,maxRPM);

return 0.0;

else

AutomaticTransmission();

engineRPM=wheelRPM*gearRatios[gear]*finalDriveRatio;

if(engineRPM

engineRPM=minRPM;

if(engineRPM

//fake a basic torque curve

x = (2*(engineRPM/maxRPM)-1);

torqueCurve = 0.5*(-x*x+2);

torqueToForceRatio = gearRatios[gear]*finalDriveRatio/wheelRadius; return

motor*maxTorque*torqueCurve*torqueToForceRatio;

else

//rpm delimiter

return 0.0;

//Car physics

//The physics of this car are really a trial-and-error based extension of

//basic "Asteriods" physics -- so you will get a pretty arcade-like feel. //This

may or may not be what you want, for a more physical approach research //the

wheel colliders

function HandlePhysics () {

var velo=rigidbody.velocity;

wheelRPM=velo.magnitude*60.0*0.5;

rigidbody.angularVelocity=new

Vector3(rigidbody.angularVelocity.x,0.0,rigidbody.angularVelocity.z);

dir=transform.TransformDirection(Vector3.forward);

flatDir=Vector3.Normalize(new Vector3(dir.x,0,dir.z));

flatVelo=new Vector3(velo.x,0,velo.z);

rev=Mathf.Sign(Vector3.Dot(flatVelo,flatDir));

//when moving backwards or standing and brake is pressed, switch to

reverse

if((rev<0||flatVelo.sqrMagnitude<0.5)&&brake>0.1)

gear=0;

if(gear==0)

//when in reverse, flip brake and gas

tmp=brake;

brake=motor;

motor=tmp;

//when moving forward or standing and gas is pressed, switch to drive

if((rev>0||flatVelo.sqrMagnitude<0.5)&&brake>0.1)

gear=1;

engineForce=flatDir*CalcEngine();

totalbrake=brake+handbrake*0.5;

if(totalbrake>1.0)totalbrake=1.0;

brakeForce=-flatVelo.normalized*totalbrake*rigidbody.mass*maxBrakeAccel;

flatDir*=flatVelo.magnitude;

flatDir=Quaternion.AngleAxis(steer*30.0,Vector3.up)*flatDir;

flatDir*=rev;

diff=(flatVelo-flatDir).magnitude;

cornerAccel=maxCornerAccel;

if(cornerAccel>diff)cornerAccel=diff;

cornerForce=-(flatVelo-flatDir).normalized*cornerAccel*rigidbody.mass;

cornerSlip=Mathf.Pow(cornerAccel/maxCornerAccel,3);

rigidbody.AddForceAtPosition(brakeForce+engineForce+cornerForce,transform.position+transform.up*wheelY);

handbrakeFactor=1+handbrake*4;

if(rev<0)

handbrakeFactor=1;

veloSteer=((15/(2*velo.magnitude+1))+1)*handbrakeFactor;

steerGrip=(1-handlingTendency*cornerSlip);

if(rev*steer*steerVelo<0)

steerGrip=1;

maxRotSteer=2*Time.fixedDeltaTime*handbrakeFactor*steerGrip;

fVelo=velo.magnitude;

veloFactor=fVelo<1.0?fVelo:Mathf.Pow(velo.magnitude,0.3);

steerVeloInput=rev*steer*veloFactor*0.5*Time.fixedDeltaTime*handbrakeFactor;

if(velo.magnitude<0.1)

steerVeloInput=0;

if(steerVeloInput>steerVelo)

steerVelo+=0.02*Time.fixedDeltaTime*veloSteer;

if(steerVeloInput

steerVelo=steerVeloInput;

else

steerVelo-=0.02*Time.fixedDeltaTime*veloSteer;

if(steerVeloInput>steerVelo)

steerVelo=steerVeloInput;

steerVelo=Mathf.Clamp(steerVelo,-maxRotSteer,maxRotSteer);

transform.Rotate(Vector3.up*steerVelo*57.295788);

function FixedUpdate () {

//query input axes if necessarry

if(queryUserInput)

brake = Mathf.Clamp01(-Input.GetAxis("Vertical"));

handbrake = Input.GetButton("Jump")?1.0:0.0;

steer = Input.GetAxis("Horizontal");

motor = Mathf.Clamp01(Input.GetAxis("Vertical"));

else

motor = 0;

steer = 0;

brake = 0;

handbrake = 0;

//if car is on ground calculate handling, otherwise just rev the engine

if(onGround)

HandlePhysics();

else

CalcEngine();

//wheel GFX

UpdateWheels();

//engine sounds

audio.pitch=0.5+0.2*motor+0.8*engineRPM/maxRPM;

audio.volume=0.5+0.8*motor+0.2*engineRPM/maxRPM;

//Called by DamageReceiver if boat destroyed

function Detonate()

//destroy wheels

for( w in wheels )

w.coll.gameObject.active=false; //no more car physics

enabled=false;

6,开自动驾驶汽车需要考驾照吗?

开自动驾驶汽车需要考驾照吗?

很多人为了考到驾照没少吃苦头,有人就想,要是有一辆能够自动驾驶的车就好了!不过,就算实现了完全自动驾驶,那这也并不代表你可以不用考驾照了。2月2日,北京市经济和信息化委员会、北京市交通委员会、北京市公安局公安交通管理局印发《北京市自动驾驶车辆道路测试能力评估内容与方法(试行)》及相关技术文件(以下简称《评估方法》)。这份文件被认为是自动驾驶的“路考大纲”。

据了解,《评估方法》将自动驾驶车辆的能力评估分为5个级别,在具体考核内容上与现在实行的小客车C1驾照考试内容有不少相似之处。

例如,该办法的评估内容分为四个大项:认知与交通法规遵守能力、执行能力、应急处置与人工介入能力、综合驾驶能力。四个大项中又细化为39个专项,其中包括曲线行驶、直角转弯、坡道停车和起步、倒车入库、侧方停车等。

值得注意的是,倒车入库和侧方停车都是4级以上才要求的测试项目。对此,就有网友调侃称,普通人学会了这两项技能,相当于可与高级别的自动驾驶PK啦!

在这份新出炉的自动驾驶“路考大纲”中,自动驾驶车辆与普通人的驾考要求基本相同。例如倒车入库要求“车辆进退途中不得停车,从道路一端控制线(车身压控制线)倒入车库停车,再前进出库向另一端驶过控制线后倒入车库停车,最后前进驶出车库。完成时间不超过3.5分钟。”

评估的是自动驾驶,要求自然也很严格。据了解,评估满分为100分,采取扣分制,80分以上才算通过测试。与此同时,有26项动作出现一次即不过关,其中包括不能正确使用灯光、雨刮器等车辆常用操纵件;起步时车辆后溜距离大于30厘米;绿灯亮起后,前方无其他车辆、行人等影响通行时,10秒内未完成起步……

此外,与普通车辆在路面上的操作类似,自动驾驶车辆也需要具备识别交通标识并服从管理的能力。比如,在评估过程中,自动驾驶车辆需要识别不少于5种标识,包括但不限于禁令、警告等,自动驾驶车辆还需要识别红绿灯,且能通过红灯和绿灯两种状态。最重要的是,自动驾驶车辆需要懂得交通指挥人员的管理。自动驾驶车辆可以根据道路交通指挥人员的手势行驶。

对于此次《评估方法》的出台,业内普遍认为,将对规范自动驾驶发展起到进一步促进作用。

本文相关词条概念解析:

驾驶

驾驶是是动词词组。一般是指具有专业技能的人为达到驾驭机器的目的而进行的人机交互过程。如驾驶汽车、驾驶轮船、驾驶火车等。与“开”同义。如开汽车、开火车等。驾驶,指操纵车船或飞机等使行驶。语出清魏源《圣武记》卷十四:“今即实估实造,而停泊不常驾驶,风浪无从练习,非若夷船之日涉重洋,则亦不过数年而舱朽柁蔽矣。”

网友评论