Rodando o simulador flatland

O que é o flatland? É um “simulador de robôs bidimensional com foco na performance e compatível com ROS”[1].

O vídeo abaixo mostra o flatland em ação:

Fiz a instalação e alguns testes preliminares no Pop! OS 20.04 e usando a versão noetic do ROS. Para outras versões pode ser necessário adaptar algum comando.

Como instalar?

1º) Fazer a instalação do ROS versão Noetic (versão base)

Mais detalhes em http://wiki.ros.org/noetic/Installation/Ubuntu

2º) Instalar as dependências

Precisei instalar as dependências a seguir para o simulador funcionar. Eles englobam vários pacotes e pode ser que alguns deles já estejam instalados no seu sistema. As dependências podem ser instaladas através do apt:

sudo apt install ros-noetic-tf ros-noetic-tf2 ros-noetic-tf2-geometry-msgs ros-noetic-interactive-markers libyaml-cpp-dev qtbase5-dev liblua5.3-dev

3º) Instalar o simulador em si

Seguir o tutorial “Create Plugin Tutorial”: https://flatland-simulator.readthedocs.io/en/latest/flatland_tutorials/create_plugin.html

Até esse ponto, usando o comando roslaunch (último comando do tutorial) deve abrir o simulador sem nada muito interessante

4º) Rodar o modelo básico

Uma vez instalado o flatland é possível criar um modelo básico que pode interagir com o mapa

Para isso siga o tutorial “Quick start”: https://flatland-simulator.readthedocs.io/en/latest/quick_start.html

Se tudo deu certo agora você pode mandar mensagens nos tópicos do ROS controlando o robô.

Se você não entendeu o parágrafo acima e/ou o que é o ROS vale a pena visitar o site do projeto antes de mais nada: https://www.ros.org/

Se você já sabe o que é o ROS e o que é um tópico pode mandar mensagens do tipo Twist para controlar o robô via linha de comando da seguinte maneira

rostopic pub -1 /cmd_vel geometry_msgs/Twist ‘{linear: {x: 1.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}’

O comando acima faz o robô andar para a frente. Se o valor de x for negativo ele vai andar para trás. Para girar o robô modifique o valor de z da velocidade angular.

5) Controlando o robô via Python

Fiz um programa em Python bem básico que faz o robô ser controlável pelo teclado: ‘a’ e ‘z’ fazem o robô andar para frente e para trás respectivamente e ‘s’ e ‘x’ para girar o robô. A tecla ‘q’ faz o robô parar e encerra o programa.

O código está disponível abaixo.

Script em Python para controlar um robô via ROS

Se o ROS estiver corretamente instalado o programa abaixo deve funcionar sem precisar de nenhuma instalação adicional.

Referências:

[1] Site do flatland https://flatland-simulator.readthedocs.io/en/latest/index.html

[2] Site do ROS https://www.ros.org/

Deixe um comentário

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