Mudanças entre as edições de "Construção de um Mapa usando o Pionner, JoyStick e Sensor Sick LMS"

De LCAD
Ir para: navegação, pesquisa
Linha 1: Linha 1:
==Instalação dos Pacotes para Controlar o Pionner com JoyStick==
+
==Controle do Pionner com JoyStick==
  
1. Instalar o pacote ROSARIA (http://wiki.ros.org/ROSARIA):
+
1. Instale o pacote ROSARIA (http://wiki.ros.org/ROSARIA):
 
   cd ~/catkin_ws/src
 
   cd ~/catkin_ws/src
 
   git clone https://github.com/amor-ros-pkg/rosaria.git
 
   git clone https://github.com/amor-ros-pkg/rosaria.git
  
2. Instalar as dependências:
+
2. Instale as dependências:
 
   rosdep update
 
   rosdep update
 
   rosdep install rosaria
 
   rosdep install rosaria
Linha 11: Linha 11:
 
   catkin_make
 
   catkin_make
  
3. Instalar o pacote jstest-gtk para utilizar o joystick:
+
3. Instale o pacote jstest-gtk para utilizar o joystick:
 
   sudo apt-get install jstest-gtk
 
   sudo apt-get install jstest-gtk
 
 
4. Identificar a porta atribuída ao joystick (e.g., jsX). Para isso, liste o conteúdo do diretório /dev/input antes e depois de conectar o joystick:  
+
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/
 
   ls /dev/input/
 
 
5. Liberar o acesso à porta do joystick:
+
5. Libere o acesso à porta do joystick:
   sudo chmod 777 /dev/input/jsX
+
   sudo chmod 777 /dev/input/js0
  
Observação: Mude "X" pelo número referente a seu dispositiv
+
Obs: Substitua js0 pela porta do joystick.
 +
 
 +
6. Para testar o joystick:
 +
  sudo jstest /dev/input/js0
 
 
Para testar o joystic use:
+
A saída do joystick aparecerá na tela.
$ sudo jstest /dev/input/jsX
+
 
A saída do joystick aparecerá na tela. Aperte os botões para ver a alteração nos dados
+
7. Instale o pacote joy (http://wiki.ros.org/joy/Tutorials/ConfiguringALinuxJoystick):
 +
  sudo apt-get install ros-indigo-joy
 +
 
 +
8. Para controlar o Pioneer:
 +
 
 +
8.1. Inicie o roscore:
 +
  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 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 gerado acima.
 +
 
 +
* RosAriaJoyTeleop.py: controla o Pioneer usando o joystick.
 +
 
 +
8.10. Dê permissão de execução para o script auxiliar mencionado acima:
 +
  cd ~/catkin_ws/src/scripts_aux
 +
  chmod 755 *
 +
 
 +
8.11. Construa os pacotes:
 +
  cd ~/catkin_ws
 +
  catkin_make
 +
 
 +
8.12.Em um novo terminal, execute o programa para definir os controles do pioneer
 +
  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; e
 +
* RosAriaLaserTf.py: publica a posição do sensor Sick LMS no Pioneer.
 +
 
 +
3. Dê permissão de execução para os scripts mencionados acima:
 +
  cd ~/catkin_ws/src/scripts_aux
 +
  chmod 755 *
 +
 
 +
4. Construa os pacotes:
 +
  cd ~/catkin_ws
 +
  catkin_make
  
 +
=Construção do Log em um Ambiente Real=
  
*instalar o pacote joy do ROS:
+
1. Crie um arquivo de log para armazenar os dados capturados pelo sensor Sick LMS:
$ sudo apt-get install ros-indigo-joy
+
  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
  
Mais informações: http://wiki.ros.org/joy/Tutorials/ConfiguringALinuxJoystick
+
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 para a interface de controle do robô entre o ROS e gazebo:
 +
 
 +
  sudo apt-get install ros-indigo-ros-control ros-indigo-ros-controllers
 +
 
 +
3. Para a simulação, será utilizado o modelo 3D do 2º andar do CT-VII (UFES). Faça o download dos modelos:
 +
 
 +
* modeloCT7.zip: contém 3 pastas. Cada pasta corresponde a malhas que compõem o segundo andar do CT-VII.
 +
 
 +
4. extraia essas 3 pastas e mova-as/copie para a pasta (oculta) de modelos do Gazebo:
 +
  unzip modeloCT7.zip -d modeloCT7
 +
  mv modeloCT7/* ~/.gazebo/models/
 +
 
 +
5. Baixe os arquivo abaixo para o diretório catkin_ws/src:
 +
 
 +
* PioneerModel.zip: Pacotes com o modelo do pioneer utilizando o mapa do CT7
 +
 
 +
6. Descompacte e construa os pacotes
 +
  cd ~/catkin_ws/src
 +
  unzip PioneerModel.zip
 +
  cd ..
 +
  catkin_make
 +
 
 +
7. Baixe o pacote descrito abaixo para o diretório catkin_ws/src.
 +
 
 +
* p3dx_controller.zip: controla o Pioneer usando o teclado.
 +
 
 +
Após baixá-lo, descompacte-o e construa os pacotes:
 +
  cd ~/catkin_ws/src
 +
  unzip p3dx_controller.zip
 +
  cd ~/catkin_ws/src/p3dx_controller/scripts
 +
  chmod 755 *
 +
  cd ~/catkin_ws
 +
  catkin_make
 +
 
 +
8. 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.
  
*Faça o download do programa para definir os controles do Pioneer
+
3. Execute o mestre, use o carimbo de tempo do log e execute o pacote slam_gmapping:
(modificar para nosso link)
+
  roscore
http://wiki.lofarolabs.com/index.php/Setting_Up_joystick_to_control_Pioneer_3-DX_in_ROS
+
  rosparam set use_sim_time true
 +
  rosrun gmapping slam_gmapping scan:=p3dx/laser/scan
  
*Controlar o Pioneer
+
4.Em um novo terminal, reproduza o log:
1.Inicie o roscore
+
  cd ~/bagfiles/
$roscore
+
  rosbag play --clock log_map.bag
2.Conecte o controle
 
3.Em um novo terminal configure os paramentros para o nó joy com o caminho do seu dispositivo
 
$rosparam set joy_node/dev "/dev/input/jsX"
 
    4.Rode o nó joy_node
 
$ rosrun joy joy_node
 
*Opcional*:Para visualizar os dados enviados ao joy pelo controle use em um novo terminal:
 
$rostopic echo joy
 
5.Conecte o robô
 
6.Em um novo terminal Libere a porta do robô
 
sudo chmod 777 /dev/ttyUSB*
 
7.Rode o Rosaria
 
$ rosrun rosaria RosAria
 
**caso ocorra algum erro com a porta use:
 
$ rosrun rosaria RosAria _port:=/dev/ttyUSB0
 
Substituindo ttyUSB0 pela porta do robô
 
8.Em um novo terminal rode o programa para definir os controles do pioneer
 
$ rosrun yourpackage Joystick_controller.cpp
 
  
==Instalação do Drive do Sensor Sick LMS e Gerar um Log dos Dados Capturados pelo Sensor==
+
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
  
==Construção do Mapa==
+
Congratz! Você agora terá o mapa salvo como map.pgm.

Edição das 16h55min de 17 de setembro de 2015

Controle do Pionner com JoyStick

1. Instale o pacote ROSARIA (http://wiki.ros.org/ROSARIA):

 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 para utilizar o joystick:

 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 (http://wiki.ros.org/joy/Tutorials/ConfiguringALinuxJoystick):

 sudo apt-get install ros-indigo-joy

8. Para controlar o Pioneer:

8.1. Inicie o roscore:

 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 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 gerado acima.

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

8.10. Dê permissão de execução para o script auxiliar mencionado acima:

 cd ~/catkin_ws/src/scripts_aux
 chmod 755 *

8.11. Construa os pacotes:

 cd ~/catkin_ws
 catkin_make

8.12.Em um novo terminal, execute o programa para definir os controles do pioneer

 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; e
  • RosAriaLaserTf.py: publica a posição do sensor Sick LMS no Pioneer.

3. Dê permissão de execução para os scripts mencionados acima:

 cd ~/catkin_ws/src/scripts_aux
 chmod 755 *

4. 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 para a interface de controle do robô entre o ROS e gazebo:

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

3. Para a simulação, será utilizado o modelo 3D do 2º andar do CT-VII (UFES). Faça o download dos modelos:

  • modeloCT7.zip: contém 3 pastas. Cada pasta corresponde a malhas que compõem o segundo andar do CT-VII.

4. extraia essas 3 pastas e mova-as/copie para a pasta (oculta) de modelos do Gazebo:

 unzip modeloCT7.zip -d modeloCT7
 mv modeloCT7/* ~/.gazebo/models/
 

5. Baixe os arquivo abaixo para o diretório catkin_ws/src:

  • PioneerModel.zip: Pacotes com o modelo do pioneer utilizando o mapa do CT7

6. Descompacte e construa os pacotes

 cd ~/catkin_ws/src
 unzip PioneerModel.zip
 cd ..
 catkin_make

7. Baixe o pacote descrito abaixo para o diretório catkin_ws/src.

  • p3dx_controller.zip: controla o Pioneer usando o teclado.

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

 cd ~/catkin_ws/src
 unzip p3dx_controller.zip
 cd ~/catkin_ws/src/p3dx_controller/scripts
 chmod 755 *
 cd ~/catkin_ws
 catkin_make

8. 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.