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

https://gitee.com/maxibooksiyi/maxi_aruco_det_pkg/tree/add_multi_aruco_land_for_fuzhou/

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"

  • 待分类

    用户发帖时如果不填标签,则默认加上“待分类”。这样做是为了减少用户发帖的负担,同时也减少运营维护的工作量。具有帖子更新权限的用户可以帮助社区进行帖子整理,让大家可以更方便地找到所需内容。这里是关于这样设计的一些思考,欢迎讨论。

    3 引用 • -276 回帖 • 4 关注

相关帖子

欢迎来到这里!

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

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