Это краткая история создания подводного автономного робота менеджером очень среднего звена. Текущей целью является создание актуальной карты фарватера Москвы-реки. При поиске нет проблем найти такую карту, но вызывает вопрос ее актуальность. Русло реки постоянно меняется. Происходит эрозия берегов реки и меняется карта фарватера. Эти процессы особенно заметны, учитывая питание Москвы-реки снеговое (61 %), грунтовое (27 %) и дождевое (12 %). Конечной целью является создание многофункционального подводного робота для исследование морских глубин. Мировой океан, покрывающий 2/3 поверхности Земли, изучен всего на 5%. Для создания автономного робота нужен простой «автопилот».

Как сделать доступный и простой автопилот для DIY-проектов и проплыть на нем по Москве-реке?





Москва-река это главная водная артерия города Москвы, длина в пределах города 80 км. Ширина реки внутри города меняется от 120 до 200 м, от самой узкой части возле Кремля до самой широкой вблизи Лужников. Принято считать, что скорость течения реки 0,5 м/с. Вполне благоприятные условия для испытания робота.
Возможно, было бы эффективнее и проще сделать лодку, но задача сделать подводного робота кажется много интереснее.

Конструкция


Робот-подводная лодка для исследования акватории Москвы-реки.

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


Установка коллекторного двигателя


Серво-привод управления рулем


Серво-привод управления рулем глубины


В шутку можно сказать что я готовлюсь к конкурсу X-Prize.
Осталось накопить 2000$. :)

The registration deadline is 30 June, 2016 (11:59 PM UTC/4:59 PM PST). The registration fee is $2,000.00 USD.



Целью является разработка автономного подводного робота, а не ROV'а. (Remotely operated underwater vehicle).

Электронная часть не отличается сложностью и качеством сборки
Arduino nano + L293D + Bluetooth + 3 серво + Power bank (Отдельное спасибо интернет-магазину, который продавал такие по 3 цента). Отдельно подключается к Power bank смартфон Samsung Galaxy S3 для поддержания заряда. Связь смартфона с Arduino осуществляется по Bluetooth.


Программная часть управления


«Мы встречаем свою судьбу на пути, который избрали, чтобы уйти от нее»
Жан де Лафонтен


Я всегда старался избегать программирования на Android. Когда появлялась возможность разработки даже легкого приложения с возможностью в действии познакомится с Android, я пасовал.
Но час настал! Действительно, хватит тратить деньги на шильды для Arduino. Все что нужно уже есть в отслуживших смартфонах. Под рукой оказался Samsung Galaxy S3 и немного магии.
Как порядочный ГИК я задал вопрос на тостере. Возможно я спрашивал сложно. Возможно плохо сформулировал вопрос. И похоже это было скорее не на вопрос. Но в ответ я получил совсем не то, что ожидал.
Яндекс мне в бухту! Все запросы «Android GPS», «Программирование Android GPS» и прочее давали ответы, которые решительно не работали на Android Studio.
Каким же облегчением для меня стала находка SL4A. Оказывается можно прототипировать и программировать на Android, используя Python. Управляют, ведь, даже ракетами.

SL4A Python


Если у Вас есть телефон Android, а он у Вас есть. Вы же ГИК, а не любитель приторных фруктов.
Устанавливаем на выбор программу для распознавания QR-кодов.
Для использования SL4A необходимо установить на телефон приложение.

Интерпретатор языка Python находится здесь.

Или QPython3

Писать программы на телефоне возможно, но занятием увлекательным это не назовешь.
Есть выход
Источник: http://habrahabr.ru/post/134184/
Перенаправим весь локальный трафик, поступающий на порт 9999 в Android-устройство (примем, что сервер слушает порт 46136):
$ adb forward tcp:9999 tcp:46136
Осталось создать переменную окружения и настройка закончена:
$ AP_PORT=9999
Осталось добавить файл android.py в папку с библиотеками Python'а, и все, теперь можно писать приложения на компьютере, запускать их, и результат можно буждет видеть сразу на телефоне. Для запуска helloWorld на Android-устройстве теперь достаточно ввести в интерпретаторе Python:
>>>import android
>>>droid = android.Android()
>>>droid.makeToast(«Hello, world!»)

В первой строчке импортируется библиотека android, затем создается объект droid, с помощью которого используются API Android'a. Крайняя строка выводит сообщение «Hello, World!» на экран устройства.
Теперь самое время, чтобы познакомиться поближе с API, которое предоставляет SL4A.


Построение пути. Выбор точек



Используя Яндекс.карты или Google.maps выбираем точки по центру реки. Это примерный маршрут. Для тестов и наладки использую усеченную версию точек.
[55.671110, 37.686625],[55.668448, 37.675467],[55.660847, 37.671776],[55.654649, 37.671175]

Как сделать доступный и простой автопилот для DIY-проектов из andoid телефона и 70 строк кода?




Код автопилота
import math,android,time
coordmas = [[55.671110, 37.686625],[55.668448, 37.675467],[55.660847, 37.671776],[55.654649, 37.671175]]
droid = android.Android()
droid.startSensingTimed(1,200)
droid.startLocating(5000, 30)
def getgps():
	locs = droid.getLastKnownLocation()
	gpspos = locs.result["gps"]
	return gpspos
