-
Notifications
You must be signed in to change notification settings - Fork 0
Software dependencies and configurations
Download both eGrabber and Memento (a debugging tool) from https://www.euresys.com/en/download-area/. This should include something like:
# eGrabber
egrabber-linux-offline-documentation-en-24.12.2.2194.tar.gz
egrabber-linux-sample-programs-24.12.2.16.tar.gz
egrabber-linux-x86_64-24.12.3.24.tar.gz
egrabber-release-notes-24.12.3.2195.pdf
# Memento
memento-linux-offline-documentation-en-24.12.0.6056.tar.gz
memento-linux-x86_64-24.12.0.3.tar.gz
memento-release-notes-24.12.0.6056.pdf
Version used for development: 24.12 (for both).
Important
You must use Memento first before eGrabber!
Use the provided installer:
cd memento-linux-x86_64-24.12.0.3/
sudo ./install.shIt's possible that you are missing some dependencies. Just read the output carefully and follow any instruction.
Then, to install eGrabber, follow instruction in egrabber-linux-x86_64-24.12.3.24/INSTALL, namely:
cd egrabber-linux-x86_64-24.12.3.24/
sudo ./install.shImportant
Upon installation, don't be so fast closing the terminal! Read the output carefully and follow on-screen instruction to complete the process. In brief:
. /opt/euresys/egrabber/shell/setup_gentl_paths.sh
. /opt/euresys/egrabber/shell/select-coaxlink-producer.sh
Add the following to ~/.bashrc:
export EURESYS_COAXLINK_GENTL64_CTI=/opt/euresys/egrabber/lib/x86_64/coaxlink.cti
Then, start a new shell and run:
/opt/euresys/egrabber/shell/select-default-producer.sh coaxlink
Finally, restart the computer.
Then, move on to eGrabber and JAI camera configuration to finish configuring the frame grabber and the camera.
In case of problems, the following log files are worth looking into:
-
/opt/euresys/egrabber/install.log. -
sudo /opt/euresys/egrabber/shell/check-install.shoutput. -
sudo dmesgoutput. -
sudo lspci -vvvoutput. - A highest verbosity Memento dump captured while you start eGrabber Studio (start Memento, then launch eGrabber).
Tip
Given the issue might be hardware-related, it might help to really power cycle the computer instead of restarting (ie. sudo reboot now). Specifically, turn the computer off, cut power supply, press On button to discharge capacitors, wait a bit to be extra sure, then turn power supply back on and start the computer).
Note
I encountered a problem where upon booting the OS, the four LEDs on the frame grabber bracket stay solid orange. Based on the frame grabber manual, this indicates that the frame grabber never exited the "system booting" mode. With the assistance from Euresys support, we narrowed the problem down to the following error messages from Memento:
[ 2.902599] memento: no symbol version for module_layout
[ 2.902645] memento: disagrees about version of symbol devmap_managed_key
[ 2.902646] memento: Unknown symbol devmap_managed_key (err -22)
... and the solutions was to uninstall eGrabber, uninstall Memento, reboot the machine (following the procedure above), install Memento (latest version, ie. 24.12), and install eGrabber (latest version, ie. 24.12) in this order.
If nothing works, contact Euresys support. They (specifically Mr. Julien Weber) were very helpful.
Follow official instruction. For the C++ library on Linux without building from source:
sudo apt install libopencv-devVersion used: 4.6.0. To check actual version:
pkg-config --modversion opencv4
4.6.0Boilerplate code and CMakeLists.txt to get started:
cd opt/examples/opencv_cpp_boilerplate
mkdir build
cd build
cmake ..
make
./main <path-to-some-image> # the image should displayDownload the .AppImage file from https://www.zaber.com/software; then run it directly:
chmod ago+x ZaberLauncher.AppImage
./ZaberLauncher.AppImageIf the following error is encountered:
AppImages require FUSE to run.
You might still be able to extract the contents of this AppImage
if you run it with the --appimage-extract option.
See https://github.com/AppImage/AppImageKit/wiki/FUSE
for more information
... then, go to the FUSE github repo as directed and install FUSE following the instructions there. In brief, these are:
sudo add-apt-repository universe
sudo apt install libfuse2 # for Ubuntu 22.04
sudo apt install libfuse2t64 # for Ubuntu 24.04Then run ZaberLauncher.AppImage again.
If the following error is encountered:
[13052:0208/184049.386863:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /tmp/.mount_ZaberLlZtImo/chrome-sandbox is owned by root and has mode 4755.
... then, rerun with the --no-sandbox flag:
./ZaberLauncher.AppImage --no-sandboxThen, follow on-screen instruction to create a connection (if not already done).
If the following error is encountered:
Cannot Open Connection
Cannot open serial port: Permission denied. You may need to add user to the "dialout" group to access serial ports.
You can still create the connection and resolve the issue later.
... then simply run:
sudo chmod ago+rw /dev/ttyACM0 # or replace with appropriate USB deviceALTERNATIVELY, add the current user to the dialout group as instructed:
sudo usermod -a -G dialout $USERThen, restart before relaunching Zaber Launcher and retrying.
Go to https://www.zaber.com/software and follow instructions under "Getting Started." For C++:
sudo dpkg -i ZaberMotionCppInstaller-7.4.0-Linux_x64.debBoilerplate code and CMakeLists.txt to get started:
cd examples/zaber_cpp_boilerplate/
mkdir build
cd build
cmake ..
make
./zaberDownload the .zip file (for Linux X86-64) from https://www.arduino.cc/en/software. Then, copy it to opt/ and decompress it:
mkdir arduino-ide_2.3.4_Linux_64bit # change version accordingly
cd arduino-ide_2.3.4_Linux_64bit/
unzip ../arduino-ide_2.3.4_Linux_64bit.zipThen, run arduino-ide:
./arduino-ideIf the following error is encountered:
[8729:0211/131431.499624:FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /home/spotlight/project/spotlight-control/opt/arduino-ide_2.3.4_Linux_64bit/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap (core dumped)
... then, follow the instruction to change the mode and owner of the chrome-sandbox file:
sudo chown root:root /home/spotlight/project/spotlight-control/opt/arduino-ide_2.3.4_Linux_64bit/chrome-sandbox
sudo chmod 4755 /home/spotlight/project/spotlight-control/opt/arduino-ide_2.3.4_Linux_64bit/chrome-sandbox
# To verify:
ls -lh /home/spotlight/project/spotlight-control/opt/arduino-ide_2.3.4_Linux_64bit/chrome-sandbox
# The output should be something like:
# -rwsr-xr-x 1 root root 53K Dez 3 10:51 /home/spotlight/project/spotlight-control/opt/arduino-ide_2.3.4_Linux_64bit/chrome-sandboxNote
You can alternatively download the Arduino IDE as an .AppImage file. However, I had problem changing the mode and owner of the chrome-sandbox file because when the .AppImage file is executed, it decompresses the chrome-sandbox file into /tmp on the fly, and it's not possible to change its permission/owner. If you do want to use the .AppImage file, you can run it with the --no-sandbox flag.
If the following error is encountered while uploading the program to the board:
dfu-util: Cannot open DFU device 2341:0070 found on devnum 21 (LIBUSB_ERROR_ACCESS)
dfu-util: No DFU capable USB device available
Failed uploading: uploading error: exit status 74
... then, check if df-util is installed. If not,
sudo apt install dfu-util
# If prompted by the output, you might need to run the following first:
# sudo apt --fix-broken install... then, create a file /etc/udev/rules.d/50-arduino.rules with the following line:
SUBSYSTEM=="usb", ATTR{idVendor}=="2341", MODE="0666"
(This allows all users to access Arduino devices with Vendor ID 2341.)
Then, reload these rules:
sudo udevadm control --reload-rules
sudo udevadm triggerYou should see the board detected when you run:
dfu-util -lThen, unplug and replug the board and try again.
Important
The Qt framework is available under both open source and commercial licenses. To use the open source license, our project must be licensed under GPL or LGPL. We will use GPL v3.
Note
You will need a Qt account, which you can sign up for free.
Download Qt online installer (with open source license) from https://www.qt.io/download-open-source. Give every user execute permission to the downloaded .run file, and run it:
chmod ago+x qt-online-installer-linux-x64-4.8.1.run
./qt-online-installer-linux-x64-4.8.1.runThen, follow on-screen instructions. You might need to install some dependencies. For example:
sudo apt install libxcb-cursor0 libxcb-cursor-devYou might need to save the Qt installation path as an environment variable so that cmake can find it. I added the following to ~/.bashrc:
# Qt6
export Qt6_DIR="${HOME}/Qt/6.8.2/gcc_64/lib/cmake/Qt6"Alternatively, adding set(Qt6_DIR "${HOME}/Qt/6.8.2/gcc_64/lib/cmake/Qt6") before find_package in the CMakeLists.txt file probably also works.
I also installed Qt Studio, a UI development tool.
Download Boost from https://www.boost.org/ and extract it:
tar xf boost_1_87_0.tar.gz # change version accordingly
cd boost_1_87_0/The installation instruction is a bit hard to find. You have to locate the "Getting Started Guide" on the documentation (online and also included as index.html in boost_1_87_0), and click the link under "Next" at the bottom right corner. For 1.87.0, this leads me to this page. Follow the instruction under "5.1 Easy Build and Install", namely:
./bootstrap.sh
sudo ./b2 installDownload from https://github.com/google/googletest and extract downloaded file:
tar xf googletest-1.16.0.tar.gz # change version accordingly
cd googletest-1.16.0/
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
make
sudo make installUse a basic "hello world" test as an example and template:
cd recorder/tests/
mkdir build
cd build
cmake ..
make
./helloWorldTestInstall using Debian package manager:
sudo apt install libspdlog-devSee hello-world example at opt/examples/spdlog_boilerplate/:
cd opt/examples/spdlog_boilerplate/
mkdir build
cd build
cmake ..
make
./exampleNote
The version from the Debian package manager is an older version that does not implement Mapped Diagnostic Context (MDC). Since I don't really need it, I used the apt-managed version for simplicity and removed the MDC-related stuff from example.cpp provided in spdlog's Github repo.
Download yaml-cpp from https://github.com/jbeder/yaml-cpp (v0.8.0 for me). Then do the usual
unzip yaml-cpp-0.8.0
cd yaml-cpp-0.8.0
mkdir build
cd build
cmake ..
make -j8
sudo make installGo to the "Software" tab on the product page for the pco.panda 4.2 sCMOS camera on the Excelitas website. This gives you two sub-tabs: "pco.panda 4.2 USB Firmware" and "PCO Camera Software". The former is used in case you want to update the firmware of the camera. It only works on Windows. To just use the camera, go to the latter.
Once on the "PCO Camera Software" page, go to "PCO Software Development Kits" ("PCO Camera Control Software might also be useful; it looks like a GUI program but it only runs on Windows so I didn't try.) Under the "General SDK" tab, download pco.sdk, pco.recorder, and pco.runtime. Under the "C++" tab, download pco.cpp. Take care to download the file for the right computer architecture—in this case AMD (x86_64).
Then, unzip each of the 4 downloaded files. This should give you 4 .deb files. Install each of them with dpkg:
sudo dpkg -i pco.sdk_1.33.0_amd64.deb
sudo dpkg -i pco.runtime_3.5.0_amd64.deb
sudo dpkg -i pco.recorder_3.5.0_amd64.deb
sudo dpkg -i pco.cpp_1.4.0_amd64.debNote
I don't know if all four are actually required or if the order of installation matters, but this is what made sense to me and what I did.
This should install a bunch of files under /opt/pco/{pco.cpp,pco.recorder,pco.runtime,pco.sdk}. Among these, there are some useful sample programs under /opt/pco/pco.cpp/samples. In particular, ImageViewer is a nice GUI program.
sudo apt install python3.12-venv # change version if needed
python -m venv spotlight-control/python_envThen,
source spotlight-control/python_env/bin/activateAvoid Conda because in my experience it made spdlog and googletest incompatible somehow.