LusoRobótica - Robótica em Português
Robótica => Projectos de robótica => Tópico iniciado por: josecarlos em 02 de Outubro de 2015, 18:54
-
Boas :)
Qual a vossa opinião sobre câmaras 3D estéreo visão para robô.
Obrigado desde já pelas possíveis respostas
-
Opiniao em que sentido?
Tens de ser menos generico para comecar a discussao :)
-
Opinião era sobre o raio de acção.
Também qual seria a melhor para aplicar num robô.
Obrigado
-
Como eu previa ninguém sabe nada de câmaras ;D ;D mas de lixo ui :o
Aqui fica um cheirinho do que estou a falar ;)
https://youtu.be/9kSexLkMcGw
Obrigado
-
É algo relativo..
Não precisas de comprar uma camera 3d, são duas cameras quaisqueres a x cm de distância e siga.
Já soube umas coisas sobre visão computacional, mas é algo que não dei grande atenção.
Mas actualmente com openCv fazes praticamente qualquer coisa com bastante facilidade comparado com á uns anos atrás em que tinhas de criar tudo de raiz.
-
Já vi varias algumas com preços fora do meu orçamento.
Um dos problemas e serem compatíveis com o software ROS
Esta era uma boa solução webcam 3D Minoru mas só funciona com o windows 7 e é compatível com ROS
Vou ver mas a xbox 360 era uma boa mas o preço :-[
-
O Kinect?
OpenCV corre em ROS.
Qualquer camera que ligues por USB vai funcionar em ROS, não estou a ver nenhuma limitação que tenha de ser uma camera especial para usares com o ROS.
-
O que estas a sugerir é que ligue duas câmaras em paralelo? podes me dar umas dicas como fazes isso para teres o efeito 3d de visão .
Eu sei que Opencv corre em ROS estou muito interessado em aprender mais sobre.
Penso que algumas câmaras já têm sensores incorporados isso não pode ser uma limitação? ;)
-
Uma maneira de teres 3d é teres visão stereo, ou seja, duas cameras normais afastadas uma da outra uns 20cm, ou nem isso.
Kinects e afins são coisas diferentes, projectam uma grelha/matriz de pontos em IR e usam na mesma duas cameras para detectar distorção dessa mesma matriz para inferir distâncias e coisas do género.
Eu sei, o texto está meio vago :-[
-
Uma maneira de teres 3d é teres visão stereo, ou seja, duas cameras normais afastadas uma da outra uns 20cm, ou nem isso.
Estamos de acordo mas como ligas isso?
Afinal já há algumas limitações entra as varias câmaras.
Tenho a perfeita consciência que não (sei) nada mas estou a aprender.
Obrigado
-
São duas webcam usb por exemplo, não tem nada de especial a nivel de ligações, depois com o openCV tiras frames ao mesmo tempo das duas.
-
Vou testar :)
-
O que é que queres fazer exactamente com a "camara 3D"?
-
A ideia é aplicar num robô, detectar objectos e também navegação.
-
https://youtu.be/nlavbSRLAHI
Este exemplo é bem fixe ;)
-
Visao artificial e' uma area bastante complexa.
Visao 3D e' uma area bastante compexa elevada `a terceira dimensao :)
Para certo tipo de condicoes, navegacao e detectacao de objectso pode ser feito com apenas 2D.
Investiga este software:
RoboRealm
http://www.roborealm.com/tutorials.php (http://www.roborealm.com/tutorials.php)
http://www.roborealm.com/help/index.php (http://www.roborealm.com/help/index.php)
nao e' opensource, tem uma versao 30 dias para experimentar e tem tutorials com um texto muito facil de ler para quem esta a comecar e pode experimentar com uma webcam.
EDIT: Possivelmente existem outros softwares identicos faceis de brincar com webcams e sem necessidade de programacao. Depois disso, a sugestao mais natural 'e passar para openCV, mas para usar aquilo ja e' necessario perceber muito da coisa.
-
Penso que seria um retrocesso o 2D pois cada vez mais estamos a progredir nas 3D a avaliar pelo que nos rodeia, câmaras, óculos, impressoras etc.
Vou também investigar a tua sugestão com mais conhecimento há mais possibilidade de escolher a certa. ;)
Obrigado
-
Penso que seria um retrocesso o 2D pois cada vez mais estamos a progredir nas 3D a avaliar pelo que nos rodeia, câmaras, óculos, impressoras etc.
Na verdade, quando se diz "camera 3D" ou "visualizacao 3D" o que se esta a falar e' de uma imagem 2D mais um valor de profundidade.
Nao podes comparar por exemplo com uma impressora 3D. Um camera (tal como os humanos) so consegue extrair informacao 2D (+ nocao de profundidade). (isto e', na nossa dimensao, apenas a olhar parado, nao nos permite saber o que esta por detras de um objecto. Se vivessemos com uma quarta dimensao, ao olhar-mos para um objecto 3D poderiamos visualizar completamente todos os pontos do objecto.. atras..dentro..etc)
Portanto, mesmo que tenhas informacao da profundidade, o processamento principal e a maior parte da informacao 'e 2D. A informacao de profundidade, acaba por ser apenas isso: uma indicacao da distancia relativa `a camera de cada pixel. O resto da "riqueza" da informacao esta no 2D (formas, linhas, pontos, cores, etc)
Nas se trata de um retrocesso, trata-se de algo essencial. Se tivesses so a informacao da profundidade era o mesmo que andar a caminhar "as apalpadelas".
Tal como os humanos, os sistemas roboticos tendem em aglomerar toda a informacao sensorial disponivel para tirar conclusoes.
-
Penso que a noção de profundidade é importante na forma de como os robôs vêem são calculadas triangulações.
Para mim vejo de outra forma, é uma forma geométrica triângulo que podes juntar e fazer qualquer imagem ou forma , malha de triângulos ou Mesh.
Essa profundidade é a 3 linha do triângulo.
-
Origem: Wikipédia, a enciclopédia livre.
Exemplos de malhas poligonais
Uma malha poligonal é uma coleção de faces (onde cada uma é um conjunto de vértices) que definem um objeto tridimensional nos campos da computação gráfica e da modelagem tridimensional. As faces geralmente são constituídas de triângulos ou quadriláteros, umas vez que estas formas simplificam o processo de renderização, no entanto também podem ser compostas por formas geométricas complexas.
O estudo das malhas poligonais é um grande sub-campo da computação gráfica e modelagem geométrica. Diferentes representações de malhas poligonais são utilizadas para diferentes aplicações e propósitos. Devido a grande importância deste assunto, atualmente existem algoritmos bem desenvolvidos para técnicas como ray tracing, detecção de colisão, etc.
-
Essa tecnica que referes, nao tenho conhecimento que seja usada em robots e nao me parece uma aplicacao adequada. Para alem que e' necessario um ambiente controlado para extrair essas malhas poligonais. (esse sim e' um exemplo identico as impressoras 3D: um prato giratorio e' projectado uma matrix de luz que e uma camera recebe as imagens integrando a rotacao. Depois esses algoritmos recontroem usando os pontos recolhidos uma malha)
A ideia é aplicar num robô, detectar objectos e também navegação.
No caso que pretendes, detectar objectos e navegacao, aplicando ao robot, essa tecnica nao 'e indicada. Pois geralmente nao ha interesse em saber a geometria dos objectos. Para alem que para extrair essa geometria como expliquei seria preciso pegar no objecto completo e roda-lo com uma precisao mt grande.
Para navegacao, ajuda ter a informacao da profundidade. Por exemplo se queres o robot a andar em casa e nao ir contra o sofa ou mesa.
No entanto, em visao grafica, penso que 'e importante primeiro definir muito bem o que se pretende fazer e aplicar a tecnica mais simples que consegues os objectivos pretendidos da melhor forma.
Por exemplo, se definires "preciso de uma maneira para desviar dos obstaculos na casa".
Considerando que as coisas sao planas e tem um formato identico, ex: sofa, mesa, vasos.
Seria possivel obter uma deteccao de obstaculos mesmo sem usar duas cameras (stereo vision), usando ou uma matrix ou um laser (ou luz) linear. (ou varrimento)
Se forem outras condicoes, por exemplo:
http://www.roborealm.com/tutorial/Obstacle_Avoidance/slide010.php (http://www.roborealm.com/tutorial/Obstacle_Avoidance/slide010.php)
Se considerares procurar um objecto como um livro, entao nesse caso nem 'e necessario informacao de profundidade nem 3d. Basta dar a conhecer o livro e existem tecnicas para aprender a detectar baseado em imagens (feature tracking).
And so on, por isso 'e muito importante definir exactamente o que se pretende fazer pois nao existe uma solucao "da para tudo" e como ja tinha falado no outro email e necessario juntar varias tecnicas para conseguir resolver um problema.
-
Desvio de obstáculos pode até ser feito com um simples ultra sónico e há muito mais formas de o fazer
estamos de acordo.
Com uma câmara 3d há a possibilidade de calcular a que distância exacta do objecto.
Essa técnica de que falo já é usada em visão computacional e reconhecimento facial.
Quando desenhas em CAD uma peça é criada uma malha de triângulos essa é forma que o computador entende.
https://youtu.be/FOeyNjS1IEw
-
Essa técnica de que falo já é usada em visão computacional e reconhecimento facial.
https://youtu.be/FOeyNjS1IEw
Esse exemplo, e' um exemplo 2D, repara que o que 'e mostrado 'e uma folha com a imagem de uma cara e nao a cara real da pessoa. Sabendo as "features" (olhos, nariz, boca,etc) do objecto (cara) a detectar, 'e possivel mapear uma orientacao 3D do objecto.
Mesmo sem a informacao de profundidade, como o objecto 'e "universalmente conhecido" serial possivel saber a distancia (relativa) a q ele se encontra.
Claro que se tiveres a informacaode profundidade 'e mais um valor e ajuda a melhorar a precisao desse conhecimento.
Quando desenhas em CAD uma peça é criada uma malha de triângulos essa é forma que o computador entende
Consegues encontrar algum exemplo de utilizacao (pratico ou nao) em que por um sistema de visao (num robot) extraia a informacao 3D (pontos/malha) de um objecto para o comparar com um objecto virtual (CAD)? Ou seja, que a deteccao e tratamento do objecto seja feito recorrendo `a malha extraida?
Eu consigo talvez encontar um exemplo, mas e' um caso muito muito especifico.
Edit: googlar/youtube por: "bin picking"
-
Claro que se tiveres a informacaode profundidade 'e mais um valor e ajuda a melhorar a precisao desse conhecimento.
Toda a informação é valida e porque não por em pratica os progressos já realizados.
Eu consigo talvez encontar um exemplo, mas e' um caso muito muito especifico.
Edit: googlar/youtube por: "bin picking"
Afinal já temos alguma coisa , não sou expert em visão computacional estou apenas a focar as minhas pesquisas para a parte que me interessa vou fazer o que posso, conto com todas as opiniões. ;)
Obrigado
-
Mais um exemplo ;)
https://youtu.be/acKTCF0sAfc
-
Mais um exemplo ;)
https://youtu.be/acKTCF0sAfc
Esse exemplo e' 2D. Trata-se de mapeamento de pontos (features) para um objecto conhecido 3D.
Repara como ele so trata a parte da frente, quando a cara vira, deixa de ter pontos para fazer o "match".
Esse exemplo nao tem a com o que falavas em aquirir a malha do objecto e comparar com o objecto virtual
Ou seja, nao e' uma comparacao de dados 3D-3D. So a informacao 2D da webcam e' tratada.
Eh mesma situacao que ja tinhas mostrado no outro exemplo da cara.
E esses sao exemplos que nao precisas de aquisicao de profundidade nem 3D (pontos.. malhas) basta usar os pontos conhecidos adquiridos em 2D que pela sua posicao relativa se consegue mapear para o objecto (conhecido) 3D para saber a orientacao (e distancia) dele.
O uso de profundidade e 3D eh mesmo para situacoes mt especificas. Por exemplo se tapares um olho e caminhares pela casa, consegues faze-lo sem ir contra as paredes :) E no entanto nao tens a informacao directa de profundidade.
Mas o cerebro que tem informacao historica (objectos conhecidos) consegue mapear (e integrar no tempo) essa informacao 2D para navegar.
No exemplo que dei de "bin picking" e' usado a informacao de profundidade/pontos 3D porque os objectos estao todos uns em cima dos outros e e' dificil so com o 2D tirar pontos (features, pois os objectos sao muito lisos e sem nenhuma aparencia que se sobresaia)
Entao a profundidade/3D e' usado por exemplo para saber o ponto/objecto que esta mais perto.
-
Esse exemplo e' 2D. Trata-se de mapeamento de pontos (features) para um objecto conhecido 3D.
Repara como ele so trata a parte da frente, quando a cara vira, deixa de ter pontos para fazer o "match".
https://youtu.be/qiyQlxmXcZQ
Podes também ver o exemplo do GPS é mapeamento baseado em triangulação em tempo real certo.
A visão humana também é uma triangulação tens dois olhos e o ponto que estás a ver isso quando tapas um olho ficas sem ter a possibilidade de avaliar a essa tal profundidade de que falas .
-
Queres compativel com o ROS, certo?
Como ja foi dito visao e' complicado e visao 3d nao esta assim tao estavel como parece, a maior parte dos projectos implementados usa visao 2d, visao 3d stereo ainda esta muito na parte de investigacao. Podes e' usar RGBD tipo kinnect ou este projecto por exemplo: https://www.indiegogo.com/projects/orbbec-persee-world-s-first-3d-camera-computer#/story (https://www.indiegogo.com/projects/orbbec-persee-world-s-first-3d-camera-computer#/story) mas tens que assumir que so vais usar o robot em espacos sem luz solar directa.
Para navegacao podes comprar um lidar http://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xneato+lidar.TRS0&_nkw=neato+lidar&_sacat=0 (http://www.ebay.co.uk/sch/i.html?_from=R40&_trksid=p2050601.m570.l1313.TR0.TRC0.H0.Xneato+lidar.TRS0&_nkw=neato+lidar&_sacat=0) mas mesmo depois disso nao e' assim tao trivial fazer a navegacao.
Eu chamo atencao para dizer que isto nao e' simples porque dizes nao perceber nada e isto sao coisas que e' preciso ter bastantes bases da area, ainda nao sao temas muito "user-friendly".
-
Boas @metRo_
Reconheço que deve ser uma área difícil mas estou disposto a percorrer esse caminho é mais um desafio.
Encaro esse desafio como um processo de aprendizagem vamos ver até aonde posso ir.
Muito obrigado ;)
-
Boas @metRo_
Reconheço que deve ser uma área difícil mas estou disposto a percorrer esse caminho é mais um desafio.
Encaro esse desafio como um processo de aprendizagem vamos ver até aonde posso ir.
Muito obrigado ;)
Entao aconcelho o seguinte, antes de pensares no 3d, comeca por usar uma camera para fazer um tracking por cor ou assim, ja e' um exercicio relativamente completo. Que maquina tens no robot?
As cameras ps3 eye sao as melhores na relacao qualidade preco, muito acima de qualquer outra camera que compres por 100euros e custam cerca de 10E.
Indenpende do SO conseguiras usar o opencv para fazer a deteccao da cor depois ha os algoritmos para o tracking. Vamos supor que nao precisas de tracking e a deteccao de cor e' suficientemente boa, isto e', sem interrupcoes que prejudicam o movimento do robot. Comeca por ai:)
-
Como já disseram o melhor deve ser mesmo começar com opencv no ROS.
Tal como o metro disse, o melhor será começar por um exercício de "blob detection/tracking". É simples de implementar e ajuda a familiarizar com o opencv e a sua integração em ROS. Um exemplo disto que encontrei foi: http://opencv-srf.blogspot.pt/2010/09/object-detection-using-color-seperation.html (http://opencv-srf.blogspot.pt/2010/09/object-detection-using-color-seperation.html)
Partindo disso é mais facíl compreender e avançar para algo 3D. Por exemplo, se tiveres um IMU "acoplado" à câmera podes saber a posição de um objecto pousado no solo (em relação ao robot) usando apenas a orientação da câmera e a altura da mesma ao solo. Para perder a restrição do objecto estar no solo podes recorrer ao uso de stereo.
Desta forma podes familiarizar-te com a teoria por detrás assim como com as funcionalidades disponibilizadas por ferramentas como opencv e ROS
-
Vou tentar fazer o que me foi aconselhado ainda estou a espera de algumas coisas que mandei vir
Vamos ver
Obrigado ;)
-
@josecarlos
Para inspiracao:
https://www.youtube.com/watch?v=_wXHR-lad-Q (https://www.youtube.com/watch?v=_wXHR-lad-Q)
Um programa que faz matching de objectos aprendidos de uma "base de dados" de "1000 categories, 10 M images with full caption"
Do lado esquerdo em cima da imagem, mostra as percentagens mais altas dos objectos classificados.
-
Boas :) @KammutierSpule
Tenho direccionado as minhas pesquisas para a navegação e detecção de objectos, como já aqui foi dito é muito complexo estes sistemas.
Preciso de entender todos os princípios, como é feito a a detecção de objectos com estéreo câmaras só assim posso ir progredindo nesta ária, mais complexo é ainda acrescentar uma base de dados mas vamos ver.
Este exemplo a que me refiro( http://www.mdpi.com/1424-8220/14/7/11557/htm (http://www.mdpi.com/1424-8220/14/7/11557/htm)) pode ser básico mas entender é preciso pois aqui está bem explicado.
Mais difícil ainda é que o único canudo que tenho é o do papel higiénico ;D mas vou revirar o mundo e vou fazer é isso que me motiva.
Espero também que com este tópico todos nós vamos entender melhor (ainda estou a rir) como funciona a visão computacional. ;)
-
Boas :)
Estou a dar os primeiros passos e tentar aprender numa área complexa que é a visão computacional.
Cada degrau é uma Victoria, penso chegar ao fim da escada e dizer eu consegui aprender mais um pouco. ::)
Fiz um video com os meus progressos.
https://youtu.be/PMt7UZHO8PU
Sei que há um longo caminho a percorrer penso que estou no bom caminho ;)
É pá será que isto não é o Halloween ;D ;D
-
Boas :)
Estou a dar os primeiros passos e tentar aprender numa área complexa que é a visão computacional.
Cada degrau é uma Victoria, penso chegar ao fim da escada e dizer eu consegui aprender mais um pouco. ::)
Fiz um video com os meus progressos.
https://youtu.be/PMt7UZHO8PU (https://youtu.be/PMt7UZHO8PU)
Sei que há um longo caminho a percorrer penso que estou no bom caminho ;)
É pá será que isto não é o Halloween ;D ;D
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.ecreativeim.com%2Fblog%2Fwp-content%2Fuploads%2F2011%2F05%2Ffacebook-like-icon.png&hash=97f61efb7bfdc4f6ce77b53e9f716631c17e7fba)
-
Muito bom, sim, estás no caminho certo :)
Aproveito a deixa e coloco aqui um pequeno vídeo encorajador, porque que cada vez menos é praticado por receios:
http://youtu.be/xhQ7d3BK3KQ (http://youtu.be/xhQ7d3BK3KQ)
-
O que estas a sugerir é que ligue duas câmaras em paralelo? podes me dar umas dicas como fazes isso para teres o efeito 3d de visão .
Eu sei que Opencv corre em ROS estou muito interessado em aprender mais sobre.
Penso que algumas câmaras já têm sensores incorporados isso não pode ser uma limitação? ;)
tenho esta, dava?
http://www.g7electronica.net/pt/hi-tech/344-webcam-3d.html (http://www.g7electronica.net/pt/hi-tech/344-webcam-3d.html)
-
Boas :)
Obrigado, já mandei vir todo o material para a visão.
Vou com calma, pois o orçamento vai abaixo e não há patrocínios :-\
Ando agora a namorar uma matherboard mini :D
-
um pouco limitadas em numero de USB (um HUB talvez resolva), mas dá uma vista de olhos ao Intel Compute Stick, está interessante pelo preço, e é facil de encontrar por cá (kuantokusta tem varias lojas)
-
Boas :)
Obrigado @jm_araujo
Estou mais inclinado para esta, tem mais USBs claro que ainda é preciso disco memorias cabos e fonte de alimentação.
Penso que tem um consumo de energia baixo é isso que quero.
http://www.ebay.com/itm/Gigabyte-J1900N-D2H-Intel-ITX-Motherboard-USB-3-0-HDMI-and-VGA-/181855154725?hash=item2a57697225:g:VkkAAOSwyQtV5vEe (http://www.ebay.com/itm/Gigabyte-J1900N-D2H-Intel-ITX-Motherboard-USB-3-0-HDMI-and-VGA-/181855154725?hash=item2a57697225:g:VkkAAOSwyQtV5vEe)
É uma boa solução ou nem por isso?
-
Não estou muito por dentro para poder dar opinião.
Falei do Compute Stick porque vi umas notícias do lançamento e achei engraçado. Também já li algumas coisas boas dos Intel NUC, usado como media center (http://www.intel.com/content/www/us/en/nuc/overview.html (http://www.intel.com/content/www/us/en/nuc/overview.html)). É só meter memória e disco e está pronto, e tem vários modelos com vários processadores conforme as necessidades.