def distazim(llat1,llong1,llat2,llong2):
	rad=6372795
	#врадианах
	lat1=llat1*math.pi/180.
	lat2=llat2*math.pi/180.
	long1=llong1*math.pi/180.
	long2=llong2*math.pi/180.
	cl1=math.cos(lat1)
	cl2=math.cos(lat2)
	sl1=math.sin(lat1)
	sl2=math.sin(lat2)
	delta=long2-long1
	cdelta=math.cos(delta)
	sdelta=math.sin(delta)
	y=math.sqrt(math.pow(cl2*sdelta,2)+math.pow(cl1*sl2-sl1*cl2*cdelta,2))
	x=sl1*sl2+cl1*cl2*cdelta
	ad=math.atan2(y,x)
	dist=ad*rad
	x=(cl1*sl2)-(sl1*cl2*cdelta)
	y=sdelta*cl2
	z=math.degrees(math.atan(-y/x))
	if(x<0):
		z=z+180.
	z2=(z+180.)%360.-180.
	z2=-math.radians(z2)
	anglerad2=z2-((2*math.pi)*math.floor((z2/(2*math.pi))))
	angledeg=(anglerad2*180.)/math.pi
	return [dist,angledeg]
def servoangle(azdiff):
	if azdiff>10 or azdiff<-10:
		deg=azdiff
		if deg>90:
			deg=90
		if deg<-90:
			deg=-90
	return deg
gpspos=getgps()
oldlat = gpspos["latitude"]
oldlon = gpspos["longitude"]
for c in range(len(coordmas)):
	#получение координат текцщей целевой точки
	curcoord=coordmas[c]
	targetlat=curcoord[0]
	targetlon=curcoord[1]
	darange=11;
	while darange>10:
		gpspos=getgps()
		curlat = gpspos["latitude"]
		curlon = gpspos["longitude"]
		time.sleep(0.5)
		da=distazim(curlat,curlon,targetlat,targetlon)
		darange = da[0]
		dazimut = round(da[1])
		pol=droid.sensorsReadOrientation()
		pol2=pol.result
		turn = round(pol2[0])
		turn = (-turn) *180/ 3.2
		azdiff=turn-dazimut
		deg=servoangle(azdiff)
	oldlat = curlat
	oldlon = curlon



Код с комментариями
import math,android,time

#Массив координат
coordmas = [[55.671110, 37.686625],[55.668448, 37.675467],[55.660847, 37.671776],[55.654649, 37.671175]]

#Инициализация, запуск GPS, сенсоров
droid = android.Android()
droid.startSensingTimed(1,200)
droid.startLocating(5000, 30)

#Функции
#GPS
def getgps():
	locs = droid.getLastKnownLocation()
	gpspos = locs.result["gps"]
	return gpspos
#Функция определения расстояния и азимута между двумя GPS-точками
def distazim(llat1,llong1,llat2,llong2):
	rad=6372795
	#врадианах
	lat1=llat1*math.pi/180.
	lat2=llat2*math.pi/180.
	long1=llong1*math.pi/180.
	long2=llong2*math.pi/180.

	#косинусыисинусыширотиразницыдолгот
	cl1=math.cos(lat1)
	cl2=math.cos(lat2)
	sl1=math.sin(lat1)
	sl2=math.sin(lat2)
	delta=long2-long1
	cdelta=math.cos(delta)
	sdelta=math.sin(delta)

	#вычислениядлиныбольшогокруга
	y=math.sqrt(math.pow(cl2*sdelta,2)+math.pow(cl1*sl2-sl1*cl2*cdelta,2))
	x=sl1*sl2+cl1*cl2*cdelta
	ad=math.atan2(y,x)
	dist=ad*rad

	#вычислениеначальногоазимута
	x=(cl1*sl2)-(sl1*cl2*cdelta)
	y=sdelta*cl2
	z=math.degrees(math.atan(-y/x))

	if(x<0):
	z=z+180.

	z2=(z+180.)%360.-180.
	z2=-math.radians(z2)
	anglerad2=z2-((2*math.pi)*math.floor((z2/(2*math.pi))))
	angledeg=(anglerad2*180.)/math.pi

	return [dist,angledeg]

def servoangle(azdiff):
	if azdiff>10 or azdiff<-10:
		deg=azdiff
		if deg>90:
			deg=90
		if deg<-90:
			deg=-90
	return deg

#принятие текущего положения за старую точку
gpspos=getgps()
oldlat = gpspos["latitude"]
oldlon = gpspos["longitude"]

#Цикл
for c in range(len(coordmas)):
	#получение координат текцщей целевой точки
	curcoord=coordmas[c]
	targetlat=curcoord[0]
	targetlon=curcoord[1]

	#выполняем цикл пока расстояние больше 10 метров до след.точки
	darange=11;
	while darange>10:
		#определение координат	
		gpspos=getgps()
		curlat = gpspos["latitude"]
		curlon = gpspos["longitude"]
		time.sleep(0.5)
		#сравнение дальности и азимута до след. точки.
		da=distazim(curlat,curlon,targetlat,targetlon)
		darange = da[0]
		dazimut = round(da[1])
		#определяем угол телефона
		pol=droid.sensorsReadOrientation()
		pol2=pol.result
		turn = round(pol2[0])
		#[1.57=left, 0=stop, -1.57=right]
		turn = (-turn) *180/ 3.2
		#если угол точки отличается от угла телефона на 10 градусов готовим команду на поворот
		azdiff=turn-dazimut
		#готовим данные для угла поворота сервы руля
		deg=servoangle(azdiff)
		#отправляем по блютус угол поворота серво

	#Меняем координаты старой точки, т.к. ожидается смена координат текущей цели
	oldlat = curlat
	oldlon = curlon



