龙空技术网

Python vs C++ :最好的机器人语言

张本庸robotics 142

前言:

而今同学们对“python中文帮助”大概比较注重,咱们都想要了解一些“python中文帮助”的相关知识。那么小编也在网络上收集了一些关于“python中文帮助””的相关内容,希望兄弟们能喜欢,小伙伴们一起来学习一下吧!

何时在机器人中使用Python与C++?

C++和Python可能是编程机器人最常用的两种语言。C++是为了性能,Python是为了易用性。 当然,现在可以使用许多其他语言。例如,JavaScript,也可以使用 NodeJs/JavaScript 创建机器人应用程序的某些部分,在 Web 浏览器中创建 GUI(图形用户界面)等等。

在这篇文章中,本文将专注于C++和Python,因为它们是最常用的。只要看看机器人公司的工作机会,你就会看到大量的C++工作,而Python的工作更少(但仍然很多)。 所以,也许你想知道你是否应该只使用C++,只使用Python,或者两者兼而有之。 C++以性能著称,但更难学习,通常编写C++程序比编写 Python 程序需要更多时间。

所以,让我们看看什么时候使用哪种语言!

机器人技术,对速度的需求机器人的硬件部分何时必须C++那么,什么时候使用Python呢?你有多少时间?

机器人技术,对速度的需求

在机器人技术中,您需要性能。当我们谈论机器人技术的性能时,我们不关心是否能够通过负载平衡同时处理数千个连接。我们关心的是硬件产品的实时性能。让我们为机器人提供一个非常简化的架构:假设你构建了一个移动机器人。车轮上有一些电机可以用微控制器控制,然后你有一台嵌入式计算机,需要适应机器人结构。这台计算机将与外界通信,运行机器人应用程序,并与微控制器通信以移动机器人。通常,应用的低级层将涉及驱动器从电机控制器读取/写入数据。驱动程序将包含一个线程,该线程将与您的硬件设备通信,通常在控制循环中。

这个控制回路通常非常简单:

读取数据更新内部控制器以获取新命令写入命令

而且,你现在要做的就是一遍又一遍地重复这个序列。挑战来了。为了平滑跟踪,您可能需要以超过 100Hz 的频率运行此循环,这意味着除了软件的所有其他部分之外,代码每秒执行 100 次以上!

机器人的硬件部分

在为机器人构建软件时,有一个成本的概念。你不能只拿一台3000美元的笔记本电脑,开发你的应用程序,然后忘记它。如果你认真对待开发,如果你愿意进入生产阶段,你需要优化硬件。也许你不需要一台3000美元的电脑。也许一个50美元就足够满足你的需要了。但你猜怎么着,这台 50 美元的计算机可能没有 GPU 渲染和大量的内核/RAM。如果您的目标是生产 10 000 个单位,那么您在一个机器人上节省的每一美元将使您为整个批次节省 10 000 美元。另一个重要的一点是,如果您不尊重某些实时约束,您可能会损坏硬件或危及人员安全。如果执行给定命令的最大允许时间为 2 毫秒,则需要确保每个命令(以 100+ Hz 发送)花费的时间少于 2 毫秒。

所以,我已经谈到了很多关于速度和硬件优化的需求。但是C++和Python之间还没有可比性!关键是要让你了解你在机器人技术中可能面临的一些最重要的挑战,所以以下内容将非常简单。

何时必须C++?

在性能方面,C++是最好的编程语言之一。 如果你认为Python可以比C++慢10-100倍(它实际上取决于软件和硬件),你可能会明白,如果你想快,你需要C++。因此,如果您以 100+ Hz 的频率运行控制环路,并且最重要的是您需要实时约束,那么请选择C++。 → 好的,C++表现良好,但这不是编程中的最低级别。为什么不深入?好吧,当然,您总是可以更深入地尝试在汇编中编写代码。但是,当涉及到运动规划、图像处理和网络时,祝你好运。 C++是最大限度地提高机器人性能/生产率的好语言。 另外,不要忘记微控制器部分。您的嵌入式计算机很可能不会直接控制电机。您可能需要使用一个或多个微控制器。 通常,微控制器编程的语言接近C / C++。在这里忘记Python吧。典型的微控制器只有一个内核和非常有限的闪存量,但如果正确使用,它会非常快速和可靠。

那么,什么时候使用Python呢?

在这里,这主要取决于您的技能和偏好。 无论如何,您刚刚看到,对于任何需要性能的低级产品,您肯定必须使用C++:微控制器和机器人应用中的驱动器层。好吧,您可以将Python用于其他不涉及关键时间限制并且不需要太多计算能力的事情。Python通常会让你更快地开发。您可以更多地关注应用程序,而不是语言本身。在机器人和软件中也很常见,软件的C++部分带有Python绑定。

以运动规划算法为例。同样,在有限的硬件上,运动规划可能不太适合Python。在这里,C++可能是最好的选择。但是,一旦您开发了库的核心(或使用已经存在的库),您就可以创建一个 Python 绑定,以便您可以在 Python 代码中轻松使用它。 OpenCV就是一个很好的例子。Python API 被广泛使用,它允许人们更快地开发原型并了解图像处理,而无需深入研究库的C++代码。

Python和C++之间的另一个很大区别是C++是一种编译语言,但Python是一种解释语言。什么意思?您将花费更少的时间来编译代码,并且能够更快地启动和测试程序。说到测试,Python在机器人技术中非常适合这个目的。您可以轻松设置一个基本脚本来测试程序的一部分(例如:机器人的物理行为)。

因此,在不久的将来,没有什么能取代机器人技术的C++。如果你想认真开发机器人软件,你不能绕过C++。 Python 将帮助您开发软件的非关键部分并测试您的应用程序。我看到Python的最大优势是开发时间的延长。这是性能和开发速度之间的权衡。如果对于程序的特定部分,使用 Python 不会损害应用程序的性能/安全性,那么您可以随意使用 Python。

你有多少时间?

最后,我只想问这个问题:你有多少时间?你的经验是什么?

如果你已经是一个经验丰富的C++专家,也许你可以像Python代码一样快地编写C++代码。在这种情况下,您可以使用C++编写整个应用程序。如果你有C++和Python方面的知识,但还不是这方面的专家,那么我建议你做的是在需要性能时将C++用于程序的关键部分,其余的坚持使用Python。如果你发现某些 Python 部分不够快,那么优化代码或将此部分切换到 C++。

最后一点:如果你正在企业级构建一个机器人,并且已经考虑到了生产成本,那么也许满员或几乎满C++可能是一个不错的选择(绩效方面和招聘方面)。但是,如果您正在为个人项目、学校项目或初创公司的原型构建机器人以制作 POC(概念验证),请不要浪费时间。尽可能快地构建应用程序。构建有用的东西。不要过度设计东西。稍后将针对性能进行优化。

参考

Python vs C++ vs C vs MATLAB:最好的机器人语言 (analyticsinsight.net)

Python vs C++:了解哪个更适合 STEM 教育的 3 个关键 - Niryo

Python和C++更适合机器人技术吗?- CSS重置 (cssdeck.com)

何时在机器人中使用Python与C++?- 机器人后端 (roboticsbackend.com)

标签: #python中文帮助