Virtual Laboratory Wiki
Advertisement

© Сергей Яковлев, 2009

Использование этой информации в коммерческих целях запрещенно. Но Вы можете копировать и перерабатывать данную статью в научных и образовательных целях, с последующим предоставлением результата на тех же правах. Для подробной информации см. Авторское право.



Обход препятствий и поиск объекта[]

WebCam

Среда моделирования - вид со стороны

Задача эксперимента[]

Будем осуществлять чисто инстинктивное движение на свет. Робот будет иметь только черно-белую камеру. Движение будет затруднено наличием стен, которые способны отражать свет и, следовательно, казаться целью движения. Начальное положение робота устанавливается лицом к стене.

Задача состоит в том, чтобы не сталкиваясь со стенами, пройти в проход между ними.

  • Чисто инстинктивное движение на свет не даст результатов. Двигаясь, робот развернется и уйдет в место, где нет препятствий, и не пойдет в проход между стенами. Поэтому, как минимум, еще нужен указатель места назначения. Но не внешний, т.к. робот не имеет возможности разделить местность на квадратики, назначить один из них целью, и двигаться к нему, обходя препятствия. При этом, на каждом шагу определяя, в каком он квадратике находится. Это нужно осуществить внутренне, как прикидку расстояния до цели в относительных координатах, и при этом основываясь только на том, как долго его колеса крутились в ту или другую сторону. Вот этот алгоритм и есть пока проблема !

Комментарии[]

Есть точка-цель А. Есть точка-положение робота В. Получаем отрезок АВ (препятствия сейчас не важны). Робот вращается вокруг оси. Центральную точку камеры робота будем считать лицом С. Надо определить лицо робота (точка С) находится справа или слева от отрезка АВ ?

daner если на одном месте, то можете просто замерить на сколько градусов поворачивает робот при одном повороте колеса. но при движении это будет не совсем верно (т.е. совсем не верно).

Ок. Начинаю понимать, что вначале мне надо откалиброваться ... за относительные единицы возьмем ширину области видимости (=1). Надо сфокусироваться на определеной произвольной точке справого края области видимости ... затем плавно повернутся вправо, пока зафиксированная точка не окажется у левого края области видимости ... подсчитать сколько времени длился поворот (в разах микроповоротов) ...

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

Хотя вот бы проехаться вперед с повернутой камерой на 90 градусов ... тока похоже подобрать такого робота в MicrosoftRobotic будет не просто.

Интересный алгоритм[]

# На вход рекурсивной процедуры подаются координаты прямоугольника (при инициализации подаются координаты прямоугольника всего изображения с уже разделёнными цветами на строго чёрный и белый (см. предыдущий макет)).

  1. Вычисляется средний цвет для этого прямоугольника.
  2. Если средний цвет белый - выходим из процедуры.
  3. Если средний цвет черный - прямоугольник закрашивается случайным цветом (для наглядного теста) и выходим из процедуры.
  4. Если средний цвет не чёрный и не белый, то делим прямоугольник пополам и каждую половину отправляем на рекурсию т.е. на шаг №1 (нечётные шаги рекурсии разбивают входной прямоугольник пополам по вертикали, чётные - по горизонтали).

автор: Андрей

[1]

См. также[]

Advertisement