====== 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