Подвес для съёмки 360-градусных панорам на Xiaomi Yi


Летаю на 450-м квадрокоптере с Xiaomi Yi. Пришла идея собрать подвес, автоматизирующий съёмку сферических панорам с высоты. Пока продумываю его конструкцию и буду рад любой критике.

Принцип действия предполагается такой:

  1. По команде с пульта подвес, закреплённый между шасси, опускается вниз. Камера смотрит вперёд.
  2. Камера поворачивается в горизонтальной плоскости и делает три кадра, поворачиваясь на -60, 0 и 60 градусов.
  3. Камера поворачивается в вертикальной плоскости на 90 градусов вниз и снимает надир.
  4. Камера поворачивается в вертикальной плоскости ещё на 90 градусов дальше (на 180 градусов относительно первоначального положения и снимает ещё три кадра на -60, 0 и 60 градусов в противоположную сторону.
  5. Подвес уезжает вверх под шасси коптера.

Благодаря такой штуке не придётся вручную крутить коптер и наклонять камеру, чтоб отснять все кадры. Достаточно будет лишь подвесить коптер в точке и переключить тумблер на пульте. Всё остальное сделается автоматически за 7-8 секунд. Камеру хочу расположить вертикально, чтобы захватить высокие здания и деревья и больше неба. Детали планирую вырезать из 1 мм стеклотекстолита на ЧПУ.

С электроникой проблем не возникнет, всё легко реализуется на самой маленькой и простой Arduino. А вот с механикой у меня, возможно, будут сложности.

Главная сложность - сделать подвес убирающимся. Вижу два варианта. Первый - подвес поворачивается на более мощной серве и выезжает из пространства между шасси. Пока что смутно представляю себе, как это сделать. Второй вариант - делать убирающиеся шасси (ретракты), но это усложнит и утяжелит коптер. Сейчас у меня стоят шасси от Фантома. Есть и третий вариант - взлетать и садиться в ведро)

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

  • 2946
Comments
fidller

подвес на сервах?) сейчас же не 2012 год) Эй, бк победили мир)

AlexeyStn

Победили, конечно, но эта штука делается исключительно для фото. Как захочется поснимать кино, сразу же закажу подвес на бесколлекторниках. Сейчас задача - просто прокрутить камеру вокруг осей и нащёлкать кадров для панорамы.

JURIS

Очень хорошо .

AndyGr

А как Вы планируйте реализовать спуск затвора?

По поводу “ведра”. Можно сделать не убирающийся подвес, а убирающиеся ноги. Есть даже уже заводские ретраки для рам типа Tarrot 680.

Я летаю вообще без “ног”. Взлетаю с руки и сажусь в руки.

Covax
fidller;bt141813

подвес на сервах?) сейчас же не 2012 год) Эй, бк победили мир)

Что бы мы без вас делали)

Covax

Алексей, два вопроса:

  1. подвесик уже рабочий и снимает? если нет, пересмотрите узел крепления всей этой штуки к верхней серве. Будет вибировать и джиттерить только так. Делать надо не проще, как серву по роллу, и даже еще жестче и надежней.
  2. вы все вручную собираетесь вращать, или будете в дальнейщем контроллер делать, для автоматического поворота?
AlexeyStn
AndyGr;bt141819

А как Вы планируйте реализовать спуск затвора?

Подпаяться к кнопке через транзистор или оптопару. Примерно так.
Таротовские ретракты тяжеловаты для 450-й рамы (точнее даже 420-й). Может, кому-то попадались более миниатюрные ретракты? Готовые или самодельные.

AlexeyStn
Covax;bt141822

Алексей, два вопроса:

  1. подвесик уже рабочий и снимает? если нет, пересмотрите узел крепления всей этой штуки к верхней серве. Будет вибировать и джиттерить только так. Делать надо не проще, как серву по роллу, и даже еще жестче и надежней.
  2. вы все вручную собираетесь вращать, или будете в дальнейщем контроллер делать, для автоматического поворота?
  1. Подвес ещё пока только в виде чертежей. Наверное, стоит сделать ось, а не просто прикрутить к серве. Или даже использовать небольшие подшипники. Спасибо.
  2. Вращаться будет автоматически, для этого всё и делается.
alexeykozin

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

код ардуино

#include <Servo.h>

Servo xservo; //pitch servo
Servo zservo; //heading unlimited rotation servo
Servo sservo; //сервовыход управления спуском затвора

volatile unsigned long  StartTime = millis();
volatile unsigned long  Pulse;
volatile int  Mode=1; // 1 to 6 0 - pwm out of range and  six modes
volatile int  OldMode;
volatile int  OldModePulses;
static int ModeRanges[8];

