本文描述了一个开源软件(OSS)项目:PythonRobotics。这是一组用Python编程语言实现的机器人算法。该项目的重点是自主导航,目标是让机器人初学者了解每个算法背后的基本思想。
近年来,自主导航技术在许多领域受到了巨大的关注。这些领域包括自动驾驶、无人机飞行导航和其他交通系统。
自主导航系统是一种无需操作员进行任何外部控制即可长时间移动到目标的系统。该系统需要多种技术:它需要知道它在哪里(定位),它在哪里是安全的(Mapping),在哪里和如何移动(路径规划),以及如何控制它的运动(路径跟踪)。如果缺少这些技术,自动系统将无法正常工作。
教育资源对于未来的开发人员学习基本的自主导航技术越来越重要。因为这些自主技术需要不同的技术技能,例如:线性代数、统计学、概率论、优化理论和控制理论等。因此,需要良好的教育资源来学习基本的自主导航技术。我们在本文中描述的项目旨在成为此类资源之一。
本文描述的开源软件(OSS)项目:PythonRobotics,提供了机器人算法的代码合集,特别是专注于自主导航。其主要目标是为初学者提供理解它所需的工具。
它是在MIT许可证下用Python编写的。它有很多模拟动画,显示了每个算法的行为。它有助于学习者理解其基本思想。
PythonRobotics项目基于三个主要理念。
第一个理念是代码必须易于阅读。如果代码不容易阅读,那么很难实现我们让初学者理解算法的目标。本项目采用Python[12]编程语言。Python为矩阵运算、数学和科学运算以及可视化提供了强大的库,这使得代码更加可读,因为这样的操作不需要重新实现。拥有核心Python包允许用户专注于算法,而不是实现。
第二个理念是,实现的算法必须实用,并在学术界和工业界广泛使用。我们相信学习这些算法将在许多应用中有用。例如,用于定位的卡尔曼滤波器和粒子滤波器,用于Mapping的Grid Mapping,用于路径规划的基于动态规划的方法和基于采样的方法,以及用于路径跟踪的基于最优控制的方法。这些算法都会在本项目中实现。
最后一个理念是最小化依赖。由于很少有外部依赖性,我们可以轻松地运行示例代码,并将Python代码转换为其他编程语言,如C++或Java,以实现更实际的应用程序。每个示例代码仅依赖于Python3上的一些模块,如下所示。
这些模块是OSS,也可以免费使用。此存储库软件不依赖于任何商业软件。