Gazebo仿真实现无人机+Apriltag码动态跟踪

news2024/11/26 7:34:44

目录

演示

一、环境

二、配置

创建模型

首先相机创建

 添加相机

Apriltag创建

地图添加apriltag码

Apriltag_ros配置

三、代码运行

四、问题

修改相机模型的参数


演示

一、环境

ROS+gazebo配置

Px4+Mavros

Apriltag_ros编译

二、配置

在默认的mavros_posix_sitl.launch的基础上添加,mavros_posix_sitl.launch中为一个四轴无人机,需要添加朝下的摄像头和一个移动平台(附有Apriltag码)。

创建模型

个人习惯是创建新的模型,而不是在原有的上面更改

首先相机创建

在~/PX4_Firmware/Tools/sitl_gazebo/models/下找到fpv_cam和iris_fpv_cam

分别复制,修改名称为usb_cam和iris_usb_cam ,包括里面的sdf文件名

 

打开usb_cam.sdf

第三行修改如图

(这是模型名称)

 如图位置修改

(这是话题名称)

这个位置为机器人名称

(会在话题前生成前缀,和group一个效果)

 

由于launch会自己检测robotNamespace这个参数,所以课改可不改,如果不改或出现iris_0的前缀。

打开model.config修改如图

 然后修改iris_usb_cam模型

iris_usb_cam.sdf文件

model.config文件

 

 添加相机

 在px4launch文件夹下创建新的launch文件

 修改如图,增加一个参数 my_model

注:引用的是模型irir_usb_cam不是usb_cam,相当于引用的是封装而不是原零件

 运行后即可看到一个装有摄像头的小四轴

话题信息如图

如果没有修改robotNamespace参数,则会出现irir_0/usb_cam/...

Apriltag创建

基于Xtdrone生成Apriltag 0 模型

cd ~/XTDrone/sensing/object_detection_and_tracking/apriltag/script
python3 make_tag.py --nx 1 --ny 1 --marginx 0.00 --marginy 0.00 --tsize 0.36 --tspace 0.5 --startid 0 --tfam t36h11 --borderbits 1 #生成Apriltag0的pdf

会在同一路径下生成target.pdf修改名称为apriltag0.pdf,放入路径~/XTDrone/sitl_config/make_gazebo_model/image下

然后运行make_gazebo_model.py

cd ~/XTDrone/sitl_config/make_gazebo_model/script
python3 make_gazebo_model.py 

运动脚本后,会在~/.gazebo/models中生成与AprilTag图片名同名的目录,然后就可以使用该模型了。

地图添加apriltag码

~PX4_Firmware/Tools/sitl_gazebo/worlds下的empty.world

复制并重命名

添加代码如下

   <model name='apriltag0'>  
    	<pose frame=''>0 5 0.05  0 1.57 0</pose>  
      <include>
        <scale>5 5 2</scale> 
        <uri>model://apriltag0</uri>
      </include>
    </model>

修改launch文件中的地图

 

然后运行会生成一个带有Apriltag码的世界

到这里模型配置就结束了

Apriltag_ros配置

可以参考我之前的博客

https://blog.csdn.net/2301_76165902/article/details/142000488?spm=1001.2014.3001.5502icon-default.png?t=O83Ahttps://blog.csdn.net/2301_76165902/article/details/142000488?spm=1001.2014.3001.5502修改对应的相机话题即可

三、代码运行

github仓库,可以参考

https://github.com/jiezz12/apriltag_location.giticon-default.png?t=O83Ahttps://github.com/jiezz12/apriltag_location.git

 点点star,感谢

四、问题

仿真中的相机大小为320x240

现实中大多为640x480

所以在仿真中识别的相机坐标会以右下角为原点,现实中中心为原点。

修改相机模型的参数

usb_cam.sdf第45行

 

改为640x480即可

本教材提供静止二维码配置,如果需要移动码(开头那样),可以私信我。、

欢迎批评指正。

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

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

相关文章

H.265流媒体播放器EasyPlayer.js播放器提示MSE不支持H.265解码可能的原因

随着人工智能和机器学习技术的应用&#xff0c;流媒体播放器将变得更加智能&#xff0c;能够根据用户行为和偏好提供个性化的内容推荐。总体而言&#xff0c;流媒体播放器的未来发展将更加注重技术创新和用户互动&#xff0c;以适应不断变化的市场需求和技术进步。 提示MSE不支…

加菲工具 - 好用免费的在线工具集合

加菲工具 https://orcc.online AI 工具 集合了目前主流的&#xff0c;免费可用的ai工具 文档处理 pdf转word、office与pdf互转等等工具都有链接 图片图标 统计了好用免费的在线工具 编码解码 base64编码解码、url编码解码、md5计算、进制转换等等 其它 还有其他好用的…

【linux学习指南】初识Linux进程信号与使用

文章目录 &#x1f4dd;信号快速认识&#x1f4f6;⽣活⻆度的信号&#x1f4f6; 技术应⽤⻆度的信号&#x1f309; 前台进程&#xff08;键盘&#xff09;&#x1f309;⼀个系统函数 &#x1f4f6;信号概念&#x1f4f6;查看信号 &#x1f320; 信号处理&#x1f309; 忽略此信…

今天你学C++了吗?——C++中的类与对象(第二集)

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

Anaconda3 2024 jupyter notebook 配置默认文件路径

我的版本如下&#xff1a; 第一步&#xff1a; 打开命令行anaconda prompt &#xff0c; 敲下面命令生成配置文件 jupyter notebook --generate-config 如下图&#xff1a; 修改配置jupyter_notebook_config.py 文件中搜索c.ServerApp.root_dir &#xff08; 对于 Anac…

【抓包专题】burpsuitProxifier小程序抓包

抓包系列文章 burpsuit&Proxifier&小程序抓包 抓包系列文章前言一、工具下载二、获取证书并安装到本地三、抓包测试 前言 抓包是进行渗透的第一步&#xff0c;包都抓不到&#xff0c;渗透就不要谈了&#xff0c;废话少说&#xff0c;开干 一、工具下载 Proxifier安装使…

springboot 异步 @Async 的日常使用及失效场景

文章目录 springboot 异步 Async 的日常使用引言一、Async 使用位置二、Async 使用三、注解 Async 失效的情况&#xff08;1&#xff09;调用同一个类中的异步方法&#xff08;内部调用&#xff09;&#xff08;2&#xff09;未使用 EnableAsync 注解&#xff08;3&#xff09;…

WebGIS技术汇总

WebGIS系统通常都围绕地图进行内容表达&#xff0c;但并不是有地图就一定是WebGIS&#xff0c;所以有必要讨论下基于Web的地图API分类及应用场景。 Web上的Map API主要分类如下几类&#xff1a; Charts&#xff1a;以D3.js&#xff0c;Echarts等为代表。LBS&#xff1a;以高德…

使用Vue3来实现一个倒计时器以及倒计时任务

本内容使用Vue3&#xff0c;以及element-plus辅助开发。 首先展示倒计时器的功能&#xff1a; 手动设置倒计时器的倒计时时间开始倒计时按钮暂停倒计时按钮重新开始倒计时按钮 其次展示倒计时任务管理界面功能&#xff1a; 创建倒计时任务选择任务并进行倒计时删除任务 目录 一…

VMware Workstation 虚拟机运行卡顿解决方案

前言 由于我们网站主力是模拟器多开&#xff0c;VMware虚拟机纯属我个人使用的经验&#xff0c;仅供参考。顺带一提&#xff1a;多开鸭的系统精简掉的是Hyper-V&#xff0c;跟VMware完全没有任何关系&#xff0c;Hyper-V跟雷电这些模拟器会冲突&#xff0c;但是移除之后不会影…

GitLab|应用部署

创建docker-compose.yaml文件 输入docker-compose配置 version: 3.8 services:gitlab:image: gitlab/gitlab-ce:15.11.2-ce.0restart: alwayscontainer_name: gitlab-ceprivileged: truehostname: 192.168.44.235environment:TZ: Asia/ShanghaiGITLAB_OMNIBUS_CONFIG: |exter…

ssm182在线作业管理系统的设计与实现+vue(论文+源码)_kaic

设计题目&#xff1a;在线作业管理系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所…

LeetCode-632. Smallest Range Covering Elements from K Lists [C++][Java]

目录 题目描述 解题思路 【C】 【Java】 LeetCode-632. Smallest Range Covering Elements from K Listshttps://leetcode.com/problems/smallest-range-covering-elements-from-k-lists/description/ 题目描述 You have k lists of sorted integers in non-decreasing o…

指针的奥秘:深入探索内存的秘密

前言 在计算机编程的广阔天地中&#xff0c;指针作为一种独特的数据类型&#xff0c;它不仅是C语言的核心&#xff0c;也是理解计算机内存管理的基石。指针的概念虽然强大&#xff0c;但对于初学者来说&#xff0c;它常常是学习过程中的一个难点。本文旨在揭开指针的神秘面纱&a…

⭐ Unity 资源管理解决方案:Addressable_ Demo演示

一、使用Addressable插件的好处&#xff1a; 1.自动管理依赖关系 2.方便资源卸载 3.自带整合好的资源管理界面 4.支持远程资源加载和热更新 二、使用步骤 安装组件 1.创建资源分组 2.将资源加入资源组 3.打包资源 4.加载资源 三种方式可以加载 using System.Collections…

红日靶场-4

环境搭建 我们这里会拿到三台主机&#xff0c;一台web主机&#xff0c;一台win7主机&#xff0c;一台DC主机 机器密码 WEB主机 ubuntu:ubuntu WIN7主机 douser:Dotest123 (DC)WIN2008主机 administrator:Test2008 登陆后需修改密码&#xff0c;我这里修改为1qazWSX 网络配…

使用八爪鱼爬虫抓取汽车网站数据,分析舆情数据

我是做汽车行业的&#xff0c;可以用八爪鱼爬虫抓取汽车之家和微博上的汽车文章内容&#xff0c;分析各种电动汽车口碑数据。 之前&#xff0c;我写过很多Python网络爬虫的案例&#xff0c;使用requests、selenium等技术采集数据&#xff0c;这次尝试去采集小米SU7在微博、汽车…

具有多个表盘、心率传感器、指南针和游戏的 DIY 智能手表

在此&#xff0c;我们将使用所学到的知识&#xff0c;结合使用硬件和软件组件从头开始创建自己的智能手表。在项目的这一部分&#xff0c;您将被指导完成组装硬件组件、设置软件以及配置智能手表的设置和功能的过程。到本项目结束时&#xff0c;您将拥有一款功能齐全的智能手表…

Django+Nginx+uwsgi网站Channels+redis+daphne多人在线聊天实现粘贴上传图片

在DjangoNginxuwsgi网站Channelsredisdaphne多人在线的基础上&#xff08;详见DjangoNginxuwsgi网站使用Channelsredisdaphne实现简单的多人在线聊天及消息存储功能-CSDN博客&#xff09;&#xff0c;实现在输入框粘贴或打开本地图片&#xff0c;上传到网站后返回图片路径&…

[ubuntu]编译共享内存读取出现read.c:(.text+0x1a): undefined reference to `shm_open‘问题解决方案

问题log /tmp/ccByifPx.o: In function main: read.c:(.text0x1a): undefined reference to shm_open read.c:(.text0xd9): undefined reference to shm_unlink collect2: error: ld returned 1 exit status 程序代码 #include <stdio.h> #include <stdlib.h> #…