Устройства для управления ЛА на больших расстояниях

Korogodsky
webconnector:

ddns.info сам пользовался етим работает отлично

Я думаю получится отправлять с борта текущий IP прямо на управляющий компьютер, на котором IP статический. А если будут оба динамические, предполагаю что вероятность одновременного изменения IP на обоих компах не очень высокая, на этот случай можно предусмотреть ddns.info как запасной вариант. Т.е. борт и база должны обмениваться текущими IP. Нужно будет только задать начальные адреса или хотя бы один.

Кстати если не ошибаюсь, в самих пакетах сидят IP адреса отправителя?

Korogodsky

да посмотрел, из приходящих данных можно брать IP адрес и отправлять в ответ отправителю.

Korogodsky

Такая идея на счет динамических IP адресов:
На домашнем или каком-либо другом компьютере ставится ПО для обмена данными через него в случае потери связи по прямым IP. На этом компьютере должен быть статический IP адрес. В нормальных условиях борт и база обмениваются друг с другом по прямым IP адресам. В случае потери прямой связи находим друг друга через третий компьютер. После того как нашлись, далее работаем по прямым IP. Дома всех предупреждаем что пошли летать и чтоб не выключали комп 😃

Как вам такая идея?

baychi

Насчет динамических IP. Боюсь ошибиться в деталях, но ИМХО, у мобильных провайдеров сейчас практикуется три типа адресов:

  1. Динамический внутренний IP (по умолчанию) - он доступен только внутри сети. Если у вас оба компа в одной сети, то сообщив свои адреса, они могут связаться. А вот снаружи к такому адресу доступа нет.
  2. Динамический внешний. Меняется при каждом подключении, но входит в пул выделеных адресов провайдера и можно достучаться на него с любого инет узла, если узнать какой он в текущй момент. Подключается частным клиентам за доп. плату.
  3. Полноценный статический IP. Подключается только корпоративным клиентам за доп плату.
Korogodsky
baychi:

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

Я в Йоте подключил внешний динамический бесплатно, в КомстарWimax по телефону сказали что у них по умолчанию идут внешние динамические, на счет 3G и CDMA не узнавал.

baychi
Korogodsky:

Я в Йоте подключил внешний динамический бесплатно

Ну и славно. Я просто про GSM недавно узнавал - там в основном такое деление. А ведь еще пару лет назад стат. IP 5$/мес у MTS/Beeline стоил. 😦

Korogodsky:

Как вам такая идея?

Так оно обычно и делается. Только ПК лучше брать не домашний, а сервак на работе, который включен гарантированно. 😃

webconnector
baychi:

Так оно обычно и делается. Только ПК лучше брать не домашний, а сервак на работе, который включен гарантированно

ddns.info в чем проблема я не понимаю все без платно у меня сервак стаял 3 года и все ок
комп самика пасилает свой ип Send IP -->пример uav.ddns.info --> procesing --> DNS status OK

и фсе пусть сколько угодно меняет тепер мы знаем наш IP¨под етим домеином
лутше всего послать команды на домеин а не на IP

Вот пример скрипта для микротика

# Define User Variables
:global ddnsuser “DYNDNSUSER”
:global ddnspass “DYNDNSPASS”
:global ddnshost “DYNDNSHOST”

# Define Global Variables
:global ddnsip
:global ddnslastip
:if ([ :typeof $ddnslastip ] = nil ) do={ :global ddnslastip “0” }

:global ddnsinterface
:global ddnssystem (“mt-” . [/system package get system version] )

# Define Local Variables
:local int

# Loop thru interfaces and look for ones containing
# default gateways without routing-marks
:foreach int in=[/ip route find dst-address=0.0.0.0/0 active=yes ] do={
:if ([:typeof [/ip route get $int routing-mark ]] != str ) do={
:global ddnsinterface [/ip route get $int interface]
}
}

# Grab the current IP address on that interface.
:global ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]

# Did we get an IP address to compare?
:if ([ :typeof $ddnsip ] = nil ) do={
:log info (“DynDNS: No ip address present on " . $ddnsinterface . “, please check.”)
} else={
:if ($ddnsip != $ddnslastip) do={
:log info “DynDNS: Sending UPDATE!”
:local str “/nic/update?hostname=$ddnshost&myip=$ddnsip&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG”
/tool fetch address=members.dyndns.org src-path=$str mode=http user=$ddnsuser \
password=$ddnspass dst-path=(”/DynDNS.".$ddnshost)
:delay 1
:local str [/file find name=“DynDNS.$ddnshost”];
/file remove $str
:global ddnslastip $ddnsip
}
}

Korogodsky
webconnector:

ddns.info в чем проблема я не понимаю

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

baychi
Korogodsky:

Я думаю это может замедлить скорость реакции управления

Не замедлит. Регистрация, как и превращение доменного имени в IP адрес делается один раз в начале сеанса. А дальше, до разрыва связи, Вы уже к нему не обращаетесь.

Korogodsky:

вчера сделал 4 ползунка на удаленной части ПО, реагируют на ручки управления хорошо

Напомните, чем Вы PPM сигнал c пульта в ПК вводите. Или это джойстик?

Korogodsky
baychi:

Напомните, чем Вы PPM сигнал c пульта в ПК вводите. Или это джойстик?

Точно могу посмотреть вечером дома как называется устройство если нужно. У меня передатчик JR 66 MAX, в него вставляется USB переходник, я его покупал для авиасимулятора, все это опознается как джойстик, можно калибровать и тд и тп.

msv

Какая-то путаница с терминами… Есть реальные адреса и серые, тут все понятно и однозначно. Внешний - это обычно адрес, через который выходит LAN сидящая за прокси или NAT сервером. Вам не могут выдать внешний адрес, внешним его можете сделать вы, развернув за ним сеть, например через роутер. Кста он, оставаясь при этом внешним, может быть и реальным и серым… Ну это так, условности…
К неопределенностям, которые дают поставщики канала, добавлять неопределенности чужого сервиса имхо повозможности не стоит… И если есть возможность развернуть свой сервер со стат адресом и с простейшей прожкой показывающей в ответе адрес другой стороны, то зачем мудрить…

baychi
Korogodsky:

могу посмотреть вечером дома как называется устройство если нужно. У меня передатчик JR 66 MAX, в него вставляется USB переходник

Не нужно. Все понятно, переходник симулятора в режиме джойстика. 😃

Korogodsky
msv:

Какая-то путаница с терминами

по умолчанию в Йоте IP имеют вид 10.10.10.x, к нему я не могу обратиться извне, по просьбе они подключают адреса начинающиеся на 94.

webconnector
Korogodsky:

по умолчанию в Йоте IP имеют вид 10.10.10.x, к нему я не могу обратиться извне, по просьбе они подключают адреса начинающиеся на 94.

Ну если и так можно и VPN с обоих сторон на сервак и усе

тагда и дднс не нужен только один реал ип на серваке

Korogodsky
webconnector:

Ну если и так можно и VPN с обоих сторон на сервак и усе тагда и дднс не нужен только один реал ип на серваке

Не будем углубляться 😃

msv
Korogodsky:

по умолчанию в Йоте IP имеют вид 10.10.10.x, к нему я не могу обратиться извне, по просьбе они подключают адреса начинающиеся на 94.

Да я пока догадываюсь о чем речь… 😃 Запостил свою реплику, что бы и впредь не догадываться, а сразу понимать обсуждение… В данном случае 10.x.x.x - серая сетка, которая не маршрутизируется в инет. Но вы можете выходить с нее в инет благодаря серверу (скорее всего NAT), имеющего кроме доступа во внутреннюю сеть, один или несколько интерфейсов с внешними реальными адресами. Внутри одного провайдера сетка с серыми адресами может маршрутизироваться, а может и нет. Поэтому хоть один нужен реальник или хотя-бы на одной стороне или на посреднике-ретрансляторе.
ЗЫ по хорошему надо бы в отдельную тему вынести…

pashteton
msv:

ЗЫ по хорошему надо бы в отдельную тему вынести…

Ну наконец то здравая мысль…
+1

Korogodsky

Выкладываю на тестирование программу с частью функционала. Что умеет программа:
Модуль IPFPVBase.exe:

  1. Получает состояние ручек джойстика (rc пульта);
  2. Обрабатывает нажатие клавиш клавиатуры. Рабочие клавиши задаются пользователем в поле Key для каждого канала;
  3. Передает состояние ручек джойстика и состояние клавиш по протоколу UDP на заданный IP адрес и порт 8080;

Модуль IPFPVBoard.exe:

  1. Получает переданные данные данные по протоколу UDP через порт 8080;
  2. Демонстрирует перемещение ползунков при изменении состояния ручек джойстика и “зажигает” дискретные переключатели при нажатии на заданные клавиши клавиатуры.

Поскольку это мой первый проект на C# .NET и DirectX, и вообще я последний раз что-то делал на подобном языке программирования (Delphi) когда учился в институте, возможны КОСЯКИ. Прошу потестировать на своих компьютерах. Пишите у кого на какой операционной системе, DirectX и .NET заработало, и у кого НЕ ЗАРАБОТАЛО и при каких обстоятельствах, это пригодится для создания FAQ.
И самое главное - ПОТЕСТИРУЙТЕ НА 3G, EDGE, GPRS, CDMA и пишите сюда какая скорость реакции!

В дальнейшем планируется добавить обмен между базой и бортом потоковым видео и поддержку USB серво-контроллера Pololu Mini Maestro.

rapidshare.com/files/435947484/IPFPV_EXE.zip

AsMan
Korogodsky:

Поскольку это мой первый проект на C# .NET и DirectX, и вообще я последний раз что-то делал на подобном языке программирования (Delphi)

Имхо самая подходящая платформа для подобного проекта:-))) Потестировать можно. У тебя станция таймштамп передает а борт пишет лог? Иначе все субьективно будет.