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

Força Espacial dos EUA quer tropas na Lua, mas não para missões de robô

Novo braço militar dos EUA fez propaganda de recrutamento, mas missões no espaço estão num horizonte distante - Space Force/Reprodução
Novo braço militar dos EUA fez propaganda de recrutamento, mas missões no espaço estão num horizonte distante Imagem: Space Force/Reprodução

Felipe Oliveira

Colaboração para Tilt

01/10/2020 17h54

Os Estados Unidos consideram lançar tropas da Força Espacial para o espaço e até estabelecer uma base lunar.

O plano — que parece com o enredo de filmes como Ad Astra, estrelado por Brad Pitt em 2019 — foi confirmado por John Shaw, líder do Comando Espacial dos Estados Unidos na última terça-feira (29), durante a Conferência Espacial AFWERX, realizada pelas Forças Aérea e Espacial americanas

"Em algum momento, sim, colocaremos humanos no espaço. Eles podem operar centros de comando em algum lugar no ambiente lunar ou em algum outro lugar que continuem a operar uma arquitetura que talvez seja em grande parte autônoma", declarou, conforme registrado pelo site C4ISRNET.

Apesar da perspectiva empolgante, os soldados que se alistarem para a Força Espacial americana devem ter — bastante — paciência se quiserem ar uma temporada na Lua ou no espaço, já que o próprio Shaw disse que acha que isso "vai acontecer, mas está um pouco longe".

Um dos motivos para que o projeto demore para sair do mundo das ideias é óbvio: o espaço não é o lugar mais habitável para humano. Além disso, Shaw explicou que os Estados Unidos têm evoluído na robótica espacial. "Os melhores robôs que os humanos já criaram são provavelmente satélites, que exploram outros planetas ou operam dentro de nosso próprio sistema lunar terrestre", destacou.

Assim, é muito mais provável que robôs façam parte das tropas lunares. "Teremos muitos sistemas automatizados e autônomos operando na órbita terrestre e lunar e na órbita solar nos próximos dias e anos fazendo atividades espaciais de segurança nacional", disse o líder do Comando Espacial dos Estados Unidos.

De acordo com o C4ISRNET, o programa Robotic Servicing of Geosynchronous Spacecraft (RSGS), executado pela Darpa (Agência de Projetos de Pesquisa Avançada de Defesa, da sigla em inglês), deseja desenvolver um braço robótico que poderia ser colocado em uma espaçonave de voo livre que navegaria até satélites para realizar reparos.

Mas se os projetos parecem tornar desnecessária a presença de humanos nas futuras missões espaciais, Shaw vê como inevitável a ida de soldados, mesmo que isso não faça parte dos planos imediatos dos militares.

"Em algum momento isso vai acontecer, só não sei quando. Só chutando para falar o ano em que isso ocorrerá", finalizou.