BeagleBone Blue para Aplicações de Robótica

On 22 de abril de 2018 by Mateus Coelho

BeagleBone Blue é uma solução desenvolvida pela iniciativa BeagleBoard para desenvolver diversas soluções. Essa placa é um Computador-em-Chip voltado para o desenvolvimento de aplicações de robótica e sistemas embarcados. Essa compatibilidade ocorre porque a placa possui soquetes para conexão de diversos dispositivos atuadores. Essas características permitem utilizar essa placa para prototipagem ou construção de sistemas de robótica e drones, por exemplo.

BeagleBone Blue

(Fonte: https://beagleboard.org/static/images/beagle-blue-pck.png)

Os sensores e periféricos presentes no sistemas são:

  • 2 suportes a bateria Li-Po com balanceamento de carga
  • Entrada para carregador de 6V a 16V
  • Suporte a rede Wireless 802.11 b/g/n 2.4GHz, Bluetooth 4.1 e BLE
  • 8 saídas com sinal de PWM e alimentação de 6V para controle de servo-motores
  • 4 saídas para controle de motores DC
  • 4 encoders para motores de quadcoptero
  • Sensor inercial de 9 graus de liberdade (9DoF)
  • Barômetro
  • Cliente e hospedeiro USB 2.0
  • Compatibilidade com GPS, rádio DSM2, UARTs, SPI, entradas analógicas, botões e LEDs

Os firmwares da placa são configurados para executar um servidor DHCP que fornece ao computador do usuário acesso direto a placa. Esse acesso pode ser feito via Wi-Fi ou USB. Caso o acesso seja realizado via USB, uma conexão cabeada aparecera no computador do usuário. Para o caso de acesso Wi-Fi, a placa cria um ponto de acesso para o servidor com nome adequado. A conexão da placa em uma rede WLAN (Wi-Fi) local permite o acesso a esse servidor DHCP web através do endereço de IP da placa na rede local.

Com essas configurações já é possível acessar a placa e começar a programar através da IDE Cloud9. Contudo, antes de começar a programar alguma aplicação, é preciso configurar o chip. BeagleBone Blue é um computador completo com sistema operacional Linux. Portanto, seu sistema operacional e seus drivers devem ser compatíveis com os atuadores periféricos que desejam ser utilizados.

BeagleBone Blue – Sistema Operacional

Como dito acima, a solução é um computador com sistema operacional Linux. Inicialmente, o usuário deve escolher uma distribuição para instalar na placa. A iniciativa BeagleBoard disponibiliza em seu site opções de imagens de sistema operacional para os desenvolvedores. Um caminho interessante a seguir é utilizar uma imagem Debian. Esse sistema operacional facilita a instalação e compatibilidade com diversos pacotes.

Observação importante: O kernel do sistema operacional deve ser compatível com os drivers. Para compatibilidade, fizemos o downgrade do kernel para a versão 4.4, inferior à versão 4.9 inicialmente instalada.

$ cd /opt/scripts/tools/
$ sudo sh update_kernel.sh --lts-4_4

Após a realização desses passos, é possível verificar o funcionamento de todos os drivers através do comando:

$ rc_test_drivers

É importante garantir principalmente que o driver que controla a unidade de operações de tempo real (PRU) esteja operacional. Além disso, para utilizar outras bibliotecas como OpenCV, o processo de instalação é similar a de outros sistemas operacionais baseados em Debian. Nesse caso, se o usuário quiser utilizar uma câmera USB em aplicações de visão computacional, por exemplo, recomendamos as bibliotecas de OpenCV da linguagem Python. Essas linguagens podem ser instaladas usando o comando:

$ sudo apt-get install python-opencv

BeagleBone Blue – Biblioteca Robotics Cape

A Biblioteca Robotics Cape permite programar operações utilizando os módulos de I/O da placa. Para isso, essa biblioteca implementa funções que permitem a programação dessas operações usando a linguagem C. As distribuições Linux disponíveis para a instalação na BeagleBone Blue geralmente contém uma pré-instalação da Biblioteca Robotics Cape. Sendo assim, para verificar a versão da biblioteca instalada no sistema operacional, o usuário deve abrir o terminal através de acesso remoto, serial ou através da IDE Cloud9 e aplicar o comando:

$ rc_version

Contudo, para o caso da instalação presente estar corrompida, a biblioteca pode ser recompilada e reinstalada a partir do seu código fonte.

Além disso, a biblioteca apresenta programas prontos que permitem testar o funcionamento e a comunicação com os diferentes módulos de I/O. Cada um desses programas possui um modo de funcionamento, e alguns deles necessitam de argumentos de configuração. Os programas disponibilizados para testes de módulos e drivers são:

rc_balance            rc_dsm_passthrough    rc_test_encoders
rc_battery_monitor    rc_kill               rc_test_filters
rc_benchmark_algebra  rc_spi_loopback       rc_test_imu
rc_bind_dsm           rc_startup_routine    rc_test_motors
rc_blink              rc_test_adc           rc_test_polynomial
rc_calibrate_dsm      rc_test_algebra       rc_test_servos
rc_calibrate_escs     rc_test_barometer     rc_test_time
rc_calibrate_gyro     rc_test_buttons       rc_test_vector
rc_calibrate_mag      rc_test_cape          rc_uart_loopback
rc_check_battery      rc_test_dmp           rc_version
rc_check_model        rc_test_drivers       
rc_cpu_freq           rc_test_dsm

BeagleBone Blue – Meu primeiro projeto

Após configurar a placa, é possível começar a programar seus primeiros projetos de robótica utilizando a biblioteca Robotics Cape. Para isso, é necessário seguir estas etapas:

  1. cp -r /usr/share/roboticscape/rc_project_template /home/debian/caminho_do_projeto/nome_do_projeto
  2. cd nome_do_projeto
  3. mv rc_project_template.c nome_do_projeto.c
  4. Editar o makefile, modificando o valor da variável TARGET para o seu novo nome de projeto
  5. Compilar o seu programa usando o comando make executar como super usuário (sudo).

Assim, seu projeto com o nome e path que você escolher estarão disponíveis. Em seguida, basta abrir o código nome_do_projeto.c e programar a aplicação a partir daí. A referência para as funções da biblioteca Robotics Cape estão disponíveis no link: http://strawsondesign.com/docs/roboticscape/index.html.

Veja a seguir um exemplo de aplicação de duas placas BeagleBone Blue, uma delas voltada para robótica e outra extraindo informações usando OpenCV.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *