BeagleBone Blue para Aplicações de Robótica
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.
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:
cp -r /usr/share/roboticscape/rc_project_template /home/debian/caminho_do_projeto/nome_do_projeto
cd nome_do_projeto
mv rc_project_template.c nome_do_projeto.c
- Editar o makefile, modificando o valor da variável TARGET para o seu novo nome de projeto
- 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.