Pixhawk精准着陆之IRLock配置

2023-05-16

sensorandMarkers01

pixy

安装说明

  • 下载Pixymon和pixy对应markone的固件,在这里。

固件必须是firmware_IRLOCKpixy_1.0.1.hex

irlock = markone

然后固件里 irlock = pixy

  • 给Pixy刷固件的方法

打开PixyMon,将Pixy连接到电脑,然后长按Pixy上的按钮,进入烧录过程,松开按钮并选择下载好的Markone固件。

刷完固件后,重置Pixy

reset

然后点击 Raw video才能显示可见光图像

raw

Markone上有29个红外灯,正常情况下仅需要MarkOne的目标信息,因此需要在Pixy的镜头上加上红外滤光片。

  • 端口设置

pixy支持I2C、SPI以及串口三种输出方式,点击设置按钮在Interface栏可以看到。将鼠标悬浮在data out port处时会出现相应端口的默认设定值,其中SPI为0,I2C为1….

configureparams

SPI、I2C、串口的协议输出的帧完全相同,每个帧中的对象按大小排序,最大的对象先发送。小端形式发送,一个新的换帧有两个同步信号0xaa55表示

Bytes    16-bit words   Description
----------------------------------------------------------------
0, 1     0              sync (0xaa55)
2, 3     1              checksum (sum of all 16-bit words 2-6)
4, 5     2              signature number
6, 7     3              x center of object
8, 9     4              y center of object
10, 11   5              width of object
12, 13   6              height of object

focus

code

  • 相机调焦

这一步非常重要

为了实现15米的测距精度,相机的棱镜需要稍微不聚焦,这能够让MarkOne在相机视野中看上去更大,因此可以测得的距离更远。

将MarkOne信标放到离相机10-15米远的地方。将IR-Lock对准相机,打开Pixymon并点击Display raw video来查看相机返回的视频,可以发现MarkOne看上去像是一个白斑。

通过旋转镜头对焦,直到MarkOne看上去非常清晰。在室外进行对焦更加简单,因为你能在视频中看到其他物体。如果你在室内,就只能看到MarkOne信标。完成对焦后,抄任意一个方向传动棱镜约1/4圈,这将使得棱镜稍微不对焦。可以发现markOnede 形状在返回的视频中稍微变大了一些。

点击Action栏下的Default program,你会发现能够在15米内准确的检测到IR-Lock.信标的位置由一个白色的方框表示。

视频链接

硬件连接

power

IR-Lock可以使用3S电池供电,工作电压范围为10.2-18V DC。

IR-Lock与Pixhawk的连接示意图如下

connect

port

directrion

飞控固件&PL设置

精准着陆功能包含在AC3.3的修改版本中,而在AC3.4中,精准着陆已经成为默认的功能了(需要使用额外的距离测量模块,例如SF10/A激光雷达、声呐进行高度测量)。

  • AC3.3* PL固件(APM:Copter V3.3.3-rc2 IR-LOCK Firmware

    • Quad:Arducopter_PL_Quad_3.3.3-rc2.px4
    • Source Code: Copter-3.3 Github
    • Latest Commit: 593db3….
    • 对开发者:如果想要自己编译源码,则需要修改一下子模块中的irlock.cpp文件,将其替换为这个文件。代码位置: ardupilot\modules\PX4Firmware\src\drivers\irlock
  • 必要参数设置

    烧好AC3.3* PL固件后,有三个参数需要修改。其中由两个是使用精准着陆功能必须修改的,另一个参数控制精准着陆的下降速度

param

  • PRECLND_ENABLED: 将此值置1
  • PRECLND_SPEED: 这个参数不需要修改。它可以用于限制在精准着陆期间飞行器的水平速度,但目前在控制代码中不使用。
  • PRECLND_TYPE: 将此值设置成2。此参数对应IR-Lock的传感器类型。
  • LAND_SPEED: 下降速度(cm/s)。该值可以降低到低至30cm / s。通常,较低的值可提高精准着陆的精度。

    • 飞行模式

    AC3.3 * PL固件中包含修改的飞行模式

modes

  • LAND: 飞机中心对准IR目标下降,同时以参数PREC_LND SPEED中规定的下降速率下降。应用滚动或俯仰将立即禁用自动精准着陆控制。

  • LOITER: 在保持高度的同时,中心在IR目标上。应用滚动或俯仰将立即禁用自动精度着陆控制。

  • AUTO (LAND): 当执行脚本任务时,LAND命令将使对角线对准IR对象,同时以参数PREC_LND SPEED中规定的下降速率下降。

    出现异常,请切换到Stabilize模式

    首次飞行时,可以使用STABLIZE模式起飞并手动将飞机飞到MarkOne信标上方附近。然后切换到LOITER或者LOITER模式。如果信标在传感器视觉范围内,你会看到飞机会朝着信标移动。

    注意: 如果你在LOITER/LAND模式下触碰了横滚或俯仰摇杆,精准着陆控制将失效。

    • PL日志解读

记录的精准着陆变量可以在“PL”标题下找到。

bX/bY: Angle-to-target measurement in the body-frame reference BEFORE accounting for roll/pitch of copter.在考虑飞机的横滚、俯仰之前测得的机体坐标系中距目标的角度。

eX/eY: Angle-to-target measurement in the earth-frame reference AFTER accounting for roll/pitch of copter.考虑飞机的横滚、俯仰之后测得的地球坐标系中距目标的角度。

pX/pY: Calculated distance of target from copter in earth-frame. Note that the distance calculation depends on the altitude measurement. Also, the altitude variable in this particular instance is range limited, such that a negative value or very small value is not used to calculate the position.算得的在地球坐标系中目标与飞机直接的距离。注意距离的测量取决于高度的测量。同时,在这个特殊实例中的高度变量范围有限,因此将不使用负值或非常小的值来计算位置。

 // get body-frame angles to target from backend
    if (!_backend->get_angle_to_target(_bf_angle_to_target.x, _bf_angle_to_target.y)) {
        _have_estimate = false;
    }

  float x_rad = _bf_angle_to_target.x - _ahrs.roll;
  float y_rad = -_bf_angle_to_target.y + _ahrs.pitch;

    // rotate to earth-frame angles
    _ef_angle_to_target.x = y_rad*_ahrs.cos_yaw() - x_rad*_ahrs.sin_yaw();
    _ef_angle_to_target.y = y_rad*_ahrs.sin_yaw() + x_rad*_ahrs.cos_yaw();

    // get current altitude (constrained to no lower than 50cm)
    float alt = max(alt_above_terrain_cm, 50.0f);

    // convert earth-frame angles to earth-frame position offset
    _target_pos_offset.x = alt*tanf(_ef_angle_to_target.x);
    _target_pos_offset.y = alt*tanf(_ef_angle_to_target.y);
    _target_pos_offset.z = 0;  // not used

下图显示了5次连续精准着陆。绿线表示飞机的高度。红线(’bX’)表示传感器在x方向上相对于传感器测量的与目标对象的角度。

log

当LAND模式启动时,飞机开始向目标移动,将角度测量值向零驱动。通常观察角度测量中的振荡。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pixhawk精准着陆之IRLock配置 的相关文章

  • 从零编写一个双目视觉SLAM系统(一):一个滑窗的PnP里程计

    最近在尝试用光流法写一个基本的双目视觉SLAM xff0c 希望通过这个项目把SLAM的各个模块都自己实现一遍 xff0c 以此加深对SLAM各个模块的理解 目前刚完成了一个通过求解相邻帧PnP问题的双目视觉里程计 xff0c 基本有了一个
  • 盘点丨无人机与AI 深度融合及跨域应用

    在密集的竹林里 xff0c 一群无人机自如地穿梭其中 xff0c 像组织有序的鸟群 xff0c 时而灵巧地掠过低矮灌木丛 xff0c 时而交叉飞行变换队形 这不是科幻内容 xff0c 而是浙江大学团队研发的自主导航的集群飞行系统 xff0c
  • 安全即代码:为Go实现lint和gosec | Gopher Daily (2020.08.05) ʕ◔ϖ◔ʔ

    每日一谚 xff1a a little copying is better than a little dependency 有意想学习容器或Kubernets的童鞋可以了解一下我的慕课网实战课 xff1a k8s实战 https codi
  • 终于有人把RISC-V讲明白了

    http m elecfans com article 653167 html
  • OpenHarmony 3.1 Beta版本关键特性解析——ArkUI容器类API介绍

    xff08 以下内容来自开发者分享 xff0c 不代表 OpenHarmony 项目群工作委员会观点 xff09 刘鑫 容器类 xff0c 顾名思义就是存储的类 xff0c 用于存储各种数据类型的元素 xff0c 并具备一系列处理数据元素的
  • 200个DIY及科技网站

    http www powerlabs org 高能diy 电磁枪 微波武器 http www altair org tesla html 高电压diy爱好者 http www richieburnett co uk tesla shtml
  • Linuxunexpected error reading Dockerfile: is a directory--2021-08-25

    编写完Dockerfile后需要通过命令将其制作为镜像 mobaXterm报错 unexpected error reading Dockerfile read var lib docker tmp docker builder314741
  • 在Eclipse中配置Tomcat

    简介 xff1a 1 3步为 xff1a 把Tomcat配置到eclipse中 4 7步为 xff1a 把新建的Web项目部署到Tomcat中并运行 最后一部分为 xff1a 改变Web工程的真实部署路径到Tomcat中目录下 x1f447
  • ROS与C++入门教程-消息-序列化和适配类型

    原文地址 xff1a ROS与C 43 43 入门教程 消息 序列化和适配类型 创客智造 说明 xff1a 介绍序列化和适配类型在C Turtle版本增加 序列化到内存 使用ros serialization serialize 函数 xf
  • 前方高能,官方教程:教你如何玩转 GitHub !

    回复 1024 xff0c 送你一个特别推送 作为程序员 xff0c 一般手上会有三把剑 xff0c 用好了这三把剑 xff0c 对于编程来说 xff0c 对于解决编程中遇到的 Bug xff0c 都应该能够轻而易举的解决 程序员手中的三把
  • 树莓派安装宝塔面板后无法连接VNC

    解决方法 xff1a 登陆宝塔面板后台 xff0c 在 安全 中放行端口5900即可
  • Python并行处理视频帧

    参考链接 xff1a Speedy Computer Vision Pipelines using Parallelism 方案 xff1a 使用Python多进程编程 xff0c 将视频分成多个小段 xff0c 可按照CPU核数num p
  • 深度学习目标检测之SSD

    经典论文SSD笔记 论文链接 xff1a SSD Single Shot MultiBox Detector论文报告 xff1a ssd eccv2016 slide目标检测百页综述 xff0c 从传统方法到深度学习 xff1a Objec
  • C++编译报错fmt未定义的引用

    对 fmt v5 internal basic data POWERS OF 10 64 未定义的引用 1 最简单的方法 xff1a 把代码中printf的输出全部换成std cout或者其他的 2 安装fmt包 git clone htt
  • PyG/torch_geometric的一些坑

    安装PyG span class token keyword import span os span class token keyword import span torch os span class token punctuation
  • Pixhawk官网飞行模式介绍

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a Flight Mode 飞行模式 原文地址 http dev px4 io concept flight modes html 飞行模式定义了系统在任何给定时间的状态
  • PX4中文维基汉化项目启动

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 敬启者 xff1a 打算进行PX4官网的汉化工作 GitBook 与官网的方式相同 xff0c 我们也是将网站以GitBook的方式呈现给大家 汉化后的版本先点点点点
  • Windows / Ubuntu操作系统下Pixhawk原生固件PX4的编译方法

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 更新于2017 3 13 FAQ 本文说明针对 PX4 Firmware 1 6 0 问题 1 xff1a 找不到python jinja2模块 CMake Erro
  • Sublime Text中文乱码的解决方法

    Sublime Text Sublime Text这款代码编译器相当不错 xff0c 自带高亮显示 xff0c 界面清新 但是Sublime Text默认是不支持中文显示的 xff0c 这种中文乱码的行为万万是不能够接受的 这里简单介绍一下
  • 自制Pixhawk飞控板烧写BootLoader教程

    对于自己制作的飞控板 xff0c 通过USB连接电脑之后 xff0c 开始电脑是无法检测到飞控板的端口存在的 检测不到端口 xff0c 就不能用控制台给飞控板烧写固件 xff0c 就不能用QGroundControl xff0c 就不能进行

随机推荐

  • Pixhawk原生固件PX4之常用函数解读

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a PX4Firmware 经常有人将Pixhawk PX4 APM还有ArduPilot弄混 这里首先还是简要说明一下 xff1a Pixhawk是飞控硬件平台 xff
  • Pixhawk原生固件PX4之添加uORB主题

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 本说明针对 Firmware v1 5 4 1 添加流程说明 1 在Firmware msg下新建uORB的成员变量 xff0c eg xxx msg 2 在Firm
  • Pixhawk原生固件PX4之SITL软件在环仿真

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 故事开始之前 xff0c 先按照笔者的这一篇博客在Ubuntu上完成固件的编译 jMAVSim仿真 jMAVSim仿真不需要任何配置 xff0c 直接输入指令即可 s
  • Pixhawk原生固件PX4之串口读取信息

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 这篇博客纯粹出于对FreeApe这位先行者贡献的复现 xff0c 也是本人一直想要进行的一项操作 在此还是做一下记录 时代在改变 xff0c 代码在更新 xff0c
  • Effective Modern C++ 条款21 比起直接使用new,更偏爱使用std::make_unique和std::make_shared

    比起直接使用new xff0c 更偏爱使用std make unique和std make shared 让我们从std make unique和std make shared之间的比较开始讲起吧 std make shared是C 43
  • Pixhawk原生固件PX4之串口添加读取传感器实现

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 本博客承接前一篇 xff0c 对FreeApe的串口添加超声波传感器博文后半部分进行学习 为什么叫前奏呢 xff0c 因为用了伪传感器 xff0c 把单片机用串口发送
  • Pixhawk原生固件PX4之MAVLink协议解析

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a PX4 对Mavlink 协议提供了良好的原生支持 该协议既可以用于地面站 Ground ControlStation GCS 对无人机 UAV 的控制 xff0c
  • Pixhawk原生固件PX4之TAKEOFF的启动流程

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 以TAKEOFF为例说明PX4中一个飞行模式的启动流程 众所周知由遥控器或者地面站决定Main state作为用户期望到达的飞行模式然后有commander进行条件判
  • Pixhawk原生固件PX4之驱动ID

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 驱动ID PX4使用驱动ID将独立传感器贯穿于整个系统 这些ID存储于配置参数中 xff0c 用于匹配传感器校正值 xff0c 以及决定哪些传感器被记录到log中 传
  • Pixhawk原生固件PX4之SPI驱动注册过程

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 一切事出有因 xff0c 为了添加一个自定义SPI总线连接的传感器 xff0c 首先要弄清楚一个SPI设备的注册过程 xff0c 大致涉及以下的一些文件 接下来就该以
  • Pixhawk原生固件PX4之MPU6000驱动分析

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 要想自己添加一个传感器的话 xff0c 最好先搞明白已有的传感器的工作过程 这里记录一下PX4中MPU6000加速度计陀螺仪的解读过程 xff0c 从mpu6000
  • Pixhawk原生固件PX4之日期时间的确定

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 偶然注意到PX4日志中老是出现类似于2000 01 01 00 00 00这种日期 有兴趣的可以搜索一下千年虫问题 xff0c 于是结合代码进行了一波分析 最后定位到
  • Pixhawk原生固件PX4之添外置传感器MPU6500

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 成功的在Pixhawk上添加了一个自定义的传感器MPU6500 Pixhawk飞控板上空余出一个SPI4接口 提示 xff1a 多出来的GPIO EXT引脚可以作为片
  • 多旋翼无人机进阶教程

    无人机是一个系统的工程 xff0c 不可谓不庞大 开源飞控盛行 xff0c 重复造轮子的工作实在无需再做 但是若决定真正的去研究飞控 xff0c 必须从本质出发 xff0c 熟悉并了解其实现原理 纷繁复杂的资料 xff0c 让人无法分辨 笔
  • Pixhawk原生固件PX4之MAVLink外部通讯

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 目前的需求是 xff1a 一台电脑连数传 xff0c Pixhawk飞控上电连数传 xff0c 电脑向Pixhawk发送MAVlink消息 至少有5种方案 xff1a
  • rtsp流浏览器播放方案

    rtsp流在主流浏览器并不支持直接播放 比如大华的视频流 xff1a rtsp admin 123456 64 192 168 10 129 cam realmonitor channel 61 1 amp subtype 61 0 xff
  • PX4开发指南中文版维护说明

    PX4中文维基现已与PX4开发者官网合并 现在大家可以直接进入官网进行语言切换 PX4中文版的维护依然需要你的贡献 贡献说明 xff1a 官方的GitHub仓库为https github com PX4 Devguide 我将其Fork后的
  • OpenCV图像坐标系与行列宽高的关系

    刚开始接触图像处理 xff0c 关于图像坐标系与行列宽高的关系感到纠结 xff0c 但是似乎没有更好的处理方法了 xff0c 其对应关系大致如下 row 61 61 height 61 61 Point y col 61 61 width
  • Pixhawk原生固件PX4之位姿控制算法解读

    欢迎交流 个人 Gitter 交流平台 xff0c 点击直达 xff1a 参考文献 xff1a Minimum Snap Trajectory Generation and Control for Quadrotors PX4中多旋翼无人机
  • Pixhawk精准着陆之IRLock配置

    安装说明 下载Pixymon和pixy对应markone的固件 xff0c 在这里 固件必须是firmware IRLOCKpixy 1 0 1 hex irlock 61 markone 然后固件里 irlock 61 pixy 给Pix