我一直在研究Aruco,以使附有相机的机器人在特定的环境中根据周围的Aruco标记执行其动作。因此,该位置脚本的想法是将摄像机的读数归一化为我们的特定世界。
您可以找到脚本代码here。该脚本是在我投入项目之前由某人制作的,因此我在理解它给我带来的一些错误时遇到了很多问题。第一个是,当我尝试使用静态摄像机启动脚本时,有时会出现此错误:
Traceback (most recent call last):
File "position.py", line 186, in <module>
pos = p.get(target_type, target_id, cameras_ids)
File "position.py", line 125, in get
[translation, rotation] = self.get__auto(target_type, cam_id, target_id)
File "position.py", line 118, in get__auto
return self.get__dynamic_marker_static_camera(target_id, camera_id)
File "position.py", line 81, in get__dynamic_marker_static_camera
marker_position = utils.get_position_from_camera(marker_id, camera_id)
File "/home/sportas/martin-robotics/utils.py", line 90, in get_position_from_camera
filtered_coords = filter_coords(readings)
File "/home/sportas/martin-robotics/utils.py", line 85, in filter_coords
return ((kalman(x_list), kalman(y_list), kalman(z_list)), (kalman(rvec1_list), kalman(rvec2_list), kalman(rvec3_list)))
File "/home/sportas/martin-robotics/utils.py", line 29, in kalman
xhat[0] = 0.0 IndexError: index 0 is out of bounds for axis 0 with size 0
有时候是这样的:
Traceback (most recent call last):
File "position.py", line 186, in <module>
pos = p.get(target_type, target_id, cameras_ids)
File "position.py", line 125, in get
[translation, rotation] = self.get__auto(target_type, cam_id, target_id)
File "position.py", line 116, in get__auto
if self.cameras_config[camera_id]['type'] == 'static': KeyError: 1
所以这使我的工作变得更加艰辛,因为我不知道发生了什么,甚至对于同一件事怎么可能出现两个不同的错误,我开始认为问题可能出在相机本身或参考上其中,我不确定。
我得到的另一个错误是该脚本应该打印规范化的位置,我通常将这些测量值传递给log.txt,这样它更具可读性,但是脚本根本不写任何东西,我想知道是否有人可以发现我确实看不到的明显的代码错误,并且让我发疯。
当然,我会继续自己研究。我真的不知道该怎么办。
编辑:我还要留下here的utils.py代码。
编辑1:因此,我注意到当我尝试使用笔记本电脑相机时:python3 position.py camera 0 | tee -a log.txt
我遇到了上面提到的第二个错误,以及当我尝试使用USB相机相机{{1}时我收到第一个错误。那么,确实是相机相关的问题吗?
编辑2:当我使用python3 position.py camera 2 | tee -a log.txt
时,它不会给我任何错误,但是,正如我之前所说,它不会打印任何内容(既不在日志中,也不在屏幕上)。>