Tabela de conteúdos

Tutorial de como usar e resolvendo problema de como usar o sick

Instale o driver sick no apt ou synaptic

= Compile =

Configure o sick

* ls -l /dev/ttyUSB0 * sudo chmod a+rw /dev/ttyUSB0

Para sicklms funcionar adequadamente, um núcleo do ros deve ser executado. Em um novo terminal:

$ roscore

Problema com o driver do sick no ROS

Como o driver do Sick é basicamente o mesmo usado no player ele sofre do mesmo problema do driver para player que é se ao tentarmos inicializar o laser e logo em seguida obter uma leitura o driver nao consegue startar corretamente e se fecha. Para isso é necessário que no codigo responsável pela inicialização do laser que o mesmo fique sem tentar obter leituras por algum tempo, por padrão usou-se 30 segundos.

Para resolver o seguinte problema temos que ir para /opt/ros/diamondback/stacks/laser_drivers/sicktoolbox

Nao esqueça de mudar o dono, chown -R usuario /opt/ros/diamondback/stacks/modulo

Então digite make para que os executáveis sejam construídos, uma vez que por padrão apenas as bibliotecas são disponibilizadas, sendo assim impossível modificar os arquivos fontes.

Então em opt/ros/diamondback/stacks/laser_drivers/sicktoolbox/build/sicktoolbox-1.0/c++/drivers/lms/sicklms-1.0 no arquivo SickLMS.cc na linha 125 acrescente um sleep(30);

Compile novamente e volte ao diretorio do driver_laser e compile tambem o sickwrapper(rosmake sicktoolbox_wrapper).

COnfigurando parametros e rodando o sick

Rode:

rosrun sicktoolbox_wrapper sicklms _port:=/dev/XXX _baud:=38400

Onde XXX no meu caso foi ttyUSB0.

As seguintes mensagens devem aparecer:

Attempting to initialize the Sick LMS…

      Attempting to open device @ /dev/ttyUSB0

SickLMS::_setTermSpeed: ioctl() failed while trying to get serial port info!

      NOTE: This is normal when connected via USB!

SickLMS::_setTerminalBaud: ioctl() failed while trying to set serial port info!

      NOTE: This is normal when connected via USB!
              Device opened!
      Attempting to start buffer monitor...
              Buffer monitor started!
      Attempting to set requested baud rate...

SickLMS::_setTermSpeed: ioctl() failed while trying to get serial port info!

      NOTE: This is normal when connected via USB!

SickLMS::_setTerminalBaud: ioctl() failed while trying to set serial port info!

      NOTE: This is normal when connected via USB!
              Operating @ 38400bps
      Attempting to sync driver...
              Driver synchronized!
      Init. complete: Sick LMS is online and ready!
      Sick Type: Sick LMS 291-S05
      Scan Angle: 180 (deg)
      Scan Resolution: 0.5 (deg)
      Measuring Mode: 8m/80m; fields A,B,Dazzle
      Measuring Units: Centimeters (cm)
      Requesting measured value data stream...
              Data stream started!  
              </note>
              </note>
              

Se as seguintes mensagens aparecerem basta apenas abrir outro terminal e executar:

rosrun rviz rviz -d `rospack find sicktoolbox_wrapper`/sick_test.vcg</note>