ubuntu16系统下,ROS kinnect。是跟着这位大神的步骤走,但连连报错。ROS中的物体识别——ORK功能包的使用
1.运行 rosrun object_recognition_core push.sh
报错:
Traceback (most recent call last):
File "/usr/bin/couchapp", line 7, in <module>
from couchapp.dispatch import run
File "/usr/local/python3/lib/python3.8/site-packages/couchapp/dispatch.py", line 10, in <module>
import couchapp.commands as commands
File "/usr/local/python3/lib/python3.8/site-packages/couchapp/commands.py", line 215
except BulkSaveError, e:
^
SyntaxError: invalid syntax
这个错误是因为
couchapp
不支持 Python3 的语法。你需要使用 Python2 来运行couchapp
。 可以尝试以下两种解决方案:
- 安装 Python2 和 pip2 你可以使用以下命令安装 Python2 和 pip2:
plaintextCopy code
sudo apt-get install python2 python-pip
安装完成后,执行以下命令安装
couchapp
:
plaintextCopy code
sudo pip2 install couchapp
- 使用 virtualenv 创建 Python2 的虚拟环境 如果你不想在系统中安装 Python2,可以使用 virtualenv 创建一个 Python2 的虚拟环境。执行以下命令安装 virtualenv:
plaintextCopy code
sudo pip install virtualenv
然后在项目目录下执行以下命令创建虚拟环境:
plaintextCopy code
virtualenv -p /usr/bin/python2.7 venv
这里假设 Python2.7 安装在
/usr/bin/
目录下。如果你的 Python2.7 安装在其他目录下,需要将上面的命令中的/usr/bin/python2.7
改为对应的路径。 创建完成后,执行以下命令进入虚拟环境:
plaintextCopy code
source venv/bin/activate
这时你的命令行提示符应该变成了
(venv) $
。在虚拟环境中,你可以安装 Python2 的包,例如:
plaintextCopy code
pip install couchapp
安装完成后,执行以下命令退出虚拟环境:
plaintextCopy code
deactivate
然后重新执行
push.sh
脚本,将会使用 Python2 来运行couchapp
。
或者这个大佬方法,修改python版本 https://blog.csdn.net/qq_44649945/article/details/125238941
经过以上步骤,成功运行程序。真的服气,安装couchapp,提示版本低,升级python版本又有嫌高。
2 执行rosrun object_recognition_core detection -c `rospack find object_recognition_linemod`/conf/detection.ros.ork,报错
[ INFO] [1679988419.107368198]: Initialized ROS. node_name: /object_recognition_server
[ INFO] [1679988419.457787924]: System already initialized. node_name: /object_recognition_server
[ INFO] [1679988419.467243698]: Subscribed to topic:/camera/depth/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1679988419.473901516]: Subscribed to topic:/camera/color/camera_info [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1679988419.481426749]: Subscribed to topic:/camera/depth/image_rect_raw [queue_size: 1][tcp_nodelay: 0]
[ INFO] [1679988419.486543141]: Subscribed to topic:/camera/color/image_raw [queue_size: 1][tcp_nodelay: 0]
OpenCV Error: Assertion failed (0 <= _rowRange.start && _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows) in Mat, file /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/core/src/matrix.cpp, line 492
Traceback (most recent call last):
File "/home/a/ork_ws/src/ork_core/apps/detection", line 24, in <module>
run_plasm(args, plasm)
File "/home/a/ork_ws/src/ecto/python/ecto/opts.py", line 85, in run_plasm
sched.execute(options.niter)
ecto.CellException: exception_type CellException
[cell_name] = source1[cell_type] = ecto::py::BlackBox
[function_name] = process_with_only_these_inputs
[type] = std::runtime_error
[what] = exception_type CellException
[cell_name] = Source[cell_type] = ecto::py::BlackBox
[function_name] = process_with_only_these_inputs
[type] = std::runtime_error
[what] = exception_type CellException
[cell_name] = <class 'ecto_image_pipeline.base.RescaledRegisteredDepth'>[cell_type] = RescaledRegisteredDepth
[function_name] = process_with_only_these_inputs
[type] = cv::Exception
[what] = /tmp/binarydeb/ros-kinetic-opencv3-3.3.1/modules/core/src/matrix.cpp:492: error: (-215) 0 <= _rowRange.start && _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows in function Mat