精选嫩鲍

爱情电影网 SpireCV 助力在ArduPilot上快速已矣二维码检测等视觉功能!内附超详确教程,干货满满|计较机|spirecv|ardupilot

发布日期:2024-09-25 06:18    点击次数:139

爱情电影网 SpireCV 助力在ArduPilot上快速已矣二维码检测等视觉功能!内附超详确教程,干货满满|计较机|spirecv|ardupilot

以下著述着手于:CSDN开发者社区作家:干了这碗汤爱情电影网

原文连结:https://blog.csdn.net/weixin_43321489/article/details/134703965?spm=1001.2014.3001.5502

由于篇幅实质过长,本文将分为两期为天下张开先容,本期主要先容以下几个方面:

特殊视频

1. APSync

说到机载计较机Companion computer就不得不提另一个关键词APSync;

APSync简化了机载计较机的斥地,以便它不错为ArduPilot提供迥殊的功能,并简化与互联网处事的集成;

提供日记下载和视频流转发到大地站的功能;

机载计较机通过串口与飞控纠合,将飞控的log转存到我方的文献系统中,并创建一个收集热门,用于给启动大地站的PC纠合,PC纠合该热门后不错:1)从机载计较机下载日记;2)查看视频流;3)纠合热门后大地站不错通过UDP纠合到飞控;

(Configuration pages)

:8000 (Which shows a video streaming on/off button)

PC纠合到收集热门后(收集热门称号为ardupilot,密码亦然ardupilot),大地站可通过UDP,port 14550来纠合到飞控;

对于下载log:不错用这个剧本来下载机载计较机的日记到PC:apsync-download-logs,好像从机载计较机上拔下SD卡来读取;(https://firmware.ardupilot.org/Companion/apsync/apsync-download-logs-latest.zip)

对于视频流:视频流被发送到央求遥测数据的第一个大地站的IP地址;大地站查看视频流:右击Hub ~> Video ~> Set GSreamer Source;

PC纠合热门后可通过SSH器具来辛勤登录到机载计较机;

飞控的数据怎样路由到各式门径的?How flight controller data is routed to various programs:https://ardupilot.org/dev/docs/apsync-intro.html#how-flight-controller-data-is-routed-to-various-programs

Installing APSync and setting the autopilot:https://ardupilot.org/dev/docs/apsync-intro.html#installing-apsync

2. 阿木实验室SpireCV-SDK

参考文献:SpireCV-SDK

(https://docs.amovlab.com/Spire_CV_Amov/#/src/项目介绍/项目介绍?id=spirecv-sdk-wiki使用手册)

2.1 简介*

主邀功能包括吊舱/相机驱散、视频保存、推流、决议检测、识别与追踪等。旨在为智能无东说念主系统开发者提供高性能、高可靠、接口苟且、功能丰富的视觉处理功能。

3. SpireCV-SDK实践历程

编译源码:

cd ~/SpireCV/build
sudo make install

查看行使门径称号:爱情电影网

ls ~/SpireCV/build

扩充行使门径:

./app-name
3.1 新增一个demo,怎样修改CMakeLists.txt让编译器编译我方的demo

面貌:在VSCode中搜索现存的demo的cpp文献名,望望在那儿使用了这些文献名,你会发现仅在归并目次的CMakeLists.txt中使用了这些cpp文献名,因此只需要修改这些CMakeLists.txt即可。

如:在/home/hyl20/SpireCV/CMakeLists.txt 中添加以下

add_executable(CameraReading2 samples/demo/camera_reading2.cpp)
target_link_libraries(CameraReading2 sv_world)

其中camera_reading2.cpp便是新添加的demo的称号。

3.2 转变视觉源输入类型

以视频文献行动输入源

在现时目次下新建一个mp4文献如000.mp4,以camera_reading2.cpp为例,作念以下代码修改:

cap.setVideoPath("/home/hyl20/SpireCV/samples/demo/000.mp4");
cap.open(sv::CameraType::VIDEO, 0);  // CameraID 0

以RTSP视频流行动输入源

以camera_reading2.cpp为例,作念以下代码修改:

cap.setRtspUrl("rtsp://192.168.144.25:8554/main.264");
cap.setPort(8554);
cap.open(sv::CameraType::RTSP, 0);  // CameraID 0

报错后应该怎样处置?

修改代码:

SpireCV/video_io/sv_video_input.cpp中的else if (this->_type == CameraType::RTSP) {…}

//正本的代码
sprintf(pipe, "rtspsrc location=%s W=%d H=%d FPS=%d latency=100 ! \
application/x-rtp,media=video ! rtph264depay ! parsebin ! avdec_h264 ! \
videoconvert ! appsink sync=false",
this->_rtsp_url.c_str(), this->_width, this->_height, this->_fps);
this->_cap.open(pipe, cv::CAP_GSTREAMER);

//修改后的代码:
sprintf(pipe, "rtspsrc location=%s latency=100 ! \
application/x-rtp,media=video ! rtph264depay ! parsebin ! avdec_h264 ! \
videoconvert ! \
videorate ! video/x-raw,framerate=%d/1 ! \
videoscale ! video/x-raw,width=%d,height=%d ! \
appsink sync=false",
this->_rtsp_url.c_str(), this->_fps, this->_width, this->_height );
this->_cap.open(pipe, cv::CAP_GSTREAMER);

//好像改成:
sprintf(pipe, "%s",this->_rtsp_url.c_str());
this->_cap.open(pipe, cv::CAP_ANY);

其中cv::CAP_ANY会自动检测数据着手类型,opencv会自行调用gstreamer中稳当的功能函数。

3.3 相机内参标定

1)遴荐读取视频文献的形势行动视觉输入源,修改calibrate_camera_charuco.cpp中的代码:

inputVideo.setWH(imW, imH);
inputVideo.setFps(fps);
inputVideo.open(c_type, camId);
//修改为:
inputVideo.setVideoPath("/home/hyl20/SpireCV/samples/demo/bd1.mp4");
inputVideo.setWH(imW, imH);
inputVideo.setFps(fps);
inputVideo.open(sv::CameraType::VIDEO, camId);  // CameraID 0

2)打印一张标定图案(A4纸)

