了解SpireCV如何利用G1吊舱进行点击跟踪

功能概述

SpireCV-SDK是一个专为智能无人系统打造的边缘实时感知SDK库。该库能够控制无人机的相机和吊舱,包括拍照、录像、推流等功能,并可以保存视频和进行推流。此外,SpireCV-SDK还集成了目标检测、识别与跟踪功能,以实现更智能的无人系统控制。本文将详细介绍如何利用SpireCV进行吊舱控制,并提供相关算法原理及操作步骤。

注:

  1. 控制Amov的吊舱产品,如G1、Q10等,具体功能实现详情,请在公众号内搜索相关文章或者关注阿木实验室官网。
  2. 若要使用SpireCV-Ros接口,请先跳转到ros通信部分,进行ros环境配置。

目标检测+点击跟踪

SpireCV-Sdk提供了基于深度学习的目标检测算法和基于图像处理的目标跟踪算法。通过实时检测图像中的目标物体并生成检测结果,同时通过点击图像中的目标物体实现跟踪,为后续的吊舱控制提供位置信息。此外,SpireCV-Sdk还集成了吊舱控制算法,可实现半自动搜寻功能。通过设置搜索区域和搜索条件,吊舱可以自动在目标区域内进行搜索,并实时反馈搜索结果

检测跟踪原理

目标检测基于深度学习模型来实现SpireCV-Sdk使用预训练的深度学习模型来识别图像中的对象,并根据这些对象的特征来对其进行分类和定位。其原理是通过卷积神经网络(CNN)对图像进行前向传播,提取出图像的特征,并使用这些特征来预测图像中每个像素的类别。一旦目标被检测到,SpireCV-Sdk会将其位置、大小、旋转角度等信息提取出来。

跟踪算法原理

点击跟踪是SpireCV-Sdk的高级功能之一,它基于目标检测和图像处理技术来实现。使用目标检测算法来识别图像中的对象,并根据这些对象的特征来对其进行分类和定位。并根据提取出每个对象的轮廓信息来计算出每个对象的形状和大小。一旦目标被检测到并定位,SpireCV-Sdk会根据用户的点击位置和目标的位置来计算出点击点和目标之间的距离和角度等信息

一、原理说明

1、Nanotrack原理

Nanotrack算法是一种基于深度学习的目标跟踪方法,通过在每一帧中搜索与目标模板最匹配的区域来定位目标。是一个轻量级的高速跟踪网络,主要指SiamBAN和LightTrack。它适合部署在嵌入式或移动设备上。事实上,它可以在NVIDIA Jetson Orin NX上以 > 60FPS的速度运行。

2、Nanotrack算法结构

二、算法对比实验

下表对比实验表明,NanoTrack算法在跟踪数据集上具有良好的性能。

操作步骤

1.# G1吊舱权限设置

ls /dev/ttyUSB*

sudo chmod 777 /dev/ttyUSB*

2.# 配置吊舱网络

打开终端,输入ping 192.168.2.64 ,检测吊舱是否连接成功。

3.# 运行demo

cd <path to SpireCV/build>

./GimbalClickedTracking    

执行命令启动demo程序。通过点击鼠标左键选择目标物体并实现跟踪。                        

Ros通信

ROS接口编译及调用:ROS(Robot Operating System)是一个开源的机器人操作系统,提供了丰富的功能和工具,方便开发者进行机器人控制和数据处理等方面的开发。SpireCV-Sdk提供了ROS接口编译和调用的功能,开发者可以使用ROS提供的工具和功能来扩展SpireCV-Sdk的功能和应用场景。

接口编译

1.首先确认是否安装SpireCV SDK,参考:SDK安装
2.ROS安装(可选择一键安装或者官网安装)

2.1一键安装

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

注:参照提示安装ROS1

2.2官网安装:

安装ROS,根据Ubuntu系统版本自行选择(链接打开较慢,请耐心等待)

1.Ubuntu1804

2.Ubuntu2004

3.执行如下命令

#下载SpireCV-ros目录

git clone https://gitee.com/amovlab1/spirecv-ros.git

cd spirecv-ros

chmod +x build.sh

./build.sh

# 添加到自动执行

echo "source devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

4.接口调用

使用如下命令启动ROS接口:

roslaunch spirecv_ros gimbal_track.launch

注:gimbal_track.launch文件在SpireCVROS的add-lgimbal分支下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Everything结合内网穿透搭建在线资料库并实现随时随地远程访问

Everythingcpolar搭建在线资料库&#xff0c;实现随时随地访问 文章目录 Everythingcpolar搭建在线资料库&#xff0c;实现随时随地访问前言1.软件安装完成后&#xff0c;打开Everything2.登录cpolar官网 设置空白数据隧道3.将空白数据隧道与本地Everything软件结合起来总结 前…

自己动手实现一个深度学习算法——七、卷积神经网络

文章目录 1.整体结构2.卷积层1&#xff09;全连接层存在的问题2&#xff09;卷积运算3&#xff09;填充4&#xff09;步幅5&#xff09;3维数据的卷积运算6&#xff09;结合方块思考7&#xff09;批处理 3.池化层1&#xff09;池化层的特征 4.卷积层和池化层的实现1&#xff09…

Python Scrapy分布式爬虫

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在当今信息爆炸的时代&#xff0c;获取大规模数据对于许多应用至关重要。而分布式爬虫作为一种强大的工具&#xff0c;在处理大量数据采集和高效爬取方面展现了卓越的能力。 本文将深入探讨分布式爬虫的实际应用…

Java数据结构《队列和邻接矩阵实现图的广度优先搜索》题目

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度偏难的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题只要我写完…

