Каковы некоторые идеи для встроенного проекта и/или проекта робототехники?

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

большинство тех средств не является сборкой - в функциях языка, но основанных на библиотеке.

самое важное RAII, часто игнорируемый в течение многих лет разработчиками C++, происходящими из мира C. Оператор, перегружающийся , часто является недооцененной функцией, которые включают оба подобных массиву поведения (нижний оператор), указатель как операции (интеллектуальные указатели) и подобные сборке операции (умножающий матрицы.

использование [1 121] исключение является часто трудным, но с некоторой работой, может произвести действительно устойчивый код до [1 122] безопасность исключения спецификации (включая код, который не перестанет работать, или это будет иметь подобные фиксации функции, который является, это успешно выполнится или вернется назад к его исходному состоянию).

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

Другой делать использование нескольких парадигмой для создания "способов запрограммировать" за пределами предка C++, то есть, C.

При помощи [1 124] функторы , можно моделировать функции с дополнительной безопасностью типов и быть с сохранением информации. Используя шаблон команды , можно задержать выполнение кода. Большинство другой шаблоны разработки могут быть легко и эффективно реализованы в C++ для создания альтернативных стилей кодирования, которые, как не предполагают, были в списке "официальных парадигм C++".

При помощи [1 127] шаблоны , можно произвести код, который будет работать над большинством типов, включая не тот, который Вы думали сначала. Можно увеличить безопасность типов, также (как автоматизированный безопасный с точки зрения типов malloc/realloc/free). Функции объекта C++ действительно мощны (и таким образом, опасны, если используется небрежно), но даже динамический полиморфизм имеет свою статическую версию в C++: CRTP.

я нашел, что большинство" Эффективный C++ " - вводит книги от Scott Meyers или" Исключительный C++ " - книги типа от Herb Sutter, чтобы быть и легким читать, и вполне сокровища информации об известных и менее известных функциях C++.

Среди моего предпочтительного тот, который должен сделать волосы из любого повышения программиста Java от ужаса: В C++ самым объектно-ориентированным способом добавить опцию к объекту является через недруга лица, не являющегося членом какой-либо организации, функция, вместо функции членства (т.е. метод класса), потому что:

  • В C++, интерфейс класса является и своими функциями членства и функциями лица, не являющегося членом какой-либо организации, в том же недруге пространства имен

  • , функции лица, не являющегося членом какой-либо организации, не имеют никакого привилегированного доступа к внутреннему классу. По сути, с помощью функции членства по недругу лица, не являющегося членом какой-либо организации, каждый ослабит инкапсуляцию класса.

Это удивляет даже опытных разработчиков.

(Источник: Среди других, Гуру Herb Sutter онлайн Недели № 84: http://www.gotw.ca/gotw/084.htm )

8
задан 4 revs, 3 users 50% 1 March 2010 в 00:59
поделиться

8 ответов

Я показываю детям, которые никогда раньше не программировали и не занимались какой-либо электроникой, сделать простой «Фототроп», светочувствительного робота, примерно за день. . Он стоит менее 30 фунтов стерлингов, включая Arduino, электронику и стандартную механику. Если люди действительно увлекаются мобильными роботами, первоначальный проект может расти и развиваться (что, как мне кажется, является частью удовольствия).

Существуют международные соревнования роботов, для начала которых требуется относительно простая механика, например в Великобритании http://www.tic.ac.uk/micromouse/toh.asp

Для максимальной производительности требуются специально построенные машины (для легкости), но люди могли бы получить достойные результаты с Arduino Nano, правильным электроника и парочка хороших моторов.

Робот, следующий за линией, является классическим проектом мобильных роботов. Дорожка может быть такой же простой, как изолента. У Pololu есть несколько забавных видеороликов о своем роботе, работающем почти на Arduino 3PI. Датчики стоят около 1 фунта стерлингов, и есть куча простых комплектов мотор + коробка передач из множества мест по цене менее 10 фунтов стерлингов.Добавьте несколько фунтов стерлингов на управление двигателем, и вы получите автономную механику робота, нуждающуюся в программировании! Добавьте инфракрасный пульт дистанционного управления (около 1 фунта стерлингов), и вы можете управлять им с помощью пульта от телевизора. Добавьте небольшой солнечный элемент, используйте аналоговый вход Arduino для измерения напряжения, и он сможет найти солнце. Имея немного больше электроники, он может «накормить» себя. И так он становится более изощренным. Каждый шаг может быть не более чем от нескольких часов до нескольких дней, и вы найдете новые проблемы, которые нужно решить и на которых можно будет учиться.

ИМХО, самые интересные (недорогие) соревнования - это роботы по разгадыванию лабиринтов. Международное правило соревнований требует, чтобы робот исследовал обнесенный стеной лабиринт, обычно с использованием инфракрасных датчиков, и рассчитывал свой оптимальный маршрут. Задачи включают отслеживание текущего положения с точностью до миллиметра, работу с непредсказуемо шумной окружающей средой в реальном мире и оптимизацию скорости по прямой при прохождении поворотов на кратчайшие дистанции.

Все это в 16K программы и 1K RAM, с обработкой прерываний в реальном времени (до 100K прерываний в секунду для некоторых моторных систем), выборкой датчиков, контролем скорости мотора и решением лабиринта является интересной задачей программирования. (Вы можете «упростить» задачу с 32 КБ программы и 2 КБ ОЗУ: -)

Я работаю над «ограниченной» задачей робота (на основе Arduino), так что производительность робота в основном связана с программированием, а не с большой бюджет.

6
ответ дан 5 December 2019 в 08:24
поделиться

Начните с малого и постепенно переходите к чему-то более сложному. Управляйте сервоприводами. Мигают светодиоды. Входы Debounce. Считайте аналоговые датчики. Отображение текста на ЖК-дисплее. Затем соедините его.

Несмотря на название, мне нравится книга « Evil Genius » для микроконтроллеров PIC из-за небольших, легко усваиваемых проектов, которые, как правило, основываются друг на друге. Он, конечно, нацелен на программистов PIC, а не на Arduino, но рассмотренный материал будет полезен независимо от того, над чем вы работаете.

Я знаю, что Arduino сейчас в моде, но мне также нравится Плата для разработки Teensy ++ из-за ее низкой цены (24 доллара США), макетной печатной платы, относительно большого количества выводов, среды разработки Linux, возможности подключения по USB и отсутствия необходимости в программисте. Стоит рассмотреть для небольших проектов.

Если вы придумаете что-нибудь крутое, дайте мне знать. Мне нужен предлог, чтобы развлечься :)

5
ответ дан 5 December 2019 в 08:24
поделиться

Bicycle-related ideas:

  • theft alarm (perhaps with radio link to a base station which is connected to a PC by Ethernet)
  • fancy trip computer (with reed switch or opto sensor on wheel)
    • integrate with a GPS telematics unit (trip logging) with Ethernet/USB download of logged data to PC. Also has an interesting PC programming component--integrate with Google Maps.

Other ideas:

  • Clock with automatic time sync from:
    • GPS receiver
    • FM radio signal with embedded RDS data with CT code
    • Digital radio (DAB+)
    • Mobile phone tower (would it require a subscription and SIM card for this receive-only operation?)
    • NTP server via:
      • Ethernet
      • WiFi
      • ZigBee (with a ZigBee coordinator that gets its time from e.g. Ethernet or GPS)
    • Mains electricity smart meter via ZigBee (I'm interested now that smart meters are being introduced in Victoria, Australia; not sure if the smart meters broadcast the time info though, and whether it requires authentication)
  • Metronome
  • Instrument tuner
3
ответ дан 5 December 2019 в 08:24
поделиться

Этот ящик с головоломкой обратного тайника был потрясающим проектом Arduino. Вы можете перейти к следующему шагу, например, иметь ящик обратного тайника, который выдает подсказку только в определенном месте, а затем, используя физические подсказки, найденные в этом месте, в сочетании со следующей подсказкой из коробки, определите, куда идти. следующий шаг.

2
ответ дан 5 December 2019 в 08:24
поделиться

Поиск пути / навигация по препятствиям обычно является хорошим проектом для начала. Если вам нужно что-то практичное, посмотрите, как iRobot пылесосит пол, и придумайте лучшую схему.

1
ответ дан 5 December 2019 в 08:24
поделиться

Вы можете принять участие в одном из соревнований роботов-пожарных. Мы построили робота в университете для финального проекта моего бакалавра, но не успели принять участие в конкурсе. К тому же робот все равно нуждался в полировке ... :)

Видео здесь .

Имейте в виду, что это было сделано с помощью Motorola HC12 и компилятора C, и большинство компонентов за пределами платы микроконтроллера были сделан с нуля, поэтому на это ушло больше времени, чем следовало бы. С сборными компонентами должно быть намного проще.

1
ответ дан 5 December 2019 в 08:24
поделиться

Зависит от вашего опыта и от того, хотите ли вы практично или круто. С практической точки зрения, дистанционное управление может быть простой отправной точкой. У него есть кнопки и подсветка, но он не слишком требователен.

Для крутого проекта может быть игра на память в стиле Саймона или что-нибудь с подсветкой и шумом (мышление в стиле терменвокс).

1
ответ дан 5 December 2019 в 08:24
поделиться

В настоящее время я разрабатываю планы по автоматизации макета моей 30-летней модели поезда.

0
ответ дан 5 December 2019 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: