ROS视觉学习记录

tips:不小心手误把这篇博客删掉了,还好找回来了内容。。。有被自己无语到

1. 环境配置

之后再总结吧,主要是依靠这一篇查询所有创建的conda环境

conda info --envs

进入指定的conda环境 

source activate <env>

查询指定conda环境中pytorch和CUDA的版本

 python -c "import torch; print(torch.__version__); print(torch.version.cuda)"


参考:

【基于Ubuntu下Yolov5的目标识别】保姆级教程 | 虚拟机安装 - Ubuntu安装 - 环境配置(Anaconda/Pytorch/Vscode/Yolov5) |全过程图文by.Akaxi_ubuntu yolov5-优快云博客

2. 相关功能包下载及使用

2.1 usb_cam

官方github上的包更新的我这边好像用不太了,然后看的小鱼儿的有关博客解决的问题

2.1.1 功能包下载

sudo apt-get update
sudo apt-get install ros-noetic-usb-cam


2.1.2 功能包查询

roscd usb_cam
cd launch

//主要修改device和width两个参数
sudo code usb_cam-test.launch 
//查看系统视频设备
ls /dev/video* 

2.1.3 启动相机

roslaunch usb_cam usb_cam-test.launch

2.2 handeye-calib

ROS自带的标定程序进行相机标定

小工具:棋盘格pdf在线生成网站Camera Calibration Pattern Generator – calib.io,比打印精准

标定完成后点击save可以保存标定所用的图片和参数矩阵,在终端会输出标定产生的压缩包,默认放在 /tmp目录下

2.2.1 运行标定程序

// 启动相机
roslaunch usb_cam usb_cam-test.launch
运行前需要根据你的棋盘格修改参数

size:为棋盘格角点数量比如8x9=72个格子的棋盘格,角点个数为7x8=63个,size参数就要写7x8

square:传入的参数为棋盘格一个小格子的宽度(注意单位为m)

image:图像话题的原始数据默认为camera:=/usb_cam

rosrun camera_calibration cameracalibrator.py --size 10x7 --square 0.015 image:=/usb_cam/image_raw camera:=/usb_cam

2.2.2 生成标定文件

标定完成后点击calculate会稍微有点卡顿,不要担心后台正在进行标定,完成后下面的SAVE和COMMIT按钮变为可用状态,点击SAVE即可保存标定完成后的文件。

点击commit即可把标定文件存储到系统的~/.ros/camera_info/xxx.yaml目录

2.2.3 在ROS中使用该参数

可以在usb_cam的launch文件中增加以下参数,重新启动usb_cam节点,即可使用该标定参数。

参数值这里写的是file:///home/dev/.ros/camera_info/ost.yaml,可打开目录~/.ros/camera_info/进行查看

<param name="camera_info_url" type="string" value="file:///home/dev/.ros/camera_info/ost.yaml"/>


 参考:

handeye-calib: 基于ROS的手眼标定程序,支持眼在手上,眼在手外。提供完整文档。欢迎关注公众号鱼香ROS。

2.3 darknet_ros(不推荐)

只能跑yolov2或yolov3

2.3.1 下载

在工作空间中的src目录下

git clone --recursive git@github.com:leggedrobotics/darknet_ros.git
也可以直接下载zip,但是下载下来的其中一个文件夹darknet可能为空,要点进去多下载一个

2.3.2 编译

官方给的编译语句:

catkin_make -DCMAKE_BUILD_TYPE=Release

但是一直报这个错:


这个好像是因为安装了anaconda之后,ros和conda使用的python版本冲突,需要使用这个指令指定版本,之后就可以简单的catkin_make了 

解决办法:

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

然后又报错:

[ 46%] Built target darknet_ros_msgs_generate_messages
nvcc fatal   : Unsupported gpu architecture 'compute_30'
nvcc fatal   : Unsupported gpu architecture 'compute_30'
nvcc fatal   : Unsupported gpu architecture 'compute_30'
nvcc fatal   : Unsupported gpu architecture 'compute_30'
CMake Error at darknet_ros_lib_generated_activation_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_activation_kernels.cu.o
 
CMake Error at darknet_ros_lib_generated_crop_layer_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_crop_layer_kernels.cu.o
 
 
 