redis相关题

1 什么是Redis Redis(Remote Dictionary Server) 是⼀个使⽤ C 语⾔编写的&#xff0c;开源的&#xff08;BSD许可&#xff09;⾼性能⾮关系型&#xff08;NoSQL&#xff09;的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串&#xff0c;…

C++作业3

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 代码&#xff1a; #include <iostream>using n…

Flutter页面刷新失败?看看是不是这个原因

文章目录 问题描述解决办法在控件A中定义回调函数在页面中使用控件A 原因分析回顾问题原因分析 setState使用注意事项上下文正确性异步更新避免深层嵌套避免频繁调用避免在 build 方法中调用避免在 dispose 方法中调用 问题描述 我用flutter开发了一个页面&#xff0c;页面上有…

Java SpringBoot Controller常见写法

文章目录 环境Controller调用脚本运行结果总结 环境 系统: windows 11 工具: java, idea, git bash Controller 接口常见有以下几种方式 其中&#xff1a; Tobj 调用脚本 我的是windows 系统&#xff0c;使用 git bash 窗口运行, 用 cmd 或者 power shell 会有问题 curl …

8、Qt中定时器的使用

一、说明 在Qt中常使用如下两种定时器 1、使用QObiect类的定时器事件QTimerEvent 与定时器相关的函数有&#xff1a;startTimer()、timeEvent()、killTimer()&#xff1b;startTimer(int interval)函数开始一个定时器并返回定时器ID&#xff0c;如果不能开始一个定时器&…

手把手教你Spring Security Oauth2自定义授权模式

目录 前言1、自定义认证对象2、自定义TokenGranter3、自定义AuthenticationProvider4、配置自定义AuthenticationProvider、自定义TokenGranter5、配置客户端授权模式6、测试 前言 在Oauth2中&#xff0c;提供了几种基本的认证模式&#xff0c;有密码模式、客户端模式、授权码…

传统算法:使用 Pygame 实现选择排序

使用 Pygame 模块实现了选择排序的动画演示。首先,它生成一个包含随机整数的数组,并通过 Pygame 在屏幕上绘制这个数组的条形图。接着,通过选择排序算法对数组进行排序,动画效果可视化每一步的排序过程。在排序的过程中,程序找到未排序部分的最小元素,并将其与未排序部分…

数据结构 / 队列 / 循环队列

1. 定义 为充分利用向量空间&#xff0c;克服假溢出现象的方法是&#xff1a;将向量空间想象为一个首尾相接的圆环&#xff0c;并称这种向量为循环向量。存储在其中的队列称为循环队列&#xff08;Circular Queue&#xff09;。循环队列是把顺序队列首尾相连&#xff0c;把存储…

字符集与编码规则

字符集 强调&#xff1a;UTF-8是编码规则&#xff0c;不是字符集 过程&#xff1a; 字符 --查表获得对应数字&#xff0c;--编码 解码---查表----获取字符 ASCII码 &#xff1a;一个字节 8bit GBK字符集&#xff08;windows系统默认使用的GBK,系统显示ANSI&#xff09; 存…

四、Lua循环

文章目录 一、while(循环条件)二、for&#xff08;一&#xff09;数值for&#xff08;二&#xff09;泛型for&#xff08;三&#xff09;repeat util 既然同为编程语言&#xff0c;那么控制逻辑里的循环就不能缺少&#xff0c;它可以帮助我们实现有规律的重复操作&#xff0c;而…

AIGC-文生视频

stable diffusion&#xff1a; stable diffusion原理解读通俗易懂&#xff0c;史诗级万字爆肝长文&#xff0c;喂到你嘴里 - 知乎个人网站一、前言&#xff08;可跳过&#xff09;hello&#xff0c;大家好我是 Tian-Feng&#xff0c;今天介绍一些stable diffusion的原理&#…

力扣5.最长回文子串

题目描述 思路 1.能够反复利用已判断好的回文子串 2.当子串s[i1,j-1]是回文子串时&#xff0c;只要s[i]s[j]&#xff0c;那么s[i,j]也会是回文子串 3.用好动态规划&#xff0c;具体解释在代码注释里 代码 class Solution {public String longestPalindrome(String s) {int…

Redis分布式锁学习总结

⭐️ 前言 想必大家都有过并发编程的经验&#xff0c;在一个单体应用中&#xff0c;可以通过java提供的各种锁机制来控制多线程对于单体应用中同一资源的并发访问&#xff1b;那么在分布式场景下&#xff0c;想要控制多个应用对于同一外部资源的并发访问&#xff0c;就要用到分…

HarmonyOS4.0开发应用(二)【快速学习】

快速学习 创建项目 1.开始创建 2.选择模板 刚开始选择空白的模板即可 3.填写项目信息 这样一个基本项目就创建好了 代码结构 实现Demo(文字动态切换) Entry Component struct Index {State message: string Hello Worldbuild() {Row() {Column() {Text(this.message).fo…

学习笔记三十五:Ingress-controller高可用

Ingress-controller高可用 Ingress-controller高可用特别注意&#xff1a; 通过keepalivednginx实现ingress-nginx-controller高可用安装nginx主备&#xff1a;修改nginx配置文件。主备一样keepalive配置主keepalived备keepalivek8snode1和k8snode2启动服务测试vip是否绑定成功…

网站实现验证码功能

一、验证码 一般来说&#xff0c;网站在登录的时候会生成一个验证码来验证是否是人类还是爬虫&#xff0c;还有一个好处是防止恶意人士对密码进行爆破。 二、流程图 三、详细说明 3.1 后端生成验证码 Override public Result<Map<String, String>> getVerifica…