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

news/2024/11/22 16:33:08/

目录

演示

一、环境

二、配置

创建模型

首先相机创建

 添加相机

Apriltag创建

地图添加apriltag码

ros%E9%85%8D%E7%BD%AE-toc" style="margin-left:40px;">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码的世界

到这里模型配置就结束了

ros%E9%85%8D%E7%BD%AE">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.ppmy.cn/news/1549081.html

相关文章

Go语言里简短声明语句词法域问题

Go语言里简短声明语句词法域问题 简短变量声明语句只有对已经在同级词法域声明过的变量才和赋值操作语句等价&#xff0c;如果变量是在外部词法域声明的&#xff0c;那么简短变量声明语句将会在当前词法域重新声明一个新的变量。 第一个程序 在第一个程序中&#xff0c;for循…

用java和redis实现考试成绩排行榜

一、引言 在各类考试场景中&#xff0c;无论是学校里的学业测试&#xff0c;还是线上培训课程的考核&#xff0c;亦或是各类竞赛的选拔&#xff0c;成绩排行榜都是大家颇为关注的一个元素。它不仅能直观地展示考生之间的成绩差异&#xff0c;激发大家的竞争意识&#xff0c;还能…

AWTK-WIDGET-WEB-VIEW 实现笔记 (2) - Windows

在 Windows 平台上的实现&#xff0c;相对比较顺利&#xff0c;将一个窗口嵌入到另外一个窗口是比较容易的事情。 1. 创建窗口 这里有点需要注意&#xff1a; 父窗口的大小变化时&#xff0c;子窗口也要跟着变化&#xff0c;否则 webview 显示不出来。创建时窗口的大小先设置…

【星海随笔】分布式管理Zookeeper

高可用集群 地址&#xff1a;https://archive.apache.org/dist/zookeeper TPS既每秒系统吞吐量 QPS即每秒查询率 Zookeeper的选举机制 确保所有节点对外表现为一个统一的服务。 选举机制分为两个阶段&#xff1a;Leader选举和投票确认 Zookeeper 的选举机制确保集群中的所有节…

前端开发调试之移动端调试学习笔记

一、引言 随着移动互联网的飞速发展&#xff0c;移动端页面和应用的开发变得越发重要。而在前端开发移动端项目时&#xff0c;有效的调试手段能帮助我们及时发现并解决诸多问题&#xff0c;确保项目在移动端设备上能够正常运行且提供良好的用户体验。以下就是关于前端开发中移动…

springboot第83集:理解SaaS多租户应用的架构和设计,设备介入,网关设备,安全,实时实现,序列化...

springboot第83集&#xff1a;理解SaaS多租户应用的架构和设计&#xff0c;设备介入&#xff0c;网关设备&#xff0c;安全&#xff0c;实时实现&#xff0c;序列化&#xff0c;数据交换&#xff0c;存储与查询&#xff0c;流处理&#xff0c;消息队列 [什么是多租户] 聊到PaaS…

快速掌握企业开发之Git基础操作及安装

目录 1. Git概念2. 安装git2.1 centos环境2.2 ubuntu环境 3. Git基本操作(基于ubuntu环境)3.1 创建本地仓库3.2 配置本地仓库1. 针对单个仓库2. 针对一台电脑下所有仓库 3.3 认识工作区&#xff0c;暂存区及版本库3.4 添加文件底层原理剖析 3.5 修改文件3.6 版本回退3.7 撤销修…

Cmake 编译QT4工程 Linux下 Cmake 编译Qt5

open Object 按钮不好使 可能是没有选择默认打开方式 寻找qt库路径 需要再跟节点的CMAKELIST 下编写 find_package(Qt4 REQUIRED QtCore QtGui QtXml) 错误总结 报错 无法打开 ui_xxx.h 寻找ui_xxx.h 文件 也需要再根节点下编写 如果在具体项目文件夹下编写 也会找到不到…