LINUX.ORG.RU
ФорумMobile

[вещества] Странная идея с акселометром - Навигатор по метро

 


0

2

Есть странная идея написать навигатор по метро для андройда.

Суть идеи какова - сделать граф и замерить среднее время перемещения между станциями. Соответственно дальше дело техники.

Проблема возникает только с детектированием остановки поезда на станции метро. GPS в метро не работает, соответственно узнать на какой станции мы находимся сложно. Если идея сделать это на основе «инерциалки» - те пользователь вводит на какой станции метро он начал движение и указать конечную станцию. Дальше с помощью акселерометра узнавать факт остановки и выдавать пользователю информацию. Но проблема задетектировать факт остановки, ибо профиль торможения поезда в нашем метро зависит чисто индивидуально от машиниста, кто-то может тормозить за три километра от станции и плавно подкатить к остановке - в таком случае задетектировать очень сложно, кто-то резко тормозить перед самой остановкой. нужно ещё учитывать факт остановок в туннеле, и.т.п.

Есть идеи?


GPS в метро не работает, соответственно узнать на какой станции мы находимся сложно.


Можно узнавать на какой станции - через базовые станции опсосов, которые в изобилии висят на каждой станции. GPS даже не нужен. Но сама идея достаточно бредова - ведь в поезде метро робот читает на какой станции ты находишься, и на самой станции есть надписи и карты, нафига это все?

anonizmus
()
Ответ на: комментарий от anonizmus

Бывает в наушниках сидишь-спишь. Если программа будет тебе говорить на какой ты станции и когда тебе выходить и на какую пересаживаться будет имхо лучше чем продремав полветки с матюками едешь обратно в под завязку забитом метро. Алсо если проехал таки то программа подскажет как быстрее вернуться на нужный маршрут.

sig_11
() автор топика
Ответ на: комментарий от Tark

Только там собственно положение определялось.

Tark ★★
()
Ответ на: комментарий от sig_11

Тогда по базовым станциям делай.
Я думаю это легко, вот на N72 моей есть приложение - CellTrack - показывает инфу о базовой станции (там уникальные номера у каждой), мощность сигнала, трекер есть, раньше в гуглмапсе для этой же нокии была возможность и расположение по базовым станциям узнавать (не помню как эта штука называется просто полностью).

anonizmus
()
Ответ на: комментарий от sig_11

И еще, много ездил в метро (правда в питерском) - и спал, всегда на автомате сознание включалось на нужной станции, даже если в наушниках, даже когда порой был убит в полное говно веществами, это как то подсознательно уже, просто открываешь глаза и выходишь там где надо. Неужели в DC так все сложнее ?

anonizmus
()
Ответ на: комментарий от anonizmus

Как вариант записывать идентификаторы БС для каждого ОПсоса на каждой станции. Хм... Ненадёжно это как-то :(

android.telephony.gsm.GsmCellLocation

Можно конечно обновляемую из инета БД сделать, и фидбек :)

sig_11
() автор топика
Ответ на: комментарий от anonizmus

Метро в DC гораздо больше.

Тем не менее я тоже из Питера

sig_11
() автор топика

>Но проблема задетектировать факт остановки, ибо профиль торможения поезда в нашем метро зависит чисто индивидуально от машиниста, кто-то может тормозить за три километра от станции и плавно подкатить к остановке - в таком случае задетектировать очень сложно, кто-то резко тормозить перед самой остановкой. нужно ещё учитывать факт остановок в туннеле, и.т.п.
Ты ещё забыл учесть ещё факт летания по салону тушки пользователя, который вместо того, чтобы держаться за поручни, тычется в мобильник с новомодным тачскрином.

Ramen ★★★★
()

Но проблема задетектировать факт остановки, ибо профиль торможения поезда в нашем метро зависит чисто индивидуально от машиниста, кто-то может тормозить за три километра от станции и плавно подкатить к остановке - в таком случае задетектировать очень сложно

Технически ни разу не сложно, если есть акселерометр, то есть ускорение и текущая скорость, следовательно можем вычислить сколько поезд проехал от последней остановки и не важно с какой скоростью он двигался. Если остановка произошла задолго до прогнозируемой станции, значет остановка техническая. Большой плюс, это то, что можно замерить расстояния между каждыми станциями и вшить в программу жёстко. Единственно что, так это надо будет указать исходную точку или чтобы девайс был включен до посадки в метро. Так или иначе, как Вы уже отметили выше, студота одобрит - можно заранее указать маршрут и задремать.

temporary ★★
()
Ответ на: комментарий от sig_11

