无人机基于目标检测的路径规划任务

2023-05-16

无人机目标检测相机配置

目标检测基于darknet-yolo框架,darknet用于C/C++代码实现,适用于嵌入式设备上的目标检测
更改目标检测相机
使用RGB-D相机的左摄像头而不是单目相机,修改配置如下

indoor.launch启动文件中模型使用realsense深度相机模型

<arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/iris_realsense_camera/iris_realsense_camera.sdf"/>

~/catkin_ws/src/darknet_ros/darknet_ros/launch/task1.launch修改

  <!-- <arg name="image" default="/typhoon_h480_0/cgo3_camera/image_raw" /> -->
  <arg name="image" default="/iris_0/stereo_camera/left/image_raw" />

~/catkin_ws/src/darknet_ros/darknet_ros/config/uav_0.yaml修改

    # topic: /typhoon_h480_0/cgo3_camera/image_raw
    topic: /iris_0/stereo_camera/left/image_raw

检测目标坐标系转换

浅析相机坐标系的相关转换
https://blog.csdn.net/qq_15029743/article/details/90215104
在这里插入图片描述
1.像素坐标系转相机坐标系
需要知道像素物理单元距离以及相机的内参矩阵
请添加图片描述
其中fx应该是f/dx,将相机的像素物理距离考虑在内
查看相机内参矩阵,camera/realsense_camera/camera_info话题,其中K为内参矩阵

intrinsic_M = np.array([[554.254691191187, 0.0, 320.5],  [0.0, 554.254691191187, 240.5],  [0.0, 0.0, 1.0]])

2.相机坐标系转世界坐标系
需要获得R、T矩阵
/mavros/local_position/pose话题中获得偏移量,并转化为R T

# 构造四元数,并将之转化为旋转矩阵
    q = Quaternion(data.pose.orientation.w, data.pose.orientation.x, data.pose.orientation.y, data.pose.orientation.z)
    R = q.rotation_matrix
 #构造平移矩阵
    T = np.array([[data.pose.position.x ],[data.pose.position.y ],[data.pose.position.z ]])

3.坐标转换流程

请添加图片描述

 #目标中心点的xy坐标(u,v)
    u = int(u)-1
    v = int(v)-1
    #中心点深度值
    Zc = box_ave(depth_image, u, v) 
    #相机内参矩阵
    intrinsic_M = np.array([[554.254691191187, 0.0, 320.5],  [0.0, 554.254691191187, 240.5],  [0.0, 0.0, 1.0]])
    
    # 像素坐标系
    uv_M = np.array([[u],[v],[1]])
    
    # 相机坐标系
    pos_C = np.dot(np.linalg.inv(intrinsic_M), uv_M)*Zc
    # print('pos_C',pos_C)
    
    #相机坐标系ENU 有时需要将相机坐标转换为以ENU系为基准
    
    # 世界坐标系(两种方法),经实验验证,这是以无人机为原点的ENU世界坐标系
    T = np.array([[X_w],[Y_w],[Z_w]])
    # pos_W = np.dot(np.linalg.inv(Rot), (pos_C_ENU - T))
    pos_W = np.dot(Rot, pos_C_ENU) + T
    print('pos_W',pos_W)

无人机目标检测地图配置

在forest.world文件中加入人物casual_female,在insert里面加入模型