Python For Android. Функции, которые я долго искал
Батарея:
droid.batteryStartMonitoring() — началo работы с батареей.
droid.batteryStopMonitoring()
droid.batteryGetHealth() — возвращает состояние батареи (1-неизвестно, 2-хорошее, 3 — перегрев, 4 — мёртвая, 5 — перегрузка, 6 — неизвестный сбой)
droid.batteryGetStatus() — возвращает статус батареи (1 — неизвестно, 2 — заряжается, 3 — разряжается, 4 — не заряжается, 5 — максимальный заряд)
droid.batteryGetTechnology()
droid.readBatteryData() — данные о батарее.
droid.batteryGetTemperature()
droid.batteryGetVoltage()
droid.batteryGetLevel()

Bluetooth:
droid.checkBluetoothState() — проверяет включён ли Bluetooth
droid.toggleBluetoothState() — включает если в скобках True и выключает, если False
droid.bluetoothAccept() — принимает соединение
droid.bluetoothActiveConnections() — проверяет, есть ли подключения
droid.bluetoothGetConnectedDeviceName()
droid.bluetoothMakeDiscoverable() — в скобках можно указать промежуток времени в секундах
droid.bluetoothStop()

Wi-Fi:
droid.checkWifiState() — проверяет включён ли Wi-Fi
droid.toggleWifiState() — включает если в скобках True и выключает, если False
droid.wifiStartScan()
droid.wifiGetScanResults()
droid.wifiGetConnectionInfo()

Другие настройки:
droid.checkAirplaneMode() — проверяет включён ли режим «В самолёте»
droid.checkRingerSilentMode() — проверяет включён ли беззвучный режим
droid.checkScreenOn() — включён ли экран
droid.toggleRingerSilentMode() — включает беззвучный режим
droid.toggleAirplaneMode()
droid.toggleVibrateMode()

Получение информации о настройках:
droid.getMaxMediaVolume()
droid.getMaxRingerVolume()
droid.getMediaVolume()
droid.getRingerVolume()
droid.getScreenBrightness()
droid.getScreenTimeout()
droid.getVibrateMode()

Установка параметров:
droid.setMediaVolume()
droid.setRingerVolume()
droid.setScreenBrightness()
droid.setScreenTimeOut()


В планах:
  • Настройка отправки данных по Bluetooth на arduino.
  • Получение с arduino данных о глубине. Глубину буду измерять ультразвуковым датчиком.
  • Отправка данных о текущем положении и измерений глубины на сервер.
  • Доработка конструкции. Лодка должна быть с нулевой плавучестью, чтобы глубину можно было изменять рулями глубины. Возможно от конструкции подводной лодки придется уйти к надводному аппарату.
  • Тест, тест, тест


P.S.: Почему я решил написать пост до запуска робота? Я хочу найти единомышленников. Если у Вас есть желание — делайте своего робота. Отличный повод собраться на майских праздниках на аквапробег по Москве-реке на роботах! По всем вопросам можете писать мне ВК. Просьба сделать репост, может быть кто-то из Ваших друзей захочет принять участие в аквамарафоне.

Напоминаю:
Конкурс роботов-газонокосилок пройдет в Сколково 3 июня. Все желающие могут попробовать себя в робототехнике. По итогам конкурса мы хотим отобрать команду для стартапа. Мы будем делать первый российский коммерческий робот-мульчатор. Ценные призы и подарки для всех участников.

