SICKAG / sick_scan_xd

Based on the sick_scan drivers for ROS1, sick_scan_xd merges sick_scan, sick_scan2 and sick_scan_base repositories. The driver supports both Linux (native, ROS1, ROS2) and Windows (native and ROS2).
Apache License 2.0
105 stars 86 forks source link

Problems receiving scan data from picoscan 150 #372

Closed samuelorrEMS closed 2 months ago

samuelorrEMS commented 3 months ago

Hello,

I am trying to make an application based on the provided sick_scan_xd_api_test.py program. It will run on windows with no ROS. All I want to do is connect to the picoscan, receive scan data and convert it to x and y coordinates so that I can graph it with matplotlib.

So far running the program I am able to connect to the sensor and send it devicestatus message requests which I get a response of 1 to. I can not figure out what I am missing in order to receive actual scan data from the sensor but nothing I have tried seems to work. I have attached the program in its current state as well as the picoscan launch file that I have been using. Any help would be appreciated.

I have also tried using an unedited version of sick_scan_xd_api_test.py in an attempt to see scan data but I see the same console output as my code, devicestatus message request and responses but no indication that the scan data is being sent.

Thank you!

code.txt picoscan_launch.txt

rostest commented 2 months ago

Thanks for your feedback. Picoscan lidars transmit their scan data via UDP to the receiving PC, i.e. the sick_scan_xd driver. A common error is an incorrect configuration of the receivers ip address.

Please run the following steps:

  1. Run ifconfig -a on Linux or ipconfig /all on Windows to get the ip address of your PC. Make sure that picoScan and PC have ip addresses in the same subnet.

  2. Check parameter udp_receiver_ip in the launchfile. Make sure that <arg name="udp_receiver_ip" default="192.168.0.2"/> in the launchfile is the correct ip address ("192.168.0.2") of your PC running sick_scan_xd resp. your application. See https://github.com/SICKAG/sick_scan_xd/blob/develop/doc/sick_scan_segment_xd.md#configuration for further information.

  3. Run SOPAS Air, i.e. open the picoScan ip address in a browser (192.168.0.1 by default). Switch to "authorized client" and check the network configuration and ip settings. If everything is correct, you should see the picoScan pointcloud in the main window.

  4. Run sick_scan_xd_api_test.py with command line arguments hostname:=<picoScan ip> udp_receiver_ip:=<pc_ip> _verbose:=1. Replace <picoScan_ip> with the ip address of your lidar (192.168.0.1 by default) and <pc_ip> with the ip address of your PC. These are the same parameters used in SOPAS Air. Parameter _verbose:=1 sets the verbose level to informational messages. Please provide a complete logfile of all output messages if no scan data are received and the registered point cloud callback is never executed.

  5. Add SickScanApiSetVerboseLevel(sick_scan_library, api_handle, 1) after SickScanApiRegisterLogMsg to activate informational messages and run your code.

samuelorrEMS commented 2 months ago

Hello, I attempted to implement your suggestions. I ran the sick_scan_xd_api_test.py and sick_picoscan.launch included with the sick_scan_xd repository but I am still not seeing any scan data in the output.

I have attached the output to this message (apitest.txt). I have also included the sick_scan_xd_api_test.py file I ran as a text file (github wont let me attach a python file) and the sick_picoscan.launch file as a text file (github wont let me attach a launch file).

I ran the code using the following command: PS C:\Users\orrs\code\sick_scan_xd> & C:/Users/orrs/AppData/Local/Microsoft/WindowsApps/python3.11.exe c:/Users/orrs/code/sick_scan_xd/test/python/sick_scan_xd_api/sick_scan_xd_api_test.py C:/Users/orrs/code/sick_scan_xd/launch/sick_picoscan.launch hostname:=192.168.0.1 udp_receiver_ip:=192.168.0.2 verbose:=1 > C:\Users\orrs\apitest.txt

I have confirmed that the IP address of the scanner is 192.168.0.1 by entering that ip address into my web browser, I can see the picoscan pointcloud in the main window. I have also confirmed that the IP address of the ethernet I am using to connect to the sensor is correct by running ipconfig /all and getting the IPv4 address (192.168.0.2). I have confirmed that both ip addresses are in subnet 255.255.255.0.

Let me know if you understand why we are still not seeing any scan data, any help would be appreciated!

sick_picoscan.txt sick_scan_xd_api_test.txt api_test.txt

Thank you!

samuelorrEMS commented 2 months ago

We resolved the issue, it turns out that the scanner could not communicate with the computer because the computer's firewall did not allow access through the UDP port that we had specified. Thank you for your help