无人机测试二维码降落。

news2024/11/16 19:51:07

一、首先要做的就是让NX板卡驱动usb摄像头:

1. 下载usb_cam软件包

sudo apt install ros-melodic-usb-cam

2. 启动相机节点:

A. 查找摄像头接口

ls /dev/video*

B. 在该路径下修改launch文件,换成你自己的摄像头接口

我这里的摄像头接口为video1
在这里插入图片描述

C.运行摄像头节点(此时就能看到画面了)

roslaunch usb_cam usb_cam-test.launch 

在这里插入图片描述
注意:如果还是报错可以试试这句命令:

sudo apt-get install ros-melodic-image-view

二、相机有画面之后就可以对相机进行标定:

把棋盘标定模板打印出来固定到一个硬纸板上,一定要保证整个图片在一个平面上,否则会影响标定效果。标定效果好坏会直接影响到后面摄像头对二维码位置的估计进而影响到二维码降落,所以重视标定过程。下载地址:棋盘标定板
在这里插入图片描述

1. 首先启动相机节点,相机ID=1(这里的id可由前面的步骤进行确定):

这里使用的是阿木实验室教程里面的USB单目相机命令,整个的标定过程可参考链接:阿木实验室

roslaunch prometheus_detection web_cam1.launch  

2. 利用ROS自带的标定程序对相机进行标定

rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.0193 image:=/prometheus/camera/rgb/image_raw

下面是标定之后的结果,有效点可以多采集一些,我这里采集了113个,当时最高采集了168,但是后面卡死了,又重新进行采集的。
在这里插入图片描述

3. 标定完之后要把终端打印的数据写到对应的文件里面,如下所示:

在这里插入图片描述
在这里插入图片描述
⭐说明
K为相机内参矩阵,distortion为畸变系数矩阵。
camera matrix:摄像头的内部参数矩阵
distortion:畸变系数矩阵
rectification:矫正矩阵,一般为单位阵
projection:外部世界坐标到像平面的投影矩阵

三、二维码检测测试

1. 通过显示屏连接板载或者通过远程工具Nomachine访问板载终端,输入如下命令,运行检测节点

roslaunch p450_experiment p450_landpad_det.launch

这里不要忘记修改相机的ID
在这里插入图片描述
在这里插入图片描述

2. 重新打开一个新终端,输入如下命令,查看检测效果(可视化)

rqt_image_view

在这里插入图片描述

四、开始进行降落

在开始降落之前还遇到两个问题:

问题1:不同的机载电脑,要设置正确的端口号和波特率🤬🤬🤬,这里要好好理解一下 “fcu_url” 这个位置其实是机载电脑与飞控连接的设置,配置好端口号及波特率!

在这里插入图片描述
这个位置我和师弟不断的对两个无人机的代码做对比才发现,直至修改正确!不然的话会报一个错误“FCU…”

问题2:阿木的无人机启动T265的方式是不同的,命令是一样的,但是里面的参数有所改动:(这里还是不太理解)

在这里插入图片描述
***直接把卓翼启动T265的launch文件,粘到阿木相应的包里面,名字都是一样的!***🤞🤞🤞
补充:这个位置不同,阿木的这个可以查看图像的数据,所以对上面位置进行了修改!

1. 启动基本vio脚本 ,输入如下命令:

roslaunch p450_experiment p450_vio_onboard.launch

在这里插入图片描述
可以看到T265的节点已启动成功,下面看一下是否有数据输出,输出以下命令:

2 . 查看T265相机话题数据:有数据 才是真正的启动成功!

rostopic echo /camera/odom/sample

在这里插入图片描述

3 . ROS节点转换,再次查看相机话题数据!

rosrun offboard_pkg t265_to_mavros  //ros节点转换
rostopic echo /mavros/vision_pose/pose  //查看话题数据

在这里插入图片描述

4 . 启动PX4文件

roslaunch mavros px4.launch

在这里插入图片描述

5 . 查看遥控器状态(拨一下遥控器上的通道,看看有没有反应)

如下图所示,就是连接成功,遥控器切换模式,也会有反应
在这里插入图片描述

6 . 启动自主降落脚本文件

roslaunch p450_experiment p450_indoor_landing_static_target.launch

在这里插入图片描述

7. 打开一个新的终端,将图像检测显示出来

下面这幅图,是实体无人机飞机来在空中检测二维码的结果!

rqt_image_view

在这里插入图片描述
到这里只是用卓翼的无人机跑通了阿木的二维码降落,其中还有很多小细节的地方不是很理解,这里先把整个的实验流程梳理一下,后面会针对里面的问题进行逐一的解决!🤜🤛。

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

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

相关文章

PySpark基础入门(3):RDD持久化

RDD的持久化 RDD 的数据是过程数据,因此需要持久化存储; RDD之间进行相互迭代的计算,新的RDD的生成代表着旧的RDD的消失;这样的特性可以最大化地利用资源,老旧地RDD可以及时地从内存中清理,从而给后续地计…

电脑发挥极致,畅游永恒之塔sf

随着22寸显示器的普及,玩永恒之塔势必会对显示卡造成了很大负担。不要说效果全开,就连简洁的玩,都成了问题,那是不是就要重金把才买的显示卡又要拿掉呢? 最出众的解决办法,是超频。 主要就具有以下条件最佳…

Azure DevOps Server 数据还原方式三:增量还原

Contents 1. 概述2. 操作方式 2.1 创建共享文件夹,并将备份文件复制到共享文件夹中2.2 还原数据3 验证还原的数据库 3.1 方式一:核对工作项所在的表的数据3.2 方式二:将数据库配置到应用层,在应用中验证数据4. 常见问题&#xff1…

