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

Ubuntu20.04仿真 |iris四旋翼添加云台相机详述

申明:

1、本人使用的是Ubuntu20.04+ros1+gazebo+xtdrone+px4的仿真组合

2、为了使传感器模型和飞机模型解耦合,实现不同平台对传感器可直接调用,本系列博文涉及的所有传感器均不直接添加在相应平台的sdf当中,而是通过编写xxx_joint.sdf的形式,将平台和传感器统一,可由launch文件直接拉起。

本博客会先给出创建步骤和注意事项,若希望能够直接获取文件并运行,可跳转至该博客(上述仿真组合的基础配置需已完成):(文件都写好了,这两天会整理完,hhhh,稍等)

一、建立云台模型文件

自带的模型库中是没有单独的云台模型文件的,但是typhoon_h480中挂载了云台,所以可以从其中把单独的模型文件抽象出来。

https://blog.csdn.net/weixin_42037083/article/details/138291543

先按照上述链接改sdf,完成其中的“一、单独建立云台模型文件”,复制过程中检查link中的url,不要指向typhoon了,而是改为指向iris。

在此基础上

1、添加云台控制插件<plugin name='gimbal_controller' filename='libgazebo_gimbal_controller_plugin.so'>对应段落,使得cgo3在yaw、roll、pitch上添加的控制joint可以生效。

2、libgazebo_gimbal_controller_plugin.so插件中的这三个joint修改,把typhoon删掉

      <joint_yaw>typhoon_h480::cgo3_vertical_arm_joint</joint_yaw><joint_roll>typhoon_h480::cgo3_horizontal_arm_joint</joint_roll><joint_pitch>typhoon_h480::cgo3_camera_joint</joint_pitch>

      改为:

      <joint_yaw>cgo3_vertical_arm_joint</joint_yaw><joint_roll>cgo3_horizontal_arm_joint</joint_roll><joint_pitch>cgo3_camera_joint</joint_pitch>

原本的typhoon_h480::是cgo3挂载在其下的声明。
 

3、<joint name='cgo3_mount_joint' type='revolute'>这个joint删掉,因为这个对应的link是新创建的cgo3.sdf文件的最高级link,所以在cgo3的sdf中不需要对他做joint,而是在挂载cgo3的飞机/平台的顶层sdf中对cgo3.sdf做引入并添加本joint。其余cgo3.sdf中的link应和joint成对出现

在原h480文件中这个joint是写向base_link也就是挂载到typhoon飞机上的。

二、修改iris.sdf

为了正常使用cgo3云台相机,还需实现其各自由度旋转对应插件的添加。以下plugin是直接添加在typhoon_h480.sdf中的,作者也尝试将其直接添加在cgo3.sdf当中与iris.sdf共同使用,这样避免修改原有飞机配置文件,但是发现在launch拉起后会出现报错(我认为是拉起的sdf不能在两个地方都出现下述插件)。

因此,我尝试将其添加到iris.sdf中,经过测试拉起仿真环境不会报错。因此复制iris模型文件夹,并将其命名为iris_cgo3以做区分,文件夹结构如下:

图片是在windows下的截图,Ubuntu中结构相同。

1、将原iris.sdf命名为iris_cgo3.sdf以作区分,并将typhoon_h480.sdf中插件mavlink_interface_gimbal_only中的以下部分复制到iris.sdf原有的同名插件

    <channel name="gimbal_roll"><input_index>8</input_index><input_offset>0</input_offset><input_scaling>-3.1415</input_scaling><zero_position_disarmed>0</zero_position_disarmed><zero_position_armed>0</zero_position_armed><joint_control_type>position_gztopic</joint_control_type><gztopic>/cgo3/gimbal_roll_cmd</gztopic><joint_name>cgo3_horizontal_arm_joint</joint_name></channel><channel name="gimbal_pitch"><input_index>9</input_index><input_offset>0</input_offset><input_scaling>-3.1415</input_scaling><zero_position_disarmed>0</zero_position_disarmed><zero_position_armed>0</zero_position_armed><joint_control_type>position_gztopic</joint_control_type><gztopic>/cgo3/gimbal_pitch_cmd</gztopic><joint_name>cgo3_camera_joint</joint_name></channel><channel name="gimbal_yaw"><input_index>10</input_index><input_offset>0</input_offset><input_scaling>-3.1415</input_scaling><zero_position_disarmed>0</zero_position_disarmed><zero_position_armed>0</zero_position_armed><joint_control_type>position_gztopic</joint_control_type><gztopic>/cgo3/gimbal_yaw_cmd</gztopic><joint_name>cgo3_vertical_arm_joint</joint_name></channel>

注意,直接复制博客中提供的部分,或者在typhoon_h480.sdf中复制时每个channel的<input_index>要改。因为iris.sdf中原本就有旋翼舵机的通信通道,且和typhoon_h480数量不同,所以直接复制过来使用会造成冲突。

2、修改model.config

  <sdf version='1.6'>iris_cgo3.sdf</sdf>

