| by YoungTimes | No comments

Python中逐行读取文件的几种方法

假设在Python脚本的同一个目录下有个文本文件”data.txt”,文件内容为:

She walks in beauty
like the night
Of cloudless climes and starry skies
And all that’s best of dark and bright
Meet in her aspect and her eyes

1.使用readlines()逐行读取文件(针对小文件)

readlines()可以一次性的将文件的所有内容读入内存,然后将文件内容按行分割,返回文件中所有行的list;每行的末尾都会包含一个换行符。

当然这种方式[……]

继续阅读

Read More
| by YoungTimes | No comments

MIT自动驾驶与深度学习公开课(2)-深度强化学习与运动规划

MIT 2017年开设的关于深度学习和自动驾驶的课程,课程共分为五个部分,这是第二部分的内容,主要介绍强化学习的基本知识以及在路径规划和自动驾驶等方面的应用。

本文来源于MIT深度学习与自动驾驶公开课-MIT 6.S094: Deep Reinforcement Learning For[……]

继续阅读

Read More
| by YoungTimes | No comments

自动驾驶路径规划器-Lattice Planner详解

Lattice算法隶属于规划模块。规划模块以预测模块、routing模块、高精地图和定位的结果作为输入,通过算法,输出一条平稳、舒适、安全的轨迹,交给控制模块去执行。我们可以看到,规划模块在Apollo中是一个承上启下的重要模块。
Lattice算法隶属于规划模块。规划模块以预测模块、routing模块、高精地图和定位的结果作为输入,通过算法,输出一条平稳、舒适、安全的轨迹,交给控制模块去执行。我们可以看到,规划模块在Apollo中是一个承上启下的重要模块。
一个合格规划算法,必须满足几个条件。首先,必须能够使自动驾驶汽车到达目的地;其次,必须符合交规;第三,能够避免碰撞;[......]

继续阅读

Read More
| by YoungTimes | No comments

Python的切片(Slice)操作以及各种简写模式总结

切片(Slice)是一个从list、tuple、字符串中取出部分元素的操作。利用切片(Slice)可以很灵活的存取、修改要素,一行代码就可以实现很多行循环才能完成的操作。

通常一个切片操作要提供三个参数 [start_index:  stop_index:  step],三个参数之间以分割,start_index是切片的开始位置,stop_index是切片的结束位置(不包括结束位置),step是步长,默认值是1,>0 是从左往右走,<0是从右往左走。

切片(Slice)操作的基本表达式如下:

切片(Slice)让人眼花缭乱的使用主要是各种各样的省略简写方式。

[……]

继续阅读

Read More
| by YoungTimes | No comments

自动驾驶定位算法(十五)基于多传感器融合的状态估计(muti-Sensors Fusion)

1、传感器(Sensor)选取

自动驾驶系统中用于状态估计(State Estimation)的常用传感器包括GPS/GNSS、IMU、激光雷达(Lidar)。

状态估计(State Estimation)选用传感器需要考虑哪些因素:

1)误差不相关性。也就是说,用于Sensor Fusion的传感器其中单个传感器(Sensor Measurement)测量失败,不会导致其它传感器(Sensor)由于相同的原因而同时失败。

2)传感器的相互补充性。 比如IMU可以填充GPS两次定位间隔期间的定位输出,用于平滑GPS/GNSS的定位结果;GPS为IMU提供初值,消除I[……]

继续阅读

Read More
| by YoungTimes | No comments

MIT自动驾驶与深度学习公开课(1)-深度学习与自动驾驶介绍

本文来源于MIT深度学习与自动驾驶公开课-MIT 6.S094: Introduction to Deep Learning and Self-Driving Cars的PPT材料,版权归作者所有!有兴趣、有条件的同学可以到Youtube观看视频课程:https://www.youtube.com/watch?v=1L0TKZQcUtA&list=PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf&index=2

微信公众号”半杯茶的小酒杯”输入“MIT20200101”,获取MIT深度学习与自动驾驶公开课所有PPT与视频材料!

[……]

继续阅读

Read More
| by YoungTimes | No comments

自动驾驶定位算法(十四)-递归贝叶斯滤波

今天讨论无人驾驶汽车中高精定位相关的技术原理,同时也是机器人技术中的基础算法-贝叶斯滤波器(Bayes Filter)。

如上图,开始机器人不知道自己在哪里,跟人在陌生的环境中一样,一脸茫然,觉得四周哪里都一样,对机器人来说就是在任何地方的置信度都相等。

置信度(Belief)是什么

要让机器人理解物理世界,就需要给机器人安装各种传感器,比如摄像头、GPS、轮速记等等,通过传感器让机器人可以对周围环境进行建模,从而理解自己所处的位置和处境。真实的世界是非常复杂、动态变化的,机器人没有能力也不可能把周围环境都刻画出来。比如机器人运动过程中,受风速或者地面湿度影响,它通过轮速[……]

继续阅读

Read More
| by YoungTimes | No comments

3D平面拟合算法拟合Lidar点云

如下图所示,激光雷达(Lidar)扫描周围环境,会产生周围环境的3D点云数据。我们假设3D点云数据存储在一个数组中,每一行是一个点云坐标。

根据高中几何,我们知道,三维的平面方程为z=a+bx+cy。有了点云数据,我们可以采用最小二乘方法估算平面的方程参数(a, b, c),确定了这些参数,也就唯一确定了平面方程。

Python代码如下:

[……]

继续阅读

Read More
| by YoungTimes | No comments

基于Frenet优化轨迹的自动驾驶运动规划算法

动作规划动作在无人车规划模块的最底层,它负责根据当前配置和目标配置生成一序列的动作,我们前面讨论的三次样条插值实际上只是一个简单的路径,而非我们最终能够执行的轨迹,本文介绍一种基于Frenet坐标系的优化轨迹动作规划方法,该方法在高速情况下的高级车道保持和无人驾驶都具有很强的实用性,是目前普遍采用的一种动作规划算法。

基于Frenet坐标系的动作规划方法由于是由BMW的Moritz Werling提出的,为了简便,我们在后文中也会使用Werling方法简称。在讨论基于Frenet坐标系的动作规划方法之前,我们首先得定义什么是最优的动作序列:对于横向控制而言,假定由于车辆因为之前躲避障碍物[……]

继续阅读

Read More
| by YoungTimes | No comments

自动驾驶定位算法(十三)-粒子滤波(Particle Filter)

自动驾驶对定位的精度的要求在厘米级的,如何实现厘米级的高精度定位呢?一种众所周知的定位方法是利用全球定位系统(GPS),利用多颗卫星的测量结果,通过三角测量(Triangulation)机制确定目标的位置,GPS定位的原理见自动驾驶硬件系统(十一)-Global Navigation Satellite Systems,但是GPS并不总是提供高精度定位数据,在GPS信号强的情况下,定位精度在1~3m范围内,在GPS信号弱的情况下,定位精度下降到10~50m范围内。虽然依赖于RTK,可以将卫星定位的精度提高到厘米级,但是在GPS信号弱的场景下,定位精度仍然不能满足应用需求。所以仅仅使用GPS不能[……]

继续阅读

Read More