18

ご挨拶、

ロボットを C と C++ のどちらにするか決めようとしています。私は Visual Basic .NET の経験が 5 年以上あるベテランですが、このロボットでは Linux (Ubuntu) を使用していますが、Linux と .NET Framework の間に互換性の問題があります。すべてのプロジェクトでどの言語を選んでも使い続けたいので、タスクに最も適した言語を確実に選択したいと考えています。参考までに、現在進行中のロボットと、そのロボットで何をしようとしているのかを説明します。私は実物大の R4 アストロメクを製作中です (そうです、私もその一人です)。Intel Core 2 2.1 GHz プロセッサ、1 GB RAM を搭載した PC マザーボードを組み込みました。ドライブ モーター、ヘッド モーター、およびすべてのセンサー (IR、超音波測距、ウェブカメラを介した視覚認識など) が予定されています。コマンドは音声認識を使用して与えられます (現在、VB.NET で作成した認識プログラムを新しい言語に適応させます)。上記の仕様と望ましい目標を考えると、C と C++ のどちらを使用するのがよいでしょうか? ご提案がありましたら、よろしくお願いいたします。ありがとう!タスカラス

4

7 に答える 7

9

互換性の問題とはどういう意味ですか? Monoを見たことがありますか?これは、.NET ライブラリのオープン ソース実装です。VB.NET ではなく C# を対象としていますが、.NET 環境に慣れている場合はそれを使用してください。ここでは、Core2Duo が必要なことに対して十分に高速であるため、速度は実際には問題ではありません。

Mono がうまくいかない場合は、C++ をお勧めします。C++ 用のライブラリは他にもたくさんあります (または少なくとも、私はBoostなどのより多くのライブラリに精通しています)。これらのライブラリもほとんどの C ライブラリを使用できます。C++ を使用しても実際に速度が低下することはありません。C を使用すること自体は悪いことではありませんが、C++ にはいくつかの利点があり、欠点がないため、おそらくより良い選択です。

于 2011-02-11T20:53:29.773 に答える
1

ROSの使用をお勧めします。これにより、洗練されたプロセス間通信マネージャーと、SLAM やその他の重要なロボット工学アルゴリズムの複数の実装を含む、洗練されたロボット工学コードの大規模なライブラリを使い始めることができます。ROS では、C、C++、Python などの複数の言語でプログラミングすることもできるため、いずれかの言語で行き詰まることはありません。

于 2011-03-06T03:43:35.833 に答える
1

C++ とROSもお勧めします。非常に多くの人々がそれに取り組んでおり、それを拡張し、多くの優れた機能を追加しているため、私たちの会社ではそれに移行しています。

これにより、基本的な低レベルのもののほとんどを実装することを忘れて、研究しようとしていることに取り掛かることができます。

セットアップして開発を開始するのは非常に簡単です。

于 2011-04-07T07:42:08.267 に答える
0

その上で Linux を実行しているので、C (または C++) で下位レベル (高速なパフォーマンスが必要な場合があるデバイス インターフェイス) を実行し、上位レベルを C (または C++) で実行する分割アプローチをお勧めします。 C# (Mono を使用) や Java、さらには Python などの最新の言語。

特に Python は非常に表現力が高く、多数のライブラリ セットがあり、非常に単純な C インターフェイスを備えています。

C/C++ のような低レベル言語で高レベルの制御を記述すると、すぐに古くなります (IMHO)。ロボットは楽しいはずです!

于 2011-02-11T21:03:20.257 に答える
0

C++ はより大きなツール バッグです。なぜあなたはそれを望まないのですか!? すべてのツールを使用する必要はありませんが、C では選択の余地がありません。最も重要なことは、C++ では、C と C++ の両方のサードパーティ ライブラリを使用する選択肢があることです。

于 2011-02-12T00:23:25.160 に答える
0

Dを検討しましたか?これはかなり新しい言語であり、ネイティブ コードにコンパイルされ、C に直接リンクできます (C 標準ライブラリ全体は D からも利用でき、POSIX API へのバインディングは標準ライブラリに含まれています)。 D から C ライブラリを使用するには、C コンパイラでコンパイルし、ヘッダー ファイル内の関数プロトタイプ、定数宣言などを変換します。

D は十分に低レベルであり、実験的なカーネルが記述されていますが、ガベージ コレクション (手動のメモリ管理は引き続き許可されています)、組み込みの文字列と配列、および C++ よりも高度で使いやすいテンプレート メタプログラミング機能などの最新の機能を備えています。最大の欠点は、エンタープライズ向けの成熟したツールチェーンとライブラリがないことですが、目的のためにはおそらく問題にはなりません。ところで、多数の行列操作などを行う必要がある場合は、LAPACK と BLAS の優れたテンプレート ラッパーを提供するSciD プロジェクトがあります。

于 2011-02-11T21:35:23.710 に答える
0

C++ を使用します。スペースがあります。最初は「より良いCとして」使用できます。

于 2011-02-11T22:35:38.423 に答える