roboforum.ru

Технический форум по робототехнике.

Робот - платформа для технического творчества

Re: Робот - платформа для технического творчества

Michael_K » 03 янв 2010, 18:35

=DeaD= писал(а):IrRanger.Value плохо переменной считать - это значит что постоянно питание должно быть включено, а если у нас сонар? А если нам надо его 10 раз в секунду включать, а при постоянной работе он весь аккум выжрет?

Не согласен. Это проблемы операционной системы - как поддерживать эту переменную в актуальном состоянии,
она может его 10 раз в секунду считывать и класть значение переменной.
Можно ввести и "кубик", например, "UpdateRadar"
Вопрос в том, чему (а уж потом - на чем) учить детей в 5 классе

Вот именно! Поэтому я и предлагаю не нагружать детей физической реализацией опроса сенсора...
Мы формулируем ОЧЕНЬ высокоуровневый язык.
Иначе так можно далеко зайти. Следуя вашей логике - давайте опустимся до физики,
введем разные типы памяти (озу, регистры, стек, флэш, еепром, sd-карточка), с которыми даже
Си через "непонятно какое место" работает.

Re: Робот - платформа для технического творчества

=DeaD= » 03 янв 2010, 18:40

2Michael_K: Надо не забывать, что потом детям надо по возможности обеспечить плавный переход из графической среды в Си\Си++\"Выберите иное", давайте определимся куда они потом будут переходить, где всё это обеспечивается ОС?

Re: Робот - платформа для технического творчества

Michael_K » 03 янв 2010, 18:56

давайте определимся куда они потом будут переходить, где всё это обеспечивается ОС?

Как раз трудностей не вижу - один в один однозначно переводится в обе стороны.
Будут так же писать:

Radar.Update ();
SetMotorSpeed (Radar.Value*10);
или даже
Motor.Speed = Radar.Value*10;

При наличии библиотек, конечно. Вас же не смущают ардуиновские библиотеки, и ось,
которые тоже скрывают от юзера низкоуровневое ковыряние...
Пользователь не должен задумываться, что "такой способ генерации ШИМ может помешать
приему данных из порта" - он сказал, какой ему ШИМ хочется и не парится, как там оно работает.
Ну вот у вас же в платах так и реализовано - для удобства, для того чтобы скрыть железо.
Ты ему говоришь - хочу 1200 микросекунд, и знать не должен, что он там творит, чтобы это выполнить.

А вот в варианте с "веревками данных" - как раз, имхо, все не так просто.

Re: Робот - платформа для технического творчества

=DeaD= » 03 янв 2010, 19:03

Еще раз - давайте определимся, надо ли событийно-ориентированное программирование 5-классникам читать?

Я не думаю, т.к. сначала надо учить линейному программированию, потом ветвлениям, потом циклам и т.п.
А событийно-ориентированное программирование это уже над линейным, там же где объекты и т.п.

Re: Робот - платформа для технического творчества

Michael_K » 03 янв 2010, 19:04

событийно-ориентированное программирование 5-классникам читать?

Считаю, что нет. Многозадачности будет достаточно :)

Re: Робот - платформа для технического творчества

=DeaD= » 03 янв 2010, 19:06

А многозадачность то потом как на Си реализовывать? :) И зачем она им настолько нужна?

Re: Робот - платформа для технического творчества

Michael_K » 03 янв 2010, 19:13

многозадачность то потом как на Си реализовывать?


Dead, что такое Си по-вашему? В Си чистом вообще никаких функций нет.
Совсем. Только управляющие конструкции.
Даже функции Sin там нету - это внешняя библиотека (не факт, что на Си написанная) прилинковывается.
Стартап кода в Си нету тоже. Вообще. Это на асме кто-то написал даже не для компилятора, а для линкера.
Точно так же введите любые другие функции - введите функцию "Run_Task()" или как вам больше нравится.

Re: Робот - платформа для технического творчества

=DeaD= » 03 янв 2010, 19:48

2Michael_K: Блин, не надо мне рассказывать, что такое Си. Я спрашиваю конкретно в какой концепции предлагаете потом эту многозадачность в Си выводить или другой язык? Переключение силами "ядра" или каждый процесс сам будет вызывать после каждой команды что-то типа Application.HandleEvents() ?

Re: Робот - платформа для технического творчества

Michael_K » 03 янв 2010, 19:53

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

Re: Робот - платформа для технического творчества

=DeaD= » 03 янв 2010, 20:07

Как переключаться между задачами? Таймер?

Re: Робот - платформа для технического творчества

Michael_K » 03 янв 2010, 20:12

Как переключаться между задачами? Таймер?

Да. Чего мудрить-то, заодно и время посчитаем - пригодится для всяких задержек...

Re: Робот - платформа для технического творчества

=DeaD= » 03 янв 2010, 20:30

Тогда надо вводить критические куски кода, которые не будет прерывать наш таймер.

Re: Робот - платформа для технического творчества

Michael_K » 03 янв 2010, 20:34

Тогда надо вводить критические куски кода, которые не будет прерывать наш таймер.

Да, конечно. Поэтому и напрашивается "операционная среда", которая возьмет на себя весь
низкий уровень, хотя можно, конечно, и библиотеками обойтись - просто не давать юзеру доступ к железу.

Это и логично, имхо. Особенно для пятиклашек...

Re: Робот - платформа для технического творчества

=DeaD= » 03 янв 2010, 21:01

Есть уже такая готовая ОС и примеры программирования под неё в Си\Си++ или в чем-то еще?

Re: Робот - платформа для технического творчества

SMT » 03 янв 2010, 21:03

Чтобы не уходить в сторону (мы ведь не ТЗ в лабораторию МИТ обсуждаем), давайте прикинем задачи, которые пользователь - 5,6,7 классов будет с помощью этой среды решать.
Когда я разрабатывал упомянутую студию, я в основном ориентировался на простые задачи для робота - следование по линии, покататься среди предметов и т.п По этому получился акцент на события и сервисы.
В Lego предлагаются ветвления из начальной точки - как-бы "параллельные" ветки. Но фактически я не увидел, что они работают так, как изображены. Можно решить задачу с разделением на визуально разные ветки исполнения с помощью набора каскадных if-else - результат получается примерно один.
Хотел написать: "Если событийная модель не приветствуется, и поскольку многие задачи можно явно решить каскадом if-else - это даже проще для реализации". Но подумал, что если ветвления в виде строчек кода еще можно прочитать, то совсем не хочется разбираться в разрастающемся наборе кубиков - тем более не хочется отлаживать эту матрицу.
Можем обсудить примерный набор задач?


Rambler\'s Top100 Mail.ru counter