const int zSteps = 9; //количество шагов по курсу 20*550 это 360
const long zStepTime = 1080; //Время необходимое z серве на шаг  // 10 * 1080


const int ShutterPin = 9; //цифровой пин к которому подключен спуск фотоаппарата
const int ShutterTime=200; //Время нажатия кнопки спуск
const int BtnPin = 14; //кнопка

int zServoMax =60; //скорость движения z серво
int zServoTrim =10; //триммер останова z серво
int zServoRev =140; //реверс z серво


int xServoMax =80; //расходы x серво
int xServoMin =128; //116 = 15град 128 горизонт
int xServoNadir =48;

int sServoMax =120; //расходы сервовыхода кнопки "съемка"
int sServoMin =40; //




int PitchDelay =600; //время в миллисекундах требуемое на перевод сервы в противоположное положение и успокоение подвеса
int ShotDelay =300; //время в миллисекундах требуемое на снимок



int HEADMODENONE  = 0;
int HEADMODEDOPAN = 1;
int HEADMODE = HEADMODENONE;

//переменные
 long  ZTimeCur = 0; //текущее время работы z сервы, угол

int pos = 0;
void setup()
{
//under
ModeRanges[1] = 1100;
ModeRanges[2] = 1300;
ModeRanges[3] = 1500;
ModeRanges[4] = 1700;
ModeRanges[5] = 1900;
ModeRanges[6] = 2100;

HEADMODE = HEADMODENONE;


pinMode (ShutterPin, OUTPUT);
digitalWrite (ShutterPin, LOW);

pinMode (BtnPin, INPUT);
digitalWrite (BtnPin, HIGH);

xservo.attach(8);  // attaches the servo on pin 8 to the servo object
zservo.attach(7);  // attaches the servo on pin 9 to the servo object
sservo.attach(6);

zservo.write(zServoTrim);
xservo.write(xServoMin);
sservo.write(sServoMin);





 attachInterrupt(1, ch_state, CHANGE);  //two external interrupts: numbers 0 (on digital pin 2) and 1 (on digital pin 3). may be used for inerrupt
  Serial.begin(115200);
}

void loop()
{
("Mode:");
(Mode, DEC);
(" Pulse:");
(Pulse, DEC);

if (digitalRead(BtnPin) == 0)
    HEADMODE = HEADMODEDOPAN;


if (HEADMODE == HEADMODEDOPAN)
    {DOPAN();}



}

void ch_state()
{
unsigned long  CurTime = micros();
bool state = digitalRead(3);
if (state==LOW && CurTime > StartTime)
{
 Pulse = CurTime - StartTime;
 checkMode();
}
else
 StartTime = CurTime;
}

void checkMode()
{
int NewMode =1;
for (int i=1 ; i <= 6; i++)
{
  if (Pulse < ModeRanges[i] )   { NewMode = i;    break;  }
}
if (Pulse > ModeRanges[6] + 200)    NewMode = 1;
setMode(NewMode);
//Mode = NewMode;
}

void setMode(int NewMode) //check for pulse range 25 times in some range before switch
{
if (OldMode != NewMode)
{   OldModePulses = 0;
    OldMode = NewMode;  }
    else
    OldModePulses = OldModePulses + 1;

if  (OldModePulses >= 25)
{    Mode = NewMode;
     OldModePulses = 25;
     ModeChanged();
                      }
}

void ModeChanged()
{
if (Mode > 3 )  //transmitter 1 power on else transmitter 2 power on
//start panoramic cycle
HEADMODE = HEADMODEDOPAN;


//   else

}

void DOPAN()
{


(xServoNadir); // надирный снимок
//delay(PitchDelay);
//DOSHOT();

xservo.write(xServoMin);
delay(ShotDelay);
DOSHOT();

for (int zStepCur=1; zStepCur<=zSteps;zStepCur++)
    {
    DOPITCHSTEP(zStepCur);
    zservo.write(zServoMax);
    delay(zStepTime);
    zservo.write(zServoTrim);
    }

DOPITCHSTEP(zSteps +1);
zservo.write(zServoTrim);
xservo.write(xServoMin);

//реверс
    zservo.write(zServoRev);
    delay(zStepTime * zSteps * 98 / 100);  //реверс без остановок, без учета разгона чуть меньше
    zservo.write(zServoTrim);


HEADMODE = HEADMODENONE;
}


void DOPITCHSTEP(int zStepCur ) {} // заглушка без питча и снимков


void DOPITCHSTEP_OLD(int zStepCur )
{
DOSHOT();
if ((zStepCur%2)==0) //четные шаги переводим питч вверх нечетные вниз
 { xservo.write(xServoMin);

 }
  else
 {
  xservo.write(xServoMax);

 }

delay(PitchDelay);
DOSHOT();



}


