当前位置: 首页 > news >正文

demon drone 200无人机标定流程

demon drone 200无人机标定流程

  • 一、飞控固件更新
    • 1.1 固件更新
    • 1.2 参数更新
  • 二、imu标定
    • 2.1 安装imu标定工具(在你自己的电脑上)
    • 2.2 录制rosbag(在对应飞机上)
    • 2.3 运行标定程序(在你自己的电脑上)
  • 三、双目及imu联合标定
    • 3.1 安装标定工具(参考2.1)
    • 3.2 录制rosbag
    • 3.3 运行标定程序
    • 3.4 注意事项
  • 四、程序参数更新

一、飞控固件更新

飞控固件按需更新。参考QQ群:562983648,官方说明

1.1 固件更新

需要按照要求更新1.13.3对应的bootloader和固件。

1.2 参数更新

刷新参数,并重新标定传感器。

二、imu标定

2.1 安装imu标定工具(在你自己的电脑上)

# 我的这个git库中包含了imu标定和相机标定程序
git clone https://gitee.com/nankel/kalibr_workspace.git
cd kalibr_workspace
catkin_make

注意:可能会出错,src中code_utilsimu_utils有顺序要求,可以忽略错误多次catkin_make。详细内容可以参考我之前的博客D435i标定摄像头和IMU笔记三(IMU标定篇)中的港科大标定方法。

注意:不要忘了将setup.bash加入~/.bashrc中。

2.2 录制rosbag(在对应飞机上)

# 1、启动mavros
roslaunch mavros px4.launch# 2、确认imu频率。确保imu发送频率大于200Hz,本无人机一般为250Hz。
rostopic hz /mavros/imu/data_raw# 3、静止不动30分钟(事实上几分钟也行,最好久一点),录制rosbag。会在当前路径生成imu.bag文件
rosbag record -O imu /mavros/imu/data_raw# 4、将rosbag复制到运行标定程序的电脑。U盘复制或者局域网scp复制

2.3 运行标定程序(在你自己的电脑上)

1)修改程序配置
launch路径:kalibr_workspace/src/imu_utils/launch/nankel_imuCali.launch
内容及注释如下:

<launch><node pkg="imu_utils" type="imu_an" name="imu_an" output="screen"><param name="imu_topic" type="string" value= "/mavros/imu/data_raw"/>  <!-- imu话题名 --><param name="imu_name" type="string" value= "demon_mini_imu"/>     <!-- imu名,随便改 --><param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>  <!-- 标定数据保存地址 --><param name="max_time_min" type="int" value= "30"/>   <!-- 标定最短时长(分钟),可以自行更改,要比实际录制短,要不然不会停--><param name="max_cluster" type="int" value= "100"/></node>
</launch>

注意:按照此脚本,结果文件将保存于kalibr_workspace/src/imu_utils/data

2)运行程序

# 1、运行程序
roslaunch imu_utils nankel_imuCali.launch
# 2、400倍速播放rosbag
rosbag play -r 400 imu.bag

3)保存标定参数
新建imu.yaml文件,后面联合标定会用到,里面的数据更新为标定数据:

rostopic: /mavros/imu/data_raw
update_rate: 250.0 #Hzgyroscope_noise_density: 0.00302857381362
gyroscope_random_walk: 3.00373059934e-05accelerometer_noise_density: 0.0272600517598
accelerometer_random_walk: 0.000579817988633

三、双目及imu联合标定

3.1 安装标定工具(参考2.1)

3.2 录制rosbag

# 1、启动双目程序
roslaunch stereo stereo.launch
# 2、启动mavros
roslaunch mavros px4.launch# 3、录制rosbag(录制过程要上下左右前后各运动两次)
rosbag record -O stereo_imu  /mavros/imu/data_raw /stereo/left/image_raw /stereo/right/image_raw# 4、将rosbag复制到运行标定程序的电脑。U盘复制或者局域网scp复制

注意:如果想要弹出双目图像,可以使用rviz观看图像。或者修改配置demon_drone_ws/src/stereo/launch/stereo_config.yamlif_show_orig: 1

注意:建议使用台式电脑,不然标定时长将会很久。

3.3 运行标定程序

也可以参考我之前的博客:D435i标定摄像头和IMU笔记四-2(双目摄像头与IMU联合标定篇)

1、准备标定板文件checkerboard.yaml

target_type: 'checkerboard' #gridtype
targetCols: 5               # 标定板内角数量(列)
targetRows: 8               # 标定板内角数量(行)
rowSpacingMeters: 0.045     #size of one chessboard square [m]
colSpacingMeters: 0.045     #size of one chessboard square [m]