Комментарии (129)


  1. amarao
    25.02.2016 15:17
    +24

    По реке плывёт труба,
    арудино как bluetooth
    Ну и пусть себе плывёт,
    нам не нужен Windows Phone.

    А так — крутая штука!


  1. IronHead
    25.02.2016 15:26
    +2

    Больше вопросов возникло
    1) Как передавать данные на сервер? Всплывать периодически?
    2) Хватит ли емкости АКБ на всю подводную прогулку + передачу данных?
    3) Датчик глубины смотрит строго вниз или сканирует некий сектор, строго вниз определяет телефон?
    4) Трава, сети, нитки, водоросли, как с этим быть? Робот в какой то момент может и не всплыть.


    1. webzuweb
      25.02.2016 15:41

      Ответил ниже.


    1. B0Z0NHIGGSA
      26.02.2016 11:56

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


  1. igruh
    25.02.2016 15:40
    +5

    Канализационная труба: теперь с ардуино и блютусом!


    1. webzuweb
      25.02.2016 15:43
      +4

      Я её слепил из того что было.
      Потом можно в умный дом пристроить канализационную трубу по прямому назначению, а arduino для учета калорий, вытекающих в никуда. Будет повод задуматься об эффективности и рекуперации этой энергии. :))


      1. tormozedison
        25.02.2016 23:06

        В определённых кругах такое называют "сантехпанком", но к Вам это не относится. У Вас всё замечательно получилось.


        1. Zenitchik
          26.02.2016 13:27

          В Ордо Сантехникус панков не держат.


  1. webzuweb
    25.02.2016 15:41
    +3


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

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

    Датчик глубины строго вниз

    Может и не всплыть. Делайте Ваши ставки, господа.


    1. Red_Lion
      25.02.2016 16:35
      +4

      Может вместо контактов лучше сделать подобие поплавкового датчика уровня топлива — поплавок на штанге идущий к потенциометру?


      1. tormozedison
        25.02.2016 23:07

        Лучше контакты, но графитовые, чтобы не было электролиза от постоянного тока.


        1. Red_Lion
          26.02.2016 12:26

          У контактов есть проблема — их тупо может замкнуть плавающий в реке мусор (банально какая-нибудь выброшенная газетка) или наоборот загадить контакт. Можно сказать конечно что шарнир поплавка тоже может заклинить, но это проще проверить — показания потенциометра не будут меняться при попытке всплытия.
          Если не хочется потенциометра, то можно сделать 2 кнопки или геркона, которые будут срабатывать в нужных положениях поплавка.


    1. skif23rus
      26.02.2016 12:12

      АКБ можно собрать из Li-Po 18650 так как они менее чувствительны к перепадам температуры.


    1. stepuncius
      26.02.2016 21:00

      Может лучше датчик давления?
      В воде он будет давать довольно точную информацию о глубине, и над водой держать ничего не надо.


  1. silvansky
    25.02.2016 15:44
    +1

    Ещё бы камеру и ИК-подсветку на лоб подлодки — был бы настоящий "Исследователь Глубин"! ;)


    1. webzuweb
      25.02.2016 15:47
      +1

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


      1. silvansky
        25.02.2016 15:50
        -1

        Для ардуинки разве нет камер подходящих? Отдельную камеру установить проще, чем телефонную, да и потребление энергии будет ниже.


        1. webzuweb
          25.02.2016 15:52

          Я думаю, что с этой задачей проще справится видеорегистратор, но я решил оставить эту задачу на версию 2.0
          Для начала аквапробег.


          1. Red_Lion
            25.02.2016 16:26
            +1

            А будет вариант просто приделать дешевый регистратор в аквабоксе к версии 1.0?


          1. tormozedison
            25.02.2016 23:08

            В некоторых ИК-подсветка встроенная есть.


        1. Chalokian
          25.02.2016 16:46
          +3

          Для Ардуинки — нет. Сил не хватает даже для ЧБ изображения с нормальным разрешением. Малинка для этого годится значительно лучше, причём не с USB камерой, а своей


          1. aronsky
            26.02.2016 00:04
            -1

            Что вы имеете ввиду под "своей"?


            1. BelBES
              26.02.2016 00:10

              скорей всего имеется в виду камера для Rpi, которая цепляется через csi интерфейс.


              1. Chalokian
                26.02.2016 13:04

                Да, именно она. Причём есть вариант без ИК фильтра, если всё-таки делать ИК подсветку


    1. BelBES
      25.02.2016 16:18
      +4

      Сдается мне, что в грязной воде, да еще при учете того, что беспилотник будет плыть не глубоко, у вас камера будет постоянно снимать серое пятно :-)


      1. webzuweb
        25.02.2016 16:19

        Именно поэтому отложил идею.


    1. Chalokian
      25.02.2016 16:24

      в МР в этом районе с камерой ничего не разглядеть. Тем более с подсветкой в ИК диапазоне. Очень мутная вода. Могу выложить видео как видно объект 7х12 под водой со светочувствительной камеры от систем безопасности на глубине 11 метров в стоячем водоёме зимой (прозрачность выше чем летом) и с подсветкой из 7 ИК светодиодов по 130мВт. На метре видно, но уже больше контурами.


      1. webzuweb
        25.02.2016 16:26

        Я думаю, что идея увидеть своими глазами что там под водой очень заманчива, но у меня пока цели другие.


      1. impetus
        26.02.2016 14:07

        А почему ИК? ИК же в воде не проходит, в отличие от УФ — что-то милиметры декремент полузатухания против десятков метров даже в идеально чистой воде. Т.е. надо в синюю сторону уходить — и камерой и подсветкой а не в красную


        1. Chalokian
          26.02.2016 14:16

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


          1. impetus
            26.02.2016 15:54

            Попробуйте заменить ИК светодиоды на просто синие "супер-яркие" — и вода окажется вдруг не столь уж и мутной


            1. Chalokian
              26.02.2016 16:42

              Действительно? Спасибо за совет. Побежал заказывать. :)


  1. Jemdo
    25.02.2016 15:45
    +1

    Говорят, что дроиды очень прожорливы при использовании gps.
    Вот тут — https://habrahabr.ru/post/275749/ ребята достаточно хорошо исследовали эту проблему.
    Не знаю, столкнетесь ли вы с подобной проблемой, но идея очень интересная, поэтому хочется посоветовать проверить все что только можно.
    P.S. В предпросмотре линк был, но при отправке его съело...


    1. webzuweb
      25.02.2016 15:48

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


  1. PTM
    25.02.2016 16:00
    +1

    Надеюсь учтете, что может накрыть волна и замкнуть сразу все


    1. webzuweb
      25.02.2016 16:01
      +1

      Я думаю частоты опроса в 1-2 Гц за глаза. А принимать решение после N одинаковых значений


      1. PTM
        25.02.2016 16:21
        +2

        Ванна-тест+ведро наверно будет самым лучшим.
        Что-то оч напоминает ПИД регулятор.


  1. Chalokian
    25.02.2016 16:22
    +6

    На чём построен датчик глубины?
    На одних рулях глубины под воду он не уйдёт. Огружать надо дополнительно и достаточно сильно.
    Силы мотора не хватит преодолеть течение МР, тем более в мае месяце.
    Чем герметезируете места выходов валов?

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

    И, конечно, первые запуски только на верёвке.


  1. webzuweb
    25.02.2016 16:25
    +1

    Датчик
    http://ru.aliexpress.com/wholesale?catId=202000062&initiative_id=AS_20160225052245&SearchText=waterproof+ultrasonic+distance+measuring+module

    Планирую запустить по течению.

    Пока это открытые вопрос. Валы от рулей герметиком и пленкой.
    Сам двигатель я залил герметиком с внутренней стороны.

    Первые тесты обнадежили


    1. Chalokian
      25.02.2016 16:32

      Эээ. Так они для воздуха и всего до 3.5 метров. Водонепроницаемость самого пьезоизлучателя тут для защиты от брызг.


      1. webzuweb
        25.02.2016 16:35

        Я думаю границу среды они определять будут. Планирую вскрыть и улучшить герметичность.


        1. Chalokian
          25.02.2016 16:42

          Как раз излучатель вскрывать не надо, он не протечёт. Там всё компаундом залито. А вот что он будет показывать — это вопрос. Будут новости — пишите.


          1. arheops
            26.02.2016 00:23

            показывать будет не то. в воде надо больше мощность и скорость звука 1500, а в воздухе только 331(надо пересчет и будет миниалка гдето метр)


            1. Chalokian
              26.02.2016 13:05

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


              1. maxik0
                26.02.2016 21:00

                можно на это посмотреть www.ebay.co.uk/itm/40KHz-50W-Watt-Ultrasonic-Cleane-Transducer-Power-Drive-Module-220V/160754562847?_trksid=p2047675.c100005.m1851&_trkparms=aid%3D222007%26algo%3DSIC.MBE%26ao%3D1%26asc%3D20140122125356%26meid%3D8204334cab8f4bb997951e1f35cc94d0%26pid%3D100005%26rk%3D1%26rkt%3D2%26mehot%3Dpp%26sd%3D150607443329

                Но опять же, в гармине каком-нибудь мощность излучателя порядка 500 ватт. Так что, боюсь, и это ни о чем.


    1. Acristi
      25.02.2016 16:37
      +1

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


  1. Speccyfan
    25.02.2016 16:25

    Привет единомышленник! Я конечно делаю ROV, но вопросы тут почти одни и те же:
    1. Как Вы делаете гидроизоляцию коллекторного двигателя? Я через магнитную муфту, всего у меня 6 двигателей.
    2. Какой ультразвуковой датчик собираетесь использовать в качестве глубиномера? И как вообще? Я для этих целей думаю применить тензометрический датчик. Чем больше давление воды, тем глубже.
    3. GPS под водой вообще нормально работает?

    У меня немного примитивное управление, внутри стоит свич DES1005, IP-камера и ардуина с езернетшилдом, сигнал на верх идет по UTP, по нему же и питание.


    1. webzuweb
      25.02.2016 16:29

      Вопросы не в бровь, а в глаз. Чувствует, что Вы в теме.

      1. Никак, залили полностью весь двигатель. Т.е. отложил проблему.
      2. Чуть выше ссылка.
      3. Мне и нежно под водой, планирую всплывать каждые N минут.


      1. Acristi
        25.02.2016 16:35
        +1

        GPS под водой работать будет примерно никак, посмотрите на буксируемые антенны у ПЛ.


        1. webzuweb
          25.02.2016 16:38

          Да зачем же под водой?
          Она же еще и надводная лодка.


    1. Chalokian
      25.02.2016 16:40

      GPS под водой вообще никак не работает, как и любые другие доступные самодельщиками виды ЭМ-связи.
      В своём проекте ROV запланировал использование буя с WI-FI антенной, соединённое с устройством коаксиалом.
      Вес любого кабеля, если управлять устройством с берега не позволит устройству вменяемого размера самостоятельно плыть.
      А если сидеть в лодке и опускать устройство вниз, то проще крутить камерой по сторонам, чем двигать всё устройство двигателями.


      1. webzuweb
        25.02.2016 16:44

        Если я согласую правовые вопросы, Вы будете участвовать в аквамарафоне?


        1. Chalokian
          25.02.2016 16:54

          Спасибо за приглашение, но, наверное нет. Мой прототип по планам будет готов не раньше 12 июня. 7 июля — более реальный срок.


      1. aronsky
        26.02.2016 00:09
        -1

        Кстати, а какие вообще можно использовать беспроводные каналы свзяи для подводных аппаратов? УЗ?


        1. arheops
          26.02.2016 00:28

          низкие частоты, УЗ водой успешно поглощается. но как раз дешевые 48кгц излучатели работать будут


        1. BalinTomsk
          26.02.2016 07:03

          за модемы вопрос

          если я буду 80 watt подавать — рыба с ума не сойдет?

          http://www.evologics.de/en/products/acoustics/s2cm_series.html


          1. Chalokian
            26.02.2016 13:08

            Не сойдёт. Посмотрите мощности бытовых рыбопоисковых эхолотов. Там пики на порядки больше.


        1. Chalokian
          26.02.2016 13:29

          Вот тут всё подробно про все известные варианты: link


  1. mtp
    25.02.2016 16:28

    Идея подлодки с Arduino потрясающая! Однако же, просмотр фоток вызывает диссонанс, как-то не очень похоже это на подлодку, ну вот совсем-совсем.


    1. webzuweb
      25.02.2016 16:32

      Я буду только рад увидеть ваше воплощение этой идеи. Я вижу подводную лодку так.


  1. LazyCrazy
    25.02.2016 16:30

    А, может быть, перед тем, как решать технические проблемы, стоит проконсультироваться в ФСО и ФСБ — даст ли вам кто исследовать акваторию Москвы-реки? И не приобретёте ли вы проблемы совсем в другой плоскости?


    1. webzuweb
      25.02.2016 16:30

      Я из Подольска, а город у нас портовый...:) Могу и в Пахре испытывать.


      1. Barafu
        25.02.2016 17:09
        +1

        Я, кстати, тоже. Почти. Может, обсудим за рюмкой чая?


        1. webzuweb
          25.02.2016 17:10

          Porque no? Ссылка на мой профайл вк чуть выше.


          1. Barafu
            25.02.2016 17:15

            А меня в контакте забанили. Киньте, пожалуйста, мыло в личку.


  1. Acristi
    25.02.2016 16:32

    Интересный проект!
    А размер рулей рассчитывали, или на авось? Я к тому, что хватит ли горизонтального руля для поворота в данном случае.

    И ещё одна мысль: возможно, стоит "немного" усложнить код? Предусмотреть ситуации, когда ветер/течение сносит судно, несмотря на работу двигателя; близкий разряд батарей — передать текущие координаты/всплыть/отправиться на мель? и т.п. "плохие" сценарии...


    1. webzuweb
      25.02.2016 16:36

      На авось.
      Это первый вариант. Надеюсь с единомышленниками и силой сообщества.


  1. ffs
    25.02.2016 16:33

    Можно вспомнить статейку про восстановление каких-то данных, в которых оказался проект по защите акватории МР. А вдруг его реализовали и он эту вашу трубу торпедирует? Или абордажирует?
    На всякий случай при сборке используйте перчатки, чтобы пальчиков не оставлять =)


    1. webzuweb
      25.02.2016 16:35

      Я думал наоборот крупно на ней номер телефона написать как на коптерах.


  1. Barafu
    25.02.2016 16:44
    +8

    Делал по работе очень похожую штуку. Тело — труба высокого давления, на концах — литые заглушки (по форме, сделанной на 3Дпринтере). Вы упусттили самый главный прикол: двигатель ей не нужен, к тому же в вашей компоновке будут проблемы с управляемостью.
    Достаточно закрепить «рули» параллельно телу намертво, двигатель убрать, и придать всей конструкции ундулирующее движение (по синусу). Я уже запускал, десятки раз — скорость развивается такая, что пешком по берегу фиг догонишь.
    Поделюсь из опыта:
    * Придумайте систему отлипания от дна. Если сядет брюхом в ил, может намертво приклеится. Нужно или запас по силе всплытия, или буй какой-то.
    * Длинноволновый любительский радиомодем с усилителем ловит с глубины аж 15см. Вайфай — 5см. Не заморачивайтесь, ставьте роутер на борт. Есть роутеры 5х5 см.
    * Герметик продавит сразу, независимо от глубины. Из-за охлаждения воздуха внутри машины в ней падает давление, что добавляет разницу. Герметизировать надо от всей русской души. Ну или подогревать воздух внутри машины.
    * По электрическим проводам кроме тока прекрасно бежит вода. Прямо между жилами и оплёткой. Учитывать при попытке вынести что-либо наружу.
    * Какой, к чёрту, телефон? С карасями в Инстаграмм сниматься? BeagleBone + STM32 Discovery (с гироскопами) + голый GPS модуль если нужен. У нас питание — 30 18650х (не ржать — лежали без дела) и их хватало на 40 минут хода.


    1. Chalokian
      25.02.2016 16:51

      Герметик не продавит. Проверено на 3 итерациях устройств на глубинах до 14 метров. Хотя, смотря где его наносить, коненечно. Температурная разница давлений — ничто при 1бар на 1 метр погружения.


      1. Barafu
        25.02.2016 16:59
        +4

        Закручивал крышку на резьбу с резиновой прокладкой и замазывал стык герметиком. Протекло через 3 часа.


        1. Speccyfan
          25.02.2016 18:06
          +1

          Так вы заглушки именно печатали на 3D-принтере или форму только печатали? Если саму заглушку, то заполнение какое? Надо 100% заполнение и все равно может протекать, не герметик виноват, а слоеный платик. Я обмазываю все печатаные узлы эпоксидной смолой и все нормально.


          1. Barafu
            25.02.2016 20:15

            На 3Д принтере печатали шаблон, по нему делали форму, по ней лили однородный композит. Не скажу какой — у нас отдельный гуру этой темы есть.


            1. arheops
              26.02.2016 00:30

              может стоило сначала стандартную заглушку(она 3 атмосферы держит), а уж на нее потом печатать обтекатель?


    1. Lamaster
      25.02.2016 19:35

      Придумайте систему отлипания от дна.
      Если делать плавающий буй и тонкий проводок (опционально сматывающийся на буе) это может решить множество проблем, таких как: сигнал до подлодки, максимальная глубина, возможность вернуть всю конструкцию на берег, просто сплавав за ним, в случае поломки. А собствено что я предлагаю: за этот же провод можно вытянуть подлодку к бую на поверхность.


    1. Stalker_RED
      25.02.2016 19:54

      Подогревать воздух — очень затратно по энергии. Можно делать наддув CO2, Банальная сода+уксус.
      Кстати, для аварийной продувки тоже подойдет.


      1. Barafu
        25.02.2016 20:35

        Мы обошлись замороченной многослойной гидроизоляцией. Остальное — так, размышления.


  1. ffs
    25.02.2016 16:53

    придать всей конструкции ундулирующее движение (по синусу)

    Ещё сделать силиконовые голову, хвост и плавники, покрасить соответствующе — и можно летом повеселиться =)
    ps: промахнулся, ответ комментарию выше


    1. impetus
      26.02.2016 15:58

      Сопрут.


  1. syslinux
    25.02.2016 17:16

    Интересный проект. Также нужно учитывать что по Москве реке часто ходят судна. Как будете решать данный вопрос? Также все таки нужен какой то аварийный маяк в случае аварии.


  1. webzuweb
    25.02.2016 17:16

    Вопрос правильный, буду думать.


  1. magamos
    25.02.2016 17:44
    +1

    А не планируется с подводной лодки запуск пиротехнических ракетниц? Ну чтоб если запуталась, то могла сигнализировать о своем местонахождении. И чтоб как настоящая субмарина с ЯО.


    1. Oberon812
      25.02.2016 18:43
      +6

      Угу. "Вчера, около шести часов вечера, было совершено нападение на сотрудников государственной инспекции рыбоохраны, проводивших контрольный отлов рыбы в верхнем течении Москвы-реки. Неопознанный плавающий объект (замаскированный под отрез сантехнической трубы) запутал сети, повредил точное оборудование и обстрелял работников рыбнадзора миниатюрными ракетами, после чего скрылся в неизвестном направлении. Инспекторам оказана необходимая медицинская помощь, на месте работают следователи МВД и ФСБ, в районе объявлен план-перехват."


      1. poweruser
        26.02.2016 12:12

        а потом появятся слухи про токеретов…


  1. sirocco
    25.02.2016 18:14

    Читал тут где-то про автономные подводные лодки, которые переправляли наркоту. Интересно было как они сами путь находили. Глядя на Ваш проект многие тайны прояснятся)


    1. SLY_G
      25.02.2016 19:53

      У них и бюджет покрупнее будет.


    1. webzuweb
      25.02.2016 20:43
      +2

      Ссылка на пост. Я всегда думаю о инженерах, которые там работают. Кто это?
      Есть ли на GT кто-нибудь из Колумбии?


  1. gallifrey_university
    25.02.2016 19:03

    Нужно рассмотреть физическую сторону проекта. А то утонет (или унесёт течением) со всеми классными наработками


  1. retrograde
    25.02.2016 20:11

    По поводу регулирования плавучести была у меня идея:

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


    1. webzuweb
      25.02.2016 20:38

      В идеале лучше всего винт/гайка и большой шприц на 100-200 мл.
      Я пробовал 4 шприца по 20мл(самые большие, которые нашел в аптеке).
      Серво не справляется, решил идею отложить.


      1. arheops
        26.02.2016 00:32

        плавучесть просто должна быть позитивная с погружением рулями набегающим потоком


        1. webzuweb
          26.02.2016 00:34

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


          1. arheops
            26.02.2016 00:56

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


      1. impetus
        26.02.2016 16:06

        в "больших" батискафах тупо груз снаружи висит на элекромагните. нет питания — балласт сбросился, аппарат всплыл… Впрочем при прилипании к илу это не поможет


        1. Zenitchik
          26.02.2016 19:24
          +1

          Чтобы избежать прилипания к илу груз должен быть длинный и свободно свисатьвниз. Скажем, цепочка грузил на леске, прицепленной к гайке, а она уже удерживается эл.магнитом. Когда конец груза ляжет на дно, плавучесть начнёт возрастать, а скорость погружения снижаться, а при некоторой длине лежащей части груза будет достигнута нулевая плавучесть. Если при этом аппарат ещё не лёг в ил, то его освобождение не будет трудным.


  1. arheops
    25.02.2016 20:31
    +1

    валы герметизируются проще всего магнитными муфтами(вклееная заглушка из капролона или фторопласта — лучше 1мм капролона или стеклокомпозита и 0.1фторопласта с двух сторон, с двух сторон магниты неодимовые, к ним епоксидкой клеятся валы). необходимые магниты сейчас стоят по полдолара

    100% герметизацию можно сделать той же епоксидкой со стеклотканью(слой не меньше 1мм), в месте смены батарей — термоклеем из пистолета(слой не меньше 0.5см).

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


    1. BelBES
      25.02.2016 23:23

      Хм… а буй можно поместить в водоем без разрешения?


      1. arheops
        26.02.2016 00:15
        +1

        буй нельзя. а сверхмалое надводное судно включая модели(до 100л водоизмещения) — можно. но нельзя плыть по фарватеру, пересекать только под прямым углом и ОБЕСПЕЧИВАТЬ ВИДИМОСТЬ. в данном случае делаете буй в виде лодочки, часть лодочки тянущая под водой — не запрещается. и флажок для обеспечения видимости. в ночное время — нельзя.
        правда, есть еще правила на использование вайфай вне помещений.


        1. Chalokian
          26.02.2016 13:21

          Это вы описали правила для маломерных судов. В реальности лодки на МР даже не заметят модель и разнесут её винтами.


  1. jar_ohty
    25.02.2016 20:32

    [профдеформация]
    Без элементарного CTD такой девайс будет неполноценен.
    [/профдеформация]


  1. Terol
    25.02.2016 21:07
    +1

    Простите чайника, но для озвученной задачи почему это не плот (или катамаран-тримаран) с установаленными на дне несколькими эхолотами а по бокам ваидеокамерами?

    Эхолоты меряют дно (под несколькими углами), видеокамеры снимают берег.


    1. Barafu
      25.02.2016 22:13

      Стырят.


      1. EugeneButrik
        26.02.2016 05:34

        Да кто невзрачную конструкцию будет тырить-то на середине реки? :)
        Мне тоже кажется, что для данной задачи надводное судно наиболее предпочтительный вариант. Я бы рассмотрел вариант дрона с положительной плавучестью и балластной цистерной, в которой предусмотрен механизм с сервоприводом только для уменьшения её объёма, то есть только для затопления дрона. Вытеснение же воды из балластной цистерны (всплытие) должно осуществляться автоматически после отключения сервопривода за счёт, например, наличия пружины в этом самом механизме уменьшения объёма цистерны или за счёт эластичных элементов цистерны (это наверное самый трудный момент будет в этом варианте, но по-моему проще, чем предлагаемый автором способ погружения за счёт действия гидродинамических сил). Должен получиться этакий "нормально-плавающий" дрон. Если есть необходимость (например, по картинке с камер видно, что на дрон несётся какое-либо судно), то по команде активируется сервопривод и дрон уходит под воду. Далее, либо по обратной команде (если это возможно), либо по таймеру (да хоть по истощении батарей) вода из балластной цистерны вытесняется нормальным образом и дрон всплывает. В надводном же положении на дрон можно нацепить что угодно, хоть камеры, хоть солнечные панели, хоть антенны спутниковые :) Такой дрон-плот можно сделать даже без двигателей, свободно сплавляющимся по течению (но всё-таки умеющим "уворачиваться" от неприятностей).


        1. Zenitchik
          26.02.2016 14:31

          Электромагнит, который держит железный балласт. Сброс по истощению батарей. Классика.


          1. EugeneButrik
            26.02.2016 14:56

            Ну, на мой взгляд, такой одноразовый механизм скорее подошёл бы для аварийного всплытия. Да и будут проблемы с энергоснабжением такого электромагнита. Я имел в виду несколько другое.


            1. Zenitchik
              26.02.2016 19:29

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


              1. EugeneButrik
                26.02.2016 20:24

                Все "велосипеды" уже придуманы до нас :)


  1. Konachan700
    25.02.2016 21:48

    Для моря питание можно сделать полностью автономным, если хорошо оптимизировать энергопотребление.
    Вот тут я даже вопрос задавал: https://toster.ru/q/203389. Очень интересно было бы такое сделать, но пока моря рядом нет...


  1. Dmitry_Th
    25.02.2016 23:59

    А в каком диапазоне камера будет видеть в нашей мутной речной воде? ИК, УФ?


    1. Chalokian
      26.02.2016 13:18

      Ни в каком. Лучший спектр пропускания у воды в видимом спектре. Но в "мутной речной воде" свет рассеивается на частицах взвеси. Поэтому видно очень плохо.


      1. Red_Lion
        26.02.2016 14:31

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


        1. Chalokian
          26.02.2016 15:45
          +1

          Подводная подстветка должна, по-хорошему, делаться на вынесенных источниках света, для того чтобы не подсвечивать взвесь прямо перед объективом. Для предлагаемого размера устройства, подсветку достаточно вынести на 20-30 см и направить пучок света в метр впереди камеры. Это уже значительно улучшит качество изображения.


          1. Red_Lion
            26.02.2016 16:34
            +1

            Ну я в принципе это и имел ввиду:

            image
            Правда на предложенной схеме уже есть штанга, а не трос и есть плавник (чтобы защитить подсветку и иметь меньший шанс запутаться). Ну и штанга вместе с проводами подсветки выдернется из держателя (пружинный зажим?) как только аппарат за что-то тотально зацепиться.
            Направлено назад чтобы аппарат не "клевал носом" и обеспечить простое удаление штанги при ее зацеплении за счет двигателей ПА.


            1. impetus
              26.02.2016 17:24

              Если подсветку сделать автономной — батарейка + светодиод — то даже пусть она будет расходником при сильном запутывании. А если только SMD светодиод (серия, линейка, цепочка, гирлянда) на тоненькой удочке — то плавник не нужен и такое нереально опасно зацепить. Сложный вариант для понтов — удочка световодная с зеркальцем на конце, а светильник (лазер) в комле
              Хорошее годное решение.


              1. Red_Lion
                26.02.2016 22:38

                Стержень из оргстекла как световод, smd'шка в ПА?


  1. viktorkuk
    26.02.2016 00:30

    Я думаю это вас заинтересует. А насчёт герметизации движков и всего остального — заливайте plastic 71 и двигатели с контактами в том числе.


    1. viktorkuk
      26.02.2016 01:45

      Что-то ссылка отклеилась http://virt2real.ru/


  1. unwrecker
    26.02.2016 10:13

    А от кораблей как увёртываться?


  1. Tiberius
    26.02.2016 14:51

    Если будет интересно, то у нас в лаборатории (lepa.epfl.ch) реализуется проект по созданию робота-змеи, напичканного разными датчиками для отслеживания экологии и регистрации загрязнений. Проект на 3 лаборатории, в том числе и по mech.eng. nanoterra. Как говорится, велкам;)


    1. webzuweb
      26.02.2016 14:54

      Если это приглашение — то я уже собираю вещи.


      1. Tiberius
        26.02.2016 16:14

        Наконец-то, добрался до компьюетра нормального: вот ссылка на проект.
        Скажем так, это приглашение для изучения возможностей по внедрению данного робота для полезных целей, а остальное всегда зависит от Вас!;)


        1. webzuweb
          26.02.2016 16:17
          +1

          Merci beaucoup!


  1. mihmig
    26.02.2016 16:24

    А у меня вот какой вопрос: а велик ли "оверхед" при использовании SL4A?
    Если потребление энергии/скорость работы изменится не более чем в 2 раза по сравнению с java-байт кодом — то открывается много возможностей!
    Особенно было бы удобно отлаживать скрипты прямо с компа...


  1. Red_Lion
    27.02.2016 00:15

    Про герметизацию валя винта — можно использовать как сальники автомобильные маслосьемные колпачки грм. Конструкция уплотнителя будет простой — трубка забитая консистеной смазкой (можно сделать сбоку отверстие для заполнения), с обоих сторон колпачки, внутри проходит вал.


    1. Chalokian
      03.03.2016 08:50

      Если на глубине до 1-2 метров этого и хватит, то, думаю, для глубин 10 метров такая герметизация не справится.


  1. dhtml
    27.02.2016 14:57

    интересный проект. а если ещё камеру заделать и купальшиков снимать?


  1. mehos
    29.02.2016 00:45

    У меня давно зреет идея создания плавающей лодки на солнечных бетареях и отправки ее в кругосветку, с отслеживанием он-лайн)


  1. DIHALT
    29.02.2016 21:54

    Как будет загерметизированы двигатели и вообще вся механика? Самая главная проблема подводных лодок именно в этом.