Skip to content

Latest commit

 

History

History
177 lines (125 loc) · 6.92 KB

ChangeLog.md

File metadata and controls

177 lines (125 loc) · 6.92 KB

Changes between libo3d3xx 0.1.11 and 0.2.0

Added cross-compilation support

A new directory called cmake/toolchains has been added to allow for setting up a cross-compilation toolchain. Additonally, a convenience deploy target has been added that assumes, you are deploying the deb files created from the package target and that you will deploy via scp. These deployment assumptions will likely need to be revisited to make them more generally useful, however, in the near-term, lets consider them a proof-of-concept for automating the deployment of cross-compiled code. The following cmake variables can be set on the command line to control how the deploy occurs:

  • TARGET_IP (ip address of your embedded system)
  • TARGET_USER (user to login to the embedded system as)
  • TARGET_DIR (directory on the embedded system to copy the debs to)

Currently cross compiling makes the assumption you are deploying to an embedded Linux system (i.e., not cross compiling for Windows or Mac) and to that end, turns off the building of o3d3xx-viewer.

It should also be noted that when cross compiling, unit tests are still built (by default) but you cannot run make check. You can deploy the code and run the unit tests as an executeable on the embedded system.

Initial cross-compilers tested include Linaro and ELDK from Denx.

Refactored and Modularized Build Process

Options to conditionally build parts of the code have been added:

  • BUILD_TESTS
  • BUILD_VIEWER
  • BUILD_SHARED_LIBS
  • BUILD_STATIC_LIBS
  • BUILD_EXE_VIEWER
  • BUILD_EXE_VERSION
  • BUILD_EXE_RESET
  • BUILD_EXE_LS
  • BUILD_EXE_DUMP
  • BUILD_EXE_CONFIG
  • BUILD_EXE_RM
  • BUILD_EXE_REBOOT
  • BUILD_EXE_HZ
  • BUILD_EXE_IMAGER_TYPES
  • BUILD_EXE_IFM_IMPORT
  • BUILD_EXE_IFM_EXPORT

These are all turned ON by default but can be switched off on the cmake command line. For example: $ cmake -DBUILD_TESTS=OFF ..

Static libraries (in addition to the shared libraries) are being built by default. Provisions have been made to compile the library code once then link twice (shared and static).

See also:

Raw Amplitude

The raw amplitude data is now available on the ImageBuffer object via the RawAmplitudeImage() accessor. This is the non-normalized (wrt the exposure time) amplitude data.

o3d3xx-viewer

The bottom right image on the 2D image window has the raw amplitude image replace what was historically the amplitude histogram.

FromJSON()

The o3d3xx::Camera::FromJSON(...) function is fundamental to how tools like o3d3xx-config work. This function, including the ones on which it depends (namely the FromJSON() calls on the XXXConfig value objects), has been overhauled in this release. The idea was to allow for better "one-liners" (i.e., partial JSON configurations) to be specified on the command line.

See also:

Device config default values changed

Changed default for the ServiceReportFailedBuffer and ServiceReportPassedBuffer default values from 15 to 5. For reasoning, please see:

Setting NetConfig tries to avoid unnecessary reboots

The handling of setting the camera's network configuration has been modified to try to avoid reboots where possible. For example, please see:

Changes between libo3d3xx 0.1.10 and 0.1.11

ImageBuffer

Fixed a bug in how the OpenCV image encoding was specified for the XYZImage.

Changes between libo3d3xx 0.1.9 and 0.1.10

ImageBuffer now makes point cloud data available as cv::Mat

A new XYZImage is avialable on the ImageBuffer class via the XYZImage() accessor. This image is a 3-channel OpenCV image encoding of the point cloud where the three channels are spatial planes (x, y, z). It should be noted that while this encoding of the point cloud contains the same data as the PCL encoded point cloud the data are kept in mm (as opposed to meters) and the data type is int16_t as opposed to float. This was motivated by efficiency needs on embedded systems. However, the coord frame for this point cloud data is consistent with the coord frame on the PCL point cloud.

See also:

Changes between libo3d3xx 0.1.8 and 0.1.9

Updates to schema-aware FrameGrabber

The 0.1.8 frame grabber had issues when run in connection with the ROS code in o3d3xx-ros. Retrieving, mutating, and restoring the TCP result schema via the XML-RPC interface proved to be fragile. Per suggestion by @graugans (IFM) we now use the c command on the PCIC interface.

See comments/discussion at the end of this commit

o3d3xx::Camera::FromJSON(..)

The implementation of FromJSON was very fragile due to how 0.1.8 made changes to JSON comparisons. This fragility caused problems with heavily used command line tools like o3d3xx-config. This release has better error trapping while maintaining the network efficiency intentions of the 0.1.8 FromJSON(..) implementation.

Changes between libo3d3xx 0.1.7 and 0.1.8

Schema-aware FrameGrabber

ifm#4

Per suggestion by @graugans (IFM), the FrameGrabber will now apply a known schema at runtime in the event the configured schema for the active application is different than what is expected. Additionally, the configured schema gets restored once the FrameGrabber is destroyed. This allows for compatibility with other computing environments that may expect the configured schema to be returned.

Interoperability with IFM's Vision Assistant

IFM's software provides the means to import/export applications to/from the camera where the files have an IFM-specific serialization (zip-compressed JSON as of this writing). o3d3xx::Camera now has an ImportIFMApp and ExportIFMApp method to enable passing data to/from the camera in a way that is compatible with Vision Assistant. Additionally, two new command line tools have been provided (o3d3xx-ifm-import and o3d3xx-ifm-export) that exploits the new camera methods to move data to/from files employing the IFM serialization scheme.

Initial support for 100K pixel images

Unlocking the 100K pixel support on the O3D303 is not yet (as of this writing) officially supported by IFM and you should only use this feature at your own risk. However, if you like to live on the edge, you can play with this feature now. We have provided an application, test/data/100k.o3d3xxapp, that unlocks this feature into a new application on your camera. You can import this application using o3d3xx-ifm-import and then mark it active using o3d3xx-config.

The initial release of libo3d3xx was 0.1.7