Технический форум по робототехнике.
Beginer » 30 окт 2007, 22:02
Master писал(а):Не едет. Или я тупой или одно из двух.
По "скрину" видно что платформа развернулась "лицом" на проход, он крутится только что ли?
Скрипт в ctrl.ros не меняли? Дело в том что если без ускорения - ">>" то будет медленно, что бы можно было заметить ошибки и неувязки, а если нажать >> то раз в пять быстрее должно бежать. И внизу в окне где сейчас виден скрипт должны появляться все время новые строки от скрипта. Так происходит?
Или я не правильно понимаю фразу "Не едет", в смысле не можете загнать в проход?
Master » 30 окт 2007, 22:10
1. Не едет тока очень медленно, я не могу разобрать с интерфейсом. Жму плей, начинают внизу появляться строки, жму стоп и все плей больше не нажимается.
2. Зачем нужны другие кнопки, зачем пол для ввода чего-то и желтый треугольник справа.
3. Робот по файлу с картой стоит лицом к проходу >.
4. Где писать >>?
Myp » 30 окт 2007, 22:13
у меня работает
пополз вдоль стенки
ток медленно ужос прям
еле дождался пока заметил что онкудато движется
Beginer » 30 окт 2007, 22:31
Master писал(а):1. Не едет тока очень медленно, я не могу разобрать с интерфейсом. Жму плей, начинают внизу появляться строки, жму стоп и все плей больше не нажимается.
Это кажется моя ошибка я уже штук десяток их наковырял по мелочи, исправленный выложу. Лучше жать паузу, потом можно отжать и продолжить. И нежелательно до "СТОП" закрывать приложение.
2. Зачем нужны другие кнопки, зачем пол для ввода чего-то и желтый треугольник справа.
Я тут объяснялку накарябал. см. скриншот
окно для ввода, где треугольник и треугольник - это элементы отладки модулей платформы (объектов C++ навешанных в classRobo), отношение к движению робота в лабиринте имеют но только как ручной режим управления. Например на платформу сейчас навешены модули ENG и IRR, первый это двигатели, второй радар. Досутп к ним осуществляется посылкой платформе кода выбора модуля: @IRR или @ENG, и затем посылки команды в модуль: .MOV X и .ROT X для двигателей (где X параметр) и .GET для радара. Радар возвращает значение в поток (внизу в подвале видно - текущий модуль и значение потока
cval.
3. Робот по файлу с картой стоит лицом к проходу >.
4. Где писать >>?
Файл 1.krt - карта.
Файл ctrk.os - скрипт.
Можно открыть и исправить любым блокнотом (pad-ом). Формат текстовый. Я FAR-ом правлю.
- Вложения
-
- скриншот с объяснялкой по интерфейсу
Beginer » 30 окт 2007, 22:35
Myp писал(а):у меня работает
пополз вдоль стенки
ток медленно ужос прям
еле дождался пока заметил что онкудато движется
Да медленно - это для отладки что бы не прозевать, каждая строчка скрипта останавливается по интервальному таймеру примерно на 500 мс, если нажать ">>" то период таймера будет /5, т.е. 100 мс. Я вот сейчас придумываю как бы его совсем отпустить - но тогда полетит не успеешь ничего заметить, обдумываю идею на установку брейкпоинта по геометрической области в которую входит робот.
Master » 30 окт 2007, 22:38
Все приехали
Ездиет вокруг стенки.
Я правильно понял алгоритм можно самому пистать в соответствующе файле?
И еще что бы экран не мигал при повторной прорисовке, затирай старое положение робота, а не перерисовывай весь экран.
- Вложения
-
- 1.rar
- (141 байт) Скачиваний: 32
Beginer » 30 окт 2007, 22:50
Master писал(а):4. Где писать >>?
по поводу писать, структура скрипта в некотором смысле похожа на Си, я хотел сделать скрипт таким что бы его легко было перенести на реальную железячную платформу, ну скажем на AVR. Так что бы изменение конфигурации робота в железе не влияло на скрипт не коем образом. Решил что нужно выделить внутри платформы модули, сиречь инкапсулированные объекты - интерфейс которых посылка двоичной команды и параметра если таковой имеется у команды. Команда предваряется ".", например .MOV, .ROT, .GET. Платформа посылает команду активному модулю, активизируется модуль, при помощи операции выбора @имя, сейчас доступны IRR, ENG (соотвественно @IRR, @ENG). Передали фокус например двигателям @ENG и дальше общаемся с ним посредством команд .MOV или .ROT. Модуль может вернуть значение, возвращает он его в поток - я пока еще не утвердился в мысле сделать поток стеком или просто ячейкой. Если поток стек то работаем с ним через ПОЛИЗ. Честно говоря не знаю надо это или нет и вообще в каком случае логика работы может потребовать арифметики.
Операторы определения метки - "метка:" определяют метку в скрипте, на которую потом производится переход.
Переход на метку ":метка".
Оператор сравнения ? = val, всегда сравнивает содержимое потока с значением val и если условие верно -пропускает команду ниже оператора условия.
{...} Имя - именованный список действий (список команд) по сути процедура, которую потом можно вызывать по имени.
Процедура которая получает исполнение первой это main как в Си, т.е. имя main зарезервировано.
- Код: Выделить всё • Развернуть
{
S0:
SeekWall
? = 1
:S0
S1:
SeekDoor
@ENG
.MOV 1
.ROT -90
:S1
} main
# Действия характеризуются списком комманд и модулей
{
@ENG
.MOV 1
@IRR
.GET
} SeekWall
{
CH:
@IRR
.GET
? = 1
:EX
@ENG
.ROT 90
:CH
EX:
} SeekDoor
RealRobot » 30 окт 2007, 22:54
подскажи, плиз, как скомпилить проект C++Builder 6 что бы без библиотек работал
Beginer » 30 окт 2007, 23:01
RealRobot писал(а):подскажи, плиз, как скомпилить проект C++Builder 6 что бы без библиотек работал
Заходи в опции проекта и отключай там в закладке Package - Runtime Package.
Beginer » 30 окт 2007, 23:04
Master писал(а):Ездиет вокруг стенки.
Я правильно понял алгоритм можно самому пистать в соответствующе файле?
Конечно - именно в этом и был весь цимис
, что бы отладить алгоритм и затем без изменения чего либо слить его в реальную платформу. Можно в принципе и сделать нечто компилируемое из скрипта, но мне кажется что транслятор будет эффективней в данном случае. Соответствующий файл это ctrl.ros - текстовый, в новой версии уже сделал возможность грузить любой. Файл лабиринта так же можно править он находится в 1.krt, в новой версии тоже сделал возможность загрузки из диалога.
Master писал(а):И еще что бы экран не мигал при повторной прорисовке, затирай старое положение робота, а не перерисовывай весь экран.
Да конечно, просто лепил на скорую руку так как интересна была сама идея. Если это кому то кроме меня надо будет, я учту все пожелания.
Карту новую что ли нарисовали? Добавили стенку что бы меньше ездил по времени?
Ускорение то работает ">>"?
Master » 30 окт 2007, 23:14
Карту новую что ли нарисовали? Добавили стенку что бы меньше ездил по времени?
Ускорение то работает ">>"?
Ага и мона на ты. Это кстати всех касается.
Beginer » 31 окт 2007, 10:50
Обновил версию.
Для радара смена дальности - команда .RANGE x (х задается в клетках)
Для модуля @ENG сделан датчик конечного типа на бампере, доступ к данным с него .BUMP, в поток сбрасывается значение был ли он нажат, при попытке перейти через препятствие.
Через меню "Файл", загружаются скрипты и карты, они же сохраняются в ini файле, что бы не грузить при новом включении.
Робот на поле задается по новому не символами "^","V",">","<", а через тильду с указанием градуса разворота ~90, ~0, ~180, ~270. Указывать можно любой градус, но визуализируются только дискреты 0,90,180,270.
Условный пропуск оператора доделал: возможны условия "==", ">=", "<=", "!=" - писать полностью!
Подвал формы обогатил отладочной информацией (данные с радара, в квадратных скобках есть препятствие или нет. Тоже для бампера на модуле ENG, в квадратных скобках указывается его состояние.
P.S. Обновление формы не переделал не успел, постараюсь сделать по быстрее, что бы не раздражало мелькание.
- Вложения
-
- dll-BCB60.rar
- DLL необходимые для запуска
- (267.2 КиБ) Скачиваний: 30
-
- EMURobo_v001.rar
- Обновленная версия без dll
- (236.34 КиБ) Скачиваний: 30
Digit » 31 окт 2007, 14:22
Beginer писал(а):P.S. Обновление формы не переделал не успел, постараюсь сделать по быстрее, что бы не раздражало мелькание.
Я так понимаю, рисуешь на прямую на канвасе (проект не смотрел, поэтому не знаю точно). Так вот, чтоб не мелькало, создай в памяти Битмап, в который рисуй, а из него по окончании цикла отрисовки копируй методом Copy. (Примерно так, давно на билдере и делфях писал, поэтому могу путаться в деталях. но общая логика такая. Мелькать не будет, а скорость отрисовки считай останется как есть).
Beginer » 31 окт 2007, 14:56
Digit писал(а):Beginer писал(а):P.S. Обновление формы не переделал не успел, постараюсь сделать по быстрее, что бы не раздражало мелькание.
Я так понимаю, рисуешь на прямую на канвасе (проект не смотрел, поэтому не знаю точно). Так вот, чтоб не мелькало, создай в памяти Битмап, в который рисуй, а из него по окончании цикла отрисовки копируй методом Copy. (Примерно так, давно на билдере и делфях писал, поэтому могу путаться в деталях. но общая логика такая. Мелькать не будет, а скорость отрисовки считай останется как есть).
Сделать быстрее, имел ввиду в течении дня, двух.
Насчет Canvas то да само собой, но не думаю что спасет положение дел TBitmap. Скоре всего нужно ограничиться окном перерисовки, а не рефрешить всю форму. Ну конечно на ресайз нужно делать полный рефреш, а на передвижение платформы ограничиться координатами. Хотя и заманчиво не мудрствуя в битмап колбасить.
Beginer » 31 окт 2007, 15:50
Добил обновление формы, что бы не мельтешило. Не совсем честно сделал, может быть и глюки какие то возможны с обновлением. Дергаться перестало, в глазах уже не рябит.
- Вложения
-
- EMURobo_exe.rar
- Исправления в процедуре обновления формы.
- (235.15 КиБ) Скачиваний: 38