Para controlar seu Robix é necessário a instalação do pacote Usbor
que vem com os softwares Robix Nexus
e Robix Nexway
. Ambos softwares de comunicam um com outro para controlar o Robix, sendo oRobix Nexus
um servidor TCP/IP responsável por se comunicar com o Robix via USB e por receber conexões do Robix Nexway
. Já o Robix Nexway
por sua vez, é um cliente TCP/IP com uma interface gráfica para programação do Robix e que se conecta ao Robix Nexus
para enviar comandos de movimentação ao Robix. Ambos softwares podem ser executados no mesmo computador se comunicando pelo localhost, ou pode ser executados em computadores separados onde um computador conectado ao Robix via USB executa o Nexus, logo, se transformando em um servidor, e então varios outros computadores poderão executar o Nexway e se conectarem ao servidor Nexus pela rede ethernet local, permitindo assim que varias pessoas trabalhem em conjunto controlando o mesmo robô.
Apesar dessa ótima abordagem no desenvolvimento do software, ela foi desenvolviva muitos anos atrás, em versões mais antigas do Kernel Linux, não oferecedndo suporte às distribuições Linux mais recentes. Este repositório fornece um script assistente de instalação para sistemas operacionais recentes baseados em Debian, como Ubuntu 22.04 por exemplo, bem como um manual de instalação passo a passo explicado para auxiliar a instalação em outras distribuições, ou caso o script não funcione.
Por ser programado em Java, o software Robix Nexway
pode ser executado em diversas arquiteturas, como um Raspberry Pi que possui uma arquitetura ARM64, entretanto o software Robix Nexus
possui bibliotecas C++ compiladas para x86, o que limita sua execução a esta arquitetura. Ele pode ser executado em um sistema operacional baseado em linux de 64 bits, mas para isso ele precisa ser executado através de uma versão de 32 bits do java.
Devido a última versão do Usbor
(1.1) ser desenvolvida para a versão 2.6 do kernel linux, algumas bibliotecas compartilhadas podem não estar mais disponíveis nas versões atuais, como por exemplo para o kenel 5.x do Ubuntu 22.04, esse é o caso da libstdc++2.10, portanto é necessário instalar ela manualmente. Além disso, a maneira como o Kernel Linux se comunica com os dispositivos USB mudou, antigamente era usado o módulo usbfs
, o qual foi substituido pela libusb
, portanto é necessário emular a forma como usbfs
funcionava para permitir a comunicação do Nexus com o Robix via USB.
O script resolve essas questões automaticamente para você, além de criar o atalho de desktop.
Baixe e execute o script assistente de instação com os comandos abaixos:
wget -c https://raw.githubusercontent.com/LabRobotica/RobixLinux/main/robix-debian.sh
chmod +x robix-debian.sh
sudo ./robix-debian.sh
rm robix-debian.sh
Leia atentamente as mensagens do terminal a procura de algum erro, ou para seguir corretamente as instruções.
OBS: Caso wget
não esteja instalado, execute o comando:
sudo apt install wget
Você irá precisar do wget
durante a execução do script de qualquer forma.
Caso o assistente de instalação não tenha funcionado por algum motivo, ou porque você ultiliza uma distribuição não baseada em Debian, você pode realizar a instalação manualmente seguindo esse passo a passo explicado, e então você mesmo poderá alterar os comandos e/ou tentar resolver qualquer problema que surja no meio do processo.
Você pode tentar instalar qualquer java (proprietário da Sun, ou openjdk), desde de que 32bits. Vou usar como exemplo a versão 11 do openjdk que está disponível para Ubuntu 22.04, Debian 11 e Debian 12, já que é a versão que eu testei e sei que funcionou.
Primeiro adicione o suporte a arquitetura de 32bits com o comando:
sudo dpkg --add-architecture i386
Atualize a lista de programas, bem como o sistema operacional todo:
sudo apt update && sudo apt upgrade
Instale o openjdk-11-jre
de 32 bits:
sudo apt install openjdk-11-jre:i386
Alternativamente, caso você precise instalar ambas versões de 32 e 64 bits do java, instale pelo comando abaixo:
sudo apt install openjdk-11-jre:i386 openjdk-11-jre
libstdc++2.10
de 32bitsUsbor
depende de uma versão antiga da biblioteca libstdc++
, que não é mais distribuída nos novos sistemas operacionais linux.
Biblioteca dependente | Provida pelo binário |
---|---|
libstdc++-libc6.2-2.so.3 | libstdc++2.10-glibc2.2 |
Uma solução é baixar e instalar manualmente esta biblioteca através do comando abaixo.
wget -c https://raw.githubusercontent.com/LabRobotica/RobixLinux/main/bin/libstdc++2.10-glibc2.2_2.95.4-27_i386.deb
sudo apt install ./libstdc++2.10-glibc2.2_2.95.4-27_i386.deb
Primeiro baixe o instalador:
wget -c https://raw.githubusercontent.com/LabRobotica/RobixLinux/main/bin/install_usbor-1.1.0.bin
Dê permissão para executar:
chmod +x install_usbor-1.1.0.bin
Instale o usbor usando privilégios administrativos:
sudo ./install_usbor.bin
No momento de selecionar o local de instalação, deixe o padrão:
/opt/Robix/Usbor/
No momento de selecionar o local dos atalhos, também deixe o padrão:
/usr/bin/
Como explicado anteriormente, o Nexus precisa necessariamente ser executado em uma máquina virtual java de 32 bits, devido que necessita executar bibliotecas 32bits de outras linguagens de programação.
Tanto Nexus quanto Nexway possuem um arquivo de configuração disponível na pasta /opt/Robix/Usbor/bin
que permite selecionar o path do Java. Para isso, altere os arquivos abaixos adicionando o caminho para o path do java:
sudo nano /opt/Robix/Usbor/bin/UsborNexus.config
Adicione a linha abaixo:
javapath /usr/lib/jvm/java-11-openjdk-i386/bin/java
Opcionalmente altere a path do java do nexway também para 32 bits colando a mesma linha acima no arquivo de configuração do Nexway:
sudo nano /opt/Robix/Usbor/bin/UsborNexway.config
Esse é o caminho para o openjdk-11-jre de 32 bits. Caso você tenha instalado outra versão do java de 32 bits, corrija o caminho do path.
Como explicado anteriormente, o Robix Nexus usa usbfs para se comunicar com o hardware pelo USB, mas “Os sistemas modernos não usam usbfs; as entradas dentro dele são arquivos, não nós de dispositivo, e não suportam ACLs, que são a maneira padrão de fornecer acesso a dispositivos USB para usuários não confiáveis. Ele é substituído por nós de dispositivo mantidos pelo udev em /dev/bus/usb, o libusb usa esses nós de dispositivo.” (link para original)
O desenvolvedor do software orienta executar o comando sudo mount --bind /dev/bus/usb /proc/bus/usb
para simular o funcionamento do usbfs, entretanto esse comando não funciona no Ubuntu 22.04, dando a mensagem de erro mount: /proc/bus/usb: mount point does not exist
. É possível modificar levemente o comando para ele passar a funcionar.
Executando o comando abaixo antes de executar o Nexus permitirá a comunicação do mesmo com o Robix quando conectado via USB. Isso basicamente simula a estrutura padrão do usbfs até que o computador seja reiniciado.
sudo mount --bind /dev/bus /proc/bus
Entretanto isso tem um problema, como o administrador que realizou o procedimento, a comunicação precisa de privilégios administrativos para acontecer, ou seja, o nexus deve ser executado como administrador para se comunicar com a placa:
sudo UsborNexus
Já o programa Nexway não precisa de privilegios administrativos, logo pode executado como:
UsborNexway
Se tudo ocorrer bem, pronto, você já é capaz de utilizar o Nexus e Nexway no mesmo computador. Mas se você não quiser executar comandos no terminal toda vez que for usar o robix, você pode criar atalhos que realizam o procedimento para você, conforme explicado na próxima sessão.
Para facilitar a execução do programa, crie atalhos no sistema.
Primeiro baixe os icones:
sudo wget -O /opt/Robix/Usbor/nexus.png https://raw.githubusercontent.com/LabRobotica/RobixLinux/main/icons/nexus.png
sudo wget -O /opt/Robix/Usbor/nexway.png https://raw.githubusercontent.com/LabRobotica/RobixLinux/main/icons/nexway.png
Agora crie o atalho do Nexway no local indicado:
sudo nano /usr/share/applications/robix-nexway.desktop
E então copie e cole o conteudo do atalho no editor de texto e salve.
Agora crie o atalho do Nexus no local indicado:
sudo nano /usr/share/applications/robix-nexus.desktop
Já o atalho para o Nexus será um pouco diferente, pois precisamos de privilégios administrativos e rodar um comando antes de executar o programa. Para isso usaremos o programa pkexec
que irá solicitar a senha do root, e usaremos o sh
para executar os comandos necessários. Apenas copie e cole o atalho indicado.
Pronto, já é possível executar o Nexway e o Nexus apenas clicando no atalho no menu do sistema. Entretanto o Nexus irá pedir senha antes de ser executado.