Поддержание высоты камеры при движении (заданной высоты)

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
Всем привет, прикрепил изображение-схему того что необходимо реализовать
Уже сломал голову как это реализовать.
Суть задачи:
есть робот с камерой
камера закреплена на оси Z
робот движется по неровной поверхности
и необходимо компенсировать эти неровности путем поднятия/опускания камеры по оси Z

На каких комплектующих ардуино это можно реализовать?
В какую сторону копать в поисках, буду рад любой помощи, любому совету!
Ни как не могу сам победить эту задачу.
 

Вложения

Старик Похабыч

★★★★★★★
14 Авг 2019
4,242
1,297
Москва
1) вычислять абсолютное значение высоты над уровнем моря. различные датчики давления. Но точность дешевых так себе. Со временем будет уползать показание. BME и нечто похожее.
2) GPS приемник. Опять же вычислять высоту. Но он получает значения раз в секунду, думаю этого маловато будет.
3) теоретически можно попробовать на MPU6050, но математика будет сложной. Ловить изменения ускорений и повороты, вычислять скорости и рассчитывать смещения
 

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
1) вычислять абсолютное значение высоты над уровнем моря. различные датчики давления. Но точность дешевых так себе. Со временем будет уползать показание. BME и нечто похожее.
2) GPS приемник. Опять же вычислять высоту. Но он получает значения раз в секунду, думаю этого маловато будет.
3) теоретически можно попробовать на MPU6050, но математика будет сложной. Ловить изменения ускорений и повороты, вычислять скорости и рассчитывать смещения
поскольку работа в помещении, то идеальным будет 3 вариант.
но с моим уровнем знаний это не реализовать
не знаете к кому обратиться ил где искать способ реализации
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
Если речь о площадке типа такой, что изображена на рисунке, задача разделяется как минимум на две:
  • сохранение горизонтальности установки камеры (и вот эта задача тоже может разделяться на две оси: по ходу движения и перпендикулярно ему);
  • сохранение высоты установки камеры.
Первая задача, скорее всего, легче решается гироскопами и свободной подвеской в этих осях.
Вторая задача - гораздо сложнее. Смещение камеры, как я понимаю, не настолько велико, чтобы это достоверно можно было бы "поймать" по измерению давления или GPS. Я предполагаю, что лобовое решение проблемы - анализ изображения с камеры и коррекция по типу компенсации дрожания в современных видеокамерах. Это - довольно дорогие сенсоры, да и результат там не самый удобный в использовании. Если точности большой не надо, то акселерометр с инклинометром также может решить эту задачу. Если есть возможность подсветить объект, на который направлена камера, то можно попробовать реализовать тот же принцип, что используется в компьютерной мышке.
 

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
Если речь о площадке типа такой, что изображена на рисунке, задача разделяется как минимум на две:
  • сохранение горизонтальности установки камеры (и вот эта задача тоже может разделяться на две оси: по ходу движения и перпендикулярно ему);
  • сохранение высоты установки камеры.
Первая задача, скорее всего, легче решается гироскопами и свободной подвеской в этих осях.
Вторая задача - гораздо сложнее. Смещение камеры, как я понимаю, не настолько велико, чтобы это достоверно можно было бы "поймать" по измерению давления или GPS. Я предполагаю, что лобовое решение проблемы - анализ изображения с камеры и коррекция по типу компенсации дрожания в современных видеокамерах. Это - довольно дорогие сенсоры, да и результат там не самый удобный в использовании. Если точности большой не надо, то акселерометр с инклинометром также может решить эту задачу. Если есть возможность подсветить объект, на который направлена камера, то можно попробовать реализовать тот же принцип, что используется в компьютерной мышке.
сохранение горизонтальности уже есть мысли как реализовать
а вот по сохранении высоты, есть задача сделать максимально точной поддержание высоты +-1мм
 

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
Думаю, единственный способ - анализ изображения, пусть и размытого. На Ардуино это не сделать, нужно что-то помощнее.
а если на основании гироскопа? изменения угла и пройденный путь, и соответственно компенсация изменений
 

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
зная эти значения\отклонения от 0 можно регулировать высоту камеры?

Произошел наклон вперед, загорелся светодиод, сработал мотор-компенсировал отклонение, светодиод потух.
 

poty

