Lego Mindstorms NXT - Lego Mindstorms NXT

Logo da Lego Mindstorms NXT.
"Golf bot" - um robô construído com o conjunto NXT.

Lego Mindstorms NXT é um kit de robótica programável lançado pela Lego no final de julho de 2006. Ele substituiu a primeira geração do kit Lego Mindstorms, que foi chamado de Robotics Invention System . O kit básico é fornecido em duas versões: a versão de varejo (conjunto # 8527) e o conjunto de base educacional (conjunto # 9797). Ele vem com o software de programação NXT-G ou, opcionalmente, LabVIEW for Lego Mindstorms. Existem várias linguagens não oficiais, como NXC, NBC, leJOS NXJ e RobotC. A segunda geração do conjunto, o Lego Mindstorms NXT 2.0 , foi lançado em 1º de agosto de 2009, apresentando um sensor de cores e outros recursos atualizados. A terceira geração, o EV3 , foi lançada em setembro de 2013.

NXT Intelligent Brick

O principal componente do kit é um computador em forma de tijolo chamado NXT Intelligent Brick. Ele pode receber entrada de até quatro sensores e controlar até três motores , por meio de uma versão modificada dos cabos RJ12 , muito semelhantes, mas incompatíveis com os cabos telefônicos RJ11 . O pino de plástico que prende o cabo no soquete é movido ligeiramente para a direita. O tijolo tem um LCD monocromático de 100 × 64 pixels e quatro botões que podem ser usados ​​para navegar em uma interface de usuário usando menus hierárquicos. Ele tem um microcontrolador Atmel AT91SAM7 S256 de 32 bits ARM7TDMI -core com 256 KB de memória FLASH e 64 KB de RAM, além de um microcontrolador Atmel AVR ATmega48 de 8 bits e suporte para bluetooth. Ele também tem um alto - falante e pode reproduzir arquivos de som em taxas de amostragem de até 8 kHz. A energia é fornecida por 6 AA (1,5 V cada) baterias na versão consumidor do kit e por uma de iões de lítio bateria recarregável e carregador na versão educacional.

O Intelligent Brick permanece inalterado com o NXT 2.0 . Uma versão preta do tijolo foi feita para comemorar o 10º aniversário do Sistema Mindstorms sem nenhuma alteração interna.

Kits de desenvolvimento

A Lego lançou o firmware para o NXT Intelligent Brick como código aberto , junto com esquemas para todos os componentes de hardware.

Vários kits de desenvolvedor estão disponíveis que contêm documentação para o NXT:

  • Software Developer Kit (SDK), inclui informações sobre drivers USB host, formato de arquivo executável e referência de bytecode
  • Hardware Developer Kit (HDK), inclui documentação e esquemas para o bloco NXT e sensores
  • Bluetooth Developer Kit (BDK), documenta os protocolos usados ​​para comunicações Bluetooth

Programação

Programas muito simples podem ser criados usando o menu no NXT Intelligent Brick. Programas mais complicados e arquivos de som podem ser baixados usando uma porta USB ou sem fio usando Bluetooth. Os arquivos também podem ser copiados entre dois blocos NXT sem fio, e alguns telefones celulares podem ser usados ​​como controle remoto. Até três blocos NXT podem se comunicar simultaneamente via Bluetooth quando programas criados pelo usuário são executados.

A versão de varejo do kit inclui software para escrever programas que são executados em computadores pessoais com Windows e Mac OS. O software é baseado no National Instruments LabVIEW e fornece uma linguagem de programação visual para escrever programas simples e baixá-los para o NXT Brick. Isso significa que, em vez de exigir que os usuários escrevam linhas de código, eles podem usar fluxogramas como "blocos" para projetar seu programa.

NXT-G

NXT-G v2.0 é um ambiente de programação gráfica que vem com o NXT. Com construção cuidadosa de blocos e fios para encapsular a complexidade, o NXT-G pode ser usado para programação do mundo real. Os "feixes de sequência" paralelos são, na verdade, threads paralelos, então este software é muito bom para executar um punhado de loops de detecção / resposta paralelos (exemplo: espere 60 segundos, toque um som de "bonk" em volume baixo se a bateria estiver fraca, faça um loop), ou combinando o controle autônomo com bluetooth ou outro "controle remoto". A linguagem oferece suporte a instrumentos virtuais para todos os sensores / componentes da marca Lego e a maioria de terceiros. A versão 2.0 contém novos desafios de tutorial, um controle remoto, gráficos personalizados e designers de som e novo suporte para sensor de cores Lego. O apoio da comunidade é significativo, por exemplo: http://www.brickshelf.com/cgi-bin/gallery.cgi?f=191310

C # com Microsoft Robotics Developer Studio

Ferramentas gratuitas ( Visual Studio Express em combinação com o Robotics Developer Studio ) permitem a programação do NXT usando a linguagem C # . Outras linguagens com suporte incluem IronPython e VB.NET .

BricxCC, códigos de próximo byte, não eXactly C

Bricx Command Center (BricxCC) é o ambiente de desenvolvimento integrado (IDE) usado para escrever, compilar e editar programas NBC e NXC para o NXT. Além disso, como o BricxCC foi originalmente feito para o RCX , os programas para ele podem ser escritos usando o NQC através do BricxCC. Diferentes versões de firmware podem ser transferidas para o NXT usando BricxCC.

BricxCC tem muitos utilitários, como NeXTExplorer (upload / download de arquivos, desfragmentar o NXT, usar visualizador hexadecimal de arquivo), NeXTScreen (ver o que está no LCD do NXT e capturar imagens e vídeo).

Next Byte Codes (NBC) é uma linguagem simples de código aberto com uma sintaxe de linguagem assembly que pode ser usada para programar o bloco NXT. BricxCC também tem a capacidade de descompilar executáveis ​​.rxe NXT padrão para NBC.

Não eXactly C (NXC) é uma linguagem de código aberto de alto nível , semelhante a C , construída no compilador NBC. Também pode ser usado para programar o bloco NXT. NXC é basicamente NQC para o NXT. É uma das linguagens de programação de terceiros mais amplamente usadas para o NXT. No NXC, até a criação de videogames para o NXT é possível. Algumas pessoas até conseguiram trabalhar em tons de cinza na tela do NXT.

Robolab

Robolab 2.9 Robolab é o ambiente de programação mais recente originalmente usado no bloco programável RCX. A versão 2.9 foi atualizada para que possa ser usada para programar o bloco NXT. A Lego anunciou que deixará de oferecer suporte oficial ao Robolab, mas o Robolab 2.9 ainda está disponível e ainda há muitos fóruns de usuários e outras fontes de ajuda disponíveis.

RoboMind

RoboMind é um software educacional especialmente desenvolvido para ensinar os alunos sobre lógica, programação e robótica. O ponto forte do RoboMind é a compactação do ambiente de aprendizagem, que permite desenvolver e testar scripts rapidamente em um ambiente virtual. Os scripts podem então ser transferidos diretamente para um robô Lego Mindstorms NXT, para ver o resultado na vida real. O script RoboMind é executado no firmware padrão.

Encantador

Enchanting traz a programação NXT para o popular Scratch IDE, projetado pelo Lifelong Kindergarten Group do MIT para tornar a programação intuitiva, mesmo para crianças pequenas. Os programas NXT resultantes têm a compactação e a clareza oferecidas por esse ambiente de programação.

ROBOTC

ROBOTC é uma linguagem de programação baseada em C para VEX, VEX Cortex, FIRST Tech Challenge e Lego Mindstorms . O ROBOTC executa um firmware muito otimizado que permite ao NXT executar programas muito rapidamente e também compacta os arquivos para que um grande número de programas possam caber no NXT. Como outras linguagens do NXT, o ROBOTC requer que este firmware seja baixado da interface do ROBOTC para funcionar.

NXTGCC

NXTGCC é um conjunto de ferramentas GCC para programar o firmware NXT em C.

leJOS NXT

leJOS NXJ é uma linguagem de código aberto de alto nível baseada em Java que usa firmware personalizado desenvolvido pela equipe leJOS.

nxtOSEK

Para poder escrever em C / C ++ , nxtOSEK pode ser usado, mas isso também requer firmware personalizado.

ÍCONE

Para gravar arquivos no próprio NXT, o ICON de Steve Hassenplug é um recurso ideal.

MATLAB e Simulink

  • MATLAB é uma linguagem de programação de alto nível para computação numérica, aquisição de dados e análise. Ele pode ser usado para controlar robôs Lego NXT por meio de uma porta serial Bluetooth (a comunicação da porta serial faz parte da funcionalidade básica do MATLAB) ou por meio de uma conexão USB ; por exemplo, usando o RWTH - Mindstorms NXT Toolbox (gratuito e de código aberto).
  • Simulink é um ambiente de diagrama de blocos para modelagem e simulação de sistemas dinâmicos. Usando o Simulink, um usuário pode projetar e simular algoritmos de controle e sistemas Lego e, subsequentemente, programar automaticamente o Lego NXT ou EV3. Suporte para programação de Lego NXT ou EV3 requer apenas Simulink e está disponível sem custo adicional.

O suporte MATLAB e Simulink para programação Lego Mindstorms está disponível gratuitamente. Mais informações em Lego Mindstorms Support de MATLAB e Simulink

Lua

pbLua é um port da linguagem de programação Lua , uma linguagem de script de propósito geral, para Lego Mindstorms.

Ada

Uma porta do GNAT está disponível para o NXT. Ele se baseia em um kernel de tempo de execução dedicado baseado no perfil Ravenscar , o mesmo usado no satélite Goce : isso permite usar recursos Ada de alto nível para desenvolver sistemas simultâneos e em tempo real no Mindstorms NXT.

URBI

URBI é mais uma linguagem e é uma linguagem paralela e orientada a eventos, com interfaces para C ++ / Java e Matlab. Também possui uma arquitetura de componentes (UObject) para distribuição. Urbi é compatível com muitos robôs, incluindo Nao (cf Robocup), Bioloid ou Aibo.

Navegação FLL NXT

FLL Nxt Navigation Um programa de código aberto para ajudar a navegação na mesa de competição da FLL. Ele usa arquivos NXT-G e .txt para escrever programas. Não se sabe se você pode implementar isso legalmente nas competições da FLL.

Ruby-nxt

Ruby-nxt é uma biblioteca para programar o NXT para a linguagem de programação Ruby . Ao contrário das outras linguagens do NXT, o código não é compilado em um arquivo binário. Em vez disso, o código é transmitido diretamente para o NXT por meio de uma conexão Bluetooth .

Robotics.NXT

Robotics.NXT é uma interface Haskell para NXT via Bluetooth. Suporta comandos diretos, mensagens e muitos sensores (também não oficiais). Ele também tem suporte para um controle baseado em mensagem simples de um bloco NXT via programa executado remotamente (código NXC básico incluído).

LibNXT

LibNXT é uma biblioteca de utilitários para falar com o bloco inteligente Lego Mindstorms NXT em um nível relativamente baixo. LibNXT é direcionado principalmente para as plataformas que o software oficial Lego Mindstorms NXT ignora, ou seja, Linux e outros unices. Ele funcionará em qualquer sistema operacional compatível com POSIX onde libusb 0.1 libusb é suportado. O suporte do Windows também é possível com a porta win32 do libusb.

C_NXT

C_NXT é uma biblioteca para controlar o Lego NXT licenciado sob a GPLv2 . A biblioteca permite que os usuários controlem um Lego NXT via controlador bluetooth de outros programas C. A biblioteca oferece controle de baixo nível e abstração de alto nível. A biblioteca funciona apenas no Linux.

PyNXC

PyNXC é um projeto que converte o código Python em código "Não Exatamente C" (NXC) , para fazer o download em Lego Mindstorms Robots.

NXT-Python

NXT-Python é um módulo python, que se comunica com o NXT via USB ou Bluetooth. Suporta comandos diretos e vários sensores pós-venda.

Software LEGO Mindstorms EV3

O software que acompanha o conjunto Mindstorms EV3 mais recente pode ser usado para programar o NXT. No momento, o Bluetooth não é compatível com o NXT, portanto, os programas devem ser baixados por meio de um cabo USB.

Etoys Físicos

Um carro Lego NXT que evita paredes implementadas em Physical Etoys

Physical Etoys é um sistema de programação visual para diversos dispositivos eletrônicos. Suporta modo direto e modo compilado.

C / C ++ Intérprete Ch

Ch é um interpretador C / C ++ executando código C / C ++ para controlar Lego NXT ou EV3. Nenhum upload / download de firmware é necessário, nenhuma compilação é necessária. O código AC / C ++ executado em Ch pode controlar um Lego NXT, EV3 ou múltiplo de NXT / EV3.

Sensores

O kit básico Lego Mindstorms NXT 1.0 inclui:

  • 3 servo motores idênticos que possuem conjuntos de engrenagens de redução incorporados com codificadores rotativos óticos internos que detectam suas rotações com um grau de precisão.
  • O sensor de toque detecta se ele está pressionado no momento, foi batido ou liberado. O botão laranja Enter e os botões cinza direito e esquerdo NXT podem ser programados para servir como sensores de toque. No software de programação NXT-G, um valor de 0 é fornecido quando não é pressionado, e um valor de 1 é fornecido se ele é pressionado.
  • O sensor de luz detecta o nível de luz em uma direção e também inclui um LED para iluminar um objeto. O sensor de luz pode detectar valores de luz refletida (usando o LED vermelho embutido) ou luz ambiente. No software de programação NXT-G, o sensor detecta a luz em uma escala de 0 a 100, sendo 100 muito claro e 0 escuro. Se calibrado, o sensor também pode ser usado como um sensor de distância.
  • O sensor de som mede o nível de volume em uma escala de 0 a 100, sendo 100 muito alto e 0 totalmente silencioso.
  • O sensor ultrassônico pode medir a distância do sensor a algo que ele está enfrentando e detectar movimento. Ele pode mostrar a distância em centímetros e polegadas. A distância máxima que pode medir é de 233 cm com uma precisão de 3 centímetros. O sensor ultrassônico funciona enviando ondas sonoras ultrassônicas que ricocheteiam em um objeto à sua frente e depois voltam. Ele sente o tempo que levou para isso acontecer. No kit básico do Lego Mindstorms 2.0, ele inclui: 2 sensores de toque, um sensor de cores (detecta várias cores diferentes) e um sensor ultrassônico.

Essas peças não estão incluídas no kit básico Lego Mindstorms NXT e podem ser compradas separadamente:

Os sensores vêm montados e programados. No software (consulte Programação acima), as pessoas podem decidir o que fazer com as informações que vêm dos sensores, como programar o robô para avançar até tocar em algo.

A Lego também vende um adaptador para a linha de produtos de sensores Vernier. Vernier produz dispositivos de coleta de dados e software relacionado para uso na educação.

Conector

Os sensores são conectados ao bloco NXT usando um conector modular de 6 posições que possui interfaces analógicas e digitais. A interface analógica é compatível com versões anteriores (usando um adaptador) com o antigo Robotics Invention System. A interface digital é capaz de comunicação I 2 C e RS-485 .

Pinagem da interface do sensor NXT
Alfinete Nome Função Cor Numeração de pinos
1 ANALÓGICO Interface analógica, alimentação + 9V Pino 1 - ANA
Branco
Rj25 connector.jpg
2 GND Chão Pino 2 - GND
Preto
3 GND Chão Pino 3 - GND
vermelho
4 IPOWERA Fonte de + 4,3 V Pino 4 - IPOWERA
verde
5 DIGIAI0 Relógio I 2 C (SCL), RS-485 B Pino 5 - DIGIAI0
amarelo
6 DIGIAI1 Dados I 2 C (SDA), RS-485 A Pino 6 - DIGIAI1
azul

NXT 2.0

Lego Mindstorms NXT 2.0
Outros nomes Mindstorms NXT
Mindstorms NXT 2.0
Tema pai Tecnico
Disponibilidade 2009–2013
Website oficial

Lego Mindstorms NXT 2.0 é o segundo conjunto de LEGO 's Lego Mindstorms série, lançado em 5 de Agosto de 2009 na loja Lego nos EUA O conjunto contém 619 peças, incluindo um novo sensor que pode detectar cores. Seu preço é de aproximadamente US $ 280, C $ 350, £ 230 ou A $ 500. Lego Mindstorms NXT 2.0 tem um sucessor, chamado Lego Mindstorms EV3 .

8547 Kit Features

Empilhadeira modelo construída usando o Lego Mindstorms NXT 2.0
  • Inclui um editor de som para gravar qualquer som e então programar o NXT Brick para reproduzi-lo.
  • Inclui um editor de imagem para baixar uma imagem para o NXT Brick para aparecer na tela.
  • Inclui 619 peças (incluindo o Bloco NXT)

NXT Intelligent Brick

  • Microcontrolador principal Atmel AT91SAM7 S256 de 32 bits (256 KB de memória flash , 64 KB de RAM )
  • Microcontrolador Atmel ATmega48 de 8 bits a 4 MHz (memória flash de 4 KB, 512 bytes de RAM)
  • Tela LCD de 100 × 64 pixels
  • Quatro portas de entrada RJ12 (portas 1-4)
  • Três portas de saída RJ12 (portas AC)
  • Porta USB
  • Bluetooth Classe II V2.0
  • Alto-falante - qualidade de som de 8 kHz, resolução de 8 bits, taxa de amostragem de 2–16 kHz
  • Quatro botões de pressão, usados ​​para navegar em menus e podem ser usados ​​em programas.
  • Alimentado por seis baterias AA ou bateria recarregável NXT

Sensores

As peças podem ser encomendadas separadamente. No kit original, os sensores incluídos são o sensor de cor, dois sensores de toque e um sensor ultrassônico :

  • Sensor de cores (9694), para detectar 6 cores diferentes: azul, verde, vermelho, amarelo, branco, preto
  • Sensor de luz (9844), para detectar níveis de luz. (Incluído na primeira versão, mas na 2.0, substituído pelo sensor de cores.)
  • Sensor de toque (9843), um botão simples que detecta se algo colidiu com ele.
  • Sensor ultrassônico (9846), para medir distâncias usando ondas sonoras inaudíveis.
  • Sensor de som (9845), para "audição" básica. Capaz de medir o volume, mas não pode gravar sons reais.
  • Sensor de bússola (MS1034), para detecção de direção. Possui um calibrador embutido para reduzir a interferência de outros itens magnéticos. (Não incluído no kit básico, para usuários avançados.)
  • Sensor acelerômetro (MS1040), para detectar em qual direção geral ele está se movendo. Também pode medir a força g . (Não incluído no kit básico, para usuários avançados.)
  • Sensor RFID , para comunicação entre vários robôs. (Não incluído no kit básico, para usuários MUITO avançados.)
  • Sensor de rotação (embutido em servo motores ), para medir o quão longe ele girou. Isso é único, porque mede com base no giro das engrenagens internas, e não no próprio motor. Útil para robôs que vão encostar e agir com base na distância percorrida.
  • Comunicação Bluetooth (embutida no "bloco inteligente"), para comunicação com outros dispositivos. Pode ser usado no meio do programa ou para baixar novos programas e dados.

Atuadores

  • Servo motor (9842)
  • O sensor de cores pode brilhar em vermelho, verde ou azul. (Normalmente, ele detecta a cor usando a lâmpada em um ambiente e lendo os níveis de luz refletida. Ele usa a mesma lâmpada aqui para outros usos.)

Programação

Programas muito simples podem ser criados usando o próprio NXT Intelligent Brick. Para criar programas maiores e mais complexos, é necessário um software de programação em um PC . O software de programação padrão é NXT-G, que está incluído no pacote. Software de programação de terceiros também está disponível, alguns dos quais estão listados abaixo:

NXT-G

NXT-G é o software de programação incluído no kit básico padrão. É baseado na programação gráfica do LabVIEW . Possui um ambiente interativo de arrastar e soltar.

LabVIEW Toolkit

O NXT-G é desenvolvido pelo LabVIEW , um padrão da indústria em programação. Criado pela National Instruments , o LabVIEW usa programação de fluxo de dados para criar um instrumento virtual. Para permitir uma programação mais avançada, no sentido gráfico, a National Instruments lançou um Toolkit para o NXT. A versão 1.0 foi lançada em dezembro de 2006. Desde seu lançamento, vários bugs foram encontrados e novos sensores foram criados. Embora o kit de ferramentas permita a criação de novos sensores, a National Instruments ainda não lançou formalmente uma atualização.

Lego :: NXT

LEGO :: NXT fornece uma API entre Perl e NXT.

Ada

Uma porta do GNAT está disponível para o NXT. Requer nxtOSEK para ser executado. A porta inclui ligações Ada ao hardware NXT e nxtOSEK.

Códigos de próximo byte e não exatamente C

Next Byte Codes (NBC) é uma linguagem simples de código aberto com uma sintaxe de linguagem assembly que pode ser usada para programar o bloco NXT.

Não eXactly C (NXC) é uma linguagem de código aberto de alto nível, semelhante a C , construída sobre o compilador NBC. Ele também pode ser usado para programar o bloco NXT. NXC é basicamente NQC para o NXT. É a linguagem de programação de terceiros mais amplamente usada.

ROBOTC

ROBOTC é um ambiente de desenvolvimento integrado voltado para estudantes que são usados para programar e controlar Lego NXT, VEX, RCX , e Arduino robôs utilizando uma linguagem de programação baseada na linguagem de programação C .

RoboMind

RoboMind é um ambiente de programação educacional que oferece uma linguagem de script concisa para programar um robô simulado. Esses scripts internacionalizados podem, no entanto, também ser exportados diretamente para robôs Lego Mindstorms. Não requer firmware personalizado para funcionar.

NXTGCC

NXTGCC é um conjunto de ferramentas GCC para programar o firmware NXT em C.

URBI

URBI é uma linguagem paralela e orientada a eventos, com interfaces para C ++ / Java e MATLAB. Também possui uma arquitetura de componentes (UObject) para computação distribuída. Urbi é compatível com muitos robôs, incluindo Nao (cf Robocup), Bioloid ou Aibo.

leJOS NXJ

leJOS NXJ é uma linguagem de código aberto de alto nível baseada em Java que usa firmware personalizado desenvolvido pela equipe leJOS.

nxtOSEK

Para poder escrever em C (linguagem de programação) / C ++ , nxtOSEK pode ser usado, mas isso também requer firmware personalizado.

MATLAB e Simulink

  • MATLAB é uma linguagem de programação de alto nível para computação numérica, aquisição e análise de dados. Ele pode ser usado para controlar robôs Lego NXT por meio de uma porta serial Bluetooth (a comunicação da porta serial faz parte da funcionalidade básica do MATLAB) ou por meio de uma conexão USB ; por exemplo, usando o RWTH - Mindstorms NXT Toolbox (gratuito e de código aberto).
  • Simulink é um ambiente baseado em MATLAB para modelagem e simulação de sistemas dinâmicos. Usando o Simulink, um usuário pode projetar algoritmos de controle, gerar automaticamente o código C para esses algoritmos e baixar o código compilado no Lego NXT.

O código MATLAB e Simulink para programação NXT está disponível gratuitamente.

Lua

pbLua é uma implementação da linguagem de programação Lua , uma linguagem de script de propósito geral, para Lego Mindstorms.

Navegação FLL NXT

FLL Nxt Navigation Um programa de código aberto para ajudar a navegação na mesa de competição da FLL. Usa arquivos NXT-G e .txt para escrever programas.

ruby-nxt

ruby-nxt é uma biblioteca para programar o NXT para a linguagem de programação Ruby . Ao contrário das outras linguagens do NXT, o código não é compilado em um arquivo binário. Em vez disso, o código é transmitido diretamente para o NXT por meio de uma conexão Bluetooth . Este método de execução é significativamente mais lento do que executar o código compilado diretamente.

Robótica. NXT

Robotics.NXT é uma interface Haskell para NXT via Bluetooth. Suporta comandos diretos, mensagens e muitos sensores (também não oficiais). Ele também tem suporte para um controle baseado em mensagem simples de um bloco NXT via programa executado remotamente (código NXC básico incluído).

Veja também

Notas

links externos