Ir para o conteúdo

Primeiros Passos com Lêmure, ROS e Gazebo

O processo de documentação ainda é um trabalho em processo. No meio tempo, confira o principal repositório para os pacotes ROS.

Configurando um ambiente ROS

O primeiro passo para simular o Lêmure é instalar o ROS, de acordo com a documentação. Durante o processo de instalação, escolha a versão Dekstop-Full Install.

Observe

Os pacotes incluídos no lemure_ros foram desenvolvidos em cima da versão Noetic do ROS.

Uma vez instalado e configurado o ROS, rode o seguinte comando para confirmar a saída:

echo $ROS_DISTRO

a saída esperada é

noetic

Você também deve instalar as dependências para compilar e rodar os pacotes do Lêmure:

sudo apt install ros-noetic-controller-manager \
    ros-noetic-ros-control \
    ros-noetic-urdf \
    ros-noetic-xacro \
    ros-noetic-robot-localization \
    ros-noetic-diff-drive-controller \
    ros-noetic-teleop-twist-keyboard \
    python3-catkin-tools

Agora, você pode instalar os pacotes que compõe a simulação do Lêmure. No mesmo terminal, crie uma nova pasta e baixe os pacotes do GitHub.

mkdir -p ~/catkin_ws/src && cd ~/catkin_ws
catkin init
git clone https://github.com/DarwinRobotica/lemure_ros.git src/lemure/

e compile os pacotes com

catkin build

Rodando a sua primeira simulação

Com tudo instalado e configurado, você já pode utilizar os pacotes que vem com o lemure_ros! Vamos começar subindo um ambiente no Gazebo com o nosso rover Lêmure, e teleoperá-lo com o teclado. Primeiro, puxe os pacotes recém-compilados em uma sessão do Terminal com

source ~/catkin_ws/devel/setup.bash

e inicie a simulação lançando o arquivo empty_world.launch do pacote lemure_gazebo

roslaunch lemure_gazebo empty_world.launch

Este comando irá abrir duas novas janelas: Gazebo e Rviz.

Com o Gazebo, é possível simular um mundo com física realista para o nosso robô habitar. O programa realiza todos os cálculos matemáticos por trás para garantir que a simulação respeite as leis da física.

Gazebo showcase

Por outro lado, o Rviz é uma ferramente desenvolvida para nos permitir enxergar o que o robô enxerga. Já que o Lêmure é equipado com um LiDAR e uma câmera RGB, nós conseguimos acompanhar o que o robô entende como seu mundo sensorial.

Rviz showcase

Em outras palavras, o Gazebo representa nosso mundo real, e o Rviz o mundo do robô.

Utilize as ferramentas do Gazebo para inserir um cubo na frente do robô, e confira no Rviz o stream da câmera e as medidas do LiDAR.

Teleoperando o rover

Nosso robô existe num mundo físico e consegue sensoriá-lo. E agora? O próximo passo lógico é fazê-lo mover! Para isso, usamos o pacote teleop_twist_keyboard, que cria uma interface do robô para o nosso teclado. Inicie um node teleoperado com o seguinte comando:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=/lemure_velocity_controller/cmd_vel

After a couple of seconds a prompt will show up and ask you to press some keys in order to send velocity commands to the rover. Simplifying, press

Depois de alguns segundos, uma interface irá aparecer oferecendo algumas direções de movimento, que mandarão comandos de velocidade para o rover. Simplificando,

i : para mover para frente
, : para mover para trás
j : para rotacionar para a esquerda
l : para rotacionar para a direita

Agora você pode mover o rover! Enquanto o robô se move, observe no Rviz as medidas do LiDAR e as imagens provenientes da câmera.

Mapas complexos

Uma outra launch file está disponível com um outro ambiente no Gazebo (o Willow Garage). Para inicializá-la, junto com uma instância do Lêmure, rode o comando

roslaunch lemure_gazebo willowgarage_world.launch

Lêmure na WillowGarage

Neste mapa, as medidas do LiDAR e as imagens da câmera são bem mais interessantes de se analisar. Tente teleoperar o Lêmure e se mover pelo mapa!