FAST协议解析1 通过输入输出逆解析

一、前言 FAST协议可以支持金融机构间高吞吐量、低延迟的数据通讯,目前我知道的应用领域是沪深交易所的Level-2行情传输。网络上无论是FAST协议本身,还是使用相关工具(openfast、quickfast)对FAST行情进行解析,相关的…

MC9S12G128开发板—解决小车九宫格方位移动功能实现遇到的一些问题

接着我的上一篇文章:MC9S12G128开发板—实现按键发送CAN报文指示小车移动功能。本篇文章主要记录下在实现小车九宫格方位移动功能过程中,遇到的一些程序问题以及解决措施。 1. 上位机小车响应开发板按键CAN报文指令的响应出错问题 问题现象描述&#x…

自动驾驶行业观察之2023上海车展-----车企发展趋势(1)

新势力发展趋势 小鹏汽车:发布新车G6(中型SUV),将于2023年年中上市 发布新车G6:车展上,小鹏G6正式首发亮相,定位中型SUV,对标Tesla Model Y,将于2023年年中上市并开始交…

基于web的商场商城后台管理系统

该系统用户分为两类:普通员工和管理员。普通员工是指当前系统中的需要对商品和客户的信息进行查询的人。此类用户只能查看自己的信息,以及对商品和客户的信息进行查看。管理员用户可以对自己和他人的信息进行维护,包括对商品入库、销售、库存…

Redis缓存过期淘汰策略

文章目录 1、如何设置 Redis 最大运行内存?2、过期删除策略3、内存淘汰策略 1、如何设置 Redis 最大运行内存? 在配置文件 redis.conf 中,可以通过参数 maxmemory 来设定最大运行内存,只有在 Redis 的运行内存达到了我们设置的最…

代码命名规范

日常编码中,代码的命名是个大的学问。能快速的看懂开源软件的代码结构和意图,也是一项必备的能力。那它们有什么规律呢? Java项目的代码结构,能够体现它的设计理念。Java采用长命名的方式来规范类的命名,能够自己表达…

消息称苹果Type-C口充电未设MFi限制,iOS17将更新Find My服务

根据国外科技媒体 iMore 报道,基于消息源 analyst941 透露的信息,苹果公司目前并未开发 MFi 限制。 根据推文信息内容,两款 iPhone 15 机型的最高充电功率为 20W,而 iPhone 15 Pro 机型的最高支持 27W 充电。 此前古尔曼表示苹…

Python趋势外推预测模型实验完整版

趋势外推预测模型实验完整版 实验目的 通过趋势外推预测模型(佩尔预测模型),掌握预测模型的建立和应用方法,了解趋势外推预测模型(佩尔预测模型)的基本原理 实验内容 趋势外推预测模型 实验步骤和过程…

第4章-虚拟机栈(多使用到jclasslib工具查看字节码)

虚拟机栈 简介 虚拟机栈的出现背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的【如果设计成基于寄存器的,耦合度高,性能会有所提升,因为可以对具体的CPU架…

警惕免杀版Gh0st木马!

https://github.com/SecurityNo1/Gh0st2023 经过调查发现,这款开源的高度免杀版Gh0st木马目前正在大范围传播,据称可免杀多种主流杀软:开发者不仅制作了新颖的下载页面,还设法增加了搜索引擎的收录权重,吸引了许多免…

Python基础合集 练习17(类与对象)

class Dog: pass papiDog() print(papi) print(type(papi)) 构建方法 创建类过后可以定义一个特殊的方法。在python中构建方法是__init__(),init()必须包含一个self参数 class pig(): #def__init__(self) -> None: print(‘你好’) pipgpig() 属性和方法 cl…

JDBC详解(六):数据库事务(超详解)

JDBC详解(六):数据库事务(超详解) 前言一、数据库事务介绍二、JDBC事务处理三、事务的ACID属性1、数据库的并发问题2、四种隔离级别3、在MySql中设置隔离级别 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所…

MySQL基础——数据模型·数据库操作

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易&…

开放原子训练营(第一季)铜锁探密:基于铜锁,在前端对登录密码进行加密,实现隐私数据保密性

本文将基于 铜锁(tongsuo)开源基础密码库实现前端对用户登录密码的加密,从而实现前端隐私数据的保密性。 首先,铜锁密码库是一个提供现代密码学算法和安全通信协议的开源基础密码库,在中国商用密码算法,例…

vcruntime140_1.dll无法继续执行代码怎么修复

vcruntime140_1.dll 是 Microsoft Visual C 程序集中的一个动态链接库文件。该文件提供了一些 C 运行时函数,这些函数是由许多应用程序使用的。当一个程序需要某个 DLL 文件时,它会首先在系统目录和程序所在目录中查找该 DLL 文件。如果系统或程序目录中…

《密码法》

第一章 总 则 第一条 为了规范密码应用和管理,促进密码事业发展,保障网络与信息安全,维护国家安全和社会公共利益,保护公民、法人和其他组织的合法权益,制定本法。 第二条 本法所称密码,是指采用特定变…

JavaSE基础(三)—— 程序流程控制、Random随机数

目录 一、顺序结构 二、分支结构 1. if 1.1 if分支有三种格式​编辑 2. switch 2.1 if、switch分支各自适合做什么业务场景 3. switch的穿透性 三、循环结构 1. for 循环​编辑 2. while 循环 2.1 什么时候用for循环,什么时候用while循环 3. do-while循…