FDU- 无人机二维码自主降落项目

本贴最后更新于 307 天前,其中的信息可能已经时异事殊

Ubuntu20.04 下环境配置

1.Ros 环境配置

wget http://fishros.com/install -O fishros && . fishros

安装完毕后输入:

roscore

2.Mavros 环境配置

mavros 安装分为两种方式,文中以二进制安装为例。

2.1 安装依赖

sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras

2.2 使用脚本完成安装

(1)、下载脚本文件 wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh (2)、执行脚本文件 ./install_geographiclib_datasets.sh

3.OpenCV 环境配置( OpenCV3.4.14 OpenCV_Contrib3.4.14)

说明
目前 OpenCV4 官方版本已经更新到了 4.4.0 版,OpenCV3 也已经更新到了 3.4.14,但理论 OpenCV3 各个版本的配置方法相同,下面以 3.4.14 为例配置;

许多项目由于要使用一些 OpenCV 中已经集成到 contrib 中的模块,所以需要重新编译 OpenCV 和 OpenCV_Contrib,之前安装配置一直没有记录,这次特意记录便于后续使用,供大家参考,如有纰漏或问题,欢迎留言。

但务必注意,两者版本必须保持一致。

3.1 下载

  1. 可以直接在官网、GitHub 进行下载对应版本的 Sources:
    官网下载链接
    GitHub 链接
  2. 由于官网下载速度过慢,给出百度云链接,附一些教程书籍(提取码: gq39):
    百度云链接,包含一些 OpenCV 教程书籍

3.2 安装

3.2.1 各种依赖包安装

sudo apt-get install ros-noetic-serial sudo apt-get install pkg-config sudo apt-get install build-essential sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev qt5-default sudo apt-get install build-essential qt5-default ccache libv4l-dev libavresample-dev libgphoto2-dev libopenblas-base libopenblas-dev doxygen openjdk-8-jdk pylint libvtk6-dev

3.2.2 编译前准备

1、解压:

直接将两个包解压:

sudo unzip opencv-3.4.14.zip sudo unzip opencv_contrib-3.4.14.zip
2、构建目录结构

将 opencv_contirb 放入 opencv 目录:

sudo cp -r opencv_contrib-3.4.14 opencv-3.4.14

进入 opencv-3.4.14 目录下,新建 build 文件夹,使用 cmake 生成 makefile:

cd opencv-3.4.14 sudo mkdir build && cd build

3.2.3 编译安装

1、生成 makefile 文件

在 build 目录下,使用 cmake 生成 Makefile:

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/phoenixtech/Music/opencv-3.4.14/opencv_contrib-3.4.14/modules/ .. sudo cmake -DENABLE_PRECOMPILED_HEADERS=OFF -D CMAKE_BUILD_TYPE=Release -DBUILD_TIFF=ON -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/phoenixtech/Music/opencv-3.4.14/opencv_contrib-3.4.14/modules/ ..

注意:OPENCV_EXTRA_MODULES_PATH 是你自己 opencv_contrib-3.4.14 下面的 modules 目录,务必进行修改后在执行,下图给出一个例子:

即 OPENCV_EXTRA_MODULES_PATH=/home/phoenixtech/Music/opencv-3.4.1/opencv_contrib-3.4.1/modules … ,两点不能省略

经过一段时间后生成完毕,提示如下:

--Configuring done --Generating done --Build files have been written to:/home/phoenixtech/Music/opencv-3.4.14/build
2、编译

Makefile 成功生成后,使用 make 在 build 下直接编译:

sudo make -j8 #可以使用多线程编译,加快速度

编译需要更长一段时间(我自己在 15 分钟左右,如果中间中断,可以多次执行),成功后提示:

[100%]Built target opencv_stitching

然后进行安装即可:

sudo make install

3.2.4 链接库共享

为了让编译器发现你的 OpenCV 库,需要执行:

sudo ldconfig -v

至此,安装全部结束。

3.3 使用 OpenCV 官方测试程序测试

进入如下目录:/home/phoenixtech/Music/opencv-3.4.14/samples/cpp/example_cmake,执行以下命令:

cd /home/phoenixtech/Music/opencv-3.4.14/samples/cpp/example_cmake sudo mkdir build && cd build # 建立编译build文件夹 sudo cmake .. # 生成makefile文件 sudo make # 编译生成目标文件opencv_example cd bulid ./opencv_example

该程序会自动打开摄像头,并在图像左上角显示 Hello OpenCV 字样,出现即说明安装成功:

3.4 CmakeLists.txt 的一般写法