Хм... Ненадёжно это как-то :(


Нужно дальше мысль развивать - в прогу встроить возможность апдейтить инфу на сервере откуда качаются базы, что бы если сменится базовая станция (ее ID) юзер мог заапдейтить инфу, или хотя бы себе. Или просто тупо режим обучения - ездишь сначала так, оно тебя спрашивает «опа, тут, браток, еще БС нашлась, я к ней подключилось, это где ?» и тыкаешь в менюшке станцию.

Все равно ты это писать не будешь, верно.

anonizmus
()
Ответ на: комментарий от temporary

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

sig_11
() автор топика
Ответ на: комментарий от anonizmus

Как знать :) Для начала напишу определялку БС с сабмитом в БД.

Если результат будет удовлетворительный будем думать дальше :)

sig_11
() автор топика
Ответ на: комментарий от sig_11

Ты только не забудь, что БС бывают не только на станциях. В ДС, например, МТС на кольце во всех перегонах работает.

Ramen ★★★★
()
Ответ на: комментарий от temporary

> Технически ни разу не сложно, если есть акселерометр, то есть ускорение и текущая скорость, следовательно можем вычислить сколько поезд проехал от последней остановки и не важно с какой скоростью он двигался.

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

Manhunt ★★★★★
()
Ответ на: комментарий от sig_11

>акселерометр не предоставляет скорости, а высчитывать её по время * ускорение тупо ибо точность встроенных в мобильник акселерометра довольно низкая.
Если для шагомера достаточна, может и для метро хватит?в

Tark ★★
()
Ответ на: комментарий от One

на несколько станций будет один cellid БСки.


Это почему ? Даже на переходах будут разные. Мы ведь говорим про подземелье.

anonizmus
()
Ответ на: комментарий от sig_11

в том-то и плюс подземки, если пользователь сел в поезд, то, если никакого чп не случится (а если оно случится, то челу не до Вашей програмки будет), то вектор один, направление всегда одно и то же, отклонение от тренда считать «летанием по салону тушки пользователя, который вместо того, чтобы держаться за поручни, тычется в мобильник с новомодным тачскрином».

Относительно точности, тоже не так всё плохо, недавно вертел в руках какой-то недорогой телефон с игрушкой типа через лабиринт закатить шарик в ямку и был приятно удивлён, пригодилось очень много терпения, чтобы обмануть акселерометр и поставить телефон под углом 45 градусов, чтобы при этом шарик не катился, реально минут 5 пришлось медленно поднимать один бок :)) (да-да, именно в этом Ъ-смысл этой игры - обмани акселерометр :) )

temporary ★★
()
Ответ на: комментарий от sig_11

на одну станцию обычно одна БСка и много антенн.


Ну может так и есть, так то на одну станцию. А на разных станциях то одна бс никак быть не может. К тому же надо помнить что в метро - крайне высокая нагрузка на БС, народу дофига, особенно в час пик, и все хотят говорить и телефоны все регаются туда сюда, а сколько одна БСка тянет ? Одновременно если.

anonizmus
()
Ответ на: комментарий от anonizmus

Хотя бы потому, что в тоннелях метро часто используются антенны типа «излучающий кабель», и в таких случаях сигнал можно поймать на соседних станциях.

anonymfus ★★★★
()
Ответ на: комментарий от Manhunt

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

ИМХО тут надо пробовать. Погрешность можно обнулять во время остановки - если произошла остановка в прогнозируемом районе +- X метров, то обнуляем и привязываемся к текущей станции.

Если ТС интересно, JFF можно попробовать, вдруг будет толк.

ЗЫ. Для андроида есть приложение, которое измеряет пульс. Когда мне о ней рассказали, я подумал, что микрофон надо приложить к груди (запястью). Однако, как оказалось, принцип иной - камеру (кои есть практически во всех железках с андроидом) прикладивают к безымянному пальцу. Камера регистрирует приток в пальце крови от удара сердца. И это работает. Вот уж не думал, что телефонная камера на такое способна.

Вывод - надо пробовать.

temporary ★★
()
Ответ на: комментарий от anonizmus

> Ну может так и есть, так то на одну станцию.

две-три станции на одном CID это часто явление было пару лет назад, сейчас сомневаюсь, что что-то изменилось

One ★★★★★
()

А если с другой стороны? Просто распознавалку речи, срабатывающую на голос, объявляющий станции. Эти голоса же довольно постоянные - не машинист объявляет, а запись на ленте.

svu ★★★★★
()
Ответ на: комментарий от temporary

>Если ТС интересно, JFF можно попробовать, вдруг будет толк.

Я тоже так думаю. Тем более, что проверить акселерометр довольно просто, для этого не надо писать полнофункциональный навигатор.

А вообще, надо предусмотреть возможность добавления карт метро в других городах и пусть добровольцы их составляют. Кроме уже упоминавшихся студентов, это будет полезно иностранцам.