2、运行标定程序

# 1、标定双目相机
kalibr_calibrate_cameras --target checkerboard.yaml --bag stereo_imu.bag --models pinhole-radtan pinhole-radtan --topics /stereo/left/image_raw /stereo/right/image_raw# 2、联合标定双目相机和imu(要等待双目标定结束)
kalibr_calibrate_imu_camera --target checkerboard.yaml --cam camchain-stereo_imu.yaml --imu imu/imu.yaml --bag stereo_imu.bag

3、标定结果文件:results-imucam-imu_stereo.txt:

3.4 注意事项

注意:
1、观察相机标定误差,一般在1个像素以内。
2、观察联合标定误差,一般2个像素以内。
3、imu和相机时差一般是负数0~-0.06以内。

四、程序参数更新

1、将标定文件results-imucam-imu_stereo.txt复制到/home/khadas/demon_packages/demon_drone_ws/src/stereo/launch/results-imucam-stereo_imu.txt下。

2、运行自动更新脚本

cd /home/khadas/demon_packages/demon_drone_ws/src/stereo/launch && python3 config.py

3、移动配置文件
移动vins所需文件:可见/home/khadas/demon_packages/demon_drone_ws/src/VINS-Fusion/config/stereo中文件

4、大功告成,运行程序:可见脚本/home/khadas/demon_packages/demon_drone_ws/scipts/fpv_ego.sh

相关文章:

demon drone 200无人机标定流程

demon drone 200无人机标定流程 一、飞控固件更新1.1 固件更新1.2 参数更新 二、imu标定2.1 安装imu标定工具&#xff08;在你自己的电脑上&#xff09;2.2 录制rosbag(在对应飞机上)2.3 运行标定程序&#xff08;在你自己的电脑上&#xff09; 三、双目及imu联合标定3.1 安装标…...

案例开发-日程管理-第一期

