roboforum.ru

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

Python на STM32

Re: Python на STM32

svp » 08 ноя 2011, 15:45

dccharacter писал(а):Тут еще один моментик есть.

Да моментиков куча. Прививки, лицензии, разрешения, кормёжка=)
Надо разбираться.

Добавлено спустя 12 минут 29 секунд:
Grem писал(а):
Благодаря ей в современных языках программирования гораздо ниже порог входимости

Это и не есть хорошо.

Ради бога, объясниите почему!=) не понимаю. Это комплекс элитарности?
Grem писал(а):Товарищ svp не просто теоретик, он идеалист-теоретик и я не удивлюсь если он свой ИИ пишет :)

Мой личный ЕИ(!) (Естественный Интеллект) породила эволюция=).
А если серьёзно, то я не настолько наивен, чтобы пытаться написать сильный интеллект.=) А вот аниматами я увлекаюсь. Тоже теоретически, покачто=)
Мне неинтересна иммитация интеллекта или поведения. Мне важна функциональная целостность и эффективность. Но это оффтопик. Ни к чему было про интеллект начианть=).

Скажите, уважаемый Grem, видите ли вы разницу между ассемблером и Си? Видите ли некое удобство в переходе от первого ко второму?
Я ни в коем случае не предлагаю забыть о целесообразности. Просто надо быть открытым к новому и не прятаться за старые догматы. Будущее всё равно придёт. Вопрос принесёт ли оно нам какое-то счастье или нет своими благами.

Re: Python на STM32

dccharacter » 08 ноя 2011, 15:50

Полез на Хабр посмотреть, что за зверь такой - питон этот.

Вот ИМХО идеально иллюстрирующий картину топик с камментами:
http://habrahabr.ru/blogs/python/127806/

Камменты рулят:
-Это php-код на Питоне, простите.
-Вы обижаете питон.
-В этой статье, традиционно для Хабра, плохо ВСЁ.
-Код плох тем, что в нём практически каждая строка написана не так, как надо писать на питоне.
-лютый бешеный 3.14***ц
-Ваш код оценили на говнокод.ру :)
-Ну вот, дождались популяризации python. Теперь наслаждайтесь :)

и т.д. и т.п.

Re: Python на STM32

svp » 08 ноя 2011, 16:00

Так с Си в своё время было, наврено, то же самое. Повысился порог вхождения и народ начал писать на нём как на ассемблере=)

Re: Python на STM32

Grem » 08 ноя 2011, 16:01

Скажите, уважаемый Grem, видите ли вы разницу между ассемблером и Си? Видите ли некое удобство в переходе от первого ко второму?

Не холивара ради - я пишу на том, что нужно для данной задачи, а не на том, что мне нравится. Удобство? Нет, не вижу.

Re: Python на STM32

svp » 08 ноя 2011, 16:15

Кстати, а представляете вся эта когорта Труъ кодеров, что хаяла того незадачливого новичка, кинется со своими знаниями качественного питона писать апплеты для роботов на языке высокого уровня? Эдак азимовские фантазии станут реальностью=)

Grem писал(а):я пишу на том, что нужно для данной задачи, а не на том, что мне нравится.

Правильный подход. Целесообразность - это наше всё. Кодить тривиальный автомат управления светом на питоне -- бред. Но мы-то тут мечтаем о роботах... А что интересного в тупых машинках, катающихся по черной полоске? Что интересного в бесполезной игрушке, тыкающейся в стены. Что интересного в имитации поведения какого-нибудь животного? Имитация -- это мёртвые манекены. Даже если к руке манекена примотать штопор, сам он пиво из холодильника не принесёт. Мы же хотим сделать какую-то жизнь? Нет? Да я идеалист, но черт подери мне надоели тупые манекены, просто имитирующие что-то.
А чтобы писать более сложную логику, надо абстрагирвоваться от таких мелочей, как пины, такты, таймеры и счетчики. Абстрагироваться от напряжений и токов, от структур и парерываний, от ячеек памяти и фьюзов.
И двигаться в сторону абстракций и функциональности. Иначе мы не уйдём от имитации.

