ifm / ifm3d-ros

ifm pmd-based 3D ToF Camera ROS Package
Apache License 2.0
40 stars 39 forks source link

Lib: Pixel format error #68

Open thermofluid06 opened 1 year ago

thermofluid06 commented 1 year ago

Hi everyone,

I am using ifm3d version 0.93.0, ifm3d-ros version v1.0.1, camera is 03R222

I have the following warning message when I try to launch the camera in ROS and I can't see any topic being published in ROS. Rviz is also empty. Can you help me solving the issue?:

[ WARN] [1677676864.055349177]: Timeout waiting for camera! [ WARN] [1677676864.105023235]: -100010: Lib: Pixel format error - didn't expect a particular pixel type [ WARN] [1677676864.105140821]: Timeout waiting for camera! [ WARN] [1677676864.155067663]: -100010: Lib: Pixel format error - didn't expect a particular pixel type

Screenshot from 2023-03-01 14-24-41

lola-masson commented 1 year ago

Which firmware version are you using?

Also, please check that the camera connected to Port0 (the one you are requesting data from in the screenshot) is in "RUN" mode. If the camera in Port0 is the RGB camera, and you are using FW 16.23, then this is a known bug, see https://github.com/ifm/ifm3d-ros/issues/67.

thermofluid06 commented 1 year ago

I can ping the device but if I use ifm3d without the ROS wrapper, I have the following response from the camera:

Screenshot from 2023-03-01 15-35-49

thermofluid06 commented 1 year ago

Which firmware version are you using?

Also, please check that the camera connected to Port0 (the one you are requesting data from in the screenshot) is in "RUN" mode. If the camera in Port0 is the RGB camera, and you are using FW 16.23, then this is a known bug, see #67.

I can confirm that we are using FW 16.23 after running ifm3d dump.

lola-masson commented 1 year ago

I can ping the device but if I use ifm3d without the ROS wrapper, I have the following response from the camera:

Screenshot from 2023-03-01 15-35-49

Since ifm3d supports multiple devices, it happens that some available commands are not applicable to the O3R, which is what you are seeing here.

I can confirm that we are using FW 16.23 after running ifm3d dump.

Could you please provide the output of the ifm3d dump here, thanks!

thermofluid06 commented 1 year ago

Here is the output from the ifm3d dump. Sorry for the formatting.

