различные ДЗ (Суть)

Посмотреть архив целиком

Расстановка сил: есть шахматная доска, 8х8. В левом нижнем углу стоит кучка шашек, каждая на своей клетке. Понятия не имею, сколько их там в действительности, я посчитал, что как на этой картинке (12 штук снизу).


ДЗ это 4 задания (отдельных друг от друга):

  1. Переставить все шашки из одного угла в другой симметрично относительно диагонали, в глобальной СК WORLD.

  2. То же самое, но более гибко. Робот обучается точкам O,X,Y доски (по ним задается плоскость) и все вычисления делаются относительно этой плоскости. Можно повернуть как угодно доску, переобучить новым точкам робота, а прога останется такой же. Прога для первой задачи так не может, ей критично, чтобы оси доски X и Y были параллельны осям WORLD.

  3. Нужно переставить шашку из клетки I,j в клетку k,l. Но, информация о том, чему равны эти I,j,k,l передается по какому-то больному порту в виде отдельных байтов. Нужно аккуратно всосать эти байты и обработать их, чтобы все было хорошо.

  4. То же, что и задание 2, только если робот в процессе перемещений напорется на какую-нибудь корягу/препятствие, нужно, чтобы он ускакал по соответствующему прерыванию, где бы его обработчик прерывания изнасиловал за такие дела с выводом соответствующего сообщения и вынесением строгого выговора.


Различные интересные факты:


0) Если кто удумает залезть с этим ДЗ поперек меня к Солнцеву, отрежу голову и закопаю на детской площадке позади РЦ. Шутка. Но лезть крайне не рекомендую.

1) Существует 2 режима работы Пумы: запуск набранной проги (она работает сама по себе) в консоли и ручной набор команд в консоли (мониторе).


/*

Второй режим нужен, чтобы обучать Пуму стратегически важным точкам. Это происходит так: с помощью пульта выставляется нужное положение, в консоли пишется:

HERE <POSNAME>

В результате в переменной <POSNAME> (на самом деле, это позиция, массив из 6 чисел) сохраняются текущие декартовы координаты робота (x,y,z,o,a,t схвата)

Если написать

HERE #

то в POSNAME сохранятся текущие обобщенные координаты робота (углы поворотов сочленений).

Это удобно, т.к. если написать, например:

GO #POSNAME, роботу не надо решать обратную задачу по положению (здорово, Крутиков!), чтобы найти обобщенные координаты для точки POSNAME – они уже есть, нужно просто туда приехать.

В противном случае роботу ничего не остается, кроме как находить обобщенные координаты конечной точки своего маршрута. Это будет с погрешностью, долго и глупо.

Мораль: #!

*/


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


2) Для прог ДЗ обучаются следующие точки:


  • C11 – положение шашки в левой нижней клетке

  • O – положение левого нижнего угла доски (оно не совпадает с C11)

  • X – какая-нибудь точка на нижней грани доски

  • Y – какая-нибудь точка на левой грани доски

  • WORK – положение над центром доски. Промежуточное положение маршрута по переправке шашек в теплые края.


3) Нужно, чтобы OXY была системой координат, к которой двумя сторонами «прилеплена» доска (см. картинку сверху).

СК можно создать в коде проги вот так:

FRAME SYS=O,X,Y

В результате, имеем СК SYS с центром в О и осями OX и OY


O,X,Y используется ТОЛЬКО в задачах 2-4.


4) Переменные в программе глобальные, их не нужно передавать при вызове функции, как например, это делается в C.


5) Кого-нибудь Солнцев по-любому спросит – когда пишется точка перед командой? (например, когда GO READY, а когда .GO READY ?). В тесте программ все команды без точек в начале, в консоли команды набираются с точкой в начале.


6). Проги пишутся на ARPS с довольно убогим синтаксисом: не допускаются пустые строки.

Присвоение переменных – командой SET.

Присвоений позиций – командой LOCATE.

Сдвиг позиции – команда SHIFT.


7). У Пумы есть точка, которая зашита на заводе: READY. Это вертикальное положение руки. Проги написаны так, чтобы манипулятор начинал работу из этой точки и туда же возвращался в конце.


8). Одно из требований ДЗ – при подходе к шашке надо снизить скорость. Здесь это делается с помощью масштабного коэффициента командой SPEED 50% (уменьшить в 2 раза). Обратно – SPEED 100% (выставится номинальная скорость)


9). Геометрия доски представлена в коде числом 34.5 – это шаг клетки.


Об остальных фактах проще рассказать, чем описать их.


Случайные файлы

Файл
183851.rtf
MYKUR.DOC
1322.rtf
183231.rtf
34543.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.