usb摄像头连接失败解决方法:
具体的细节可以看我的ROS另一篇随笔,总的来说就是:
下载扩展包,安装扩展包,勾选usb3.0,进入虚拟机usb勾选摄像头设备,启动launch文件就可以使用camera了。
文件不可excutable导致launch不能执行:
这个主要是执行launch文件的时候,出现:
RLException: XXX is neither a launch file in package XXX nor is XXX a launch file name
一开始我以为可能是没有指定路径,然后系统找不到该launch文件,于是重新编译,source ~/catkin_ws/devel/setup.bash添加环境变量,
但是,不起效果,原因在于robot_vision功能包并没有出现在src中,需要下载该功能包。
我找了一下,提供一个gitee上面的一个网址:https://gitee.com/baseyao/robot_vision.git
启动launch文件:
$ rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam
注:运行launch文件可能又会遇到问题:
比如.py文件没有执行权限,这时加上就好,chmod +x 某.py。
Tensorflow安装和解决版本不一致文件升级问题
$ sudo apt-get install python-pip python-dev python-virtualenv
$ virtualenv --system-site-packages ~/tensorflow
$ source ~/tensorflow/bin/activate
$ easy_install -U pip
$ pip install --upgrade tensorflow
注:这里坑太多了。。。所幸最后解决了。
在第四步的安装就会出错。
会出现python2.7版本已经不支持使用的错误提醒,但是不要去升级python,去网上搜过了一下,有人提醒不要删除原有的python2.7,
因为可能虚拟机本身还是有很多东西支持2.7,删除会有意想不到的错误,可以另外安装python3,一开始我想继续安装3但是用命令python3查看之后发现原来已经有了,
可能是虚拟机自带的吧,好吧,这句话是废话。。。
这里最终是安装tensorflow,所以怎么安装都行,不一定非要按照ppt来,只要最后安装好了就行(因为我在处理虚拟机报错的时候,网上搜了很多,结果都没有用,所以换个角度想)。
运行pip install --upgrade tensorflow会出错:
安装速度会非常慢,而且最后极大概率会报超时的错误,这个时候可以使用国内的镜像站下载,非常快,
pip install --upgrade tensorflow -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装:
$ cd ~/catkin_ws/src
$ git clone https://github.com/Kukanani/vision msgs.git
$ git clone https://github.com/osrf/tensorflow_object_detector.git
编译:
就是回到catkin_ws目录下用catkin_make编译
$ cd ~/catkin_ws && catkin_make
加载tensorflow环境变量:
$ source tensorflow/bin/activate
运行:
roslaunch tensorflow_object_detector usb_cam_detector.launch
注:这里还是会报很多错,
原因是我们下载的tensorflow版本是2.0,但是github上面依然是1.x,由于前者版本是不会对后者兼容的,
所谓兼容,具体就是表现在模块位置变化等,导致1.x在2.0上面无法运行,出现attribute不能找到等错误。
解决方法:
tf_upgrade_v2
这个tf2.0自带的升级程序可以把1.x的文件升级到2.0,这样就可以运行了。
在tensorflow_object_detector里面的scripts里面的py文件:
tf_upgrade_v2 --infile detect_ros.py --outfile detect_ros.py
即可(为确保,可以重新编译运行一下)。
ROS 机器视觉章节学习遇到的问题汇总:usb摄像头连接、文件不可excutable导致launch不能执行、Tensorflow安装和解决版本不一致文件升级问题