;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Como a Nasa usará raios laser para se comunicar com missões fora da Terra

Comunicação por laser pode melhorar troca de dados da Nasa com missões - Reprodução
Comunicação por laser pode melhorar troca de dados da Nasa com missões Imagem: Reprodução

Marcella Duarte

Colaboração para Tilt

24/08/2020 16h18

Enviar dados entre as missões espaciais e a Terra ainda é um grande desafio para a Nasa, mas parece que a agência encontrou uma solução para contornar isso: raios laser.

A agência espacial construiu, em Haleakala, no Havaí, a Optical Ground Station 2 (OGS-2), uma estação com tecnologia de ponta, incluindo um telescópio especial para enviar e receber feixes infravermelhos.

A OGS-2 é a segunda e mais moderna de duas estações terrestres que irão receber dados da Laser Communications Relay Demonstration (LCRD), uma missão teste que a Nasa lançará no início do ano que vem para demonstrar a tecnologia. Será o primeiro sistema de comunicações inteiramente óptico, com o potencial de ampliar muito a largura de banda da agência.

Satélites retransmissores serão o eixo do sistema, criando links entre as missões espaciais e a Terra, permitindo que elas transmitam enorme quantidade de dados mais rapidamente para os cientistas e engenheiros. A Nasa espera alcançar um nível de detalhes sem precedentes em suas pesquisas e imagens interplanetárias, incluindo vídeos em alta resolução.

Por exemplo: uma sonda em Marte enviaria sinais a um satélite que estivesse em seu campo de visão, que então os transmitiriam para a estação terrestre, como uma espécie de repetidor de laser. Ondas infravermelhas podem carregar até cem vezes mais dados que as de rádio.

Não pode chover

Há, porém, alguns pontos fracos no uso de lasers, em relação ao tradicional sistema de radiofrequência. Por exemplo, o infravermelho não consegue penetrar nuvens - a comunicação só é eficiente quando há tempo bom.

Esse é o principal motivo para escolha do local para a OGS-2: o Havaí é conhecido pelo céu limpo na maior parte do tempo. Em caso de chuva e outras interferências atmosféricas, a Nasa ainda pode utilizar uma estação antiga, a OGS-1, no Observatório Table Mountain, na Califórnia.

Uma estação de monitoramento atmosférico da Northrop Grumman irá checar as condições climáticas do local 24 horas por dia, de maneira quase que totalmente autônoma, para determinar se é necessário acionar a outra estação.

Além de permitir uma visão mais detalhada do Sistema Solar, a comunicação a laser demanda menos energia elétrica e aparelhos mais leves para funcionar. Isso pode melhorar a carga útil e a vida das baterias das naves espaciais.