mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-09 22:49:53 +08:00
5418f4ff3c
* OpenCV 4.10.0 For Bebop on Ubuntu 22.04 and 24.04
112 lines
4.9 KiB
XML
112 lines
4.9 KiB
XML
<!DOCTYPE module SYSTEM "module.dtd">
|
|
|
|
<module name="cv_opencvdemo" dir="computer_vision">
|
|
<doc>
|
|
<description>This example shows how OpenCV can be used on (for example) the Bebop drone.
|
|
Important to know is that sw/ext/opencv_bebop must be downloaded, and compiled.
|
|
After this is done the folder sw/ext/opencv_bebop/install has an opencv.xml file.
|
|
The LDFLAGS in this file should be the same as in this conf file.
|
|
|
|
// Install OpenCV:
|
|
WARNING! During simulation, a native version of OpenCV is needed, while for AP you need a cross-compiled version included in ./sw/ext/opencv_bebop.
|
|
|
|
The following instructions are for the AP (ARM) version:
|
|
|
|
1) For OpenCV on the bebop, make sure to use Ubuntu 20.4: This solution was only tested for this version of Ubuntu.
|
|
In NPS, newer versions of OpenCV also work. Then do not follow the instructions below but install (sudo apt-get install) corresponding opencv-dev packages instead, and then skip to step 7)
|
|
|
|
2) Navigate to paparazzi/sw/ext/opencv_bebop:
|
|
cd ~/paparazzi/sw/ext/opencv_bebop
|
|
|
|
3) Install the required OpenCV Libraries:
|
|
sudo apt install libjpeg-turbo8-dev libpng-dev libtiff-dev zlib1g-dev libdc1394-22-dev
|
|
|
|
4) Do make (inside the current directory):
|
|
make
|
|
|
|
5) Then go to the build files for the drone : (will configure the files for OpenCV on the drone)
|
|
command: cd /home/username/paparazzi/sw/ext/opencv_bebop/install_arm
|
|
command: make install
|
|
|
|
6) Then go to the build files for the computer: (will configure the files for OpenCV on your on computer)
|
|
command: cd /home/username/paparazzi/sw/ext/opencv_bebop/install_pc
|
|
command: make install
|
|
|
|
7) finally update the paths in this module file (XML file) for your drone (AP) and for your computer (NPS):
|
|
|
|
For the Bebop, check the paths are: $(PAPARAZZI_SRC)/sw/ext/opencv_bebop/install_arm/include and lib.
|
|
|
|
Example for NPS, if you followed the steps 2 to 6 above, your opencv will normally be in $(PAPARAZZI_SRC)/sw/ext/opencv_bebop/install_pc/include
|
|
|
|
But if you did: sudo apt-get install of opencv-dev, then you will need to update all paths to where opencv-dev is on your machine: /usr/bin/...
|
|
|
|
8) USEFUL BACKGROUND INFORMATION
|
|
OpenCv only works on C++ code, therefore you need to use a special trick to call a C++ function from C:
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
</description>
|
|
|
|
<define name="OPENCVDEMO_CAMERA" value="front_camera|bottom_camera" description="Video device to use"/>
|
|
<define name="OPENCVDEMO_FPS" value="0" description="The (maximum) frequency to run the calculations at. If zero, it will max out at the camera frame rate"/>
|
|
</doc>
|
|
<header>
|
|
<file name="cv_opencvdemo.h"/>
|
|
</header>
|
|
<init fun="opencvdemo_init()"/>
|
|
<makefile target="ap">
|
|
<file name="cv_opencvdemo.c"/>
|
|
<file name="opencv_example.cpp"/>
|
|
<file name="opencv_image_functions.cpp"/>
|
|
<flag name="CXXFLAGS" value="I$(PAPARAZZI_SRC)/sw/ext/opencv_bebop/install_arm/include/opencv4"/>
|
|
|
|
<flag name="LDFLAGS" value="L$(PAPARAZZI_HOME)/sw/ext/opencv_bebop/install_arm/lib"/>
|
|
<flag name="LDFLAGS" value="lopencv_world"/>
|
|
<flag name="LDFLAGS" value="L$(PAPARAZZI_HOME)/sw/ext/opencv_bebop/install_arm/lib/opencv4/3rdparty"/>
|
|
<flag name="LDFLAGS" value="llibprotobuf"/>
|
|
<flag name="LDFLAGS" value="llibjpeg-turbo"/>
|
|
<flag name="LDFLAGS" value="llibpng"/>
|
|
<flag name="LDFLAGS" value="llibtiff"/>
|
|
<flag name="LDFLAGS" value="llibopenjp2"/>
|
|
<flag name="LDFLAGS" value="lzlib"/>
|
|
<flag name="LDFLAGS" value="lade"/>
|
|
<flag name="LDFLAGS" value="ldl"/>
|
|
<flag name="LDFLAGS" value="lm"/>
|
|
<flag name="LDFLAGS" value="lpthread"/>
|
|
<flag name="LDFLAGS" value="lrt"/>
|
|
</makefile>
|
|
<makefile target="nps">
|
|
<file name="cv_opencvdemo.c"/>
|
|
<file name="opencv_example.cpp"/>
|
|
<file name="opencv_image_functions.cpp"/>
|
|
|
|
<flag name="CXXFLAGS" value="I$(PAPARAZZI_SRC)/sw/ext/opencv_bebop/install_pc/include/opencv4"/>
|
|
|
|
<flag name="LDFLAGS" value="L$(PAPARAZZI_HOME)/sw/ext/opencv_bebop/install_pc/lib"/>
|
|
<flag name="LDFLAGS" value="lopencv_world"/>
|
|
<flag name="LDFLAGS" value="L$(PAPARAZZI_HOME)/sw/ext/opencv_bebop/install_pc/lib/opencv4/3rdparty"/>
|
|
<flag name="LDFLAGS" value="llibprotobuf"/>
|
|
<flag name="LDFLAGS" value="lade"/>
|
|
<flag name="LDFLAGS" value="L/usr/lib/x86_64-linux-gnu"/>
|
|
<flag name="LDFLAGS" value="ljpeg"/>
|
|
<flag name="LDFLAGS" value="lpng"/>
|
|
<flag name="LDFLAGS" value="ltiff"/>
|
|
<flag name="LDFLAGS" value="lopenjp2"/>
|
|
<flag name="LDFLAGS" value="L/usr/lib/x86_64-linux-gnu/hdf5/serial"/>
|
|
<flag name="LDFLAGS" value="lhdf5"/>
|
|
<flag name="LDFLAGS" value="lcrypto"/>
|
|
<flag name="LDFLAGS" value="lcurl"/>
|
|
<flag name="LDFLAGS" value="lpthread"/>
|
|
<flag name="LDFLAGS" value="lsz"/>
|
|
<flag name="LDFLAGS" value="lz"/>
|
|
<flag name="LDFLAGS" value="ldl"/>
|
|
<flag name="LDFLAGS" value="lm"/>
|
|
<flag name="LDFLAGS" value="lfreetype"/>
|
|
<flag name="LDFLAGS" value="lharfbuzz"/>
|
|
<flag name="LDFLAGS" value="lrt"/>
|
|
|
|
</makefile>
|
|
</module>
|