一定要把这边的文件名改成iris_cgo3.sdf,否则launch拉起时无法正确读取。

三、联合传感器与飞机

1、创建iris_cgo3_joint文件夹,在其中创建iris_cgo3_joint.sdf和model.config

2、在iris_cgo3_joint.sdf中复制以下内容,路径和文件名根据实际文件名修改。

<?xml version="1.0" ?>
<sdf version="1.5"><model name='iris_cgo3_model'><include><uri>model://iris_cgo3</uri></include><include><uri>model://cgo3</uri><pose>0.12 0 0 1.57 0 1.57</pose></include><joint name="cgo3_mount_joint" type="fixed"><!--对应上述cgo3的最高级link
在joint.sdf中引入--><child>cgo3::cgo3_mount_link</child><parent>iris_cgo3::base_link</parent><!--此处parent,child的写法要和模型文件中的model名、link名对应好--><axis><xyz>0 0 1</xyz><limit><upper>0</upper><lower>0</lower></limit></axis></joint></model>
</sdf>

model.config则同理注意sdf文件名修改正确即可


文章转载自:

http://fU9P3i1s.tfrLj.cn
http://SJXc2vNO.tfrLj.cn
http://q74JgfII.tfrLj.cn
http://Ar71kWAt.tfrLj.cn
http://5HS68B6x.tfrLj.cn
http://kTirob7T.tfrLj.cn
http://ju5YD7z9.tfrLj.cn
http://CKzJumQd.tfrLj.cn
http://iuYUaUxm.tfrLj.cn
http://hQsS4gb7.tfrLj.cn
http://0kxpnTUr.tfrLj.cn
http://EEPscBWB.tfrLj.cn
http://iWo9xORN.tfrLj.cn
http://jnA2xQHy.tfrLj.cn
http://hNnUI2w0.tfrLj.cn
http://KIYdswoS.tfrLj.cn
http://ZQKnl6jr.tfrLj.cn
http://mSBU7H6u.tfrLj.cn
http://QMB0dhbN.tfrLj.cn
http://ILYjDanR.tfrLj.cn
http://LXeRo1GE.tfrLj.cn
http://hhK5WZoz.tfrLj.cn
http://HfWTYg3Q.tfrLj.cn
http://VXtTFotw.tfrLj.cn
http://cbIABuRA.tfrLj.cn
http://8jsFbDNc.tfrLj.cn
http://sBwOOu5k.tfrLj.cn
http://ff6wSfOZ.tfrLj.cn
http://8vUpn57N.tfrLj.cn
http://fROTDIvN.tfrLj.cn
http://www.dtcms.com/a/385752.html

相关文章:

  • 【K8s】什么是K8s?
  • kubernetes(k8s)核心之Pod速通
  • 1.8、机器学习-XGBoost模型(金融实战)
  • Nosana发布公共GPU市场,释放去中心化AI算力无限潜能
  • 图灵完备性:计算理论的基石与无限可能
  • Fiddler使用教程 代理设置、HTTPS抓包与接口调试全流程指南
  • 手写MyBatis第63弹:MyBatis SQL日志插件完整实现:专业级SQL监控与调试方案
  • CrowS-Pairs:衡量掩码语言模型中社会偏见的挑战数据集
  • 认知语义学意象图式对人工智能自然语言处理中隐喻分析的影响与启示
  • 中小企业 4G 专网部署:性能与成本的最佳平衡
  • 解决照片内存告急和无公网访问,用Piwigo+cpolar组合刚刚好
  • SQLAlchemy使用笔记(二)
  • Linux服务器日志管理与分析(以journalctl为例)
  • 即插即用,秒入虚拟:TouchDIVER Pro 触觉手套 赋能 AR/VR 高效交互
  • CentOS系统修改网卡命名的方法总结
  • 超越RGB:移动设备多光谱成像的真实世界数据集
  • 固高运动卡与 Blaster 相机协同的飞拍系统:技术实现与应用案例
  • 无法定位程序输入点于动态链接库 kernel32.dll?深度解析与5种修复方法
  • Debian/Ubuntu/CentOS手动更换内核并开启BBR拥塞算法
  • vue 使用print.js 打印文本,HTML元素,图片,PDF
  • 软件研发的演变
  • OpenTSDB 部署与运维技术文档
  • 【第三方软件测评机构:Apache JMeter分布式负载测试过程】
  • 【案例教程】R语言数据统计分析与ggplot2高级绘图实践应用
  • 大数据时代时序数据库选型指南:为何 Apache IoTDB 成优选(含实操步骤)
  • qt QCandlestickLegendMarker详解
  • Apache IoTDB(6):深入解析数据库管理操作——增删改查与异构数据库实战指南
  • 华为任旭东:开源协作,激发创新,共创智能世界 | GOSIM HANGZHOU 2025
  • 领码方案|权限即数据:企业系统中的字段级访问控制架构实战(Ver=1.1)
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘lxml’ 问题