Construção de um Mapa usando o Pionner, JoyStick e Sensor Sick LMS

De LCAD
Ir para: navegação, pesquisa

Controle do Pionner com JoyStick

1. Clone o pacote ROSARIA no diretório ~/catkin_ws/src/:

 cd ~/catkin_ws/src/
 git clone https://github.com/amor-ros-pkg/rosaria.git

2. Instale as dependências:

 rosdep update
 rosdep install rosaria
 cd ~/catkin_ws
 catkin_make

3. Instale o pacote jstest-gtk:

 sudo apt-get install jstest-gtk

4. Identifique a porta atribuída ao joystick (e.g., js0). Para isso, liste o conteúdo do diretório /dev/input antes e depois de conectar o joystick:

 ls /dev/input/

5. Libere o acesso à porta do joystick:

 sudo chmod 777 /dev/input/js0

Obs: Substitua js0 pela porta do joystick.

6. Para testar o joystick:

 sudo jstest /dev/input/js0

A saída do joystick aparecerá na tela.

7. Instale o pacote joy:

 sudo apt-get install ros-indigo-joy

8. Para controlar o Pioneer:

8.1. Execute o mestre:

 roscore

8.2. Conecte o joystick.

8.3. Em um novo terminal, configure os parâmetros do nó joy:

 rosparam set joy_node/dev "/dev/input/js0"
   

8.4. Execute o nó joy:

 rosrun joy joy_node

Para visualizar os dados enviados ao nó joy pelo joystick, execute em um novo terminal:

 rostopic echo joy

8.5.Conecte o Pioneer.

8.6. Em um novo terminal, libere a porta atribuída ao Pioneer:

 sudo chmod 777 /dev/ttyUSB*

Obs: Substitua ttyUSB* pela porta do Pioneer.

8.7. Execute o programa ROSARIA:

 rosrun rosaria RosAria

Caso ocorra algum erro com a porta do Pioneer, execute:

 rosrun rosaria RosAria _port:=/dev/ttyUSB*

8.8. Crie um pacote para scripts auxiliares:

 cd ~/catkin_ws/src
 catkin_create_pkg scripts_aux 

8.9. Baixe o script auxiliar descrito abaixo para o diretório ~/catkin_make/src/scripts_aux:

  • RosAriaJoyTeleop.py: controla o Pioneer usando o joystick.

Após baixá-lo, dê a ele permissão de execução:

 cd ~/catkin_ws/src/scripts_aux
 chmod 755 *

8.10. Construa os pacotes:

 cd ~/catkin_ws
 catkin_make

8.12.Em um novo terminal, execute o script RosAriaJoyTeleop.py:

 rosrun scripts_aux RosAriaJoyTeleop.py

Construção do Log de Dados Capturados pelo Sensor Sick LMS

1. Instale os pacotes sicktoolbox e sicktoolbox_wrapper:

 sudo apt-get install ros-indigo-sicktoolbox
 sudo apt-get install ros-indigo-sicktoolbox-wrapper

2. Baixe os scripts auxiliares descritos abaixo para o diretório ~/catkin_make/src/scripts_aux:

  • RosAriaKeyTeleop.py: controla o Pioneer usando o teclado;
  • RosAriaLaserTf.py: publica a posição do sensor Sick LMS no Pioneer.

Após baixá-los, dê a eles permissão de execução:

 cd ~/catkin_ws/src/scripts_aux
 chmod 755 *

3. Construa os pacotes:

 cd ~/catkin_ws
 catkin_make

Construção do Log em um Ambiente Real

1. Crie um arquivo de log para armazenar os dados capturados pelo sensor Sick LMS:

 sudo chmod 777 /dev/input/js0 
 sudo chmod 777 /dev/ttyUSB0        
 sudo chmod 777 /dev/ttyUSB1          
 roscore
 rosrun rosaria RosAria _port:=/dev/ttyUSB0
 rosrun sicktoolbox_wrapper sicklms _port:=/dev/ttyUSB1 _baud=38400
 rosrun scripts_aux RosAriaLaserTf.py
 rosparam set joy_node/dev "/dev/input/js0"
 rosrun joy joy_node
 rosrun scripts_aux RosAriaJoyTeleop.py
 cd "diretorio para armazenar o log"
 rosbag record -O log_map /scan /tf
 rosrun rviz rviz

Obs. 1: Nos comandos 1 e 8 acima, substitua js0 pela porta do joystick, ttyUSB0 pela porta do Pioneer e ttyUSB1 pela porta do sensor Sick LMS. Obs. 2: No comando 11 acima, substitua log_map pelo nome que queria dar ao arquivo de log. Obs. 3: O último comando executa o pacote rviz, uma ferramenta de visualização do ROS.

Construção do Mapa em um Ambiente Simulado

1. Instale o pacote gazebo-ros:

 sudo apt-get install libsdformat1 libsdformat-dev
 sudo apt-get install ros-indigo-gazebo-ros-pkgs ros-indigo-gazebo-ros-control

2. Instale os pacotes ros-control e ros-controllers:

 sudo apt-get install ros-indigo-ros-control ros-indigo-ros-controllers

3. Clone o pacote CT7 para o diretório ~/.gazebo/models/:

 cd ~/.gazebo/models/
 git clone https://github.com/LCAD-UFES/CT7.git

Este pacote contém os modelos 3D das portas, molduras das portas e paredes do segundo andar do Prédio CT-VII.

4. Clone o pacote PioneerModel para o diretório ~/catkin_ws/src/:

 cd ~/catkin_ws/src
 git clone https://github.com/LCAD-UFES/PioneerModel.git

Este pacote contém o modelo do Pioneer.

Após baixá-lo, construa os pacotes:

 cd ~/catkin_ws
 catkin_make

5. Clone o pacote p3dx_controller para o diretório ~/catkin_ws/src/:

 cd ~/catkin_ws/src
 git clone https://github.com/LCAD-UFES/p3dx_controller.git

Após baixá-lo, construa os pacotes:

 cd ~/catkin_ws
 catkin_make

6. Crie um arquivo de log para armazenar os dados capturados pelo sensor Sick LMS:

 roscore
 roslaunch p3dx_gazebo gazebo.launch  
 rosrun p3dx_controller move.py
 cd ~/bagfiles/
 roslaunch p3dx_description rviz.launch 
 rosbag record -O log_map /p3dx/laser/scan /tf

Criação do Mapa Usando o Pacote slam_gmapping

1. Instale o pacote slam_gmapping:

 sudo apt-get install ros-indigo-slam-gmapping

2. Instale o pacote navigation:

 sudo apt-get install ros-indigo-navigation

Obs: O pacote navigation contém o pacote map_server.

3. Execute o mestre, use o carimbo de tempo do log e execute o pacote slam_gmapping:

 roscore
 rosparam set use_sim_time true
 rosrun gmapping slam_gmapping scan:=p3dx/laser/scan

4.Em um novo terminal, reproduza o log:

 cd ~/bagfiles/
 rosbag play --clock log_map.bag

5. Assim que a reprodução do log terminar, salve o mapa no disco. Para isso, entre no diretório no qual deseja salvar o mapa e execute:

rosrun map_server map_saver

Congratz! Você agora terá o mapa salvo como map.pgm.