18

Greetings,

I am trying to decide between C and C++ for my robot. I am a 5+ year veteran of Visual Basic.NET, however I'm going with Linux (Ubuntu) on this robot, and there is a compatibility problem between Linux and the .NET Framework. I want to stick with whichever language I choose for all of my projects, so I want to make sure that I choose the most appropriate one for the task. For reference, I will describe my current robot in progress and what I am going to do with it. I am in the process of building a full-sized R4 Astromech (yep, I'm one of those guys). I have incorporated a PC motherboard with an Intel Core 2 2.1 GHz processor, 1 GB RAM. I will be using a scratch-built parallel interface card to control the drive motors, head motor, as well as a secondary parallel interface card (going to a second parallel port) which all of the sensors (IR, Ultrasonic Ranging, Visual Recognition via webcam, etc.) will be going to. Commands will be given using speech recognition (currently have a VB.NET scratch-built recognition program that I will be adapting to the new language). Given the specifications and desired goals listed above, would I be better off with C or C++? I greatly appreciate any suggestions that you might have. Thanks! Thaskalas

4

7 回答 7

9

兼容性问题是什么意思?你看过单声道吗?它是 .NET 库的开源实现。它面向 C# 而不是 VB.NET,但如果您更喜欢 .NET 环境,请使用它。速度在这里并不是真正的问题,因为 Core2Duo 对于您需要做的事情来说足够快。

如果 Mono 不适合你,我推荐 C++。有更多的 C++ 库(或者至少,我更熟悉,例如Boost),它们也可以使用大多数 C 库。使用 C++ 并没有真正的速度损失。虽然使用 C 本身并没有什么坏处,但 C++ 有一些优点而且没有缺点,所以它可能是更好的选择。

于 2011-02-11T20:53:29.773 回答
1

我也会推荐 C++ 和ROS。在我们公司,我们正在迁移到它,因为有很多人在研究它,扩展它,并添加许多很酷的功能。

有了这个,您就可以忘记实现大多数基本的低级内容并开始研究您打算研究的内容。

设置和开始开发真的很容易。

于 2011-04-07T07:42:08.267 回答
1

我建议使用 ROS。它将让您开始使用复杂的进程间通信管理器,以及复杂的机器人代码库,包括 SLAM 和其他关键机器人算法的多个实现。ROS 还允许您使用多种语言进行编程,包括 C、C++ 和 Python,因此您不会被一种或另一种语言所困。

于 2011-03-06T03:43:35.833 回答
0

C++ 是一个更大的工具包;你为什么不想要那个!?您不需要使用所有工具,但使用 C 语言您别无选择。最重要的是,对于 C++,您可以选择同时使用 C 和 C++ 第三方库。

于 2011-02-12T00:23:25.160 回答
0

你考虑过D吗?它是一种相当新的语言,被编译为本机代码并且可以直接链接到 C。(整个 C 标准库甚至可以从 D 中获得,并且标准库中包含与 POSIX API 的绑定。)基本上所有你需要做的要使用 D 中的任何 C 库,需要使用 C 编译器对其进行编译,并在头文件中翻译函数原型、常量声明等。

D 足够低级,可以在其中编写实验性内核,但具有现代功能,例如垃圾收集(尽管仍然允许手动内存管理)、内置字符串和数组,以及比 C++ 更先进/更易于使用的模板元编程工具。最大的缺点是缺乏用于企业级事物的成熟工具链和库,但对于您的目的而言,这可能并不重要。顺便说一句,如果你需要做一堆矩阵操作和其他东西,这里有SciD 项目,它提供了很好的 LAPACK 和 BLAS 模板包装器。

于 2011-02-11T21:35:23.710 回答
0

由于您在其上运行 Linux,因此我建议您采用拆分方法,您可以在 C(或 C++)中执行较低级别(设备接口,您可能需要快速性能)的内容,而在 a 中执行更高级别的内容现代语言,如 C#(使用 Mono)或 Java,甚至 Python。

尤其是 Python 具有很强的表现力,拥有大量的库,并且有一个非常简单的 C 接口。

用 C/C++ 之类的低级语言编写高级控制的东西会很快过时(恕我直言)。机器人应该很有趣!

于 2011-02-11T21:03:20.257 回答
0

使用 C++。你有空间。您可以从“作为更好的 C”开始使用它。

于 2011-02-11T22:35:38.423 回答