Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Launch file for "full scan" (multiScan) #437

Open
gschwsiSICKAG opened this issue Dec 20, 2024 · 3 comments
Open

Launch file for "full scan" (multiScan) #437

gschwsiSICKAG opened this issue Dec 20, 2024 · 3 comments

Comments

@gschwsiSICKAG
Copy link
Contributor

How do I have to adjust the launch file so that the sensor gives me a "full scan" or "fullframe" with all 16 layers?

I also want to query which layer the current scan is from.I tried setting "custom_pointclouds" to "cloud_all_fields_fullframe":

Unfortunately, this did not work in with "SickScanApiRegisterCartesianPointCloudMsg", or rather, the callback is never called.

With the setting , the callback of "SickScanApiRegisterCartesianPointCloudMsg" is only called once.

Only the setting works well, but I don't want to split the scans into segments, but into layers.

@rostest
Copy link
Collaborator

rostest commented Dec 20, 2024

Thanks for your feedback. I assume the customer is using the sick_scan_xd API without ROS.

There is no need to adjust the launch file to get the full frame point clouds with all layers. The callback registered with "SickScanApiRegisterCartesianPointCloudMsg" is called for the segments and for the full frame point clouds. The segment_idx of the message is -1 for fullframe point clouds (or the segment index otherwise). To process only the fullframe point clouds, just use if (msg->segment_idx < 0) { /* msg contains the fullframe point cloud */ } and ignore all other messages.

Note that custom point clouds are only supported with ROS. The API only provides the cartesian point clouds with fields (x,y,z,intensity) and the polar point clouds with fields (range,azimuth,elvation,intensity).

Each scan (full frame or segmented) contains the scan points of different layers. The layer of a scan point can be derived from the elevation angle if necessary.

If the callback is not called (or is called only once), the error is probably different. A common error is a wrong or empty udp_receiver_ip parameter, which must be the IP address of the PC running sick_scan_xd.

It is recommended to use SOPAS Air to check the settings, i.e. open the lidar IP address in a browser. If the point cloud is visible in SOPAS Air, the IP addresses are valid. Use the arguments hostname:=<lidar_ip_address> udp_receiver_ip:=<pc_ip_address> to run sick_scan_xd. See usage example and picoScan/multiScan configuration for examples. Please post a full logfile or screenshots of the sick_scan_xd console messages if the problem persists.

@kbabic20
Copy link

kbabic20 commented Dec 23, 2024

I am using the sick_scan_xd API for Windows without ROS.
if (msg->segment_idx < 0) { /* msg contains the fullframe point cloud */ } is only called once or sometimes twice at the beginning. I still recieve the segment msg with if (msg->segment_idx >= 0) but the fullframe is not called anymore.
See console log:
sick_scan_xd_console_log.txt

@rostest
Copy link
Collaborator

rostest commented Jan 7, 2025

Thanks for your log file.

The full scan with an index -1 is only sent if all segments could be collected successfully.

You can see this in your dump here, for example:

msg->segment_idx: 0
msg->segment_idx: 1
msg->segment_idx: 2
msg->segment_idx: 3
msg->segment_idx: 4
msg->segment_idx: 5
msg->segment_idx: 6
msg->segment_idx: 7
msg->segment_idx: 8
msg->segment_idx: 9
msg->segment_idx: 10
msg->segment_idx: 11
msg->segment_idx: -1

From this point onwards, individual segments are always missing in the output so that all segments from 0 to 11 can never be gathered again. For this reason, no further full scan with index -1 is sent.
Are there possibly other network devices connected or are there other delays in your system that are preventing all 12 segments from being received? You may be able to check this with WireShark, for example.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants