;(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

Em movimento! Robô da Nasa consegue tocar asteroide Bennu e coletar amostra

Sonda Osiris-Rex toca a superfície do asteroide Bennu - Reprodução/Nasa
Sonda Osiris-Rex toca a superfície do asteroide Bennu Imagem: Reprodução/Nasa

Marcella Duarte

Colaboração para Tilt

20/10/2020 21h27

A sonda OSIRIS-REx, da Nasa, acaba de tocar a superfície do asteroide Bennu com seu braço robótico, para coletar uma inédita amostra de solo. Se bem-sucedida, a missão chegará a Terra em 2023, trazendo partículas para serem estudadas.

Tudo correu como o planejado pela agência espacial, mas a equipe ainda precisa analisar os dados para confirmar se a amostra é viável, com pelo menos 60 gramas, até 2 quilos. Isso deve ser medido até sábado. Amanhã, a Nasa divulga, em seu site, as imagens captadas pelas câmeras da sonda.

O evento, batizado de Touch-and-Go, ou apenas TAG, era o ponto alto da missão. A aproximação foi transmitida ao vivo pela Nasa (veja aqui).

Este tipo de coleta requer uma manobra desafiadora e inédita. É a primeira vez que a agência retira um pedaço de um asteroide em movimento. A OSIRIS-REx parece um pequeno caminhão, e realizou a manobra em uma zona chamada Nightingale, dentro de uma cratera do tamanho de uma quadra esportiva, com bordas altas como prédios.

O procedimento inteiro levou cerca de quatro horas e meia. Primeiro, a sonda acionou seus motores para sair de sua órbita ao redor do Bennu, chegou perto o bastante para esticar seu braço e tocá-lo. Seus painéis solares se dobraram em um formato de Y, acima da nave, para proteção.

Uma garrafa de nitrogênio pressurizado foi disparada contra o asteroide, para levantar material da superfície, que —se tudo deu certo— foi coletado por uma "cabeça" na ponta do braço robótico de 3,5 metros de comprimento.

Essa cabeça, que funciona como uma espécie de filtro de ar, foi a única parte da sonda a tocar o Bennu. Ela também contém pequenos discos aderentes, como adesivos, para coletar poeira extra.

A cerca de 330 milhões de quilômetros da Terra, há um atraso na comunicação com a nave: leva cerca de 18,5 minutos para uma mensagem chegar ou ser enviada para a equipe da Nasa. Por isso, os comandos foram dados horas antes, e a coleta foi realizada de forma autônoma. Ela durou apenas 16 segundos.

Os motores, então, foram acionados novamente para levar a sonda de volta a uma distância segura.

Se a coleta tiver sido bem-sucedida, a OSIRIS-REx iniciará sua longa viagem de volta à Terra nos próximos meses, chegando por aqui em 2023. Se não, uma nova tentativa será realizada em janeiro, em outro ponto, chamado Osprey.

Bennu, "o asteroide do fim do mundo"

O Bennu é um asteroide ativo que, eventualmente, poderá se chocar com nosso planeta. Com 525 metros de diâmetro, é uma espécie de "pilha de entulho": rochas agrupadas e mantidas juntas pela força da gravidade.

Ele foi escolhido para a missão devido a semelhanças com outros asteroides e cometas potencialmente perigosos, chamados "Near-Earth Objects" (NEOs), ou objetos próximos à Terra. Ele também é atrativo para exploração humana, rico em moléculas orgânicas e água - que até poderia ser mineirada.

Com o estudo da amostra, poderemos conhecer mais não apenas sobre o Bennu, mas sobre a formação dos planetas e do surgimento da vida. A história do Sistema Solar contida em uma pedra de bilhões de anos de idade.

A sonda OSIRIS-REx foi lançada em setembro de 2016 e entrou na órbita de Bennu em dezembro de 2018. Desde então, tem registrado diversos dados e imagens do asteroide.