|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
|
Создаем ROBO_API18.02.2010, 08:30. Показов 294189. Ответов 148
Метки нет (Все метки)
Пища для размышлений:
Виртуальные машины Понятно, что шасси и механика может быть различной, но в данном случае это уже зависит от реализации непосредственно виртуальной машины, а нам бы общую концепцию выработать. Синтаксис. Может даже свой язык. А если кто и компилятор осилит накатать ваще будет феерично.
0
|
|
| 18.02.2010, 08:30 | |
|
Ответы с готовыми решениями:
148
Создаем полноценный функциональный генератор СОЗДАЁМ САЙТ Создаем проект |
|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
||||||
| 21.02.2010, 12:11 | ||||||
0
|
||||||
|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
|
| 21.02.2010, 12:14 | |
|
Я пока это дело на Pinboard гонял, там отладочных средств больше. Сейчас буду ставить на колеса.
0
|
|
|
0 / 0 / 0
Регистрация: 15.02.2010
Сообщений: 28
|
|
| 22.02.2010, 01:06 | |
|
SWK
> В каком смысле? И что именно не нравится? То, что они не имеют своего пространства имен. Яркий пример - создать новый проект и попробовать объявить W: Byte где-нибудь. Были там и еще какие-то недостатки. Например, лично я привык, когда каждый модуль собирается в свой obj-файл.
0
|
|
|
0 / 0 / 0
Регистрация: 15.02.2010
Сообщений: 28
|
|
| 22.02.2010, 01:11 | |
|
DY HOTT
Интересно получилось, молодец :) Жаль только что оно слишком жестко привязано к конечному устройству. Какие ты планируешь ввести команды ? Будет арифметика и пр ? Т.е. что бы код не просто заставлял машинку ехать вперед-назад, но еще и работал с ее устройствами, обрабатывая данные и на их основе принимал решения
0
|
|
|
0 / 0 / 0
Регистрация: 15.02.2010
Сообщений: 28
|
||||||||||||||||
| 22.02.2010, 01:27 | ||||||||||||||||
|
Приведу свой вариант для этой же задачи, я пока придерживаюсь первоначального плана
Значит, задача: FORWARD 1000 ms STOP 1000 ms BACK 2000 ms STOP OFF Синтаксис решения подобной задачи (пока что отказался от списков []):
Использование памяти ROM: 72 Байт Так.. пока только начал рассматривать систему команд. Эта пока что не очень оптимальная, но работать должна:) Надо бы закончить проектирование своего "pinboard" и тоже приступить к экспериментам :))
0
|
||||||||||||||||
|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
|
| 22.02.2010, 07:55 | |
|
Жетская привязка к устройству это обязательное условие. А иначе нахрена тогда вообще ВМ? Для того чтобы получить еще один (ненужный) абстрактный язык? Нет, у меня устройство цельное и ВМ это лишь для резкой компактизации управляющего алгоритма. Воможности его изменения на лету и прочие радости.
0
|
|
|
0 / 0 / 0
Регистрация: 15.02.2010
Сообщений: 28
|
|
| 23.02.2010, 11:11 | |
|
Ну.. дело твое :)
Лично я всегда стараюсь создать как можно более универсальный инструмент. Да и интереснее так
0
|
|
|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
|
| 23.02.2010, 15:25 | |
|
Тут ценой универсальности станет тяжеловесность и избыточность. В условиях жесткой экономии ресурсов МК это критично.
0
|
|
|
SWK
|
||
| 23.02.2010, 16:04 | ||
Все работает практически параллельно (время прогона главного цикла 250-260мкс). При желании легко добавить новые команды. Например, сначала у меня повороты налево и направо реализовались вращением обоих колес в разные стороны. Ось вращения проходила посередине между колес. Позже я добавил еше по паре команд поворота в каждую сторону, реализуемые вращением только одного колеса при заторможенном другом. При этом поворот, например, налево можно реализовать вращением левого колеса назад или правого вперед. Ось вращения в этом случае проходит через неподвижное колесо, а центр робота перемещается по дуге назад или вперед одновременно с поворотом. Это дает большую подвижность при огибании препятствий. В дешифраторе добавилось 4 команды с обработчиками по 6 строк каждая, исполнительный же уровень остался без изменений. |
||
|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
|
| 23.02.2010, 17:13 | |
|
Ну у меня тоже идет наброс на конвеер, т.е. вначале дешифрация и обработка, а выполнение в порядке очереди.
У тебя же, как понимаю, как таковой программы из команд в памяти нет (пока нет?), а сами команды будут поступать извне, от стационарного компа?
0
|
|
|
SWK
|
||
| 23.02.2010, 19:40 | ||
Когда же будет готов центральный контроллер, там будет несколько вариантов: 1. Прямая трансляция команд нижнего уровня подчиненным контроллерам. 2. Получение заданий более высокого уровня для самостоятельного исполнения. Некоторые я уже упоминал выше - сканирование дальномерами, уточнение обьездом, и построение карты помещения, перемещение в заданную точку с использованием построенной карты помещений, взятие помещения под охрану, функции будильника и напоминалки, пылесоса, и т.д. 3. Телеуправляемый вездеход. С более совершенного пульта, с экраном обзора камеры, двумя джойстиками, или рулем с педалями, будет управляться в реальном времени с выдачей полной телеметрии по всем параметрам. Со временем возможно использование навешиваемых манипуляторов. 4. Автономное выполнение фоновых задач (дежурный режим), периодический заезд в док для зарядки аккумуляторов. При этом может убегать, чтобы не наступили, и пищать или материться в случае угрозы для него. А так же вести логи событий (отслеживать посторонние шумы, источники света, движущиеся обьекты, колебания температуры и прочее). Вот примерно такой расклад. Пока топчусь на нижнем уровне. Думаю над башней, попутно вылизываю то, что есть. Например, сегодня переписал обмен ходового контроллера с бамперами с самопального последовательного протокола на стандартный Паскалевский SPI. Завтра распаяю шнурок для SPI и проверю, если не лень будет. Будет все нормально - возможно, весь межконтроллерный обмен переведу на SPI. Проводов будет больше, зато скорость выше, чем I2C, а устройств у меня не так много будет. Что - то не нравятся мне на I2C заморочки с ведомым. Вроде все аппаратно поддержано, а все равно надо контролировать каждый шаг. Ну его. Проще по SPI отдельной линией выбрать нужное устройство, сбросить ему в буфер что нужно, или считать из него, ведомый же будет отвлекаться только по прерыванию после каждого байта. Это мне больше нравится, да и скорость выше. Думаю между ведущим и ведомым устройствами кинуть по 2 линии (кроме стандартных SDO, SDI, SCK): 1 - аналог /SS, другая - готовность ведомого, она же - запрос от него на обслуживание, если надо. Всего получится по 5 проводов у каждого ведомого, из них 3 - (SDO, SDI, SCK) - общие для всех. Скорость 1 Мбит (максимум 4 при 16мгц, но, думаю, 1 за глаза). Для пересылки 2 байт со всеми дополнительными наворотами, задержками и проверками, думаю микросекунд 30-40 за глаза. Обкатаю завтра такой вариант на бамперах, а там видно будет. |
||
|
Orrist
|
|
| 28.05.2010, 18:44 | |
|
А зачем вы тут писали интерпретаторы под систему команд, если есть такие штуки, как CPLD? Или даже проще - можно на ББ компилировать программу на асме AVR, и заливать ее в контроллер on-the-fly?
|
|
|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
|
| 28.05.2010, 20:53 | |
|
Это не совсем то. Речь идет о скрипт-коде определяющем поведение системы целиком, а не работы ее МК.
0
|
|
|
Абедиющий филасаф
|
|
| 31.08.2010, 05:37 | |
|
Я, конечно, извиняюсь, но чем forth не устраивает?
|
|
|
SWK
|
||
| 31.08.2010, 09:22 | ||
2. Необходимостью иметь большой стек (для PIC отпадает сразу!). 3. Когда-то пробовал, не понравился. 4. Есть более удобные языки. Кроме того, смотри ответ постом выше. Речь не о языке программирования, а о наборе команд управления роботом. |
||
|
SWK
|
||||||
| 31.08.2010, 09:36 | ||||||
|
Вот набор команд, которые я сейчас использую для отладки поворотной платформы. По мере добавления устройств и датчиков будут добавляться еще команды. Ненужные после отладки будут удаляться.
[200.76 Кб] |
||||||
|
0 / 0 / 1
Регистрация: 22.01.2010
Сообщений: 4,000
|
||
| 31.08.2010, 13:44 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 1,142
|
|
| 31.08.2010, 17:13 | |
|
С виртуальной машиной интереснее такая идея. Сама виртуальная машина укладывается в минимальной комплектации максимум в 1кб, лучше вобще в пол кб. Предоставляет практически теже функции, что и ассемблер.
А теперь самое вкусное, реализовать эту машину для N платформ, и для пиков и для авр и для еще чего-нибудь. Плюс, еще одна очень интересная возможность - загружать программу с внешней памяти, eeprom или ftosh. Тогда можно в 1кб микроконтроллер "запихнуть" хоть мегабайт программы. В итоге этакая однозадачная микро операционная система ну, или аналог Java VM, кому как удобнее. А потом, на основе ассебмлера этой виртуальной машины сделать бекеннд для gcc или sdcc, и писать практически платформонезависимый код(хотя с gcc у меня с avr на msp430 и так практически без изменений все портируется). Эх, мечты, фантазии:)
0
|
|
|
0 / 0 / 0
Регистрация: 22.01.2010
Сообщений: 1,230
|
|
| 31.08.2010, 19:08 | |
|
yv_s, тут не такого типа интерпретатор придумывают. Я бы по сути применил какой-нибудь текстовый формат типа plt, у нас им пользуется фрезерный станок Multicam 5000. Собственно там формат простейший и как-раз подходит для роботов.
0
|
|
|
SWK
|
||
| 31.08.2010, 23:29 | ||
|
||
| 31.08.2010, 23:29 | |
|
Создаём сеть Создаем TimeMsgDlg! создаём статейки Создаём игру Создаём игру! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|