Zenom ★★★
()
Ответ на: комментарий от svu

Распознавание речи это действительно плохая идея :)

А вот скомбинировать акселерометр + БС думаю будет толк.

Ладно, на выходных займусь испытаниями :)

sig_11
() автор топика
Ответ на: комментарий от Manhunt

Очень хочется отметить, что в задаче определения местоположения погрешность интегрируется дважды, что ещё больше радует.

shoewreck
()

Я не совсем в курсе, как работают акселерометры в современных телефонах, поэтому у меня есть вопрос: как телефон, лежащий в кармане, определит, куда направлен вектор ускорения?

shoewreck
()
Ответ на: комментарий от shoewreck

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

sig_11
() автор топика
Ответ на: комментарий от anonizmus

>Можно узнавать на какой станции - через базовые станции опсосов

Пробовал навигацию по ним делать? :) Я - да. Переключаются как бог на душу положит. В том смысле, что обычно переключение происходит на перегоне. А не на станции.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonizmus

>Это почему ? Даже на переходах будут разные

А ты попробуй :) Обычно под землёй не БС-ки, а ретрансляторы.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonizmus

>К тому же надо помнить что в метро - крайне высокая нагрузка на БС, народу дофига, особенно в час пик, и все хотят говорить

Типовой разговор по телефону в метро: «Ой, я сейчас в метро, я тебе потом перезвоню» :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> Это будет ничуть не затратнее, чем использование акселератора :)

Казалось бы, там арифметики на 2 порядка больше...

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

>Казалось бы, там арифметики на 2 порядка больше...

А что, акселератор уже совсем ничего не потребляет? :) В отличии от микрофона...

KRoN73 ★★★★★
()
Ответ на: комментарий от anonizmus

Неужели в DC так все сложнее ?

В спб 5 веток, в мск 11 + легкое метро. В спб количество станций — 63 (среди них 7 пересадочных узлов), 11 совмещено с вокзалами или ж/д станциями.В мск количество станций 182, среди них 61 пересадочных, 26 узловых, 16 наземных.

e000xf000h
()
Ответ на: комментарий от shoewreck

А чтобы знать, какую часть из n м/с² состовляет то самое g, необходим гироскоп, который есть в iphone 4.

PolarFox ★★★★★
()
Ответ на: комментарий от KRoN73

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

PolarFox ★★★★★
()
Ответ на: комментарий от svu

А если с другой стороны? Просто распознавалку речи, срабатывающую на голос, объявляющий станции. Эти голоса же довольно постоянные - не машинист объявляет, а запись на ленте.

Иногда оно люто-бешено глючит, и называет не те станции, пока её машинист не поправит, при этом понаехавшие проезжают свои станции, а те кто в теме ловят лулзы.

e000xf000h
()
Ответ на: комментарий от mono

>Да ладно метро, давно мечтаю, чтобы в поездах розетки и WiFi добавили.

Вай, зачем розетки, да?! Бесконтактный заряд, вах!

e000xf000h
()
Ответ на: комментарий от KRoN73

Пробовал навигацию по ним делать? :) Я - да.


Пробовал, когда гуглмапс для моей нокии умел по базовым станциям - работало конечно не так четко как с GPS (я потом блютуз гпс прикупил) погрешность большую рисовало, диаметром, но в Метро ТС нужно что бы его ондроед будил при подъезде к станции, так что если раньше на БС переключится нужную - даже лучше, успеет проснуться.

И вообще согласись что бред все это, про такой навигатор.

А ты попробуй :) Обычно под землёй не БС-ки, а ретрансляторы.


Я щас не в Спб живу, но нетмонитор мне еще какие то данные показывает кроме ID, там много разных данных, я помню еще на сименсе ME45 патч заливал - там данных можно снять дохрена, и распознать и ретранслятор и прочее, эта вся инфа телефону передается, по служебным каналам или как там, хз, давно было дело но при желании - можно это все откопать. Но нет смысла ! имхо

anonizmus
()
Ответ на: комментарий от e000xf000h

А ты токийское метро видел ? погугли его план.
Да и в мск в метро просто ориентироваться без всяких ненужных навигаторов метрошных. На самый крайний случай - хватит на 500% проги где указываешь от куда куда доехать и она рисует маршрут по карте метро (такие проги есть для каждой платформы, для ондроеда точно тоже должна быть, ну или вот лучше такую написать, чем этот навигатор. Что бы искала кратчайший путь, с учетом пересадок, времени в пути и людских заторов).

anonizmus
()

Лучше всего один раз замерить время между станциями и поставить будильник.

З.ы. Можно замерить скорость поезда - длинна рельсов стандартная - стучание колес.

Zodd ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.