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_utils
和imu_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.yaml
中if_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标定工具(在你自己的电脑上)2.2 录制rosbag(在对应飞机上)2.3 运行标定程序(在你自己的电脑上) 三、双目及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 注解,自定义注解,元注解,注解本质,注解解析】
文章目录 什么是注解?Java内置注解自定义注解元注解注解的本质注解解析 什么是注解? 注解是Java编程语言中的一种元数据,提供了有关程序的额外信息。注解以符号开始,紧跟着注解的名称和一对括号,括号内包含注解的参数…...

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

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

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

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

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

大语言模型里的微调vs RAG vs 模板提示词
文章目录 介绍微调(Fine-tuning)定义优点:缺点:应用场景:技术细节 检索增强生成(RAG,Retrieval-Augmented Generation)定义优点:缺点:应用场景:技…...

网络编程:常用网络测试工具
telnet netstat ping arp wireshark(网络抓包工具) 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?选择合适的视频格式对于确保内容质量和流通性至关重要。尽管苹果公司的mov格式因其出色的视频表现备受赞誉,但在某些情况下,它并非最佳选择,因为使用mov格式可能面临一些挑战。MP4格式在各种设备(如…...

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

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

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

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

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

【目标检测】使用自己的数据集训练并预测yolov8模型
1、下载yolov8的官方代码 地址: GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 2、下载目标检测的训练权重 yolov8n.pt 将 yolov8n.pt 放在ultralytics文件夹下 3、数据集分布 注…...

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

Selenium使用注意事项:
find_element 和 find_elements 的区别 WebDriver和WebElement的区别 问题: 会遇到报错: selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector",&…...

小程序需要进行软件测试吗?小程序测试有哪些测试内容?
在如今移动互联网快速发展的时代,小程序已成为人们生活中不可或缺的一部分。然而,面对日益增长的小程序数量和用户需求,小程序的稳定性和质量问题日益突显。因此,对小程序进行软件测试显得尤为重要。 近期的一项调查显示…...

一文读懂企业租用GPU的注意事项!
在人工智能、大数据处理及高性能计算领域,GPU算力已成为推动技术创新与业务增长的核心动力。尚云Sunclouds作为GPU算力租赁服务提供商,为用户提供了灵活、高效且成本可控的解决方案。对于初次接触GPU算力租赁的用户而言,了解并掌握租用过程中…...

Linux运维:mysql主从复制原理及实验
当一台数据库服务器出现负载的情况下,需要扩展服务器服务器性能扩展方式有向上扩展,垂直扩展。向外扩展,横向扩展。通俗的讲垂直扩展是将一台服务器扩展为性能更强的服务器。横向扩展是增加几台服务器。 主从复制好比存了1000块钱在主上&…...

022-GeoGebra中级篇-几何对象之直线与坐标轴
本文主要介绍一下GeoGebra中直线的常见输入方式,比如工具栏输入、表达式输入、函数输入,最后再把坐标轴的调用简单介绍一下。内容比起传统的教学更偏向于实战一些,若感兴趣欢迎继续阅读。 目录 一、直线1. 关于工具栏绘制(1&#…...

node js安装、配置(Windows版)
目录 node js 安装 node js 全局配置 1、全局安装路径 2、全局缓存路径 3、修改环境变量 pnpm安装、卸载 全局安装pnpm 验证pnpm版本 卸载pnpm 1、移除全局安装的包 2、移除pnpm cli 脚本直接安装 npm安装的使用命令直接卸载 node js 安装 cmd 查看是否存在&…...

go语言day08 泛型 自定义错误处理 go关键字:协程
泛型: 抛错误异常 实现error接口类型 用java语言解释的话,实现类需要重写error类型的抽象方法Error().这样就可以自定义异常处理。 回到go语言,在Error()方法中用*argError 这样一个指针类来充当error接口的实现类。 在f2()方法中定义返回值…...

MySql性能调优01-[数据结构和索引]
数据结构和索引 什么是索引索引的种类常见索引数据结构和区别二叉树 红黑树 什么是索引 索引的种类 在Mysql中索引是在存储引擎层实现的,而不是在服务层实现的 按数据结构分:Btree索引、Hash索引、Full-text索引按存储结构分:聚簇索引、非聚…...

【算法入门-栈】逆波兰表达式求值
📖逆波兰表达式求值 ✅描述✅扩展:什么是逆波兰表达式✅题解方法一:栈✅题解方法二(数组模拟栈) 今天又刷了一道题,奥利给 刷题地址: 点击跳转 ✅描述 给定一个逆波兰表达式,求表达…...

【史上最全面ESP32教程】http通信
文章目录 前言HTTP协议是什么?HTTP协议的特点HTTP协议的常见应用 esp32 使用http通信通信流程基础使用HTTPClient 常用的函数函数介绍:void end(void);bool connected(void);void setReuse(bool reuse);void setUserAgent(const String& userAgent);…...

*算法训练(leetcode)第二十七天 | 56. 合并区间、738. 单调递增的数字、968. 监控二叉树
刷题记录 56. 合并区间*738. 单调递增的数字*968. 监控二叉树 56. 合并区间 leetcode题目地址 排序后遇到有重合的区间选择最大的区间保存即可,结果集中保存的是离当前区间最近的区间,因此使用当前区间与结果集中的最后一个集合比较查看是否有重合&…...