Re: Python на STM32

dccharacter » 08 ноя 2011, 16:20

Б-ть, правда ИИ :-)
Грем, как ты это делаешь?
свп, не обижайся, шучу.

Re: Python на STM32

svp » 08 ноя 2011, 16:32

Я прекрасно представляю себе зачем понижать порог входимости в код (а более высокого уровня язык его понижает -- это бесспорно). Куча народу сможет писать код для роботов так же легко, как сейчас пишут для телефонов и компов. Даже если код зачастую плох и некачественен -- это лучше, чем его нет вовсе. Всегда есть из чего черпать идеи. И всегда можно что-то удучшить.

[offtop]Пусть админы потрут этот гнусный оффтоп, но пришла в голову идея. Берём два одинаковых робо-пылесоса и прошиваем их разными конкуретными прошивками. Каждой прошивке даётся, скажем, пару дней и тот пылесос, который соберёт больше пыли победил. Автор победившей прошивки получает пылесос и дарствует прошивку организаторам конкурса безвозмездно=)[/offtop]

Так вот, та идея возможна и эффективна только если писать код для пылесоса будет легко.

dccharacter писал(а):Б-ть, правда ИИ :-)

Не ИИ, а функциональный подход. Отказ от позорного имитирования. Стремление к подлинному и эффективному поведению=)

dccharacter писал(а):Грем, как ты это делаешь?

Он просто очень суровый, но здравомыслящий тип. Хорошо, когда люди уравновешивают друг друга.

dccharacter писал(а):свп, не обижайся, шучу.

С чего бы?=) Я тоже занимаюсь тем, что люблю и умею: теоретизирую, абстрагирую, идеализирую. Реальная жизнь в лице Грема и просто суровой действительности, меня конечно спустят малостьс небес на землю, но без стремления к идеалам мы иначе не сдвинулись бы с места.

Хватит философствовать. Надо бенчмарки делать и смотреть разрушит ли питон посудную лавку stm32.

Добавлено спустя 2 минуты 9 секунд:
Честно сказать, если разрушит, буду смотреть на что-нибудь помощнее.

Re: Python на STM32

ALS » 08 ноя 2011, 16:38

Помощнее в плане железа ?
Или все-таки отказаться от интерпретаторов и "легкого программинга" и более грамотно/ответственно подходить в написанию кода ?

Re: Python на STM32

svp » 08 ноя 2011, 16:48

ALS писал(а):Помощнее в плане железа ?
Или все-таки отказаться от интерпретаторов и "легкого программинга" и более грамотно/ответственно подходить в написанию кода ?

Железа. Лёгкий програминг в наш век цифровых технологий более приоритетен. Мозг дороже железа. Было бы у нас 100500 китайцев на зарплате, то мы бы и на асме Азимо написали. Спорим все эти роботы типа Азимо и иже с ними кодятся на яве?

Добавлено спустя 3 минуты 40 секунд:
О, кстати. Если у вас есть смарт-карта, например Viza или MasterCard, то, возможно, вы удивитесь, но на чипе, что зашит внутрь крутится виртуальная ява-машина, внутри которой крутится апплет, реализующий криптографию и логику. Ява -- это тоже интерпретируемый язык. И на эдакой пендюрке с ноготок. Почему бы?
Кстати,я осознаю, что Ява, пока что, быстрее питона.

Re: Python на STM32

ALS » 08 ноя 2011, 16:58

...Почему бы?
Думаю, потому, что там на первом месте - сохранность данных. А быстродействие - на последнем.
Согласитесь, 2-3 секунды ожидания для счастливого карто-юзера - не время.
Свое мнение не навязываю, ведь можно и на яве писать шедевры, а на Си - говнокод. Зависит не от языка, а от программера.
Впрочем, это уже прописные истины.
"Ваш кэп" (с)

PS
И по поводу ASIMO. Его начали делать в 86-м. Сомневаюсь, что тогда использовали какие-либо языки высокого уровня. По той простой причине, что и в нативном виде тогдашние железяки не блистали быстродействием. Со временем, возможно, они добавили и скрипты на основе того же Lua. Но, что-то мне подсказывает, что это касается только "свистоперделок". Т.е элементы танца - скрипт, но отслеживание датчиков, управление сервами и т.д. - не, никакого питона ))))
Последний раз редактировалось ALS 08 ноя 2011, 17:16, всего редактировалось 1 раз.

Re: Python на STM32

Grem » 08 ноя 2011, 17:07

svp писал(а): А что интересного в тупых машинках, катающихся по черной полоске? Что интересного в бесполезной игрушке, тыкающейся в стены. Что интересного в имитации поведения какого-нибудь животного?

Вы теоретик, значит не понять вам. Люди увлечены идеей и ЭТО здорово, а не тележки, ИИ и пр.
Грем, как ты это делаешь?

Что делаю? :)

Re: Python на STM32

svp » 08 ноя 2011, 18:21

ALS писал(а):Но, что-то мне подсказывает, что это касается только "свистоперделок". Т.е элементы танца - скрипт, но отслеживание датчиков, управление сервами и т.д. - не, никакого питона ))))

Так о том и речь же! Цикл обработки прерываний, механизмы подписки на события, та же ШИМ -- всё это пишется н а Си и асме. Питон -- это лишь обёртка для написания пользовательски свистоперделок. Какой-то абстрактной логики. Все низкоуровневые инфраструктурные процессы пишутся один раз, а всякое поведение -- множество. Это совершенно разные слои. Можно всё смешать в одном слое и получим огромную запутанную программу с кучей Goto и ветвлений. Но тогда внести какие-то изменения в базовое поведение становится затруднительно. И чем больше нюансов, тем сложнее что-то менять.
Я не предлагаю реализовывать программный ПИД-регулятор балансирующего робота на питоне. Эта задача требует высокой производительности и есть смысл погрузить её на уровень ядра, там где происходит низкоуровневая работа с прерываниями. А на высокий уровень вынести только флажки и ярлычки: "балансировать", "свалиться", "ехать вперёд", "увеличить скорость". С этим справится любой скриптовый язык.
В том моём гипотетическом примере, что выше, на высоком уровне поворот башни на 180 градусов выглядел бы как-то так:
Код: Выделить всёРазвернуть
self.head_motor.angle.add(180)

А внутри незаметно закипела работа:
  • Экземпляр класса "Шаговый двигатель" в своём обработчике изменения угла проверил допустимость указанного поворота.
  • Вычислил частоту импульсов, которые нужно подать на определённую ногу и время, когда нужно остановиться
  • Запустил ШИМ с нужными параметрами
  • Подписался на событие по таймеру для отключения поворачивания
  • Внутренний метод Шаговика подписывается на событие от таймера с некоторым условием
  • Низкоуровневый код на Си в цикле обработки прерываний каждый раз смотрит не пора ли вызвать тот или иной высокоуровневый обработчик. Когда пора -- отдаёт управление.
  • и т.д.
Это всё в едином потоке программы будет выглядеть громоздко, а когда надо держать равновесие и жонглировать ещё кучей процессов, то совсем запутаться можно. надо разносить на слои.

Я про Азимо заговорил, но на самом-то деле не знаю как там всё внутри. Может это просто набор жестких скриптов.

Re: Python на STM32

dccharacter » 08 ноя 2011, 20:17

Чувак, ты изобрел arduino :-)

Код: Выделить всёРазвернуть
// Controlling a servo position using a potentiometer (variable resistor) 
// by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

#include <Servo.h>

Servo head_motor;  // create servo object to control a servo

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin

void setup()
{
  head_motor.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop()
{
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
  head_motor.write(val);                  // sets the servo position according to the scaled value
  delay(15);                           // waits for the servo to get there
}


Добавлено спустя 3 минуты 30 секунд:
Я сейчас так трансформаторы мотал для часов. Есть шаговик, на него прилепил поликапролактоном катушку, в ардуино сделал my_stepper.step(6000); и сиди вкуривай - он сам остановится, когда нужное количество витков намотает.

Но все это имеет определенный порог, дальше которого генерализировать не имеет смысле. Дальше начинаются приложения, и у всех они разные. Понимаешь, можно фильм заархивировать в один байт. И даже в один бит. Знаешь в чем подвох?

Re: Python на STM32

svp » 08 ноя 2011, 20:50

dccharacter писал(а):Но все это имеет определенный порог, дальше которого генерализировать не имеет смысле. Дальше начинаются приложения, и у всех они разные. Понимаешь, можно фильм заархивировать в один байт. И даже в один бит. Знаешь в чем подвох?

Не совсем корректная аналогия. А про фильм в одном байте вообще неинтересно. Архивирование по определению происходит бах потери качества. Сжатие с потерями -- да. И Jpeg тому пример. Ещё можно уменьшать картинку до размера пиксель на пиксель, но здесь всё не о том.

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

Для твоей задачи с катушкой совершенно не стоит городить какой-то универсальную мотатель. Ради нескольких трансформаторов не требуется городить чего-то абстрактного, потому что пара строчек и так решает всё проблему. Надо уметь остановиться. Но, согласись, задача твоя проста. Если речь бы шла о более сложной задаче, то пришлось бы и уровней абстракции делать больше.
Например мы делаем унивеерсальный токарный станок. Тут тебе и куча режимов вращения и согоасование этих режимов с перемещением резца. А ещё станок можно приспособить катушки мотать (резец направляет, а вал крутит). Вот тут мы и переходим на новый уровень абстракции. Вводим понятие режима, вводим события отконцевиков, вводим понятие программы, если речь о ЧПУ.
Как-то в древней прачечной я встерчал стиральную машину, которая по перфокарте могла отрабатывать режимы стирки белья, подачу воды, порошка и т.д. Сама логика машины была на каких-то транзисторах, и аппаратно был реализован интерпретатор программ на перфокартах. А на первокартах понятные каждой домохозяйке дрки в нужных столбцах. Весь прикол в том, что на транзисторах домохозяйки не смогли бы перепаять логику работы машины, а вот дырки пробить дыроколом в нужных местах распечатанной таблицы мога каждая тётя Глаша. Вот это реальный и утрированный п ример использования интерпретаторов и расслоения задачи на уровни. Строго говоря на перфокартах можно было заставить отмечать не только понятные домохозяйкам процессы, но и низкоуровневые, до которых им дела нет.

Давай обсудим конкретный пример. Робот-пылесос. Как ты думаешь, тот уровень абстракции, что я предложил в том большом примере, облегчит написание кода для пылесоса? Снизит порог вхождения в программирование оного? Если это нафиг не надо и наш пылесос проприетарен, то можно найти человека, который накодит качественно и на Си. Может быть даже ему это не составит особого труда, атк как есть опыт и умение так организовать работчее пространство в коде и контроллере, что всё будет прозрачно, понятно и пригодно к отладке. Но к содалению мало таких специалистов.

Добавлено спустя 6 минут 40 секунд:
Чорт. Многабуквав.
Основная идея в том, что степень генерализации и полезность её в итоге зависят от профессионализма програмиста. Хорошие мощные идеи тоже надо уметь использовать, а неумеючи можно любым, даже самым дорогим и интеллектуальным инструментом можно навредить.

Re: Python на STM32

dccharacter » 08 ноя 2011, 21:30

svp писал(а):Архивирование по определению происходит бах потери качества.

Дык и я про "без потери качества".

Добавлено спустя 2 минуты 18 секунд:
от регистров быстро уходишь. А новый уровень абстракции ты в своем примере не вводишь. Я не вижу разницы между
value.increment()
и increment(value)


cron
Rambler\'s Top100 Mail.ru counter