`{ "applications": { "classes": { "ods": { "instanceSchema": {}, "license": "UNLICENSED", "minimumFirmwareVersion": { "major": 0, "minor": 16, "patch": 3 }, "version": { "major": 0, "minor": 0, "patch": 0 } } } }, "device": { "clock": { "currentTime": 1675546327159571032, "sntp": { "active": true, "activeServerAddress": "", "activeServerName": "time1.google.com", "availableServers": [], "systemClockSynchronized": false } }, "diagnostic": { "confInitStages": [ "device", "ports", "applications" ], "temperatures": [ { "entity": "PLL-therm", "value": 42.5 }, { "entity": "MCPU-therm", "value": 42.5 }, { "entity": "PMIC-Die", "value": 100.0 }, { "entity": "Tboard_tegra", "value": 38.0 }, { "entity": "GPU-therm", "value": 40.5 }, { "entity": "BCPU-therm", "value": 42.5 }, { "entity": "thermal-fan-est", "value": 41.70000076293945 }, { "entity": "Tdiode_tegra", "value": 39.75 }, { "entity": "port2", "overtemperature": false, "temperatureLimit": 77, "valid": true, "value": 40 } ], "upTime": 7324000000000 }, "info": { "description": "", "device": "0302", "deviceTreeBinaryBlob": "tegra186-quill-p3310-1000-c03-00-base.dtb", "features": {}, "guiSettings": "", "name": "", "partNumber": "OVP800", "productionState": "AA", "serialNumber": "000021068958", "vendor": "0001" }, "log": { "components": {}, "level": "warn", "storage": "volatile" }, "network": { "authorized_keys": "", "interfaces": { "eth0": { "ipAddressConfig": 0, "ipv4": { "address": "192.168.0.69", "dns": "0.0.0.0", "gateway": "192.168.0.201", "mask": 24 }, "mac": "48:B0:2D:68:68:F9", "networkSpeed": 0, "useDHCP": false }, "eth1": { "ipAddressConfig": 0, "mac": "00:02:01:43:93:13", "networkSpeed": 0, "useDHCP": true } } }, "status": "OPERATE", "swVersion": { "euphrates": "1.18.3", "firmware": "0.16.23-823", "kernel": "4.9.140-l4t-r32.4+g8c7b68130d9a", "l4t": "r32.4.3", "schema": "v1.4.1", "tcu": "1.0.4" } }, "ports": { "port0": { "acquisition": { "delay": 0, "framerate": 5.0, "version": { "major": 0, "minor": 0, "patch": 0 } }, "data": { "algoDebugConfig": { "version": { "major": 0, "minor": 13, "patch": 12 } }, "availablePCICOutput": [ "RGB_INFO" ], "pcicTCPPort": 50010 }, "info": { "calibration": { "version": { "major": 0, "minor": 1, "patch": 1 } }, "device": "2301", "deviceTreeBinaryBlobOverlay": "001-ov9782.dtbo", "features": { "fov": { "horizontal": 127, "vertical": 80 }, "resolution": { "height": 800, "width": 1280 }, "type": "2D" }, "icc": { "version": { "major": 0, "minor": 0, "patch": 0 } }, "name": "", "partNumber": "O3R222", "productionState": "AB", "sensor": "OV9782", "sensorID": "OV9782_127x80_noIllu_Csample", "serialNumber": "000020922669", "vendor": "0001", "version": { "major": 11, "minor": 1, "patch": 0 } }, "mode": "standard_autoexposure2D", "processing": { "extrinsicHeadToUser": { "rotX": 0.0, "rotY": 0.0, "rotZ": 0.0, "transX": 0.0, "transY": 0.0, "transZ": 0.0 }, "version": { "major": 0, "minor": 13, "patch": 12 } }, "state": "RUN" }, "port2": { "acquisition": { "channelSelection": "manual", "channelValue": 0, "delay": 0, "exposureLong": 500, "exposureShort": 200, "framerate": 10.0, "offset": 0.0, "swTriggerGroup": 0, "version": { "major": 0, "minor": 0, "patch": 0 } }, "data": { "algoDebugConfig": { "version": { "major": 0, "minor": 13, "patch": 12 } }, "availablePCICOutput": [ "TOF_INFO", "RADIAL_DISTANCE_NOISE", "RADIAL_DISTANCE_COMPRESSED", "REFLECTIVITY", "AMPLITUDE_COMPRESSED", "CONFIDENCE" ], "pcicTCPPort": 50012 }, "info": { "calibration": { "version": { "major": 0, "minor": 6, "patch": 1 } }, "device": "3101", "deviceTreeBinaryBlobOverlay": "001-irs2381c.dtbo", "features": { "fov": { "horizontal": 60, "vertical": 45 }, "resolution": { "height": 172, "width": 224 }, "type": "3D" }, "icc": { "version": { "major": 1, "minor": 0, "patch": 6 } }, "name": "", "partNumber": "O3R222", "productionState": "AB", "sensor": "IRS2381C", "sensorID": "IRS2381C_60x45_4x2W_60x45_C2", "serialNumber": "000020922669", "vendor": "0001", "version": { "major": 11, "minor": 1, "patch": 0 } }, "mode": "standard_range2m", "processing": { "diParam": { "anfFilterSizeDiv2": 2, "dynamicSymmetryThreshold": 20.0, "enableTemporalFilter": true, "maxDistNoise": 0.05, "medianSizeDiv2": 0, "minAmplitude": 20.0, "minReflectivity": 2.0, "mixedPixelFilterMode": 1, "mixedPixelThresholdRad": 0.05 }, "extrinsicHeadToUser": { "rotX": 0.0, "rotY": 0.0, "rotZ": 0.0, "transX": 0.0, "transY": 0.0, "transZ": 0.0 }, "version": { "major": 0, "minor": 13, "patch": 12 } }, "state": "RUN" } } }

`

lola-masson commented 1 year ago

When launching the ROS node with the camera.launch, you are pointing to port0 by default. Which in your case is a 2D camera, hence the timeout (known bug https://github.com/ifm/ifm3d-ros/issues/67). To run the camera.launch pointing to port 2, you can use: roslaunch ifm3d_ros_driver camera.launch pcic_port:=50012

Note that you can see in the parameters listed in the terminal in your first screenshot that the port used is 50010 (=Port0)

thermofluid06 commented 1 year ago

I have run the launch file with the port argument (pcic_port:=50012) as you have suggested. This time I got the following warning message. In Rviz or in Terminal rostopic echo /ifm3d_ros_driver/camera/cloud doesn't return any measurement data. I have tested with two different computers. Screenshot from 2023-03-07 08-02-19

lola-masson commented 1 year ago

This times it looks like you are pointing to the right port indeed. Have you been able to get data without using ROS, for instance using ifm3dpy, or the ifm Vision Assistant?

thermofluid06 commented 1 year ago

I tried again roslaunch ifm3d_ros_driver camera.launch pcic_port:=50012 and I got the following response below. However I can ping the camera. Later I tried to change the json file so that the port0 switches to RUN state using rosservice call /ifm3d_ros_driver/camera/Config "json: 'test.json'" . When I call the service, the process which is launching the camera dies.

I used the instructions from this link to install C++API : https://api.ifm3d.com/html/content/installation_instructions/install_from_source_linux.html

Screenshot from 2023-03-20 10-08-51 Screenshot from 2023-03-20 10-09-08

lola-masson commented 1 year ago

In the latest screenshot, it looks like you cannot ping the camera. Did you happen to change the IP address of the device? And again, are you able to get data in any other way than ROS (python, Vision Assistant or c++)?