Библиотека ООП на C ++ для программирования Lego NXT
Вопрос
Некоторое время назад я получил набор LEGO Mindstorms NXT на Рождество, и теперь я хотел бы запрограммировать его на C ++.
Я осмотрелся здесь и в других местах и не смог найти кроссплатформенную библиотеку ООП C ++ с открытым исходным кодом, которая "казалась бы подходящей", включая lestat и nxtOSEK.
Итак, я решил, что если я не смогу найти ту, которая мне действительно нравится, то для меня было бы отличным опытом написать свою собственную библиотеку.
Я провел небольшое исследование и решил, что было бы проще всего общаться с ним по bluetooth, а не компилировать свои программы в машинный код NXT.
Я бы также хотел, чтобы это было сделано в стиле ООП, то есть кирпич NXT, двигатели, датчики и т.д. Существовали бы как объекты.
Итак, мой вопрос заключается в следующем:что мне нужно знать, прежде чем приступить к этому?где я могу получить хорошие ссылки (кроме here и специфичные для NXT)?Каковы другие достойные "базовые" библиотеки * для таких вещей, как связь по Bluetooth?
* Кстати, я полностью за использование boost и STL, если это необходимо.
В качестве альтернативы, я верю в то, что не стоит изобретать велосипед, если в этом нет необходимости, поэтому, если существует приличная библиотека NXT для C ++ ООП с поддержкой Bluetooth, дайте мне знать!
Решение
Я уже рассматривал, как это делается раньше.
Начните искать здесь: http://bricxcc.sourceforge.net/
На этой странице вы можете скачать исходный код для него.В итоге я скомпилировал свой исходный код C до байтовых кодов, которые может понять NXT-блок.
Это позволило мне добавить некоторые пользовательские расширения к C, хотя я потратил много времени на компиляцию C до достаточно компактной формы в байтовых кодах, которые помещаются в память NXT:)
Если вы хотите использовать существующую реализацию на языке Си, то ознакомьтесь с этой диаграммой: http://www.teamhassenplug.org/NXT/NXTSoftware.html
Список NBC (следующих байтовых кодов) можно найти на этой странице.Я нашел это чрезвычайно полезным.
Другие советы
Я использовал этот, я не знаю, проверили вы его или нет:
http://www.norgesgade14.dk/bluetoothlibrary.php
Эта библиотека обеспечивает поддержку считывания различных данных датчиков по Bluetooth-соединению, а также поддержку управления двигателями.
Более того, библиотеку можно легко модифицировать, и я обнаружил, что перенастроить ее чрезвычайно легко.
Я наткнулся на эту тему в прошлом году, работая над проектом, использующим C ++ для управления роботизированной рукой.Я использовал 2 кирпича NXT и 5 моторов.
Вы можете найти оригинальную библиотеку NXT ++ 0.6 здесь:
http://nxtpp.clustur.com
https://sourceforge.net/projects/nxtpp/forums/
К сожалению, этот сайт не обновляется.
Я разветвил новую версию NXT ++ 0.7 с некоторыми исправлениями и поддержкой нескольких блоков через USB или Bluetooth:https://github.com/dbworth/nxt-plus-plus
Смотрите файл Readme для получения подробной информации.
Другой пользователь, Петр, добавил в NXT ++ 0.6-2 поддержку сенсорного мультиплексора HiTechnic и цветового датчика Lego:
http://wmii.uwm.edu.pl /~artem/downloads.html
С уважением,
Дэвид.
Давайте посмотрим на демонстрацию возможностей NXT++, фильтрацию гистограмм, https://www.youtube.com/watch?v=PDYtjWgvsxg он основан на последней версии, поддерживающей мультиплексоры, от http://wmii.uwm.edu.pl /~артем и раздел загрузки,