4.树莓派上部署yolov5、搭建Astra Pro Plus环境【问题篇】

本文讲述了作者在从树莓派的ssh服务迁移到Ubuntu18.04系统后遇到的问题,涉及IP扫描、相机启动(包括AstraCamera和ROS),以及在Ubuntu18.04上部署YOLOv5模型(处理CUDA兼容性问题和Python版本切换)的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有很多尚未解答的疑惑,如果大家对这里的知识比较熟悉,请多指教!

一、用ipscan扫描树莓派的IP

之前用树莓派系统(上面有ssh服务)可以扫描到,现在换了Ubuntu18.04系统,就扫描不到了。
解决方法:
在烧录有Ubuntu18.04镜像的SD卡中,找到network-config并打开修改:
1.去掉wifis那一片的注释
2.增加wifi名称和密码

在这里插入图片描述

二、启动相机

我的情况就很符合这篇
中间我遇到问题的几步:
1.git clone https://github.com/orbbec/ros_astra_camera
可能因为网络问题而失败,多试几次可能就会成功
2.roslaunch astra_camera astra.launch
报错如下:

在这里插入图片描述

翻译:即使在刷新缓存后,也无法加载类型为[astra_camera/AstraDriverNodelet]的nodelet[/camera/driver]:找不到与插件astra_camera/AstraDriverNodelet对应的库。确保插件描述XML文件具有正确的库名称,并且该库确实存在。

解决:刷新工作空间。

source ~/catkin_ws/devel/setup.bash

但是,在rviz的Image Topic里只有深度和IR图像,没有彩色图像。

在这里插入图片描述

三、部署yolov5

不太懂这类知识,去网上搜Ubuntu18.04上部署yolov5,出来的教程很多都要安装CUDA,按操作下来到这步:ubuntu-drivers devices
——无结果输出,网上解决方法很统一,统一地对我无用。
这条命令是用来检测可用驱动的,但是(问gpt):
树莓派通常不支持 Ubuntu 提供的 NVIDIA 驱动程序管理工具 ubuntu-drivers。这是因为树莓派通常使用 Broadcom 或者其他厂商的集成图形解决方案,而不是 NVIDIA 的 GPU。因此,ubuntu-drivers 命令在树莓派上可能不会提供有用的输出。
对于树莓派4B这样的 ARM 架构设备,由于其与常见的 x86 架构不同,无法直接使用 NVIDIA 的 CUDA 加速库。然而,YOLOv5 也提供了 PyTorch 版本,而 PyTorch 支持 CPU 上的推理运行,因此你可以在树莓派上运行 YOLOv5,只是推理速度可能会比在支持 CUDA 的 GPU 上慢一些。

