====== Tutorial de como usar e resolvendo problema de como usar o sick ======
Instale o driver sick no apt ou synaptic
= Compile =
* $ rosdep install sicktoolbox_wrapper rviz
* $ rosmake sicktoolbox_wrapper rviz
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!
Se as seguintes mensagens aparecerem basta apenas abrir outro terminal e executar:
rosrun rviz rviz -d `rospack find sicktoolbox_wrapper`/sick_test.vcg