roboforum.ru

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

Симулятор робо-платформы создаю.

Re: Симулятор робо-платформы создаю.

Beginer » 30 окт 2007, 22:02

Master писал(а):Не едет. Или я тупой или одно из двух.


По "скрину" видно что платформа развернулась "лицом" на проход, он крутится только что ли?

Скрипт в ctrl.ros не меняли? Дело в том что если без ускорения - ">>" то будет медленно, что бы можно было заметить ошибки и неувязки, а если нажать >> то раз в пять быстрее должно бежать. И внизу в окне где сейчас виден скрипт должны появляться все время новые строки от скрипта. Так происходит?


Или я не правильно понимаю фразу "Не едет", в смысле не можете загнать в проход?

Re: Симулятор робо-платформы создаю.

Master » 30 окт 2007, 22:10

1. Не едет тока очень медленно, я не могу разобрать с интерфейсом. Жму плей, начинают внизу появляться строки, жму стоп и все плей больше не нажимается.
2. Зачем нужны другие кнопки, зачем пол для ввода чего-то и желтый треугольник справа.
3. Робот по файлу с картой стоит лицом к проходу >.
4. Где писать >>?

Re: Симулятор робо-платформы создаю.

Myp » 30 окт 2007, 22:13

у меня работает
пополз вдоль стенки

ток медленно ужос прям
еле дождался пока заметил что онкудато движется

Re: Симулятор робо-платформы создаю.

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-ом правлю.
Вложения
.JPG
скриншот с объяснялкой по интерфейсу

Re: Симулятор робо-платформы создаю.

Beginer » 30 окт 2007, 22:35

Myp писал(а):у меня работает
пополз вдоль стенки

ток медленно ужос прям
еле дождался пока заметил что онкудато движется



Да медленно - это для отладки что бы не прозевать, каждая строчка скрипта останавливается по интервальному таймеру примерно на 500 мс, если нажать ">>" то период таймера будет /5, т.е. 100 мс. Я вот сейчас придумываю как бы его совсем отпустить - но тогда полетит не успеешь ничего заметить, обдумываю идею на установку брейкпоинта по геометрической области в которую входит робот.

Re: Симулятор робо-платформы создаю.

Master » 30 окт 2007, 22:38

Все приехали :)
Ездиет вокруг стенки.
Я правильно понял алгоритм можно самому пистать в соответствующе файле?
И еще что бы экран не мигал при повторной прорисовке, затирай старое положение робота, а не перерисовывай весь экран.
Вложения
1.rar
(141 байт) Скачиваний: 32

Re: Симулятор робо-платформы создаю.

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

Re: Симулятор робо-платформы создаю.

RealRobot » 30 окт 2007, 22:54

Beginer писал(а):EMURobo.rar (229.27 Кб) - не требует бибилотек[/list]

подскажи, плиз, как скомпилить проект C++Builder 6 что бы без библиотек работал

Re: Симулятор робо-платформы создаю.

Beginer » 30 окт 2007, 23:01

RealRobot писал(а):
Beginer писал(а):EMURobo.rar (229.27 Кб) - не требует бибилотек[/list]

подскажи, плиз, как скомпилить проект C++Builder 6 что бы без библиотек работал


Заходи в опции проекта и отключай там в закладке Package - Runtime Package.

Re: Симулятор робо-платформы создаю.

Beginer » 30 окт 2007, 23:04

Master писал(а):Ездиет вокруг стенки.
Я правильно понял алгоритм можно самому пистать в соответствующе файле?


Конечно - именно в этом и был весь цимис :), что бы отладить алгоритм и затем без изменения чего либо слить его в реальную платформу. Можно в принципе и сделать нечто компилируемое из скрипта, но мне кажется что транслятор будет эффективней в данном случае. Соответствующий файл это ctrl.ros - текстовый, в новой версии уже сделал возможность грузить любой. Файл лабиринта так же можно править он находится в 1.krt, в новой версии тоже сделал возможность загрузки из диалога.

Master писал(а):И еще что бы экран не мигал при повторной прорисовке, затирай старое положение робота, а не перерисовывай весь экран.


Да конечно, просто лепил на скорую руку так как интересна была сама идея. Если это кому то кроме меня надо будет, я учту все пожелания.

Карту новую что ли нарисовали? Добавили стенку что бы меньше ездил по времени? ;) Ускорение то работает ">>"?

Re: Симулятор робо-платформы создаю.

Master » 30 окт 2007, 23:14

Карту новую что ли нарисовали? Добавили стенку что бы меньше ездил по времени? ;) Ускорение то работает ">>"?

Ага и мона на ты. Это кстати всех касается.

Re: Симулятор робо-платформы создаю.

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

Re: Симулятор робо-платформы создаю.

Digit » 31 окт 2007, 14:22

Beginer писал(а):P.S. Обновление формы не переделал не успел, постараюсь сделать по быстрее, что бы не раздражало мелькание.


Я так понимаю, рисуешь на прямую на канвасе (проект не смотрел, поэтому не знаю точно). Так вот, чтоб не мелькало, создай в памяти Битмап, в который рисуй, а из него по окончании цикла отрисовки копируй методом Copy. (Примерно так, давно на билдере и делфях писал, поэтому могу путаться в деталях. но общая логика такая. Мелькать не будет, а скорость отрисовки считай останется как есть).

Re: Симулятор робо-платформы создаю.

Beginer » 31 окт 2007, 14:56

Digit писал(а):
Beginer писал(а):P.S. Обновление формы не переделал не успел, постараюсь сделать по быстрее, что бы не раздражало мелькание.


Я так понимаю, рисуешь на прямую на канвасе (проект не смотрел, поэтому не знаю точно). Так вот, чтоб не мелькало, создай в памяти Битмап, в который рисуй, а из него по окончании цикла отрисовки копируй методом Copy. (Примерно так, давно на билдере и делфях писал, поэтому могу путаться в деталях. но общая логика такая. Мелькать не будет, а скорость отрисовки считай останется как есть).


Сделать быстрее, имел ввиду в течении дня, двух.
Насчет Canvas то да само собой, но не думаю что спасет положение дел TBitmap. Скоре всего нужно ограничиться окном перерисовки, а не рефрешить всю форму. Ну конечно на ресайз нужно делать полный рефреш, а на передвижение платформы ограничиться координатами. Хотя и заманчиво не мудрствуя в битмап колбасить.

Re: Симулятор робо-платформы создаю.

Beginer » 31 окт 2007, 15:50

Добил обновление формы, что бы не мельтешило. Не совсем честно сделал, может быть и глюки какие то возможны с обновлением. Дергаться перестало, в глазах уже не рябит.
Вложения
EMURobo_exe.rar
Исправления в процедуре обновления формы.
(235.15 КиБ) Скачиваний: 38


cron
Rambler\'s Top100 Mail.ru counter