九 案例开发-日程管理-第一期 共7期 9.1 登录页及校验 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>.ht{text-align: center;color: cadetblue;font-family: 幼…...

【Java 注解,自定义注解,元注解,注解本质,注解解析】

文章目录 什么是注解&#xff1f;Java内置注解自定义注解元注解注解的本质注解解析 什么是注解&#xff1f; 注解是Java编程语言中的一种元数据&#xff0c;提供了有关程序的额外信息。注解以符号开始&#xff0c;紧跟着注解的名称和一对括号&#xff0c;括号内包含注解的参数…...

染色法判定二分图

什么是二分图&#xff1f; 二分图&#xff0c;也称作二部图&#xff0c;是图论中的一种特殊模型。在一个无向图G(V,E) 中&#xff0c;如果顶点集合 V 可以被分割成两个互不相交的子集 A 和 B&#xff0c;并且图中的每条边 (i,j) 关联的两个顶点 i 和 j 分别属于这两个不同的顶…...

自动气象站的主要功能优势

在科技日新月异的今天&#xff0c;我们生活的方方面面都受到了科技的影响。其中&#xff0c;自动气象站作为气象观测领域的重要一环&#xff0c;不仅提升了气象数据的准确性和时效性&#xff0c;还为我们的日常生活、农业生产、灾害预防等提供了重要的数据支持。 自动气象站概述…...

Java中实现二维数组(矩阵)的转置

在矩阵运算中&#xff0c;矩阵的转置是一个基本操作&#xff0c;即将矩阵的行变成列&#xff0c;列变成行。在Java中&#xff0c;我们可以通过编写一个方法来实现二维数组的转置。下面&#xff0c;我将详细介绍如何在Java中完成这一任务&#xff0c;并提供完整的代码示例。 编…...

Prometheus+Grafana主机运行数据

目录 介绍 安装Node Exporter 配置Prometheus 验证配置 导入仪表盘 介绍 Prometheus是一款开源的监控和警报工具&#xff0c;而Node Exporter是Prometheus的一个官方插件&#xff0c;用于采集主机上的各种系统和硬件指标。 安装Node Exporter 下载最新版本的Node Export…...

GraphQL在Postman中:释放API查询的强大潜能

&#x1f680; GraphQL在Postman中&#xff1a;释放API查询的强大潜能 Postman作为API开发和测试的领先工具&#xff0c;对GraphQL的支持为开发者提供了一种新的方式来查询和管理数据。GraphQL是一种查询语言&#xff0c;用于API&#xff0c;允许客户端明确指定他们需要哪些数…...

大语言模型里的微调vs RAG vs 模板提示词

文章目录 介绍微调&#xff08;Fine-tuning&#xff09;定义优点&#xff1a;缺点&#xff1a;应用场景&#xff1a;技术细节 检索增强生成&#xff08;RAG&#xff0c;Retrieval-Augmented Generation&#xff09;定义优点&#xff1a;缺点&#xff1a;应用场景&#xff1a;技…...

网络编程:常用网络测试工具

telnet netstat ping arp wireshark&#xff08;网络抓包工具&#xff09; tcpdumpssh2 secure crt ——软件工具sudo ufw disable sudo apt-get install openssh-server openssh-client //两个命令敲完 得重启sudo apt-get install wireshark 1、telnet 远程登录工具&…...

mov视频怎么改成mp4?把mov改成MP4的四个方法

mov视频怎么改成mp4&#xff1f;选择合适的视频格式对于确保内容质量和流通性至关重要。尽管苹果公司的mov格式因其出色的视频表现备受赞誉&#xff0c;但在某些情况下&#xff0c;它并非最佳选择&#xff0c;因为使用mov格式可能面临一些挑战。MP4格式在各种设备&#xff08;如…...

力扣1472.设计浏览器历史记录

力扣1472.设计浏览器历史记录 用双指针记录历史记录 以及栈顶高度移动时会直接把之前的记录消掉 class BrowserHistory {int pos-1;int top0;string history[5010];public:BrowserHistory(string homepage) {visit(homepage);}void visit(string url) {pos ;top pos;histor…...

准大一新生开学千万要带证件照用途大揭秘

1、提前关注好都有哪些考场&#xff0c;以及这些考场大致在网页的哪个位置。比如我选对外经贸大学&#xff0c;我就直接找到第二个点进去。 2、电脑上同时开了谷歌浏览器和IE浏览器&#xff0c;以及手机也登陆了。亲测下来&#xff0c;同一时间刷新&#xff0c;谷歌浏览器能显示…...

QImage显示图片像素

在Qt中&#xff0c;QImage 类是用来表示和处理图像的。如果你想查看或显示一个图片的像素数据&#xff0c;你可以使用 QImage 提供的方法来访问这些数据。以下是一些基本的方法来获取和显示图片的像素信息&#xff1a; 获取图像的像素格式&#xff1a; 使用 QImage::format() …...

uniapp使用高德地图(公众号+h5)

选择微信小程序的话后果就是你的地图出不来&#xff0c;出来了就报key异常 下面直接放配置和代码&#xff1a; 打包后的高德uni-app,uniCloud,serverless,高德地图,申请高德地图Key,配置使用高德地图,参数说明,高德开放平台用户名,百度地图,申请百度地图Key,配置使用百度地图,…...

深度学习与浅层学习:技术变革下的竞争态势

深度学习与浅层学习&#xff1a;技术变革下的竞争态势 在过去十年中&#xff0c;深度学习的崛起对整个人工智能领域产生了巨大影响&#xff0c;几乎在各种任务中显示出超越传统浅层学习方法的性能。这种变化不仅推动了技术的进步&#xff0c;还对硬件市场&#xff0c;尤其是显…...

LeetCode 219. 存在重复元素 II

LeetCode 219. 存在重复元素 II 给你一个整数数组 nums 和一个整数 k &#xff0c;判断数组中是否存在两个 不同的索引 i 和 j &#xff0c;满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&am…...

【目标检测】使用自己的数据集训练并预测yolov8模型

1、下载yolov8的官方代码 地址&#xff1a; GitHub - ultralytics/ultralytics: NEW - YOLOv8 &#x1f680; in PyTorch > ONNX > OpenVINO > CoreML > TFLite 2、下载目标检测的训练权重 yolov8n.pt 将 yolov8n.pt 放在ultralytics文件夹下 3、数据集分布 注…...

应用监控SkyWalking调研

参考&#xff1a; 链路追踪( Skyworking )_skywalking-CSDN博客 企业级监控项目Skywalking详细介绍&#xff0c;来看看呀-CSDN博客 SkyWalking 极简入门 | Apache SkyWalking 使用 SkyWalking 监控 ClickHouse Server | Apache SkyWalking https://zhuanlan.zhihu.com/p/3…...

Selenium使用注意事项:

find_element 和 find_elements 的区别 WebDriver和WebElement的区别 问题&#xff1a; 会遇到报错&#xff1a; selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector",&…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...