<think>好的,用户想在ROS中使用YOLOv5配合Astra Pro摄像头实现目标检测和深度感知。我需要先理清整个流程,然后分步骤解答。 首先,用户已经提到使用darknet_ros和RGBD相机Astra Pro。可能需要先确认darknet_ros是否支持YOLOv5,因为通常darknet_ros是基于Darknet框架的,而YOLOv5是用PyTorch实现的。可能需要找一个替代的ROS包,比如yolov5_ros,或者自行封装YOLOv5的检测代码为ROS节点。 接下来是摄像头数据的获取。Astra Pro会发布深度图像和RGB图像的话题,用户需要确保这两个话题能够被订阅。可能需要用到image_transport来正确处理图像消息,或者使用ROS中的相机驱动包来获取同步的RGB和深度数据。 然后是将YOLOv5集成到ROS中。可能需要创建一个节点,订阅RGB图像话题,运行YOLOv5模型进行检测,然后发布检测结果,比如边界框和类别信息。这里需要注意模型的加载和推理速度,确保实时性。 深度感知部分,当YOLOv5检测到目标后,需要获取该目标在深度图像中的对应位置深度值。可能需要将检测到的二维像素坐标转换为三维空间坐标,这需要相机的内参矩阵,可以通过相机标定获取。同时,需要考虑时间同步问题,确保RGB图像和深度图像的时间戳对齐,否则可能需要使用消息过滤器来同步。 另外,可能需要用到tf2进行坐标变换,将相机坐标系下的三维坐标转换到机器人或其他坐标系中。此外,处理深度图像时需要注意无效值(如NaN),并进行相应的过滤处理。 用户可能遇到的问题包括:YOLOv5在ROS中的部署、RGB与深度图像的同步、坐标转换的准确性、以及如何处理检测延迟和深度数据的噪声。需要针对这些潜在问题给出解决方案,比如使用高效的推理引擎如TensorRT加速模型,使用message_filters进行时间同步,进行相机标定确保参数准确等。 最后,整合所有步骤,提供一个完整的实现流程,包括必要的代码示例和配置说明,确保用户能够逐步操作。同时,提醒用户注意安装依赖和可能的兼容性问题,比如ROS版本与相机驱动、Python环境与PyTorch版本的匹配等。</think>在ROS中集成YOLOv5Astra Pro摄像头实现目标检测和深度感知,可按以下步骤实现: ### 一、环境准备 1. 安装ROS驱动 - 配置Astra Pro的ROS驱动包`astra_camera`,确保能发布深度图话题: ```bash roslaunch astra_camera astra_pro.launch ``` - 验证深度图话题`/camera/depth/image_rect_raw`和RGB图话题`/camera/rgb/image_raw`[^1] 2. 部署YOLOv5 - 推荐使用`yolov5_ros`封装包,或创建自定义ROS节点: ```python import rospy from sensor_msgs.msg import Image from cv_bridge import CvBridge import torch class YOLOv5_Detector: def __init__(self): self.model = torch.hub.load('ultralytics/yolov5', 'yolov5s') self.bridge = CvBridge() self.sub = rospy.Subscriber("/camera/rgb/image_raw", Image, self.callback) ``` ### 二、深度信息融合 1. **坐标系对齐** - 通过`image_geometry`库将像素坐标映射到三维空间: ```python import image_geometry camera_model = image_geometry.PinholeCameraModel() camera_model.fromCameraInfo(camera_info_msg) # 订阅/camera/rgb/camera_info获取内参 ``` 2. **深度数据同步** - 使用`message_filters`实现RGB与深度图时间同步: ```python from message_filters import ApproximateTimeSynchronizer, Subscriber rgb_sub = Subscriber("/camera/rgb/image_raw", Image) depth_sub = Subscriber("/camera/depth/image_rect_raw", Image) ts = ApproximateTimeSynchronizer([rgb_sub, depth_sub], queue_size=5, slop=0.1) ts.registerCallback(detection_callback) ``` ### 三、实现流程 ```mermaid graph TD A[Astra Pro启动] --> B[发布RGB/深度图] B --> C[YOLOv5目标检测] C --> D[提取目标像素坐标] D --> E[查询深度图对应位置] E --> F[计算三维空间坐标] ``` ### 四、关键代码示例 ```python def detection_callback(rgb_msg, depth_msg): # 图像转换 cv_rgb = bridge.imgmsg_to_cv2(rgb_msg, "bgr8") cv_depth = bridge.imgmsg_to_cv2(depth_msg, "32FC1") # YOLOv5检测 results = model(cv_rgb) bbox = results.xyxy[0][0] # 取第一个检测目标 # 计算中心点深度 cx = int((bbox[0]+bbox[2])/2) cy = int((bbox[1]+bbox[3])/2) depth = cv_depth[cy, cx] # 坐标转换 ray = camera_model.projectPixelTo3dRay((cx, cy)) point_3d = [ray[0]*depth, ray[1]*depth, depth] ``` ### 五、优化建议 1. 使用TensorRT加速YOLOv5推理 2. 添加`depth_image_proc`节点生成点云 3. 对深度数据做中值滤波处理
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值