Pergunta

Mesmo antes que eu aprendi programação fiquei fascinado com a forma como os robôs podem trabalhar. Agora eu sei como as instruções de programação subjacentes seria escrito, mas o que eu não entendo é como essas intruções são seguidos pelo robô.

Por exemplo, se eu escrevi este código:

object=Robot.ScanSurroundings(300,400);
if (Objects.isEatable(object))
{
   Robot.moveLeftArm(300,400);
   Robot.pickObject(object);
}

Como é que este programa ser seguido pelo CPU de uma forma que faria o robô fazer a ação física de olhar à esquerda, movendo o braço, e tal? É feito principalmente em binário idioma / ASM?

Por fim, para onde eu iria se eu queria aprender a criar um robô?

Foi útil?

Solução

Na maioria dos robôs modernos você teria um modelo inverso cinemática do mecanismo, neste caso o braço, que converte as coordenadas espaciais em posições para as articulações do braço. Estas articulações são normalmente movidas por servo-motores. Para mover-se suavemente no braço, você precisa de uma série de posições conjuntas intermediários que definem o caminho que você deseja que o braço de seguir. Você também tem que se preocupar com as velocidades das articulações, que juntos controlam a velocidade da "mão" no final do braço.

Enquanto o braço está se movendo seu sistema servo estará recebendo feedback sobre a sua posição actual. servo sistemas simples podem usar um loop básica de feedback PID para ajustar os motores. Os sistemas mais complexos irá incluir parâmetros de feed-forward que compensam inércia, gravidade, fricção, e assim por diante. Estes podem tornar-se muito sofisticado.

A verdadeira diversão começa quando você tem que permitir obstáculos no espaço ao redor do robô. Você tem que sentir o obstáculo e descobrir como evitá-la e ainda chegar ao destino.

Outras dicas

No final, alguma coisa tem que quebrar os comandos de alto nível em comandos muito baixo nível. Algo tem que traduzir "Pegue o copo" de como mover o braço (quais ângulos das articulações deve ser at) aos comandos de hardware que realmente transformar os motores.

Existem estruturas que tentam fornecer uma certa quantidade de esta tradução, incluindo (mas não limitado a):

No entanto, desde que a pesquisa robótica está interessado em todas as camadas do sistema, não existem muitos sistemas que fornecem toda a pilha de tradução. Se você está olhando para entrar em robótica, existem vários sistemas que tentam fazer isso (novamente, uma amostra aleatória) mais fácil:

Na falta deste, sites como o Faça mesmo fornecer guias para a construção de projectos de robôs para começar. O desafio é encontrar um projeto que você está animado sobre, e ir para a cidade!

Você deve verificar se Microsoft Robotics Studio (MRS). Eles têm muitos vídeos / screencasts , e tutoriais escritos . Além disso, Channel9 tem muitos vídeos , entrevistas, etc, no robitics assunto. Incluindo demonstrações e entrevistas com desenvolvedores de MRS.

Eu só tenho que acrescentar alguma coisa sobre Arduino projectos para isso porque eu não vê-lo mencionado acima.

Há uma muito baixa bar para a entrada nos projectos de robótica baseados Arduino. Os programas de "esboço" que você escreve para o hardware são muito fáceis de pegar e semelhante à sintaxe C. Se você não sabe seus transistores de resistores essas placas ainda permitem que você faça um monte com plug-in hardware e adicionais "escudos" que estender a placa do computador base.

É muito divertido, muito flexível e algo para obter o seu código de interagir com o mundo real. Além disso, seu "Open Hardware" muito ao longo das linhas de software de fonte aberta.

Robots vai funcionar através da interação com hardware. A ponte do seu código é muitas vezes feito através de vários tipos de portas de E / S. Poderia ser simplesmente um cabo RS232, por exemplo, (você sabe que essas portas COM1 velhos). peças de hardware será composta por motores (tais como servo motores ) e sensores (tais como ultra-som para sentir obstáculos, lasers para obter distância ou interruptores).

Você não precisa usar assembler para fazer isso, há muitas línguas (se não mais) que podem fazê-lo, mas requer conhecimentos sobre a forma de interagir com hardware. Como escrever um driver. Ele requer pelo menos eletrônicos básicos também se você quer construir o robô-se.

Se você estiver interessado, eu sugiro que você dê uma olhada no este livro que é um bom primer.

Além disso, você pode experimentar a programação de um Básico selo , é muito fácil seguir os tutoriais e vai dar-lhe um bom começo sobre como construir robôs. Não é muito caro e você estará interagindo com hardware em nenhum momento.

Boa sorte e divirta-se!

Se você ficar bom o suficiente em programação, você pode descobrir que você não tem sequer realmente precisa de um robô para testar grande parte do código mais difícil que você vai precisar para escrever ... (IE, fazendo um robô ver e reconhecer um cena sempre me fascinou ... Mas em algum momento, eu percebi que o robô físico necessário para este problema é a parte mais fácil ... o software é a parte mais difícil!) ...

