| by YoungTimes | No comments

无人驾驶路径规划技术-三次样条插值(Cubic Spline Interpolation)曲线及Python代码实现

自动驾驶运动规划(Motion Planning)是无人驾驶汽车的核心模块之一,它的主要任务之一就是如何生成舒适的、碰撞避免的行驶路径和舒适的运动速度。生成行驶路径最经典方法之一就是是Sampling-Based Planner算法;基于采样的规划器可以规划出可行的轨迹,但这种轨迹往往是折线,为了保证车辆行驶过程中给乘客良好舒适的体验,需要对规划的轨迹进行平滑。Cubic Spline就是一种常用的插值平滑算法,通过一系列的控制点得到一条连续平滑的轨迹。

1、Cubic Spline曲线定义

假定有以下n+1个节点:

把n+1个节点划分成n个区间:$[(x_0, x_1)[……]

继续阅读

Read More
| by YoungTimes | No comments

MIT自动驾驶与深度学习公开课(5)-基于人的自动驾驶深度学习

MIT 2017年开设的关于自动驾驶和深度学习的课程,课程包含5个部分,这是第四部分: Deep Learning For Human-Centered Semi-Autonomous Vehicles。

本文来源于MIT深度学习与自动驾驶公开课-MIT 6.S094: Deep Learning For Human-Centered Semi-Autonomous Vehicles的PPT材料,版权归作者所有!有兴趣[……]

继续阅读

Read More
| by YoungTimes | No comments

MIT自动驾驶与深度学习公开课(4)-循环神经网络(RNN)在自动驾驶的应用

MIT 2017年开设的关于自动驾驶和深度学习的课程,课程包含5个部分,这是第四部分: Recurrent Neural Networks for Steering Through Time。

本文来源于MIT深度学习与自动驾驶公开课-MIT 6.S094: Recurrent Neural Networks for Steering Through Time[……]

继续阅读

Read More
| by YoungTimes | No comments

自动驾驶运动规划(Motion Planning)

1.什么是Motion Planning

Motion Planning是在遵循道路交通规则的前提下,将自动驾驶车辆从当前位置导航到目的地的一种方法。

在实际开放道理场景下,自动驾驶要处理的场景非常繁杂:空旷的道路场景、与行人、障碍物共用道理的场景、空旷的十字路口、繁忙的十字路口、违反交通规则的行人/车辆、正常行驶的车辆/行人等等。场景虽然复杂,但都可以拆解为一系列简单行为(behavior)的组合:

将这些简单的行为(behavior)组合起来,就可以完成复杂的驾驶行为。

2、Motion Planning的约束条件(constraints)

Motion[……]

继续阅读

Read More
| by YoungTimes | No comments

Python-统计字符串中每个字符的出现频率及其在字符串中位置

1、使用collections.Counter()统计字符串中每个字符出现的频率

collections.Counter()接收一个可迭代的实体(Iterable Entity),输出以Entity中的元素为Key,出现频率(Frequency)为Value的统计结果。

如果collections.Counter()的参数为string,该函数的返回结果就是以string中字符为Key,出现频率(Frequency)为Value的字符频率统计结果。

输出结果如下:

利用这种方式我们可以字符串中所有字符(包含空格和”.”)的出现次数。如果我们只想统计字符和数字[……]

继续阅读

Read More
| by YoungTimes | No comments

Python-在文件中搜索字符串并获取目标字符串所在的行号

1、检查文件中是否包含目标字符串

为了检测文件中是否包含目标字符串,我们定义了check_if_string_in_file()函数,该函数的参数为:目标文件名和目标字符串。在函数中迭代获取文件的每一行,然后检测该行是否包含目标字符串,如果包含目标字符串,函数返回True;如果文件中所有行都不包含目标字符串,则返回False。

假设存在文本文件”sample.txt”,文件内容为:

在文件中检测是否存在”is”字符串。

上述代码的执行结果:

由于文件包含字符串”is”,所以函数check_if_string_in_file()返回True。

[……]

继续阅读

Read More
| by YoungTimes | No comments

Python-建议在with语句(with statement)中执行文件操作

1、为什么要在with语句中执行文件操作

常见的python文件读写流程如下:首先使用open()函数打开文件,open()函数返回文件对象(file object),然后使用该文件对象(file object)进行文件读写,最后在程序结束前执行文件关闭(close()函数)文件。

示例程序如下:

当python程序的同级目录存在sample.txt文件时,程序正常执行,打开文件成功,并打印sample.txt文件中的内容:

当文件打开失败(如文件不存在时等),程序可能会输出以下错误信息:

上面的代码在大部分场景下可以正常工作,但是在一些场景下会有问题[……]

继续阅读

Read More
| by YoungTimes | No comments

MIT自动驾驶与深度学习公开课(3)-卷积神经网络与自动驾驶中端到端学习(一)

MIT 2017年开设的关于深度学习和自动驾驶的课程,课程共分为5个部分,这是第三部分的内容-Convolutional Neural Networks And End-To-End Learning Of The Full Driving Task。

本文来源于MIT深度学习与自动驾驶公开课-MIT 6.S094: Convolutional Neural Networ[……]

继续阅读

Read More
| by YoungTimes | No comments

MIT自动驾驶与深度学习公开课(3)-卷积神经网络与自动驾驶中端到端学习(二)

MIT 2017年开设的关于深度学习和自动驾驶的课程,课程共分为5个部分,这是第三部分的内容-Convolutional Neural Networks And End-To-End Learning Of The Full Driving Task。

本文来源于MIT深度学习与自动驾驶公开课-MIT 6.S094: End To End Learni[……]

继续阅读

Read More
| by YoungTimes | No comments

自动驾驶中的车辆运动学模型

要控制车辆的运动,首先要对车辆的运动建立数字化模型,模型建立的越准确,对车辆运动的描述越准确,对车辆的跟踪控制的效果就越好。除了真实反映车辆特性外,建立的模型也应该尽可能的简单易用。自行车模型(Bicycle Model)是一种常见的车辆运动学模型。

自行车模型(Bicycle Model)的建立基于如下假设:

1)不考虑车辆在垂直方向(Z轴方向)的运动,即假设车辆的运动是一个二维平面上的运动。

2) 假设车辆左右侧轮胎在任意时刻都拥有相同的转向角度和转速;这样车辆的左右两个轮胎的运动可以合并为一个轮胎来描述。

3)假设车辆行驶速度变化缓慢,忽略前后轴载荷的转移。

[……]

继续阅读

Read More