C или C ++ для робота? - PullRequest
       2

C или C ++ для робота?

18 голосов
/ 11 февраля 2011

Привет,

Я пытаюсь выбрать между C и C ++ для моего робота. Я ветеран Visual Basic.NET уже более 5 лет, но я собираюсь использовать Linux (Ubuntu) на этом роботе, и существует проблема совместимости между Linux и .NET Framework. Я хочу придерживаться того языка, который выберу для всех своих проектов, поэтому я хочу убедиться, что я выбрал наиболее подходящий для этой задачи. Для справки, я опишу моего текущего робота в процессе и что я собираюсь делать с ним. Я нахожусь в процессе создания полноразмерного R4 Astromech (да, я один из тех парней). Я включил материнскую плату для ПК с процессором Intel Core 2 2,1 ГГц, 1 ГБ оперативной памяти. Я буду использовать построенную поцарапанную параллельную интерфейсную карту для управления двигателями привода, головным двигателем, а также вторичной параллельной интерфейсной картой (идущей ко второму параллельному порту), через которую все датчики (ИК, ультразвуковой диапазон, визуальное распознавание вебкамера и т. д.) буду собираться. Команды будут передаваться с использованием распознавания речи (в настоящее время имеется программа распознавания, созданная с нуля на VB.NET, которую я буду адаптировать к новому языку). Учитывая спецификации и желаемые цели, перечисленные выше, мне было бы лучше с C или C ++? Я очень ценю любые предложения, которые вы могли бы иметь. Спасибо! Thaskalas

Ответы [ 7 ]

9 голосов
/ 11 февраля 2011

Что вы подразумеваете под проблемой совместимости? Вы смотрели на Моно ? Это реализация библиотек .NET с открытым исходным кодом. Он ориентирован на C #, а не на VB.NET, но если вам удобнее в среде .NET, используйте это. Скорость на самом деле здесь не проблема, поскольку Core2Duo достаточно быстр для того, что вам нужно сделать.

Если Mono не подойдет вам, я бы порекомендовал C ++. Существует гораздо больше библиотек для C ++ (или, по крайней мере, мне знакомо больше, например, Boost ), которые тоже могут использовать большинство библиотек C. Там нет реального снижения скорости за использование C ++. Хотя использование C само по себе неплохо, у C ++ есть некоторые преимущества и никаких недостатков, поэтому, вероятно, это лучший выбор.

1 голос
/ 07 апреля 2011

Я бы также рекомендовал C ++ и ROS .В нашей компании мы переходим на него, потому что над ним работает очень много людей, расширяя его и добавляя множество интересных функций.

С этим вы можете забыть о реализации большинства базовых низкоуровневых вещей и начать работать над тем, что вы собираетесь исследовать.

Это действительно легко настроить и начать разработку.

1 голос
/ 06 марта 2011

Я бы порекомендовал использовать ROS.Это позволит вам начать работу со сложным менеджером межпроцессных коммуникаций, а также с большой библиотекой сложного кода робототехники, включая несколько реализаций SLAM и других важных алгоритмов робототехники.ROS также позволяет вам программировать на нескольких языках, включая C, C ++ и Python, так что вы не застряли с тем или иным языком в будущем.

0 голосов
/ 12 февраля 2011

C ++ - большая сумка для инструментов; почему ты не хочешь этого ?! Вам не нужно использовать все инструменты, но с C у вас не будет выбора. Самое главное, что в C ++ у вас есть возможность использовать сторонние библиотеки C и C ++.

0 голосов
/ 12 февраля 2011

Используйте C ++.У тебя есть место.Вы можете использовать его «как лучший C» для начала.

0 голосов
/ 12 февраля 2011

Рассматривали ли вы D ? Это довольно новый язык, он скомпилирован с собственным кодом и может напрямую ссылаться на C. (Вся стандартная библиотека C доступна даже из D, а привязки к API POSIX включены в стандартную библиотеку.) В основном все, что вам нужно сделать использовать любую библиотеку C из D - это скомпилировать ее с помощью компилятора C и перевести прототипы функций, объявления констант и т. д. в файл заголовка.

D достаточно низкоуровневый, чтобы в нем было написано экспериментальное ядро, но имеет такие современные функции, как сборка мусора (хотя ручное управление памятью все еще разрешено), встроенные строки и массивы, а также более продвинутые / более простые в использовании средства метапрограммирования шаблонов чем С ++. Самым большим недостатком является отсутствие зрелого набора инструментов и библиотек для корпоративных вещей, но для ваших целей это, вероятно, не имеет значения. Кстати, если вам нужно выполнить кучу матричных манипуляций и прочего, есть проект SciD , который предоставляет красивые шаблонные оболочки над LAPACK и BLAS.

0 голосов
/ 12 февраля 2011

Поскольку вы используете Linux на нем, я бы рекомендовал разделенный подход, при котором вы выполняете низкоуровневый (интерфейс устройства, где вам может потребоваться высокая производительность) материал в C (или C ++) и более высокий уровеньматериал на современном языке, таком как C # (с использованием Mono) или Java, или даже Python.

Python особенно выразителен, имеет большой набор библиотек и довольно простой интерфейс C.

Написание ваших высокоуровневых элементов управления на низкоуровневом языке, таком как C / C ++, быстро устареет (ИМХО).Роботы должны быть веселыми!

...