cmake_minimum_required(VERSION 2.0) #指定cmake版本 project(face_6.0) #指定项目的名称,一般和项目的文件夹名称对应 set(CMAKE_CXX_FLAGS "${CAMKE_CXX_FLAGS} -std=c++11 -pthread") #指定头文件目录 include_directories(./) include_directories(./inc) #指定静态和动态文件目录 link_directories(../linux_so) # find_package(OpenCV REQUIRED) #该指令的主要作用就是将指定的源文件生成链接文件,然后添加到工程中去。 #arcsoft_face生成的库文件名 [STATIC | SHARED | MODULE] 库类型 add_executable(face_6.0 ./inc/amcomdef.h ./inc/arcsoft_face_sdk.h ./inc/asvloffscreen.h ./inc/merror.h ./master.cpp ./face_Factory.cpp ./face_Factory.hpp ./LinuxSerial.cpp ./LinuxSerial.hpp ) #在给定的作用域内设置一个命名的属性 set_property(TARGET face_6.0 PROPERTY POSITION_INDEPENDENT_CODE ON) #链接库文件 target_link_libraries(face_6.0 arcsoft_face arcsoft_face_engine) target_link_libraries(face_6.0 ${OpenCV_LIBS})

4.PX4 固件下载

4.1 PX4 固件下载

PX4 的源码处于 GitHub,因为众所周知的原因 git clone 经常失败,此处从 Gitee 获取 PX4 源码和依赖模块。

cd ~/ git clone https://gitee.com/voima/PX4-Autopilot.git cd ~/PX4-Autopilot git checkout v1.14.0 #切换到1.14.0分支,当然也可以尝试其他版本

下载完成后需注意,还需更新 modules,此更新的链接来源于~/PX4-Autopilot/.gitmodules(注意是隐藏文件),.gitmodules 内部的链接均为 GitHub,因此 git submodule update --init --recursive 时大概率失败,此时需要打开.gitmodules 文件,以此将内部的模块使用 Gitee 的链接替换掉。

git submodule update --init --recursive # 在~/PX4-Autopilot目录下执行

完成更新后,需配置~/.bashrc 文件,打开该文件,在底部添加如下内容,保存。

# >>> PX4 initialize >>> source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic # <<< PX4 initialize <<<

新打开一个终端,输入 roscd px4 可直接跳转到目录~/PX4-Autopilot。

4 .2 PX4 固件编译

在路径~/PX4-Autopilot 下 make px4_sitl_default gazebo,看到出现报错即按照提示安装缺失的模块即可。

cd ~/PX4-Autopilot # 也可以 roscd px4 make px4_sitl_default gazebo

可先直接使用命令安装依赖:

sudo apt install python3-pip pip3 install kconfiglib pip3 install future pip3 install numpy pip3 install empy==3.3.4 pip3 install --user jinja2 pip3 install --user jsonschema sudo apt-get update sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

安装完毕后,使用 make px4_sitl_default gazebo 编译,直接通过。

make px4_sitl_default gazebo

5.PCL 库下载

5.1 安装依赖

sudo apt-get update sudo apt-get install ros-noetic-pcl-conversions sudo apt-get install cmake sudo apt-get install git

安装 PCL(Point Cloud Library)库时,还有可能需要安装以下依赖项:

  1. Boost:PCL 使用了 Boost 库。可以使用以下命令安装 Boost:
sudo apt-get install libboost-all-dev
  1. Eigen:PCL 依赖于 Eigen 线性代数库。可以使用以下命令安装 Eigen:
sudo apt-get install libeigen3-dev
  1. FLANN:PCL 使用了 FLANN(Fast Library for Approximate Nearest Neighbors)库。可以使用以下命令安装 FLANN:
sudo apt-get install libflann-dev
  1. VTK:PCL 的可视化模块需要 VTK(Visualization Toolkit)库。可以使用以下命令安装 VTK:
sudo apt-get install libvtk7-dev
  1. Qhull:PCL 使用了 Qhull 库进行几何计算。可以使用以下命令安装 Qhull:
sudo apt-get install libqhull-dev
  1. libusb:如果你需要使用 PCL 中的点云采集设备接口,可能需要安装 libusb 库。可以使用以下命令安装 libusb:
sudo apt-get install libusb-1.0-0-dev
  1. OpenNI:如果你需要使用 PCL 中的 OpenNI 驱动程序和接口,可能需要安装 OpenNI 开发包。可以使用以下命令安装 OpenNI
sudo apt-get install libopenni-dev

5.2 安装

sudo apt-get install libpcl-dev sudo apt install ros-noetic-pcl-conversions ros-noetic-pcl-ros ros-noetic-perception-pcl ros-noetic-perception

配置环境变量

vim ~/.bashrc 添加如下:

export CPLUS_INCLUDE_PATH="/usr/include/pcl-1.10:$CPLUS_INCLUDE_PATH" export LIBRARY_PATH="/usr/lib/x86_64-linux-gnu:$LIBRARY_PATH"

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...