Vídeos de vôo com telemetria


ImageClick for English version.

A parte da edição do vídeo

Tomou-me aproximadamente 18 horas de trabalho para levar do estado onde eu não sabia nada até o estado atual: eu estava muito curioso para saber como fazer, após ver um vídeo da Garmin (aqueles caras do GPS). Eles criaram um software que anexa os metadados dos arquivos da câmera no vídeo final. Isso foi uma coisa que eu sempre quis fazer porque assistir aos vídeos com esses dados depois me faz ver quais são os reflexos que a direção do drone causam no vídeo (é como ver você mesmo apresentando algo).

Eu entrei no Mavic Pilots, vi alguns posts de telemetria e vi que alguns caras de lá usam um software pra Windows chamado Dashware, que infelizmente só roda em Windows. Sem problemas: particionei meu Mac com BootCamp, instalei Windows 10 numa partição separada e o instalei o tal do Dashware. Acontece que os caras da GoPro compraram a Dashware e eu acho que eles contrataram os desenvolvedores para fazer algo para o drone deles - o GoPro Karma. Então o suporte do Dashware parou há um tempo atrás e atualmente o software se encontra num estado meio lastimável de bugs e cracas as quais você precisa remover algumas DLLs, se fuder com codecs e fazer uma certa magia negra pra funcionar, a parte ruim do Dashware é que mesmo caso ele funcione, ele só suporta 1080p. Teve um dia que eram por volta de 2 da manhã, eu perdi 2 horas fazendo os ponteiros e velocímetros e com um projeto não salvo o software trava quando eu tento renderizar, me lembrando os tempos onde eu perdia horas de trabalho por causa de softwares que travavam na década de 90.

