使用RGBD相机实现YOLOv3目标识别并测距,获取物体三维坐标

2023-05-16

设备环境:Ubuntu18.04 + ros melodic

相机:乐视相机(乐视遗产,和奥比中光的Astra Pro同方案,便宜)

1. 首先要安装一部分依赖

sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros

2. 我建议建立一个空的工作空间,供调试(当然,也可以放入自己原有的ros工作空间)

mkdir -p ~/astra_ws/src

3. github下载astra的包并安装(也可以ros命令安装,这里采用github下载再编译)

cd ~/astra_ws/src

git clone https://github.com/orbbec/ros_astra_camera

roscd astro_camera

sudo sh ./scripts/create_udev_rules

随后进行编译

cd ..

catkin_make --pkg astra_camera

4. 插上相机的USB线,再

lsusb

得到输出

Bus 001 Device 019: ID 2bc5:0502 # RGB模块

Bus 001 Device 018: ID 2bc5:0403 # 深度模块

根据本机信息修改launch文件

找到ros_astra_camera/launch文件夹下的astropro.launch进行修改

将默认的0x0501改为刚才lsusb得到的0x0502

修改launch无需重新编译,但需要source一下


5. 查看相机原始数据

source devel/setup.bash

roslaunch astra_camera astrapro.launch

终端会弹出大量调试信息,主要注意有无红色,黄色的警告也可以自己看一下要不要修改

然后另开一个新的终端

rosrun rviz rviz

通过 add by topic添加image数据即可,需要深度图还是RGB均可自行选择

6. 查看点云数据

(忘记截图了,也不是刚需,埋个坑待更新)

7. 下载darknet-ros并编译

cd ~/astra_ws/src

git clone https://github.com/leggedrobotics/darknet_ros

cd ..

catkin_make -DCMAKE_BUILD_TYPE=Release

这部分需要等待较长时间,系统会自动检查并下载yolo的权重文件,看着很像假死,建议耐心等待

8. 修改darket_ros中订阅的图像话题

首先查看当前的图像数据发布话题

rostopic list

然后记住,再在darket_ros/config/ros.yaml中进行修改





9. 运行astrodarknet

source devel/setup.bash

roslaunch astra_camera astrapro.launch

另开一个终端

source devel/setup.bash

roslaunch darknet_ros darknet_ros.launch

正常的话会弹出一个对话框,名称为YOLO,大概效果如图


需要修改权重为自己的数据集的话,可以修改如下文件



10. 修改YoloObjectDetector.cppimage.c,增加对应的测距和三维坐标计算

(这部分当时改代码改的太乱了,就不贴代码了,大概思路是,首先将RGB图和深度图进行配准,然后在修改YoloObjectDetector中,在回调函数用bridge搞一个深度图的副本,然后在YOLOv3检测完,对满足阈值条件的目标进行测距)

测距部分我使用了5个点取均值,不然容易出现nan的情况,也不好适应不规则物体(具体取哪5个点应该需要返校后更详细的测试)

放一个大概的效果动图(测距暂时显示在终端了,加在图上应该会更直观一点)

测试当时是在笔记本的GTX1050测的,帧率低的可怜,返校之后放到xavier nx试了一下,无tensorRT加速的情况下又20帧左右,但由于项目移交学弟处理了,所以后续没有再更新这篇文章了

参考过的博客链接:

https://blog.csdn.net/Arcann/article/details/109495134

https://blog.csdn.net/qq_42145185/article/details/105730256

https://blog.csdn.net/qq_40700822/article/details/118523941

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

使用RGBD相机实现YOLOv3目标识别并测距,获取物体三维坐标 的相关文章

  • rocon app

    规格 xff1a Rapp指代rocon app或者叫robot app 用在机器人的控制中Robotics in Concert xff0c 这是通过 Rapp Manager 安装和执行的元数据 它旨在允许更高级别的控制器采用提供所需公
  • 矩阵按键的两种扫描方法

    1 实验目的 掌握两种按键扫描方法 xff1a 行扫描 xff0c 行列扫描 xff08 高低电平翻转 xff09 2 实验流程图 3 代码分析 xff08 1 xff09 行扫描 include 34 stm32f10x h 34 u16
  • 计算机二进制的浮点表示法

    计算机二进制的浮点表示法 0 1 3 61 0 3 组成 符号位 0表示正 1表示负 指数位 2的n次方 xff0c n 43 127 对于4字节浮点数 xff0c 此处为127 再换算成二进制 尾数位 直接用 过程 将整数部分换算成二进制
  • STM32延时函数的三种方法——最好掌握第三种

    单片机编程过程中经常用到延时函数 xff0c 最常用的莫过于微秒级延时delay us 和毫秒级delay ms 1 普通延时法 这个比较简单 xff0c 让单片机做一些无关紧要的工作来打发时间 xff0c 经常用循环来实现 xff0c 不
  • 【常用模块】HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)

    HC 05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了 为什么呢 xff1f 因为HC05模块是一款高性能主从一体蓝牙串口模块 xff0c 可以不用知道太多蓝牙相关知识就可以很好的上手 说白了 xff0c 只是个蓝牙转串口的设备 x
  • uln2003驱动电路

    一 uln2003有什么作用 ULN2003是大电流驱动阵列 xff0c 多用于单片机 智能仪表 PLC 数字量输出卡等控制电路中 可直接驱动继电器等负载 输入5VTTL电平 xff0c 输出可达500mA 50V ULN2003是高耐压
  • 简单超声波测距

    用到模块 hc sr04超声波模块 xff0c stm32开发板 本实验通过超声波测距模块得到长度 直接打印到窗口显示 xff0c 故主要用到定时器函数 xff0c 串口函数 hcsr04 c 只需要提供一个 10uS以上脉冲触发信号 xf
  • Javaer,你必须要了解的ExecutorService

    ExecutorService初接触 之前做的一个功能里有一个耗时操作 xff1a 处理数据库里对应的记录 xff0c 然后将每个处理后的结果做个排序 恕本人小白 xff0c 刚开始直接用单线程处理 xff01 你敢信 xff1f xff0
  • 平衡自行车-理论篇

    原文链接 xff1a http nicekwell net blog 20180121 ping heng zi xing che li lun pian html 一 模型分析 1 倒立摆2 自行车的平衡控制 2 1 怎样的状态才叫平衡2
  • 魔百盒CM201-1刷机教程

    家里有一块魔百盒CM201 1一直在家积灰 xff0c 由于看到网上教程可以刷各种系统 xff0c 所以想着玩来试试看 先刷一个电视版安卓系统看 盒子样子大概就是下面这样 xff1a 拿到手之后就迫不及待的将外壳拆掉了 xff0c 下面这样
  • RK3288刷机教程:安装Ubuntu 16.04

    网上有很多基于瑞芯微RK3288芯片的板子 xff0c 个人感觉配置都非常不错 xff01 然后就淘了两块玩玩 如下图所示 xff1a 然后可以看到 xff0c 各种接口也比较全乎 xff01 有HDMI和VGA视频输出接口 xff0c 两
  • ros串口通讯(读取串口数据)

    ros串口通讯是非常重要的通讯手段 xff0c 通常跟下位机或者各种usb口外设都是通过串口进行通讯的 那么我们跟着教程来学习一下如何读取手机通过无线串口发送给电脑的数据 这里我通过一个usb ttl工具将蓝牙连接到电脑上 xff0c 然后
  • No package ‘orocos-bfl‘ found

    目录 问题 xff1a 原因 xff1a 解决办法 xff1a 问题 xff1a 在编译ros工程的时候 xff0c 出现如下错误提示 xff1a No package 39 orocos bfl 39 found 如下图所示 xff1a
  • 人工智能(AI)入门

    人工智能的入门学习需要具备的知识结构 xff1a 一 编程语言选择 推荐python xff0c 原因有二 xff0c 其一 xff0c 语法简单易学 xff1b 其二 xff0c 有丰富的库支持 二 算法设计基础 人工智能的研究内容集中在
  • 卡尔曼滤波(Kalman filter)算法以及Arduino应用-mpu6050(导航贴)

    正在更新中 这篇文章要跟大家一起完全搞明白卡尔曼滤波 xff0c 连一个标点符号也不放过 xff0c 完完全全理解明白 如果你看不懂 xff0c 那说明我写的不好 本文是看了dr con博士的视频后做的 xff0c 建议可以去看看 如果哪里
  • ROS发布tf坐标

    我们写个小程序来发布一个坐标系 xff1a 坐标系消息格式 xff1a std msgs Header header 头信息 uint32 seq 序列号 time stamp 时间戳 string frame id 坐标 ID strin
  • pop_back()的用法及运行机制

    vector在c 43 43 中非常好用 xff0c 简单的说 xff0c vector是一个能够存放任意类型的动态数组 能够增加和压缩数据 一般使用push back 和pop back 函数将数据存放进容器末尾 如下例程 xff1a i
  • Gazebo启动不开

    问题 xff1a 按照书上的指引 xff0c 启动gazebo仿真软件 当然记得运行roscore rosrun gazebo ros gazebo 结果我在这个页面等了三分钟一点儿动静也没有 查阅资料 xff0c 说明这是因为model库
  • Gazebo仿真小例程一(通过例程熟悉整个仿真步骤)

    目录 1 编辑urdf文件 xff08 1 xff09 dynamic标签 xff08 2 xff09 gazebo标签 xff08 3 xff09 transmission标签 xff08 4 xff09 ros control插件 2
  • Arduino ide配置esp32硬件支持(配置esp32的arduino开发环境)

    ESP32学习导航帖 前言 当我们用arduino ide基于esp32开发板进行程序开发的时候 xff0c arduino ide按照默认安装之后是无法直接给esp32下载程序的 xff0c 也不支持esp32相关的库 这主要是默认的ar

随机推荐