d435i相机目标检测

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无人机基于目标检测的路径规划任务 的相关文章

  • 零基础如何学习优达学城的《无人驾驶入门》?

    因为感兴趣 xff0c 而且看好无人驾驶行业 xff0c 我学习了优达学城的 无人驾驶入门 课程 最近整理了无人驾驶领域的资料 xff0c 写成文章分享给大家 作为系列文章的第一篇 xff0c 我想介绍一下 无人驾驶入门 这门课 xff0c
  • realsense D435 标定(calibration)

    realsense D435 标定 文章目录 realsense D435 标定1 确定是否需要标定设备信息步骤操作打印标定目标开启标定程序 校正结果展示比较 文档 1 确定是否需要标定 工具 Depth Quality Tool 要求 将
  • 如何在linux执行PHP文件

    1 刚导入到linux系统中文件是没有可执行权 2 首先赋予文件可执行权限 chmod 43 x 文件名 例如 xff1a chomd 43 x czrkdjb php 如果要用 czrkdjb php执行 xff0c 需要在czrkdjb
  • 阿里P8大佬亲自讲解!写给程序员的Flutter详细教程,灵魂拷问

    我们程序员经常迷茫于有太多东西要学 xff0c 有些找不到方向 不知所措 很多程序员都愿意说 xff0c 我想变得更好 xff0c 但是更好是什么却很模糊 xff0c 同时我们又不知道该怎么样去做 我们的生命如此短暂 xff0c 作为程序员
  • VSCode 连接远程服务器使用图形化界面(GUI)

    1 基本环境 本地电脑系统 xff1a window10 远程服务器系统 xff1a Ubuntu18 04 2 VSCode版本 xff1a 1 51 1 2 问题描述 vscod提供了优秀的远程连接插件 xff08 Remote SSH
  • curl 命令大全及常用实例

    一 xff0c curl命令参数 a append 上传文件时 xff0c 附加到目标文件 A user agent lt string gt 设置用户代理发送给服务器 anyauth 可以使用 任何 身份验证方法 b cookie lt
  • 关于putty不能连接虚拟机的问题解决

    一 首先需要ping 一下 xff0c 看是否能ping通 xff0c 如果正常进入下一步 二 进入虚拟机终端输入 ssh localhost 如果提示 ssh connect to host localhost port 22 Conne
  • postman进行http接口测试

    HTTP的接口测试工具有很多 xff0c 可以进行http请求的方式也有很多 xff0c 但是可以直接拿来就用 xff0c 而且功能还支持的不错的 xff0c 我使用过的来讲 xff0c 还是postman比较上手 优点 xff1a 1 支
  • Linux系统迁移(将配置好的系统安装到其它电脑上)

    Linux系统迁移 说在前面 xff1a 下面有几个教程链接 xff0c 我都是通过这几个链接来完成的系统备份与系统恢复 并且遇到过一些问题 xff0c 踩过一些坑 建议先看完我的说明再进行操作 xff0c 少走弯路 没有图是因为下面分享的
  • 搭建 公网FTP服务器 外网访问

    我是在ubuntu 20 04 上配置的 xff0c 需要用到公网IP 没有公网IP的 xff0c 可以考虑花生壳这类应用来做内网穿透 1 配置FTP服务器 安装vsftpd sudo apt install vsftpd sudo vim
  • clang-format配置与使用

    clang format配置与使用 参考教程 1 安装 下载clang format xff0c 设置环境变量 我使用的是vscode扩展中的clang format 位于 xff1a extensions ms vscode cpptoo
  • AI一般是用来制作什么的

    AI一般用来制作logo 分页 xff0c 海报等等 面板堆栈的话就是很多功能堆放的位置 一般打印出来的话用cmyk模式 如果是在web端的话用RGB模式 xff0c 因为cmyk模式在你进行存储的过程中颜色可能会丢失 出血值就是在你打印东
  • Eclipse安装插件的三种方式

    本文介绍Eclipse插件的安装方法 Eclipse插件的安装方法大体有三种 xff1a 直接复制 使用link文件 xff0c 以及使用eclipse自带的图形界面的插件安装方法 AD xff1a 做为当下最流行的开源IDE之一 xff0
  • 获取realsense内参

    文章目录 xff11 xff0e 无畸变 xff12 xff0e Brown Conrady 畸变模型3 Opencv 里畸变图像矫正过程 xff11 xff0e 无畸变 相机内参包括相机矩阵参数和畸变系数 相机内参矩阵为3 3的矩阵 xf
  • 十年研发经验工程师的嵌入式学习书籍大推荐

    从事嵌入式研发行业十年 xff0c 认为学习就是要不断的吸纳知识 xff0c 在研发过程中 xff0c 经常会遇到一些问题 xff0c 这种发现问题并解决问题的过程就是进步 为什么选择学习嵌入式 xff1f 嵌入式系统无疑是当前最热门最有发
  • js手机号正则表达式验证

    看到网上很多代码 都很复杂 xff0c 还包括以中文开头的86 xff0c 17951 xff0c 其实谁会填这么多 xff0c 无非是检验一下他们是否位数对不对 xff0c 开头有没有写错而已 下面我们从百度百科的手机号码历程来看 xff
  • 正则验证匹配中文姓名全部源字符串

    这个是验证匹配中文姓名的全部源串 xff0c 在网上找了很久 xff0c 大都是验证匹配含有中文 xff0c 就在网上某人提供的正则的基础上修改成了验证所填姓名的每个字符 xff0c 只有都匹配才能验证通过 该正则为 xff1a u4e00
  • 域名,网站名和URL区别

    要写一个正则表达式来验证输入域名是否有正确 xff0c 一直以为例如http www baidu com类似于这种才是网站域名 xff0c 经过百度才发现自己的认知是错误的 以下转载于百度经验 xff1a http jingyan baid
  • 23种设计模式(1)-Facade设计模式

    前记 曾经我遇见的一个需求是这样的 xff0c 接口A有个方法void methodA xff0c 类B需要实现接口A的methodA 方法 xff0c 并且在类B中需要把methodA 方法内部处理逻辑获得的结果利用C类实例的某个方法进行

随机推荐