C++ (Ubuntu)
This topic introduces how to configure the Mech-Eye API C++ samples with CMake and then build the samples with the make command on Ubuntu.
Sample List
The following samples are currently provided:
-
TriggerWithSoftwareAndFixedRate: Trigger data acquisition with the software + fixed rate method, and then retrieve and save the acquired data.
-
TriggerWithExternalDeviceAndFixedRate: Trigger data acquisition with the external + fixed rate method, and then retrieve and save the acquired data.
-
TriggerWithSoftwareAndEncoder: Trigger data acquisition with the software + encoder method, and then retrieve and save the acquired data.
-
TriggerWithExternalDeviceAndEncoder: Trigger data acquisition with the external + encoder method, and then retrieve and save the acquired data.
-
TriggerMultipleProfilersSimultaneously: Trigger multiple laser profilers to acquire data asynchronously, and then retrieve and save the acquired data.
-
BlindSpotFiltering: Detect and remove the false data caused by blind spots and obtain the filtered profile data.
-
NoiseRemoval: Remove the noise in the depth data and obtain the filtered profile data.
-
ProfileAlignment: Correct the X-axis and Z-axis vibrations in the profiles (aligning the profiles) and obtain the corrected profile data.
-
RenderDepthMap: Obtain and save the depth map rendered with the jet color scheme.
-
TransformPointCloud: Obtain and save the point clouds in the custom reference frame.
-
ManageUserSets: Manage parameter groups, such as obtaining the names of all parameter groups, adding a parameter group, switching the parameter group, and saving parameter settings to the parameter group.
-
PrintProfilerStatus: Obtain and print the laser profiler’s information, such as model, serial number, firmware version, and temperatures.
-
RegisterProfilerEvent: Define and Register the callback function for monitoring laser profiler events.
-
UseVirtualDevice: Acquire the profile data stored in a virtual device, generate the intensity image and depth map, and save the images.
For different methods of triggering the laser profiler to acquire data, refer to Methods for Triggering Data Acquisition. |
Prerequisites
In order to use the C++ samples of Mech-Eye API, the following prerequisites must be satisfied:
-
The version of the Ubuntu operating system is 18 or above.
-
Obtain the samples.
-
Install the required software.
-
(Optional) Install software libraries on which the samples depend.
If using a Ubuntu virtual machine, please ensure that the available disk space is greater than 20 GB. Otherwise, installation of the software may fail. |
Obtain Samples
C++ samples are included in the installation path of Mech-Eye SDK or can be obtained from GitHub by cloning. The samples in the installation path are the version at the time of Mech-Eye SDK release. The version on GitHub may contain the latest changes.
-
The samples in the installation directory are located in /opt/mech-mind/mech-eye-sdk/samples/cpp/profiler.
-
The samples cloned from GitHub are located in xxx/mecheye_cpp_samples/profiler.
Install Required Software
In order to use the C++ samples of Mech-Eye API, the software source list must be updated, and Mech-Eye SDK and dependencies must be installed.
-
Update software source list:
sudo apt-get update
-
Install dependencies:
sudo apt-get install -y build-essential pkg-config cmake
-
Install Mech-Eye SDK: Please refer to Mech-Eye SDK Installation Guide (Ubuntu).
(Optional) Install Dependent Software Libraries
Some samples contain functions that depend on the following third-party software libraries. If you need to use the samples listed in the table below, you must install the software libraries on which the samples depend.
-
OpenCV: latest version
If any of the optional software libraries is not installed, then you must complete the steps in Disable Unneeded Samples (Optional) before configuring the samples. |
Refer to the following table for the samples that depend on third-party software libraries.
Sample |
---|
BlindSpotFiltering |
NoiseRemoval |
ProfileAlignment |
RenderDepthMap |
TriggerWithSoftwareAndFixedRate |
TriggerWithExternalDeviceAndFixedRate |
TriggerWithSoftwareAndEncoder |
TriggerWithExternalDeviceAndEncoder |
TriggerMultipleProfilersSimultaneously |
UseVirtualDevice |
Build and Run Samples
You can build all samples at once or build a single sample individually.
The paths provided in this section correspond to the samples included in the installation path. If you are using the samples cloned from GitHub, please modify the paths correspondingly. |
Disable Unneeded Samples (Optional)
If you did not install some of the optional software libraries and still want to build all samples at once, then you must complete the steps in this section. Otherwise, an error will occur during the configuration of samples using CMake. |
If you do not need the samples that depend on OpenCV, please edit the CMakeLists file to disable these samples before building all samples at a time.
-
Open /opt/mech-mind/eye-sdk/samples/cpp/profiler/CMakeLists.txt in an editor (such as vi).
-
Edit the line containing
options
: find the line ofoption(USE_OPENCV…)
, changeON
at the end of the line toOFF
to disable the samples that depend on OpenCV. -
Save the changes in the editor and close the CMakeLists file.
Build the sample
Please follow these steps to run the sample:
-
Enter the directory of the sample(s):
-
If building all samples at once, please use the following command.
cd /opt/mech-mind/mech-eye-sdk/samples/cpp/profiler/
-
If building a single sample individually, please use the following command. Replace SampleName with the name of the sample.
cd /opt/mech-mind/mech-eye-sdk/samples/cpp/profiler/SampleName/
-
-
Create a build folder in the directory for saving the built samples and so on.
sudo mkdir build && cd build
-
Configure and build the sample(s):
sudo cmake .. sudo make
If the source code files in the sample folder are altered, please delete the build folder and repeat steps 2 and 3 to rebuild the samples. |
Run Samples
After building the samples, follow these steps to run the sample:
-
Enter the build folder in the directory of the sample(s) (Skip this step if you are running the sample(s) directly after building the sample(s):
-
If all samples were built at once, please use the following command.
cd /opt/mech-mind/mech-eye-sdk/samples/cpp/profiler/build/
-
If a single sample was built individually, please use the following command. Replace SampleName with the name of the sample.
cd /opt/mech-mind/mech-eye-sdk/samples/cpp/profiler/SampleName/build/
-
-
Run the sample: replace SampleName with the name of the sample. While the sample is running, input the index of the laser profiler to which you want to connect according to the instruction, and press Enter to connect to the laser profiler.
sudo ./SampleName
-
If image and/or point cloud files are saved by the sample, you can find the files in the build folder.