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

Tipo Jetsons: robozinho da Amazon vigia a casa e brinca de esconde-esconde

Marcella Duarte

De Tilt, em Seattle (EUA)*

20/05/2023 04h00

Quem se lembra da Rosie, a robô auxiliar dos Jetsons? A Amazon já tem algo parecido: o robozinho Astro leva coisas de um lado para o outro, faz companhia para as pessoas, brinca com as crianças e até vigia a casa na sua ausência.

Basicamente uma Alexa sobre rodas, ele é vendido apenas para convidados e não tem sequer previsão de chegar ao Brasil. Foi em visita à sede da Amazon em Seattle que Tilt viu o robozinho funcionar.

Entre as habilidades do Astro (que é justamente o nome do cachorro no desenho dos Jetsons), estão:

  • carregar objetos para as pessoas
  • tocar músicas ou fazer chamadas de vídeo enquanto te segue
  • monitorar crianças, idosos ou animais de estimação
  • fazer patrulhas de segurança
  • controlar dispositivos de casa inteligente, como luzes, câmeras, fechaduras e eletrodomésticos

Robô com inteligência ambiental

O Astro usa IA (inteligência artificial) para entender como sua casa funciona, quem são as pessoas e onde está cada coisa. Ele usa tudo isso para se locomover autonomamente da maneira mais natural possível.

Com suas câmeras e sensores, ele faz um mapeamento do ambiente. Pode até nomear os cômodos, como "quarto de tal pessoa", para interagir de forma personalizada. Para serem identificados, os membros da família são cadastrados por meio de reconhecimento facial. Assim, o Astro pode atender pedidos específicos de cada um.

Segundo a Amazon, o robozinho está inserido na categoria de "inteligência ambiental" (AmI, do inglês ambient intelligence): uma gama de serviços e dispositivos digitais que devem trabalhar por nós em segundo plano, de maneira integrada e mesmo sem termos dado comando algum.

Uma das coisas que ensinei meu Astro a fazer é ligar as luzes e começar a tocar música quando eu chegar em casa. Assim, criamos um ambiente onde a tecnologia pode prever muitas de nossas necessidades, para que a gente se concentre nas coisas mais importantes Ken Washington, vice-presidente de robótica de consumo da Amazon

Neste sentido, a função de seguir é uma das mais populares. Quando ele te acompanha, por exemplo, tocando suas músicas favoritas ou fazendo uma chamada em sua tela interativa (de 10 polegadas, que se ajusta automaticamente de ângulo para quem está olhando), você fica livre para fazer outras coisas, sem se preocupar com a qualidade do áudio ou vídeo.

Lançado no ano ado, o robô não faz muitas aparições públicas. Tilt viu o Astro pela primeira vez na CES 2023, maior feira de tecnologia do mundo.

Vigilante doméstico

Curiosamente, o Astro não fala, diferentemente da Alexa. Ele se comunica com você com barulhinhos e mensagens na tela. Mas há muitas oportunidades de uso para o robozinho. Alguns dos comandos possíveis são:

  • Astro, leve isso para minha mãe
  • Astro, toque rock
  • Astro, me siga
  • Astro, ligue as luzes da sala
  • Astro, onde está o cachorro?
  • Astro, veja se deixei o fogão ligado

Ele é equipado com uma câmera telescópica, que sobe com um mastro, para alcançar locais mais altos, como o balcão da cozinha. Quando você não está em casa, ele pode agir como um vigilante e transmitir imagens ao vivo e buscar problemas de segurança.

Membro da família

O Astro também consegue fazer coisas menos úteis, mas importantes para a conexão com as pessoas, por exemplo:

  • Astro, você sabe dançar?
  • Astro, aja como uma baleia
  • Astro, qual seu animal favorito?

Esta última pergunta é respondida de forma diferente a cada vez que é feita: o Astro pode imitar uma galinha, um tigre, um macaco etc. Ele também pode brincar de esconde-esconde com as crianças e tem sempre uma carinha simpática na tela.

Essas coisas meio aleatórias, peculiares e fofinhas que ele faz criam sua personalidade. É por isso que as crianças amam o Astro e as pessoas dizem que o veem como parte da família. Fizemos uma rodada de testes com usuários. Quando fomos pegar os aparelhos de volta, as crianças até choravam, dizendo que queriam ficar com ele Ken Washington, vice-presidente de robótica de consumo da Amazon

O vice-presidente ressalta que a tecnologia ainda está sendo desenvolvida e ele deve receber novas funções. Por enquanto, o Astro ainda é para poucos. Além de estar disponível somente nos Estados Unidos e de custar US$ 1.000 (cerca de R$ 5.000), o o a ele é bem limitado e exclusivo: apenas convidados podem ter o direito a comprar um.

*a jornalista viajou a convite da Amazon