Не-а, самые большие секреты - это:
1. Создать мир, который легко обсчитывается, а не решать задачи в общем виде.
-----------------------------------------------------------------------------
(например расстояние до препятствия можно определить чисто геометрически, зная,
что оно стоит на полу, плоскость которого заранее известна и задана).
2. Не портировать код из библиотек компа - там совсем другие принципы и приоритеты.
-----------------------------------------------------------------------------------
Функции на компе расчитаны на "общий случай", в каждом конкретном случае код можно
оптимизировать. Типичный случай - перемножение матриц, когда одна из матриц содержит
много нулей, единиц, минус единиц - можно реализовать очень эффективно, минимизировав
операции умножения. В этом случае использование функций, которые пусть даже безумно
эффективным алгоритмом перемножает "любые матрицы в общем виде" - глупо.
3. Оптимизировать скорость выполнения кода, а не процесс программирования.
--------------------------------------------------------------------------
При оценке сложности алгоритмов, часто забывают об операциях пересылки данных,
вызова функций и т.д. На микроконтроллере об этом забывать нельзя: сравним для Хmega
MUL+ADD = 3 такта, LDS+STS = 4 такта, RCALL+RET = 6 тактов. Вывод -
перекладывать в буфер, доставать оттуда, делать всякие "перестановки бабочкой",
вызывать функции - это операции, которых по возможности нужно избегать.
Поэтому я - за обработку на лету, развернутые циклы, сосчитанные такты и т.п.
Это не очень весело писать и отлаживать, зато это весело работает.
4. Использовать дополнительные возможности робота (движение, подсветка)
-----------------------------------------------------------------------
Пример с подсветкой привел с картинками - по-моему, показательно.
В конце концов подсветку препятствий используют традиционно с TSOPами - это вроде
ни у кого бурных протестов не вызывает... Тут мы делаем то же самое, только
направление можно определить точнее (в конце концов камера - это просто куча
хорошо сфокусированных фотосенсоров
)).
5. По возможности уменьшать области интересов за счет оптимизации построения
мира и предсказания на основе предыдущих кадров.
-----------------------------------------------------------------------
Ну, вроде очевидно.