Carrinho de caminhĂŁo ROS. Parte 8. Controlamos a partir do controle ROS do telefone, nĂł GPS

Continuação da série de artigos.

Posts da série:
8. NĂłs controlamos a partir do telefone-ROS Control, GPS-node
7. Localização do robô: gmapping, AMCL, pontos de referência no mapa da sala
6. Odometria com codificadores de roda, mapa da sala, lidar
5. Trabalhamos em rviz e gazebo: xacro, novos sensores.
4. Crie uma simulação de robô usando os editores rviz e gazebo.
3. Acelere, troque a câmera, conserte a marcha
2. Software
1. Ferro

Ao criar mapas em um robô em um espaço limitado, não há problemas. Ao controlar o robô a partir do teclado a partir da estação de controle ou no próprio robô, você pode observar visualmente seus movimentos e evitar obstáculos indesejados no tempo. A situação é complicada se houver vários quartos. E aqui há várias opções para observar um robô construindo um mapa se ele sair da sala do operador:
- conecte a câmera diretamente ao robô;
- use o sistema de vigilância por vídeo existente fora do robô;
- controle com wi-fi, teclado bluetooth, estando perto do robĂ´
- “carregue o robô em seus braços” para que o lidar colete dados;
- controle o robĂ´ pelo telefone.

A última opção pode parecer conveniente. Para controlar o robô pelo telefone, basta incliná-lo (o telefone) na direção certa enquanto o robô está construindo um mapa. Tal missão é possível.
Vamos considerar como direcionar o robĂ´ a partir do telefone, enviando as mensagens apropriadas para os tĂłpicos do ROS no robĂ´.

Não é necessário escrever um aplicativo separado no telefone para os fins declarados. Para tirar proveito das práticas existentes, basta fazer o download para o seu telefone e instalar o aplicativo Android do mercado - “ROS Control”.

Configure o aplicativo ROS Control no seu telefone.


A aplicação é intuitiva - um robô é adicionado com um sinal "+", seu ip é definido:
quadro


Em seguida, selecione "Mostrar opções avançadas" e prescreva tópicos para o carrinho de robô:
quadro


quadro


As mensagens do telefone serão direcionadas para esses tópicos e também serão aceitas em um formato que o ROS entende.
No aplicativo, os tĂłpicos estĂŁo disponĂ­veis para nĂłs:
- tĂłpico do joystick - controle do telefone;
- tĂłpico de varredura a laser - dados do lidar;
- nav sat topic - dados do robĂ´ gps;
- odom - odometria (tudo o que chega dos codificadores e / ou imu e / ou lidar);
- pose - "position", a localização do robô.

Domine o tĂłpico do joystick.


O robô em si não funciona, portanto, lançaremos um tópico no robô com um driver de movimento, que já foi apresentado em posts anteriores:
1Âş terminal:
rosrun rosbots_driver part2_cmr.py

No telefone no aplicativo ROS Control, clique na linha com o nome do robĂ´ e falhe no menu de controle do robĂ´:
quadro


Agora, se você puxar o joystick com o dedo (em qualquer direção), o carrinho irá embora.Tudo é simples aqui.
Se você observar o que acontece com o tópico do driver do mecanismo em execução no raspberry, verá que o telefone publica e o driver recebe mensagens no formato apropriado:


Todos os outros tĂłpicos funcionam com o mesmo princĂ­pio.

* Se, no entanto, algo deu errado, é necessário, estando no modo de controle do robô, clique em três faixas paralelas no canto superior esquerdo da tela do aplicativo. Falha nas "Preferências" e selecione "Tópicos":

quadro


quadro


Em seguida, clicando no tĂłpico apropriado, registre o caminho (Valor):
quadro



Vamos ver o que o lidar está no aplicativo.


No robĂ´, execute o nĂł lidar:
roslaunch rplidar_ros rplidar.launch
Se vocĂŞ entrar novamente no aplicativo, na tela de controle do robĂ´, veremos pontos caracterĂ­sticos e uma seta azul:
quadro



* Você também pode andar inclinando o telefone em diferentes direções e selecionando o Modo de controle de inclinação:
quadro


Existem outros modos de "dirigir", mesmo com a capacidade de indicar um ponto no mapa, diretamente no telefone, mas como o mapa é muito arbitrário, a viagem também será condicional, ou seja, não vai a lugar nenhum.

Com tópicos de movimento, como câmeras (não consideraremos isso), tudo fica mais ou menos claro, trataremos de gps.


Há pouco sentido na sala dos gps, mas é interessante ver como funciona.
Para testes, qualquer apito de GPS é adequado. Minha opção é a seguinte -
quadro


Para fazĂŞ-lo funcionar, primeiro vocĂŞ precisa instalar o nĂł gps no raspberry.
Mas primeiro, vamos verificar se o apito do GPS funciona, caso contrário, todas as outras conversas serão a favor dos pobres.
Colocamos pacotes em framboesa:
sudo apt-get install gpsd
sudo apt-get install gpsd-clients

Verifique se o apito do GPS está definido entre os dispositivos USB:
lsusb


Agora, verifique se o GPS está aceitando algo:
gpscat -s 9600 /dev/ttyACM1
* Em vez de ttyACM1, pode haver outros valores (ttyACM0, ttyUSB0, ttyAMA0), dependendo da porta em que o apito do GPS está ativado.
As mensagens GPS piscarĂŁo no terminal:
quadro


Dados mais estruturados (agradáveis ​​aos olhos) podem ser obtidos da seguinte maneira:
gpsmon /dev/ttyACM1
quadro


* as coordenadas não são minhas, o que é estranho. Não está claro com o que isso está conectado.

Instale o nĂł gps no raspberry:
sudo apt-get install libgps-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/nmea_navsat_driver
git clone https://github.com/ros/roslint
cd /home/pi/rosbots_catkin_ws
catkin_make


Agora que montamos o nĂł do GPS, execute-o (no robĂ´):
rosrun nmea_navsat_driver nmea_serial_driver _port:=/dev/ttyACM1 _baud:=9600

Se você observar os tópicos (em outro terminal do robô), poderá ver que o telefone está inscrito em um tópico e a publicação de um nó gps vai para outro:
quadro


Altere o tópico de recebimento no telefone para / fix fix através das configurações descritas acima.
Após a alteração, a publicação e recepção em um tópico:
quadro


E no telefone vocĂŞ pode observar as coordenadas:
quadro



Odometria (tĂłpico / odom).


Se você executar o nó de odometria de postagens anteriores, quando o robô se mover, também será possível obter as velocidades linear e angular do robô no telefone (as velocidades não são calculadas usando gps).
No robĂ´:
cd /home/pi/rosbots_catkin_ws/src/rosbots_driver/scripts/rosbots_driver
python diff_tf.py

No telefone:
quadro

Source: https://habr.com/ru/post/pt474650/


All Articles