[Sarlug] Поддержка физических исполнителей в Кумире

Evgeny Sinelnikov sin на altlinux.ru
Ср Янв 14 05:35:29 MSK 2015


---------- Пересылаемое сообщение 3 ----------
От кого: Evgeny Sinelnikov <sin на altlinux.ru>
Дата: 14 января 2015 г., 5:11
Тема: Поддержка физических исполнителей в Кумире

...

Ещё раз, если кто не понял суть задачи, которую ставлю я. Привожу
подробности из переписки с Сашей Трушиным:

В новой версии Кумира есть среда разработки и транслятор. В старой версии,
насколько я понимаю, ещё нет разделения на IDE и Транслятор. Это фича
версии 2.X:

   - http://www.niisi.ru/kumir/
   <http://www.google.com/url?q=http%3A%2F%2Fwww.niisi.ru%2Fkumir%2F&sa=D&sntz=1&usg=AFQjCNEnoT_bprPAP0afV81PnKANBCRlcA>
   - http://lpm.org.ru/kumir3/
   <http://www.google.com/url?q=http%3A%2F%2Flpm.org.ru%2Fkumir3%2F&sa=D&sntz=1&usg=AFQjCNFYW9IgSKRywjHbLy___xsOMG9-Rw>

Я предлагаю такой вариант, для начала:

   - вместо трансляции объектного кода для ARM сделать поддержку трансляции
   в примитвный ассемблер, который есть в среде разработки от Лего. Этот
   ассемблер одинаков для обоих версий (NXT-2.0 и EV3) так что можно будет
   прошивать не меняя базовую прошивку робота.
      - http://ev3.fantastic.computer/?page_id=84
      -
      http://analyticphysics.com/Diversions/Assembly%20Language%20Programming%20for%20LEGO%20Mindstorms%20EV3.htm

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


Первая цель - сделать открытую платформу для программирования роботов на
базе Кумира, добавив в него новых исполнителей с полной системой команд:

   - управление всеми двигателями
   - считывание значений датчиков (это базовый набор из Лего):
      - счётчик оборотов каждого подключенного двигателя (если есть),
      - датчик отражения света,
      - датчик освещённости,
      - датчики цвета (три последних выполнены в виде одного устройства),
      - ультразвукой дальномер,
      - одноосевой гироскоп,
      - ИК-датчик приближения,
      - ИК-приёмник (два последних в виде одного устройства).

То есть задача - это сделать универсальных исполнителей:

   - Исполнитель Лего
   - Исполнитель Ардуино
   - Исполнитель Распбери

с общей базовой системой команд, которая есть в среде разработки Лего
роботов (для начала). Начать предлагаю с Исполнителя Лего потому что сами
роботы уже готовы и достаточно стандартны.

Конечно тупая черепаха, как это было сделано в наработках, не будет "просто
так на нужную точку выходить". Но её можно сделать умной, в виде более
простого набора команд и более простых исполнителей для более младшей
аудитории.

Вопрос: "Режим чтобы прошивать или полуинтерактивный?"
Ответ: "Прошивать, конечно."

   - Но, для начала, в базовую прошивку Lego Mindstorm.
   - Протокол есть, он открытый.
      -
      http://code.google.com/p/smart-robot/downloads/detail?name=Appendix%201-LEGO%20MINDSTORMS%20NXT%20Communication%20protocol.pdf
      - Есть даже исходники в ev3sources на гитхабе.
   - Есть и отдельная ветка на гитхабе ev3dev.

В нового EV3-робота также вставляется SD-карта, можно ev3dev на базе Debian
загрузить. Но лучше бы стандартной прошивкой обойтись. Тем более, что тогда
сразу две версии лего-роботов получится охватить. Никто не мешает сделать
поддержку и более продвинутую, но не надо сразу усложнять.


-- 
Sin (Sinelnikov Evgeny)


​
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.lug.ru/pipermail/sarlug/attachments/20150114/42988475/attachment-0001.html>


Подробная информация о списке рассылки Sarlug