É provavelmente mais fácil de obter uma linguagem mais alto nível para descrever comportamentos e inteligência do robô e deixar a linguagem de baixo nível para as ações (mover o braço, pé, parada). Há um monte de investigação em que é chamado arquitetura BDI para agentes inteligentes, google para ele.

Você pode encontrar mais sobre neste local , é uma DSL para descrever o comportamento do agente feitas em Java. É chamado Jason intérprete e a linguagem é AgentSpeak (L).

Encontre um local de PRIMEIRO equipe de robótica e voluntário para ser um mentor. FIRST é uma competição de robótica para crianças ensino fundamental e médio. O objetivo é que as crianças fazem todo o trabalho para construir, programa, testar e executar o robô, mas você ainda terá muitas oportunidades para cavar e realmente aprender o software. Eles estão usando LabView pela National Instruments, e, a partir de 08 de fevereiro, apenas começaram a competição regional para este ano. LabVIEW é um ambiente de programação gráfica que interfaces com hardware NI para permitir que você programar motores, atuadores e sensores. O material NI é muito escorregadio e é muito fácil de usar, mais ele é fornecido gratuitamente para cada equipe, para que você não tem que comprar o hardware e software-se (pelo menos para começar.) Além disso, você tem a vantagem adicional de ajudando uma nova geração de engenheiros obter o seu início.

Você teria que ter um driver que interface com o hardware (mais provavelmente um carimbo ou FPGA com motores etc ...). Você, então, chamar a função me.moveLeftArm (x, y); e o motorista sabe que moveLeftArm () meios para mover um atuador por X segundos / milissegundos / graus.

Eu tenho certeza que você poderia encontrar um kit que faz a programação do robô.

Se você quer uma alternativa Java, eu posso recomendar o livro Linux Robotics . Ele tem um monte de boas informações sobre onde obter kits, peças e sensores, bem como listagens de código-fonte completo em Java.

Eu compartilho a mesma coceira .. Estou prestes a comprar meu primeiro Beagle Board e alguns sensores / servos que pode usar a I2C ônibus. Eu vou estar usando um design orientado a eventos e uma implementação bruto de fibras (fibrilas, se preferir) que são tópicos do espaço do usuário.

Basicamente meu projeto chamadas para um processo, que inicia um thread por grupo de servos. Cada thread gerente de grupo irá lançar x # de fibrilas, 2 por servo (provável). Um fibrilas é usado para controlar o servo, as outras alças fibrilas eventos desse servo (ou seja, um objeto é muito pesado para pegar, um objeto foi descartado, etc).

O processo principal tem a tarefa de escuta de eventos de todo o resto e certificando-se a 'mão direita sabe o que a mão esquerda está fazendo' enquanto se move para a frente e negociar obstáculos.

A sua vai me levar a melhor parte de dois anos para obter algo trabalhar até o ponto que eu estou orgulhoso dele .. mas eu antecipo muitas noites agradáveis ??começá-lo a esse ponto.

I muito provavelmente estar usando um Microkernel, não Linux.

Estou fazendo isso tanto para me aperfeiçoar com métodos dirigidos eventos, bem como o meu desejo de fazer o meu próprio R2:)

Comece com Phidets se você estiver familiarizado com .Net. Você pode fazer o checkout TrossenRobotics.com para as peças.

O kit de interface Phidgets é um bom lugar para começar. De lá você pode obter um controlador de servo e começar a construir as coisas que se movem.

Os fóruns Trossen também são um bom lugar para rever projetos de outras pessoas. Eles têm um novo centro de dados com amostras de código / projeto também. Eu não trabalho para eles ... apenas um cliente feliz.

muitas boas respostas aqui. o seu pedaço de código fantasia não está longe de ser como você faria em uma linguagem de alto nível, como C # sobre MS Robotics Studio. Basta ter em mente que as coisas ainda simples (como "mover o braço esquerdo") são muito carregado com "viés de informação".

para baixo para o metal, um braço robótico é um conjunto de links e [possivelmente] articulações motorizadas. Portanto "mover o braço esquerdo" (ou qualquer ponto de coordenadas) já é uma tarefa muito complexa para computação (ver a D & H Tabela, para a frente e de cinemática inversa para manipuladores).

Há também o conceito que se movem braço esquerdo assume que não há nada nesse espaço e uma colisão não ocorrerá. Se o ambiente é irrestrita, então você precisa para implementar um sistema de detecção de colisão, muitas vezes com base em algum tipo de sensor (câmera) e algoritmos de visão de máquina.

Em resumo, a linguagem eo hardware interface são muitas vezes trivial comparado com a modelagem do sistema para alcançar o comportamento desejado.

Em relação à última pergunta "como criar um robô", acho que a partir de procura de um projeto relacionado em comunidades online como [Adafruit] [1], [Hackster.io] [2], ou mesmo [falha] [ 3], ou à procura de posts de alguém que construíram um robô a partir do zero, por exemplo, https://burningservos.com , ou um produto que fornece documentação e tutoriais para hardware e software, por exemplo, http://emanual.robotis.com/docs/en/platform/openmanipulator_x/overview/ .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top