EDV писал(а):А лицензию на «Virtual Assistant» от Guile3D покупали (за 180$) или где-то версия лежит пиратская/бесплатная?
Не, "асистент" гораздо круче, да и не доделали они его еще толком. Vanessa - это только персонаж для MS Agent. Я его честно купил за 13 баксов. Чего не могу сказать об акапеловском движке Вставлять вилку в розетку конечно круче. Где-то я видел такого робота, который еще и двери открывал. Но это значительно сложнее. Надо точно попасть и еще приложить достаточное усилие, чтобы вставить вилку. Рукой-то не всегда получается с первого раза.
После долгого перерыва появилась возможность повозиться с роботом. Собираюсь решить новую для себя задачу - ориентирования по карте, которую формулирую на первом этапе так: Робот должен выезжать в точку с координатами X,Y, прокладывая себе оптимальный маршрут, опираясь на данные карты помешения. Т.е. робот всегда помнит свои абсолютные координаты и задание на передвижение получает тоже в абсолютных координатах. Используемые датчики: энкодеры, компас с точностью 0.1 град, цифровой сонар 0.2 – 6м. Насчет представления карты и алгоритмов хочу посоветоваться с аксакалами, чтобы не изобретать велосипед. Я представляю себе это так: Все помещение вписываю в прямоугольник, с началом координат в одном из углов, и измерением в единицах энкодеров. Зарядная база имеет фиксированную точку привязки робота к карте. Далее, описываем помещение в виде массива отрезков, с определенными свойствами. Например стена (используется для уточнения положения), дверь (может быть открыта или закрыта), недвижимая мебель (какой-нибудь сервант ), подвижная мебель (стол со стульями). Возможно, надо классифицировать мебель по высоте. Для высокой Ванессы это актуально. Например, стул, если ориентирован к роботу спинкой, будет цепляться двумя дальномерами, а если боком, то только одним, средним. Далее алгоритм прокладки маршрута. Тут вроде должна работать чистая геометрия. Но просто все только на первый взгляд, по крайней мере для меня. Уточнять свое положение на карте думаю по углам, с помощью цифрового сонара, и еще поставить пару напольных меток. Короче, жду рекомендаций на этот счет...
Могу предложить такой вариант: Всё пространство разбить на квадраты со стороной равной ширине робота. Если карта ещё не сформирована, то необходимо задать абсолютные координаты начала пути (можно привязать их к базе зарядки). Далее "ощупывая" всё сонаром и полагаясь на энкодеры делается набросок карты (закрашиваются прямоугольники, если есть препятствие). Если карта сформирована, то указывается конец пути и находится кратчайший путь до него (см. волновой метод прохождения лабиринта). При перемещении постоянно мониторится следующий по пути движения прямоугольник, и если обнаруживается препятствие (временное или нет - это другой вопрос ), по производится перерасчёт траектории движения. ЗЫ. Это всё теория. При условии, что энкодеры и сонар будут отображать реальное положение.
Кстати, когда-то SkyStorm пытался в тех же условиях построить карту и сделать навигацию, надо его спросить, почему и что именно не срослось, вот тут в вики его наработки какие были и описание платформы: wiki/OR-TT-DiaNa
Мне показалось, что у SkyStorma все закончилось, еще толком не начавшись.
=DeaD= писал(а):А чего не по камере?
Что-то я не видел ни одного работающего проекта с ориентацией с помощью камеры. Чтобы без шараханий в разные стороны, на подобие слепого котенка, а прямо ехать к своей цели, заранее зная маршрут и элегантно объезжая препятствия. Разве, что AVM Navigator. Для экспериментов с ним собираюсь поставить вторую камеру на колесную базу (та, что не планшете здорово качается при езде, да и качество у нее хреновое) Идея с квадратиками - это уже ближе к реалиям. Когда я делал лего-бота, он у меня просто ездил по проложенным заранее с помощью ДУ пульта маршрутам, которые заносились в память. Т.е. количество пунктов прибытия было ограничено и переходы с одного маршрута на другой были возможны только в конечных точках. Выглядело это не плохо: дал боту комманду "иди на кухню" и он бодренько так хреначит со всеми поворотами и дверями без всяких шараханий по углам. Но это уже пройденный этап. Хочется, погоняв робота по скайпу, например, дать ему по тому же скайпу задание выйти на точку, просто щелкнув на карте квартиры мышкой. Робот должен прикинуть, как ему лучше пройти, чтобы не заблудится в мебели, не встретить на пути свалку обуви или котовью миску (которые не видит ни один дальномер, а только бампер), и наконец, просто потратив на переход меньше энергии.
моё имхо, идея с квадратиками хорошая, можно квадраты сделать разных типов, например для временых препятствии и чем дольше квадрат *на месте*, тем лучше учитывать этот фактор:) надеюсь поняли про что я) но камера тоже нужна, думаю повортная, чтоб не шарахатся по углам. Тогда вместе с *квадратной* картой можно и замутить. Научить распозновать проёмы дверей, запоминать временые квадраты(новое препятсвия) и при возможности исследовать их заново. Думаю для этого квадраты лучше подойдут поменьше.
Romeo писал(а): квадраты со стороной равной ширине робота.
По моему, это логично. Проход в который робот может проехать без проблем. Меньше делать нет смысла, а больше - это лишнее загрубление карты. Что касается дверей, то исследовать их нет смысла, т.к. задача пока гонять робота в одном и том-же помещении. Проще сразу двери и прочую недвижимость нанести на карту(мне не западло замерить рулеткой где они находятся). Новые препятствия будем отмечать на карте. Если препятствие захватывает часть квадрата, то весь его помечаем, как занятый. Так? Видимо помещение еще стоит разбить на зоны (комнаты). Когда предстоит переход из одной зоны в другую, то пилишь прямо к двери, а не ищешь, где закончится стенка. Какие еще мысли?
а помне так квадраты должны быть меньше, потому что робот увидит тапок, и будет объезжать его длиной в корпус..акумуляторам это не понравится:) Тогда хотя бы сделать в полкорпуса, или четверть.
malen писал(а):а помне так квадраты должны быть меньше, потому что робот увидит тапок, и будет объезжать его длиной в корпус..акумуляторам это не понравится:) Тогда хотя бы сделать в полкорпуса, или четверть.
Тогда при прокладывании пути траектория движения будет проходить через места, куда робот заехать не сможет. Нужно будет постоянно это контролировать (рис.1). Робот - чёрные квадраты, серые - препятствия, красный - конец пути, голыбым показана неверная траектория построенная волновым методом, а фиолетовым - верная, с учётом того, что робот не пролезет в щель в стене. Возможны ситуации, когда робот будет шаркать бортами о предметы и стены (рис.2).