Neste tutorial, explicamos como usar ArduSimple Receptores RTK para obter dados de posicionamento precisos no ROS. Vamos guiá-lo através das etapas para integrar ArduSimple Receptor RTK em seu projeto ROS, permitindo que você aproveite o poder de dados GPS precisos.
Seja você um entusiasta de robótica, pesquisador ou desenvolvedor, este tutorial fornecerá as etapas para acessar os dados de posicionamento em seus aplicativos ROS.
Se você é novo no ROS, preparamos um breve ttutorial para ajudar a começar com ROS para saber mais sobre os principais termos do ROS, qual plataforma e ambiente de desenvolvimento é melhor escolher, etc.
Hardware necessário:
- simpleRTK2B receptor de série (neste tutorial usamos simpleRTK2B Budget)
- Antena multibanda RTK (neste tutorial usamos u-blox GNSS Antena multibanda ANN-MB-00 (IP67))
- cabo USB compatível com a porta USB do seu receptor para conectar a um PC ou plataforma incorporada
- Um computador ou plataforma embarcada com acesso à internet (usamos um PC neste tutorial)
Software necessário:
- Ubuntu 18 ou 20 (neste tutorial usamos Ubuntu 20) instalado nativamente em um PC
- ROS (usamos ROS Noetic).
- Você pode seguir estes tutoriais para instalar o ROS:
- use ROS Melodic para Ubuntu 18 (verifique o guia de instalação do ROS Melodic)
- use ROS Noetic para Ubuntu 20 (verifique o guia de instalação para ROS Noetic)
Como usar ArduSimple Receptores RTK e obter dados GPS no ROS?
Primeiramente, conecte e configure o Receptor RTK no Ubuntu.
- Ligue o Antena RTK para o seu recebedor. Lugar a antena em um local com boa visão do céu ou perto de uma janela para testar a funcionalidade.
- Ligue o seu recebedor ao PC através da porta USB identificada com “POWER+GPS. "
- Seu receptor deve ser configurado automaticamente. Para verificar isso, abra terminal e digite o comando:
ls /dev/tty*
- Você verá o “/dev/ttyACM0” foi criado automaticamente.
- Para verificar o fluxo do seu Receptor RTK, use o comando:
sudo cat /dev/ttyACM0
- O fluxo de entrada do GPS é semelhante ao seguinte:
- Imprensa Ctrl + C para cancelar a exibição do stream.
- Para prevenir o Receptor RTK de começar em um diferente “ttyACM*” sempre que for ligado, crie uma regra udev (um link dinâmico) que crie uma entrada com um nome específico adicionando o seguinte arquivo antes de conectar o Receptor RTK.
sudo nano /etc/udev/rules.d/50-ardusimple.rules
- Insira o seguinte texto na regra:
KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", SYMLINK="tty_Ardusimple", GROUP="dialout", MODE="0666"
- Imprensa Ctrl + X para sair do arquivo e pressione Y para salvar o buffer modificado.
- Agora, sempre que um Receptor RTK estiver conectado, ele estará acessível a partir do “/dev/tty_Ardusimple" link. Para verificar isso, desconecte Receptor RTK (unpower e power novamente) e digite os comandos:
sudo service udev reload
sudo service udev restart
sudo udevadm trigger
ls /dev/
- Agora você pode ver que “tty_ArduSimple" foi criado.
- Para usar o programa U-center no Ubuntu, instale o Wine. É uma coleção de bibliotecas do Linux que permite que muitos aplicativos do Windows sejam executados em distribuições do Linux (no Ubuntu, entre outros).
Isso não torna o software U-center totalmente compatível, mas pode ser usado caso você queira verificar o status ou a configuração do seu Receptor RTK.
Para instalar o Wine (a instalação pode durar de 2 a 3 minutos), use o comando:
sudo apt install wine64 //if Ubuntu is installed natively
sudo apt install wine32 //if you run Ubuntu on a virtual machine
- Uma vez instalado o Wine, é possível instalar o U-Center no Ubuntu, como se fosse o Windows. Abra o Firefox Web Browser e baixe o programa U-Center do site oficial: https://www.u-blox.com/en/product/u-center.
- Uma vez u-center é baixado, vá para a pasta Download e extraia o u-center na área de trabalho.
- Para iniciar a instalação do u-center software, digite o comando:
cd ~/Desktop/
wine ./u-center_v22.07.exe
- Instale u-center como se você estivesse no Windows seguindo as etapas de instalação.
- Para criar um COM1 porto, aberto terminal e digite o seguinte comando para criar um link para Receptor RTK na pasta “~/.wine/dosdispositivo”.
ln -sf /dev/tty_Ardusimple ~/.wine/dosdevices/com1
- Fechar u-center se você o tiver aberto. Abrir u-center.
- Conecte-se ao seu Receptor RTK in u-center pressionando Ctrl + 1 .
- Você verá uma luz verde no canto esquerdo e os dados do seu receptor RTK semelhantes aos abaixo.
Em segundo lugar, execute o Receptor RTK no ROS.
- Faça uma pasta com os espaços de trabalho. Se você não tiver um, pode fazê-lo com os comandos:
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
- Baixe e instale pacotes ROS dentro de src. Neste tutorial vamos baixar os pacotes de https://github.com/KumarRobotics/ublox que publicará as informações do ROS. Isso funciona com esta versão 1.1.4. Você pode usar as versões mais recentes, mas algumas etapas podem precisar ser modificadas. Digite os comandos:
cd ~/catkin_ws/src
git clone https://github.com/KumarRobotics/ublox
cd ~/catkin_ws
rosdep install --from-paths src --ignore-src -r -y
- Você verá no Terminal:
#Todos os rosdeps necessários instalados com sucesso
- Compile o programa para poder executá-lo.
catkin_make
source ~/catkin_ws/devel/setup.bash
- Quando o setup.bash é executado, estamos selecionando o workspace de trabalho e atualizando os programas disponíveis no ROS.
- Para ter o controle das mensagens a serem publicadas em ArduSimple você pode modificar o yaml (arquivo de configuração) que o nó usará para executar a comunicação com o ros.
Este nó possui vários arquivos de configuração de teste, você pode modificar os valores deste modificando os arquivos localizados no seguinte diretório:
cd ~/catkin_ws/src/ublox/ublox_gps/config
- Uma vez que o u-blox modelo dentro Ardusimple é o zed_f9p, modificamos o arquivo com o mesmo nome. Para abrir o editor, podemos usar o seguinte comando:
nano zed_f9p.yaml
Altere o endereço do dispositivo para “/dev/tty_Ardusimple" para garantir que ele sempre vá para o Receptor RTK:
device: /dev/tty_Ardusimple
frame_id: gps
uart1:
baudrate: 9600 //Change the baudrate value to the value set in U-Center.
config_on_startup: false
Fechar u-center porque ROS e u-center não corra junto.
- Para executar o ROS Node, utilize o launcher localizado na seguinte pasta:
cd ~/catkin_ws/src/ublox/ublox_gps/launch
- Para verificar se está listado, digite o comando:
ls
- Arquivos de lançamento do ROS simplificar o processo de iniciar vários nós e configurar seus parâmetros. Um arquivo de inicialização é um arquivo XML que descreve os nós a serem executados, seus parâmetros e as conexões entre eles. Ao usar arquivos de inicialização, você pode iniciar vários nós com um único comando, facilitando o gerenciamento de sistemas robóticos complexos. Esses arquivos possuem extensão “.launch”, existem outros arquivos que são arquivos de configuração que possuem extensão “.yaml”.
Para iniciar o arquivo:
roslaunch
- O arquivo que iniciará nosso programa se chama “ublox_device.launch”.
Este arquivo pode ser alterado conforme necessário.
Para iniciar o programa, use o seguinte comando:
roslaunch ublox_gps ublox_device.launch param_file_name:=zed_f9p
- Abra o novo Terminal e digite o comando:
source ~/catkin_ws/devel/setup.bash
- Nós ROS ao executar têm nomes exclusivos. Para ver a lista de nomes de Nodos ROS, use o comando no Terminal:
rosnode list
- Para obter informações sobre os nós do ROS, como quais tópicos eles estão inscritos ou publicando, você pode usar o seguinte comando:
rosnode info
Por exemplo, para obter informações sobre “informações /ublox”, use o comando:
rosnode info /ublox
- Para exibir uma lista de ativos Tópicos ROS que estão atualmente disponíveis e estão sendo publicados ou assinados em seu sistema ROS, use o comando.
rostopic list
A saída da lista de tópicos do ROS geralmente mostra os nomes dos tópicos junto com seus tipos de mensagem. Este comando é útil para verificar os tópicos disponíveis e verificar se os tópicos desejados estão sendo publicados ou assinados em seu ambiente ROS.
- Para visualizar informações sobre quem está postando e se inscreveu nesta mensagem, digite a mensagem, use o comando no formato:
rostopic info
- Por exemplo, para receber informações sobre Tipo de Mensagem, Editores e Assinantes do tópico “/rosout”, execute o comando:
rostopic info /rosout
- Para receber informações sobre Tipo de Mensagem, Editores e Assinantes do tópico /ublox/fix, eexecute o comando:
rostopic info /ublox/fix
- Para ver as informações que estão sendo publicadas, utilize o comando no formato:
rostopic echo
Para testar se funciona, podemos nos inscrever nos diferentes tópicos que o nó cria.
Os mais importantes são “/gps/correção” (são os dados em WGS64) e “/diagnóstico” (nos dá informação do estado do GPS). Outros dados podem ser publicados de acordo com a configuração que foi definida em Receptor RTK.
Por exemplo, para observar e monitorar os dados de localização do GPS publicados no “/ublox/consertar” Tópico (são os dados em WGS64), como latitude, longitude, altitude e outras informações relevantes, use o seguinte comando para visualizar os dados:
rostopic echo /ublox/fix
Para parar de ver o tópico, pressione Ctrl + C.
- Para visualizar os dados que estão sendo publicados em “/diagnóstico” que dá as informações do status do GPS como precisão entre outras, use o comando:
rostopic echo /diagnostics
Para parar de visualizar os dados, pressione Ctrl + C.
- Caso queira registrar as informações publicadas sobre o Tópico no arquivo, utilize o comando:
- para gravar os dados de localização do GPS sendo publicados em “/ublox/consertar” Tópico, como latitude, longitude, altitude entre outros:
rostopic echo /ublox/fix > gps_fix_data.txt
- para gravar dados sobre o status do GPS “/diagnóstico”:
rostopic echo /diagnostics > gps_diagnostics.txt
Esses comandos criam arquivos gps_fix_data.txt e gps_diagnostics.txt, onde o tópico será salvo. Para parar a gravação, pressione Ctrl + C.
- Para ver as informações registradas nos arquivos, execute:
nano gps_fix_data.txt
nano gps_diagnostics.txt
- Mensagens ROS são as estruturas de dados usadas para comunicação entre os Nodos ROS. Eles definem as informações trocadas sobre um tópico. As mensagens são definidas usando o formato de arquivo .msg.
Para ver a lista dos tipos de Mensagens ROS, use o comando:
rosmsg list
Para visualizar a estrutura da mensagem, utilize o comando no formato:
rosmsg show
- Por exemplo, a “sensor_msgs/NavSatFix” é um tipo de mensagem no ROS que é usado para representar dados fixos do GPS (Sistema de Posicionamento Global), como latitude, longitude, altitude e outros parâmetros relacionados à posição do GPS.
Para ver a estrutura de “sensor_msgs/NavSatFix” mensagem, use o comando:
rosmsg show sensor_msgs/NavSatFix
- Para ver a lista de ativos Serviços ROS que fornecem uma maneira para os nós enviarem solicitações e receberem respostas, use o comando:
rosservice list
- Para chamar o serviço, use o comando no formato:
rosservice call
Este serviço responderá com o resultado.
Por exemplo, para obter a configuração atual do registrador do u-blox Node, que pode ser útil para fins de depuração e monitoramento, use o comando:
rosservice info /ublox/get_loggers
Se quiser fazer este tutorial, temos todos os produtos em estoque e prontos para serem enviados:
- simpleRTK2B receptor de série (neste tutorial usamos simpleRTK2B Budget)
- Antena multibanda RTK (neste tutorial usamos u-blox GNSS Multiband antenna ANN-MB-00 (IP67))
- cabo USB