tips:不小心手误把这篇博客删掉了,还好找回来了内容。。。有被自己无语到
1. 环境配置
之后再总结吧,主要是依靠这一篇查询所有创建的conda环境
conda info --envs
进入指定的conda环境
source activate <env>
查询指定conda环境中pytorch和CUDA的版本
python -c "import torch; print(torch.__version__); print(torch.version.cuda)"
参考:
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报错搞了我一下午,我恨...
参考:
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
之后再总结代码上我的一些修改和操作等
参考:
【YOLO】YOLOv8训练自定义数据集(4种方式)_yolov8训练自己的数据集-优快云博客
Ubuntu配置Yolov8环境并训练自己的数据集 + ROS实时运行_ubuntu 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