Bom, após perder cerca de 8 horas com o Dashware e tentando fazer ele funcionar na minha máquina Windows, eu desisti e passei alguns dias pesquisando se havia alguma outra maneira de colocar a bendita telemetria nos arquivos de vídeo - é uma coisa que não deveria ser difíil. Então eu descobri um novo software chamado RaceRender, vi alguns vídeos no YouTube de alguns caras que usaram esse software, escrevi pra eles, adicionei no Facebook, troquei experiências - um deles é um professor de matemática chamado Robert que me ajudou bastante na minha jornada pelos gauges, ele compartilhou comigo o template dele (que por sinal é incrível e contém muitas informações, mas eu ainda achava que era capaz de fazer algo do zero.

Como um primeiro teste, eu cheguei no resultado abaixo. Eu tava muito feliz com o software mas não queria começar a fazer o design dos ponteiros sem ter certeza que o software não iria travar me fazendo perder valiosas horas de trabalho, como Dashware. Eu vi que o RaceRender era muito estável e o framerate também era muito bom, dessa maneira eu senti confiança para continuar “perdendo meu tempo”. Porque uma coisa é quando você trabalha no software de edição de vídeo, outra coisa é quando você renderiza o vídeo e vê o trabalho final. A telemetria no vídeo abaixo começa aos 0:10.

A idéia desse vídeo era somente checar o poder do RaceRender, os ponteiros não estão tão bonitos, para ver o resultado final que eu consegui chegar, continue lendo.

Então eu estava decidido, com os resultados acima eu comprei o RaceRender ($50) e comecei o desenvolvimento do layout dos gauges. O sofrware é um daqueles softwares em Java que tem a interface feia, é para uso profissional e lembra um pouco o Final Cut Pro antes do refactoring da UI feita pela Apple, mas o que importa é que o software permite 100% de customização dos ponteiros e gauges que você cria, você pode até mesmo ter acesso ao código fonte dos gauges para deixar do jeitinho que você quiser - totalmente formidável para mim.

Image

Ontem eu passei por volta de 6 horas trabalhando no layout dos gauges e indicadores para mostrar no vídeo, eles têm cores diferentes, formas diferentes e mudam de cor de acordo com o valor da medição. Inicialmente eu criei um vídeo verde limão no Final Cut Pro pra usar como o canal do Chroma Key, e usei esse vídeo como background no RaceRender para ter os gauges em cima dele, então exportei o vídeo verde com os gauges em cima para usar meu vídeo original no FCPX por detrás do Chroma Key e ativar o canal verde, mas alguns gauges (todos) possuiam transparência, a qual eu não queria abrir mão, e essa transparência acabava injetando conteúdo verde nos gauges. Acabou que eu desisti da idéia de fazer com Chroma Key e o que fiz foi editar o vídeo por completo no FCPX pra então pegar o arquivo e colocar no RaceRender, usando sua própria ferramenta de sync entre o meu arquivo editado no FCPX e os gauges - sem chroma key :(

A parte boa do RaceRender é que, como eu disse acima, é totalmente customizável, eu peguei o ícone de uma bússola de um Cessna, joguei no Photoshop e criei o instrumento de bússola no RaceRender, rotacionando o avião de acordo com a orientação do drone.

Até que meu amigo Bruno me deu a sugestão pra substituir o ícone do Cessna pelo ícone do Mavic, ok!

E o resultado final do gauge no vídeo, fica maravilhoso:

A parte do drone:

Ok, a essa altura você deve estar se perguntando como eu faço para obter as informações do vôo para colocar no vídeo, certo?

O drone manda as informações do vôo para o DJI Go mobile app, e é por ele que você pode obter o arquivo com os dados da telemetria, você pode achar essa informação em Flight Records, no aplicativo pra celular da DJI, e rola de exportar esse arquivo. Tem uma opção “export” no DJI Mobile App que salva as informações na pasta do telefone, daí você pode pegar esse arquivo manualmente com o iTunes plugando um cabo USB, o que dá muito trabalho. Ou você pode usar um outro app chamado HDSync, disponível pra iPhone e Android, nesse App você coloca suas credenciais de login da DJI e faz o upload dos logs de vôo direto da cloud da DJI pra um site chamado healthydrones.com, que foi comprado pela empresa AirData.

AirData é um site muito interessante que te dá estatísticas sobre os seus vôos usando dados coletados pelo DJI Go App. Esse site permite que você baixe os arquivos CSV que contém os dados dos seus vôos (aqueles que foram exportados seguindo as instruções do parágrafo acima). E adivinha? O RaceRender aceita esses arquivos CSV como input, que contém todos os dados do vôo. Então com esse arquivo CSV contendo os dados do vôo (também conhecido como “Telemetria”), eu carrego no RaceRender junto com o meu arquivo de vídeo. O RaceRender também tem uma ferramenta dentro dele próprio pra fazer a sincronia entre o arquivo de telemetria e o vídeo.

Então, o resumo das ferramentas:

O RaceRender tem um editor gráfico dos ponteiros e medidores que ajudam bastante no desenvolvimento das peças. Essa imagem abaixo é de quando eu estava desenvolvendo o indicador de bateria - foi desafiador porque as medições nesse caso são decrescentes: de 100 pra 0, e não de 0 pra 100.

Image

Uma coisa boa do RaceRender é que ele suporta vídeos 4K e peças de alta definição também. Meu MacBook pessoal é um MacBook Pro 2.7Ghz 16GB RAM 512SSD, comprado em 2013, e levou aproximadamente 40 minutos para renderizar um vídeo 4K com 18 minutos de duração - nada mal. Mas eu tô curioso pra saber quanto tempo isso levaria para rodar numa instância p2.16xlarge da AWS, que tem umas placas de vídeo NVidia Tesla, mas a instância custa $16 por hora e não quero/posso usar minha conta de funcionário para esses propósitos, então rodei no meu MacBook mesmo :)

Curiosidades extras

Eu também descobri que nossos drones Mavic Pro tem um OUTRO cartão micro-SD dentro. É um cartão de 4GB COLADO na placa-mãe do drone, que a DJI usa pra gravar informações dos vôos. Esses são arquivos binários e você pode usar um aplicativo de linha de comando pra ler esses arquivos e exportar o CSV. Esse cartão interno é como se fosse a caixa preta do drone e esses arquivos DAT contém TODAS as informações dos vôos. São arquivos grandes e só pra você ter uma idéia 20 minutos de vôo te dão um arquivo de 400MB. Esses arquivos são melhores do que os arquivos enviados para o DJI Go porque eles contém todas as informações, o DJI Go App roda no seu celular e se o drone perder sinal com o rádio por exemplo, você perde informações, mas se você tiver LightBridge durante o vôo inteiro (conexão com o rádio), você pode seguramente confiar no arquivo de “caixa preta” que o App pra celular te dá.

O resultado final

Finalmente, após algumas horas de trabalho, eu fiz um vídeo de Hoboken a Manhattan (NYC), com Telemetria agregada, dá uma olhada em como ficou legal.

Minha interface possui as seguintes peças: