我对机器人视觉程序有疑问,由于这是一项正在进行的工作,因此转向元件目前非常初级。
该程序包含三个脚本: 1. maze_image_processing.py(主程序) 2. maze_steering.py(计算出转向角) 3. maze_edge_detect.py(执行迷宫的边缘检测)
在修改代码以驱动机器人的电机之前,所有方法都可以工作,但是在修改后的版本中,存在一个无法解决的错误。为了告诉电机在新的变量 maze_steering.py 中的 ste 函数中创建了新变量的转向方法。通过从maze_steering导入引导中添加,此变量将添加到return语句中,并导入到主程序 maze_image_processing.py 中。
现在,在运行程序时,我收到ValueError:太多值无法解包,显示为导致错误的行是第142行:
overlay, steering_correction = steer(lines, width, height)
似乎是导致问题的原因是从功能转向返回了图像和steering_correction。如果我从return语句中注释掉steward_correction并提供了steeering_correction的替代值,则程序不会引发错误。
我正在 maze_image_processing.py
中使用此行调用变量from maze_steering import steer
这里是 转向 模块的摘录,返回 图像 和 steering_correction :
# convert steering correction to variable to use for steering
print("steer", round(getSteeringAngle(middle - midX),1)) # steering correction
steering_correction = round(getSteeringAngle(middle - midX),1)
corrpx = wallRight - wallLeft
if corridorWidth > 0:
corridorWidth = (corrpx + corridorWidth) / 2
else:
corridorWidth = corrpx
#print("pixel width", corridorWidth)
return image, steering_correction
这是在 maze_image_processing.py
中被调用的位置# generate overlay image with processed edges
overlay, steering_correction = steer(lines, width, height)
# show the frame with overlay (dims and merges)
img = cv2.addWeighted(frame, 0.4, overlay, 0.6, 0);
cv2.imshow("Frame", img)
所有代码都可以在这里找到:
https://github.com/JonnyAlpha/Robotic_Vision
对此深表谢意