ifm / ifm3d

Library and Utilities for working with ifm pmd-based 3D ToF Cameras
https://api.ifm3d.com
Apache License 2.0
106 stars 69 forks source link

Multiple failures on 'make check' (Ubuntu 20.04 build from source) #355

Closed KtGunn closed 1 year ago

KtGunn commented 1 year ago

I am building from source on Ubuntu 20.04. When running make check I get multiple failures:

[----------] Global test environment tear-down
[==========] 21 tests from 2 test suites ran. (87 ms total)
[  PASSED  ] 11 tests.
[  FAILED  ] 10 tests, listed below:
[  FAILED  ] StlImageBuffer.MoveCtor
[  FAILED  ] StlImageBuffer.MoveAssignmentOperator
[  FAILED  ] StlImageBuffer.CopyCtor
[  FAILED  ] StlImageBuffer.CopyAssignmentOperator
[  FAILED  ] StlImageBuffer.References
[  FAILED  ] StlImageBuffer.ComputeCartesian
[  FAILED  ] StlImageBuffer.TimeStamp
[  FAILED  ] StlImageBuffer.IlluTemp
[  FAILED  ] StlImageBuffer.DistanceNoiseImage
[  FAILED  ] StlImage.setTo

Most of the error messages in the test of StlImageBuffer are: C++ exception with description "Lib: The detected device is not supported by the library" thrown in the test body.

I am able to ping the OVP800 at 192.168.0.69, the default IP, although the message with the last failed StlImageBuffer test, DistanceNoiseImage test is: C++ exception with description "Lib: XMLRPC Timeout - can you `ping' the sensor?" thrown in the test body.

Information about my environment:

Linux Ubuntu-Precision-5560-1 5.14.0-1044-oem #49-Ubuntu SMP Mon Jun 27 12:26:11 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Ubuntu 20.04.4 LTS
IFM3D version:
v0.93.0+0.0042452*v0.93.0*0*93*0**0*0042452

Can you please advice me how to proceed to complete the install successfully? Thank you.

graugans commented 1 year ago

Hey @KtGunn,

maybe the firmware on your device is outdated. Can you please check this:

$ curl http://192.168.0.69/api/rpc/v1/com.ifm.efector/?method=getSWVersion

I do get a response like this:

<div style="border: 1px solid; padding: 2px"><b>Response</b><br>{
    "error": null,
    "id": null,
    "result": {
        "IFM_Software": "0.16.3-643",
        "Linux": "Linux version 4.9.140-l4t-r32.4+ga89de209c6a7 (oe-user@oe-host) ",
        "Main_Application": "1.9.0"
    }
}
</div><br><form method='post'>id: <input name='id' type='text' value='1'><br><i>(JSON-RPC id, will directly be copied to answer-msg)</i><br>
method: <input name='method' type='text'><br><i>(e.g. org.freedesktop.DBus.Introspectable.Introspect, org.freedesktop.DBus.ListNames)</i><br>params: <input name='params' type='text' value='[]'><br><i>(The bridge now support minimal type-convertion ... //FIXME: atm there are still some parts missing for non-primitiv data ...)</i><br>
<input type='submit'><br></form>
<div>methods:<ul><li>com.ifm.efector.getParameter(s parameterName) -> (is) status, s parameterValue</li><li>com.ifm.efector.getAllParameters() -> (is) status, a{sv} parameterMap</li><li>com.ifm.efector.getClientCompatibilityList() -> (is) status, a{s} compatibilityList</li><li>com.ifm.efector.getApplicationList() -> (is) status, aa{sv} applicationList</li><li>com.ifm.efector.get(a{v} jsonPointers) -> (is) status, s jsonConfiguration</li><li>com.ifm.efector.set(s jsonConfiguration) -> (is) status, s result</li><li>com.ifm.efector.remove(s jsonObject) -> (is) status, s result</li><li>com.ifm.efector.reset(s jsonObject) -> (is) status, s result</li><li>com.ifm.efector.getSchema() -> (is) status, s jsonSchema</li><li>com.ifm.efector.getInit() -> (is) status, s jsonInitConfig</li><li>com.ifm.efector.saveInit() -> (is) status</li><li>com.ifm.efector.getSWVersion() -> (is) status, a{sv} versionMap</li><li>com.ifm.efector.applyNetworkConfiguration() -> (is) status</li><li>com.ifm.efector.reboot() -> (is) status</li><li>com.ifm.efector.factoryReset(b keepNetworkSettings) -> (is) status</li><li>com.ifm.efector.getTraceLogs(i nLogs) -> (is) status, as logs</li><li>org.freedesktop.DBus.Properties.Get(s interface_name, s property_name) -> v value</li><li>org.freedesktop.DBus.Properties.Set(s interface_name, s property_name, v value) -> </li><li>org.freedesktop.DBus.Properties.GetAll(s interface_name) -> a{sv} values</li><li>org.freedesktop.DBus.Introspectable.Introspect() -> s xml_data</li><li>org.freedesktop.DBus.Peer.Ping() -> </li><li>org.freedesktop.DBus.Peer.GetMachineId() -> s machine_uuid</li></ul></div>
KtGunn commented 1 year ago

Thank you for the quick reponse. I ran the command you suggested. Below is the output I got after a little formatting for readability:

Response
{ "error": null, "id": null, "result": { "IFM_Software": "0.14.23-493", "Linux": "Linux version 4.9.140-l4t-r32.4+g1582a8a5405d (oe-user@oe-host) ", "Main_Application": "1.4.3" } }


id:
(JSON-RPC id, will directly be copied to answer-msg)
method:
(e.g. org.freedesktop.DBus.Introspectable.Introspect, org.freedesktop.DBus.ListNames)
params:
(The bridge now support minimal type-convertion ... //FIXME: atm there are still some parts missing for non-primitiv data ...)

methods:
  • com.ifm.efector.getParameter(s parameterName) -> (is) status, s parameterValue
  • com.ifm.efector.getAllParameters() -> (is) status, a{sv} parameterMap
  • com.ifm.efector.getClientCompatibilityList() -> (is) status, a{s} compatibilityList
  • com.ifm.efector.getApplicationList() -> (is) status, aa{sv} applicationList
  • com.ifm.efector.get(a{v} jsonPointers) -> (is) status, s jsonConfiguration
  • com.ifm.efector.set(s jsonConfiguration) -> (is) status, s result
  • com.ifm.efector.getSchema() -> (is) status, s jsonSchema
  • com.ifm.efector.getInit() -> (is) status, s jsonInitConfig
  • com.ifm.efector.saveInit() -> (is) status
  • com.ifm.efector.getSWVersion() -> (is) status, a{sv} versionMap
  • com.ifm.efector.applyNetworkConfiguration() -> (is) status
  • com.ifm.efector.reboot() -> (is) status
  • com.ifm.efector.factoryReset(b keepNetworkSettings) -> (is) status
  • com.ifm.efector.getTraceLogs(i nLogs) -> (is) status, as logs
  • org.freedesktop.DBus.Properties.Get(s interface_name, s property_name) -> v value
  • org.freedesktop.DBus.Properties.Set(s interface_name, s property_name, v value) ->
  • org.freedesktop.DBus.Properties.GetAll(s interface_name) -> a{sv} values
  • org.freedesktop.DBus.Introspectable.Introspect() -> s xml_data
  • org.freedesktop.DBus.Peer.Ping() ->
  • org.freedesktop.DBus.Peer.GetMachineId() -> s machine_uuid
KtGunn commented 1 year ago

It appears I've successfully built 'ifm3d'. Tweaked & fiddled the build until it worked. Not certain exactly what did the trick but I did install libncurses-dev and I had to manually place libglog.so.0 in /usr/lib. Many of the ifm3d options now execute OK. Next step is to update the firmware. The detailed instructions to do so elude me at the moment. Any hints?

lola-masson commented 1 year ago

Hi @KtGunn. After double checking (no pun intended), the make check step is not fully functional for the O3R platform yet. You should be able to install ifm3d without running the make check step. Please make sure you follow the build instructions here, using a tagged version (latest is 0.93.0) from github.

Regarding the firmware, 14.23 is the latest version so you should be good. For future updates, the firmware can be downloaded on ifm.com (you will need to create an account and then check the product page for your VPU and go to the downloads tab). Release notes and instructions are on the developer portal

github-actions[bot] commented 1 year ago

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] commented 1 year ago

This issue was closed because it has been inactive for 14 days since being marked as stale.