void DOSHOT()
{
digitalWrite (ShutterPin, HIGH);
sservo.write(sServoMax);
delay(ShutterTime); //нажатие кнопки спуск
digitalWrite (ShutterPin, LOW);
sservo.write(sServoMin);
delay(ShotDelay);
}
Covax

Алексей респект!

Sir_Alex

Меня иногда просят снять 360 панорамы, вращая коптер не получается удерживать его в одной точке (что плохо влияет на конечный результат), поэтому захотелось то же сделать 3х осевой подвес под GoPro.

Но у меня уже есть 2х осевой подвес и плата расширения с мотором под 8битный alexmos. Теперь ломаю голову, как сделать третью ось на 360 градусов… (толи всё что надо вместе с батарейкой крепить к подвесу, что бы с рамой не было никакой связи, то ли размещать часть оборудования на самой раме, но тогда из за проводов не получится сделать тру 360 подвес…)

P.S. Читая ветку про AlexMos контроллер, видел что кто то пытался макросы использовать для съемки панорам.

P.P.S. Пока искал инфу по таким подвесам, наткнулся на вот такой: coptertime.ru/copters/gimbal/arrisgopro/ обратите внимание на вторую фотку, там некий специфичный мотор для оси YAW, где провода проходят через ось, интересно они там внутри развязаны или просто проходят насквозь мотора?

camanis

там контактные кольца, очень удобная штука, никакие провода не мешают

подвесы у arres очень не плохие, у меня под сони некс. Спас мне камеру при падении.

AlexeyStn
alexeykozin

вот есть заготовка - вдруг пригодится.

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

alexeykozin

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

masonx
alexeykozin;bt141865

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

это уже костыль )

P/S: снимаем часто паны с гоу про, проблем с кручением коптера по оси нет) Раньше тоже была идея сделать подобный подвес, надобность отпала после того когда поняли что количество кадров для панорам всегда нужно разное в зависимости от обстоятельств и требований.

Игорь_Котельников

Для съемок 360 все это не нужно.
Наклоняя камеру Вы заполняете кадр коптером и стробом винтов. Камера должна быть установлена один раз по коптеру.
Тем более для ФОТО.

Я говорю об использовании специализированных камер и объективов. То есть один спуск - одна панорама 360’.
Если Вы называете то, что на картинке камерой для панорамы 360, то тут явно что то не так. Панорама - может быть, но 360 как бы я ХЗ.
Попробуйте прогуглить Samsung Gear 360, или еще лучше для Ваших условий Nikon Key Mission 360.

masonx
Игорь Котельников;bt154630

Для съемок 360 все это не нужно.
Наклоняя камеру Вы заполняете кадр коптером и стробом винтов. Камера должна быть установлена один раз по коптеру.
Тем более для ФОТО.

Я говорю об использовании специализированных камер и объективов. То есть один спуск - одна панорама 360’.
Если Вы называете то, что на картинке камерой для панорамы 360, то тут явно что то не так. Панорама - может быть, но 360 как бы я ХЗ.
Попробуйте прогуглить Samsung Gear 360, или еще лучше для Ваших условий Nikon Key Mission 360.

снято на гоу про 3 black и двух осевой подвес. jpstudio.ru/pano/spb_admiralty_island/

Игорь_Котельников

Что бы избежать коптера в кадре 360 камеру выносят на мол метра - метр вниз. Ни каких шасси в этих условиях обычно не рассматривают. Взлет и посадка с рук и в руки.

Игорь_Котельников

Артем, зачот. Сдаюсь.
Представляю, сколько труда вложено!

masonx

Зачем небо снимать? А главное смысл? Все решается в пост обработке легко и быстро.

Игорь_Котельников

Вот тест Никон. Думаю это проще.

masonx
Игорь Котельников;bt154633

Артем, зачот. Сдаюсь.
Представляю, сколько труда вложено!

1panorama.ru/user/profile/index/id/1291 Вот тут много всего нашего. В основном все на gopro снято было )

Труда много вот тут было, чтоб что то приличное получилось ибо условия съемки, ну ни как не способствовали
1panorama.ru/…/pamyatnik-alyosha-panorama3236

Игорь_Котельников

Вот тест Никон. - просто выложи файл

masonx
Игорь Котельников;bt154635

Test 360 222

Вот тест Никон. Думаю это проще.

Вот видео 360 да, надо вниз тянуть от коптера. самсунг Геар или кодак идеально для таких сьемок) Для фото 360 у нас такой коптер был 81.img.avito.st/640x480/3091096581.jpg он взлетал и садился в руку, подвес впереди был на трубках, ну а сейчас все проще, сейчас инспаир, мавик и фантик есть для этого.

Игорь_Котельников

Для Фантика 4 можно напечатать подвес.