3)录制一段标定图案的视频保存为:/home/hyl20/SpireCV/samples/demo/bd1.mp4

拍摄缜密事项:不同角度、不同距离拍摄;

4)编译代码

cd ~/SpireCV/build
sudo make install

5)扩充标定门径

./CameraCalibrarion -w=5 -h=7 -sl=0.035 -ml=0.021 -d=6 -ci=0 calib.yaml

6)缜密事项

w为标定板一转的格子数,h为标定板一列的格子数,sl为测量玄色实心方块的边长,ml为测量玄色二维码方块的边长,ci为Camera ID数;

标定时需要拍摄不同距离、不同像平面位置、不同歪斜角的多张图像(>5张);

标定完成后,标定文献保存在build目次下calib.yaml里;

3.4 二维码检测

意志Aruco二维码

二维码示例文献下载

(https://download.amovlab.com/model/template/6X6_250.zip)

用途:一般用于增强践诺、相机姿势忖度和相机校准等行使场景,具体如无东说念主机的自主降落地标、机器东说念主定位等。

构成:玄色宽边框 + 二进制矩阵(长短方形阵列) 玄色边框:有助于其在图像中的快速检测;长短方形阵列:标志符 (ID) ,用于被识别以及造作检测和修订时刻;长短方形的大小决定了里面矩阵的大小。举例,6×6 的Aruco码大小由 36 位构成;6×6即长宽齐是4个方形;

实践:

1)遴荐读取视频文献的形势行动视觉输入源,修改aruco_detection.cpp中的代码:

cap.open(sv::CameraType::V4L2CAM, 0); // CameraID 0
改为:
cap.setVideoPath("/home/hyl20/SpireCV/samples/demo/ac2.mp4");
  cap.open(sv::CameraType::VIDEO, 0);  // CameraID 0

2)修改内参文献的旅途,使用上一个实验生成的内参:

// 手动导入相机参数,如若使用Amov的G1等吊舱或相机,则不错忽略该设施,将自动下载相机参数文献
  ad.loadCameraParams(sv::get_home() + "/SpireCV/build/calib1.yaml");

3)录制一段aruco二维码图案视频保存为:/home/hyl20/SpireCV/samples/demo/ac2.mp4

拍摄缜密事项:不同角度、不同距离拍摄。

4)编译

cd ~/SpireCV/build
sudo make install

5)启动

./ArucoDetection

6)不雅察终局的打印信息

7)启动ros接口查看ros数据

4. 在wsl2-ubuntu20.04上装置SpireCV

参考:Ubuntu20.04+CUDA11.6装置教程( https://docs.amovlab.com/Spire_CV_Amov/#/src/快速使用/SDK安装/Ubuntu20.04+CUDA11.6安装教程/Ubuntu20.04+CUDA11.6安装教程)

问题:文档上提供的教程是基于ubuntu20.04 cuda11.6 ,可是本机电脑的cuda版块是12.2的,应该怎样装置环境和依赖呢?请看本文的第6末节。

实践依据:分析SpireCV官方教程中的 ubuntu2004-cuda-cudnn-11-6.sh 剧本。

5. Ubuntu20.04装置NVIDIA显卡驱动、cuda、cuDNN、tensorRT

参考文献:

https://blog.csdn.net/JineD/article/details/131201121

https://blog.csdn.net/qq_43515934/article/details/123897435

本期的实质共享就先到这里,下一期咱们将为天下先容如安在wsl2-Ubuntu20.04上装置cuda、cuDNN、tensorRT,以及Gstreamer等软件。如若您在SpireCV开发历程中有其他方面的问题,迎接给咱们留言,共同洽商联系时刻~

以下为SpireCV技俩联系先容

技俩Github网址:

https://github.com/amov-lab/SpireCV

技俩Gitee网址:

https://gitee.com/amovlab/SpireCV

使用手册:

https://www.wolai.com/4qWFM6aZmtpQE6jj7hnNMW爱情电影网



热点资讯
相关资讯


Powered by 精选嫩鲍 @2013-2022 RSS地图 HTML地图

Copyright Powered by站群 © 2013-2024 版权所有