★★★★★★✩
19 Фев 2020
3,218
937
Можно, но не с такой точностью, как Вы хотите. Первая проблема - точность самого инклинометра.
Если "неровности" не специально подготовлены, изменения угла не будут постоянными и вычисления быстро превращаются в довольно объемные вычисления с плавающей точкой и накапливающийся ошибкой.
Отдельная проблема - измерение пройденного горизонтального расстояния с высокой точностью. Если тележка опирается на поверхность плоскостью или имеет два трека, обязательно будет разность в пути между левой и правой стороной тележки (или нужно будет вычислять горизонтальное смещение, при этом учитывая боковое и вертикальное смещения тоже). В своё время я этим занимался и алгоритмы там непростые. Но всё возможно, конечно.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,242
1,297
Москва
Перемещение камеры в каком диапазоне ? Если считать потолок ровным и до 4 метров, то к примеру высоту определять по ультразвковому дальномеру
Опять же из вопрошающего приходиться силком вытягивать подробности... Может сразу паяльник ему ? :)
 

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
Перемещение камеры в каком диапазоне ? Если считать потолок ровным и до 4 метров, то к примеру высоту определять по ультразвковому дальномеру
Опять же из вопрошающего приходиться силком вытягивать подробности... Может сразу паяльник ему ? :)
Хорошее предложение по паяльнику, я просто не знаю что конкретно может потребоваться для реализации и поэтому не знаю что сказать.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,242
1,297
Москва
Чем больше подробностей будет тем проще отвечать. Но про высоту потолка, его ровность, и величину перемещения я ответов не увидел.
Опять же .. камера едет только в одном направлении или обратно тоже ? Направление строго прямая линия или с поворотами ? Траектория постоянная или может меняться ?
 

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
Чем больше подробностей будет тем проще отвечать. Но про высоту потолка, его ровность, и величину перемещения я ответов не увидел.
Потолок не достаточно ровный для ориентира+ различные помещения использования.
Основная суть задачи, необходимо поддерживать заданную высоту камеры относительно 0 точки отсчета при перемещении вперед. уклон до 5см. точность необходима максимально возможная, платформа на гусеницах.

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

Старик Похабыч

★★★★★★★
14 Авг 2019
4,242
1,297
Москва
в целом V=V0+dt*A , dt имеется, А не совсем. начальное ускорение 0. Акселерометр будет ловить изменение ускорения, у него там вроде 1000 раз в сек точно можно. Что то и больше. Надо документацию смотреть. Соотв. вычисляется вертикальная скорость. А уже из скорости посчитать расстояние не сложно.
 

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
в целом V=V0+dt*A , dt имеется, А не совсем. начальное ускорение 0. Акселерометр будет ловить изменение ускорения, у него там вроде 1000 раз в сек точно можно. Что то и больше. Надо документацию смотреть. Соотв. вычисляется вертикальная скорость. А уже из скорости посчитать расстояние не сложно.
Спасибо, это отлично, что возможно реализовать. Но я честно скажу, я сам не смогу
Я по механике, а вот с программированием на вы(
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,242
1,297
Москва
Это даже не программирование, это физика, равноускоренное движение. Тут программист может не справиться - не все такую физику помнят. Я например тоже плохо помню. Понимаю, что надо как то переходить к мгновенным скоростям и считать что за отрезок времени dt скорость была постоянной.
 

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
Это даже не программирование, это физика, равноускоренное движение. Тут программист может не справиться - не все такую физику помнят. Я например тоже плохо помню. Понимаю, что надо как то переходить к мгновенным скоростям и считать что за отрезок времени dt скорость была постоянной.
Как мне найти человека который поможет реализовать данную задачу. Я знаю суть задачи, но не понимаю метод реализации
 

bort707

★★★★★★✩
21 Сен 2020
3,044
909
Понимаю, что надо как то переходить к мгновенным скоростям и считать что за отрезок времени dt скорость была постоянной.
считать-то как раз не проблема, обыкновенное цифровое интегрирование. Вопрос в другом - откуда вы скорость и ускорение собираетесь получить с необходимой точностью? Акселерометр в условиях движущейся гусеничной платформы даст одни шумы...как мне кажется, абсолютно не пригодные для подсчета суммарного перемещения.

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

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
считать-то как раз не проблема, обыкновенное цифровое интегрирование. Вопрос в другом - откуда вы скорость и ускорение собираетесь получить с подобной точностью? никакой акселерометр вам этого не даст, кмк

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

poty

★★★★★★✩
19 Фев 2020
3,218
937
Если робот будет двигаться заданными шагами? Всегда с одной скоростью и проходить одно расстояние
При движении по пересечённой местности такого не будет. Линейное движение гусениц будет переходить в трёхосное перемещение. Нужно будет считать по трём осям + делать проекцию этих перемещений на ось Z, чтобы определить истинное смещение по высоте.
И я бы не был так уверен, что Вы сможете адекватно смещать камеру на нужное расстояние. Инерция, упругость крепежа, деформация корпуса, прогиб гусеницы.... Эту задачу решают военные при управлении беспилотниками и всякими ракетами управляемыми, и алгоритмы там - ой какие непростые!
 

bort707

★★★★★★✩
21 Сен 2020
3,044
909
Если робот будет двигаться заданными шагами? Всегда с одной скоростью и проходить одно расстояние
Вас же не горизонтальное перемещение интересует, а вертикальное? - какая разница. одинаковые у него шаги или нет...это не сильно помогает.
 
Изменено:

Dmitry 1

✩✩✩✩✩✩✩
9 Окт 2020
13
0
При движении по пересечённой местности такого не будет. Линейное движение гусениц будет переходить в трёхосное перемещение. Нужно будет считать по трём осям + делать проекцию этих перемещений на ось Z, чтобы определить истинное смещение по высоте.
И я бы не был так уверен, что Вы сможете адекватно смещать камеру на нужное расстояние. Инерция, упругость крепежа, деформация корпуса, прогиб гусеницы.... Эту задачу решают военные при управлении беспилотниками и всякими ракетами управляемыми, и алгоритмы там - ой какие непростые!
Движение будет внутри помещения, а уклон общей плоскости на длину 5-10 метров до 5 см

Вас же не горизонтальное перемещение интересует, а вертикальное? - какая разница. одинаковые у него шаги или нет...это не сильно помогает.
Как я это предполагаю: датчик измеряет на какой градус отклонился горизонт, известен путь пройденный с данным отклонением, предположим 1 оборот шагового двигателя, и опытным путём найти взаимосвязь и задать условие Ардуино, например 1 градус отклонения от горизонта равен ХХ миллиметрам на оси z, производить движение циклами. Где я ошибаюсь?
 

bort707

★★★★★★✩
21 Сен 2020
3,044
909
Как я это предполагаю: датчик измеряет на какой градус отклонился горизонт, известен путь пройденный с данным отклонением, предположим 1 оборот шагового двигателя,
пока примерно так
опытным путём найти взаимосвязь и задать условие Ардуино, например 1 градус отклонения от горизонта равен ХХ миллиметрам на оси z, производить движение циклами.
это все лишнее.

Вместо этого с хорошей частотой (10-100-1000 раз в секунду) измеряем угол и горизонтальное перемещение, усредняем данные и по формулам школьной геометрии получаем перемещение по вертикали за единицу времени. Шаг усреднения придется подобрать - это всегда компромисс между подавлением шумов и быстрым откликом на изменения

И не имеет никакого значения, двигается ли робот равными шагами или нет.

Весь вопрос в том, позволит ли инклинометр получить достаточно устойчивые данные, чтобы обеспечить нужную точность.
 
Изменено:

poty

★★★★★★✩
19 Фев 2020
3,218
937
Почему Вы учитываете только наклон по ходу движения? Пол имеет наклон только в одном направлении? (рассчитываемо, дополнительные вычисления)
Пол идеально ровный? Т.е., не будет локальных "возмущений" на пути к заветным 5 см?(снижение скорости)
5см на 5м - это угол 34". Сравните с одним из вариантов инклинометров. (особенно обратите внимание на частоту показаний для обеспечения такой точности)
На какой высоте подвешена камера? Наклон в любом направлении будет давать изменение в высоте, пропорциональное этой самой высоте. (рассчитываемо, дополнительные вычисления)
Каким образом будут демпфироваться точным образом вибрации от двигателя, передачи, упругости колёс/гусениц... (решаемо, но ценой снижения скорости)

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