一、yolov5从深度相机读取画面并进行目标检测
1.进入到yolov5-master目录下:cd yolov5-master
2.运行识别USB摄像头(深度相机)所采集图像:python3 detect.py --source 0
这里有报错,有几个error搜索后一头雾水,然后发现最开始产生的是一个warning,说yolov5需要python3.7,而系统现在的python是3.6.9。
在3.部署yolov5和搭建Astra Pro深度相机环境(成功版)树莓派4B+Ubuntu18.04+ROS1-Melodic这篇中,从头到尾都没有动过python,系统自带python是2.7和3.6,是可以顺利进行下去的,detect.py也能正常测试。
但既然现在明确显示这样的warning了,就要改一改python3的定向了,具体操作在4.树莓派4B装yolov5和搭astra深度相机环境遇到的问题里面提到过,这里单独摘出来再写一次:
①删除原来的:sudo rm -rf /usr/bin/python3
【注意不要误删,python3后面不要加 /,否则会删除整个根目录。】
②建立新连接:sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3
这里/usr/local/bin/python3.7是我python3.7的地址,大家根据自己情况更改。】
3.这个操作结束后,把这三步重来一遍:
pip3 install torch==1.8.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install torchvision==0.9.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
因为python改成3.7了,所以4.树莓派4B装yolov5和搭astra深度相机环境遇到的问题里面出现的卡死状况将不会再有。
4.重新执行第二步:python3 detect.py --source 0
二、Astra Pro Plus环境搭建时遇到的错误记录
1.Invoking “cmake” failed
①第一次尝试 (这步的可行性有待考察):python3更改定向后,cmake编译时会失败,需要重新安装cmake:pip3 install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple
这步卡死很多次,不断尝试重来后,最后终于成功了(它中后段还突然加速了!!!)
但是,第二天去cmake又报错如下:
再次尝试上述命令(pip3 install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple
)时报错:
②在第一次尝试成功后,我继续后面的别的步骤时,遇到了十分熟悉的报错:
熟悉的点在于“CommandNotFound”这个模块,我印象不止一次见到这个错误。
重点还是在python,Ubuntu18.04系统自带的python3是3.6,但由于yolov5需要3.7,我就改了python3的定向。
也就是说系统现在做什么有关python3的事都会去找python3.7(我是这样理解的,有错请指出),然而有些模块是3.6有而3.7没有的,即这个“CommandNotFound”模块(截图信息可能不太明显说明这个问题,有些是会直接报错:
ModuleNotFoundError: No module named ‘CommandNotFound’
以下的解决过程参考这篇文章,我将里面我用到的再写一遍:
首先比较两个东西:dist-packages和site-packages,两个都是python安装第三方包的安装路径,而前者是系统自带python使用的目录,后者是用户手动安装python使用的目录。
为了解决问题,我主要进行了两步操作:
<1>将dist-packages里的CommandNotFound模块复制到python3.7的site-packages目录下:sudo cp -r /usr/lib/python3/dist-packages/CommandNotFound /usr/local/python3/lib/python3.7/site-packages/
这里python3.7的site-packages具体在什么位置可以使用find /usr/ -name "site-packages"
查看,它是一个找的过程,所以结果可能不会立马出来。
<2>为解决ModuleNotFoundError: No module named ‘apt_pkg’,我们将dist-packages中的apt_pkg.cpython-36m-aarch64-linux-gnu.so文件,软连接并更改名为apt_pkg.cpython-37m-aarch64-linux-gnu.so到python3.7的site-packages目录下:
cd /usr/local/python3/lib/python3.7/site-packages
sudo ln -s /usr/lib/python3/dist-packages/apt_pkg.cpython-36m-aarch64-linux-gnu.so apt_pkg.cpython-37m-aarch64-linux-gnu.so
具体路径根据自己实际情况更改。
③ModuleNotFoundError: No module named ‘lsb_release’
原理跟第②步很像,就是原来的python3.6有的东西现在python3.7没有。
那么我们只要:sudo cp /usr/lib/python3/dist-packages/lsb_release.py /usr/bin/
然后就不报错啦。
2.Invoking “make -j4 -l4” failed
如果遇到这类报错,直接搜红字大概率搜不到问题所在,往上划划找找错误信息,可能是ModuleNotFoundError: No module named 'em’之类的,然后根据这个具体的错误信息去解决问题。
而ModuleNotFoundError: No module named ‘em’ 的解决方法在3.部署yolov5和搭建Astra Pro深度相机环境(成功版)树莓派4B+Ubuntu18.04+ROS1-Melodic里面提到过,简略一点就是pip3 install empy==3.3.4
。
用亚博官方给的资料教程,把sdk驱动文件夹上传到相机工作空间的src中后,进行编译catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
时,在解决了上面的em模块找不到的问题后,重新编译后又出现了新的问题。
重点:file format not recognized; treating as linker script
/usr/bin/ld:/home/pi/orbbec_ws/src/orbbec-ros-sdk/SDK/lib/arm64/libOrbbecSDK.so:0: syntax error
ld链接器无法识别该.so文件的格式,试图将其作为链接脚本来处理。
file文件后发现它的格式是ASCII text。
解决参考这篇,大概意思就是我把文件先在Windows里解压了,然后再上传到Linux环境中,就有可能出错。
于是我就把sdk这个驱动文件的压缩包,重新直接上传到Ubuntu系统里,再解压它,就ok啦!
3.获得彩色图像
按照之前发的博客中的参考教程操作下来后,相机启动时会warning,如图:
这次我按亚博官方给的资料教程一步步操作下来,相比之前多了个驱动文件,这次启动相机后再用rviz查看图像时,就能看到彩色图像了,但是红外却检测不到了,之前有看到其他文章说,某两个图像似乎是不能一起看到的,其中一个应该就是红外图像,由于红外图像暂时不是我需要的,就先不管它了。
三、相机标定
这里只记录一些关键步骤,并不是完整的教程类整理。
①安装标定功能包:sudo apt install ros-melodic-camera-calibration*
②启动相机:roslaunch orbbec_camera astra.launch
它好像搁这卡住了,一直重复相似的信息:
重启树莓派解决。
③查看话题:rostopic list
④运行标定的程序:rosrun camera_calibration cameracalibrator.py image:=/camera/color/image_raw
直到右边全变绿:
⑤save后,标定结果存在 /tmp/calibrationdata.tar.gz 里,解压即可得到需要的文件。(注意及时保存)