CMake Error at darknet_ros_lib_generated_deconvolutional_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_deconvolutional_kernels.cu.o
 
 
CMake Error at darknet_ros_lib_generated_maxpool_layer_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_maxpool_layer_kernels.cu.o
 
 
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:128:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_maxpool_layer_kernels.cu.o] 错误 1
make[2]: *** 正在等待未完成的任务....
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:86:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_deconvolutional_kernels.cu.o] 错误 1
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:65:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_activation_kernels.cu.o] 错误 1
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:72:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_crop_layer_kernels.cu.o] 错误 1
nvcc fatal   : Unsupported gpu architecture 'compute_30'
CMake Error at darknet_ros_lib_generated_avgpool_layer_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_avgpool_layer_kernels.cu.o
 
 
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:79:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_avgpool_layer_kernels.cu.o] 错误 1
nvcc fatal   : Unsupported gpu architecture 'compute_30'
CMake Error at darknet_ros_lib_generated_dropout_layer_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_dropout_layer_kernels.cu.o
 
 
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:100:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_dropout_layer_kernels.cu.o] 错误 1
nvcc fatal   : Unsupported gpu architecture 'compute_30'
nvcc fatal   : Unsupported gpu architecture 'compute_30'
nvcc fatal   : Unsupported gpu architecture 'compute_30'
nvcc fatal   : Unsupported gpu architecture 'compute_30'
CMake Error at darknet_ros_lib_generated_col2im_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_col2im_kernels.cu.o
 
 
CMake Error at darknet_ros_lib_generated_convolutional_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_convolutional_kernels.cu.o
 
 
CMake Error at darknet_ros_lib_generated_im2col_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_im2col_kernels.cu.o
 
 
CMake Error at darknet_ros_lib_generated_blas_kernels.cu.o.cmake:220 (message):
  Error generating
  /home/vincent/vision_ws/build/darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/./darknet_ros_lib_generated_blas_kernels.cu.o
 
 
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:107:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_col2im_kernels.cu.o] 错误 1
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:121:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_convolutional_kernels.cu.o] 错误 1
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:114:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_im2col_kernels.cu.o] 错误 1
make[2]: *** [darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/build.make:93:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/__/darknet/src/darknet_ros_lib_generated_blas_kernels.cu.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:2597:darknet/darknet_ros/CMakeFiles/darknet_ros_lib.dir/all] 错误 2
make: *** [Makefile:141:all] 错误 2
Invoking "make -j20 -l20" failed

解决报错的时候一直把问题集中在最后一个make -j20 -l20上,但其实不是,人家只是个结果。往上看发现这个

上网搜索得到解决办法:

进入darknet_ros中cmakelist中,搜索arch,将终端中显示不支持的注释掉(26-27行),一开始只注释了30,后面再一次编译有报错35,两行都注释掉之后编译通过

p.s. 这sb报错搞了我一下午,我恨...

参考:

ubuntu20.04出现Unable to find either executable ‘empy‘ or Python module ‘em‘... try installing the pa_unable to find either executable 'empy' or python -优快云博客

nvcc fatal : Unsupported gpu architecture ‘compute_30‘_unsupported architecture compute 30-优快云博客

https://github.com/leggedrobotics/darknet_ros/issues/363

darknet_ros编译时出现nvcc fatal : Unsupported gpu architecture ‘compute_30‘_nvcc fatal unsupported gpu-优快云博客ROS中darknet_ros功能包运行详解,低帧率如何解决,如何修改Cmake、makefile文件_ros 提高帧数-优快云博客

3. 训练数据集获得权重

忙活一天,从darknet_ros到ultralytics,yolov2,yolov3,yolov5,yolov8,配置来配置去,真是走了一堆一堆的弯路,也体会到了在ubuntu里配置yolov8确实比在windows里要容易不少

目前总算是可以实现在ubuntu中标定,以及训练得到pt文件了,但是不足的是还没有尝试多种物体在同一图片中的标定和训练,然后没有记录各个参数的含义,然后训练的时候的一些固定的要修改的东西比如yaml,训练组数啥的等等,之后哪天突然兴趣起来了再总结

改日再议,太累了今天,散会!

yolo task=detect mode=train model=weights/yolov8n.pt data=datasets/fire.yaml batch=16 epochs=50 imgsz=640 workers=16 device=0

4. YOLOv8 + ROS实时识别

开启摄像头:

roslaunch usb_cam usb_cam-test.launch

 开启yolov8:

roslaunch yolov8_ros yolo_v8.launch

 之后再总结代码上我的一些修改和操作等

参考:

ROS 快速入门 -Ultralytics YOLO 文档

YOLOv8 -Ultralytics YOLO 文档

【YOLO】YOLOv8训练自定义数据集(4种方式)_yolov8训练自己的数据集-优快云博客

Ubuntu配置Yolov8环境并训练自己的数据集 + ROS实时运行_ubuntu yolov8-优快云博客

YOLOv8 - 环境配置 | 吹雪の博客

Yolov5训练自己的数据集(详细完整版)_yolov5缔宇-优快云博客

在ROS中实现darknet_ros(YOLO V3)检测以及训练自己的数据集_darknet-ros-优快云博客

5. Azure Kinect

5.1 Azure Kinect 环境配置

参考:

Azure Kinect DK + ROS1 Noetic使用教程_azure kinect dk使用方法-优快云博客

5.2 Azure Kinect + YOLOv8 识别

5.2.1 配置YOLOv8 conda环境

创建环境:

conda create -n yolov8 python=3.8

安装Pytorch

# CUDA 12.4
conda install pytorch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 pytorch-cuda=12.4 -c pytorch -c nvidia

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值