识别到红色和绿色色带后,会执行相应的命令以调整机器狗的行为,具体如下:
-
红色色带识别:
- 在
track
模式下,当识别到红色色带时,机器人会进入divergeright
模式,表示机器人需要在接下来的行动中向右分岔。 - 具体代码如下:
if (divergerColor == "red") {inRange(ZoomOutimage, colorgroup.redMin, colorgroup.redMax, frame2); // 二值化红色number = 0;for (int i = 0; i < frame2.rows; i++) {for (int j = 0; j < frame2.cols; j++) {if (frame2.at<uchar>(i, j) == 255) {number++;}}}// 出现红色条带if (number >= 500) {mythread.mode = divergeright;cout << "recognize red" << endl;divergerColor = "null";return;} }
- 在
divergeright
模式下,机器人会根据diverge2TransientProcess
的值调整目标中线均值和运动参数,以确保向右分岔行驶。
- 在
-
绿色色带识别:
- 在
track
模式下,当识别到绿色色带时,机器人会进入divergeleft
模式,表示机器人需要在接下来的行动中向左分岔。 - 具体代码如下:
if (divergerColor == "green") {inRange(ZoomOutimage, colorgroup.greenMin, colorgroup.greenMax, frame2); // 二值化绿色number = 0;for (int i = 0; i < frame2.rows; i++) {for (int j = 0; j < frame2.cols; j++) {if (frame2.at<uchar>(i, j) == 255) {number++;}}}// 出现绿色条带if (number >= 500) {mythread.mode = divergeleft;cout << "recognize green" << endl;divergerColor = "null";return;} }
- 在
divergeleft
模式下,机器人会根据divergeTransientProcess
的值调整目标中线均值和运动参数,以确保向左分岔行驶。
- 在
机器人状态模式和行为
机器人有多种状态模式,每种模式对应不同的行为和运动参数:
- track:循迹模式,机器人在赛道中行驶并识别各种色带以决定后续行动。
- divergeright:向右分岔模式,机器人根据中线均值和运动参数调整确保向右分岔行驶。
- divergeleft:向左分岔模式,机器人根据中线均值和运动参数调整确保向左分岔行驶。
- residenceright 和 residenceleft:住户区模式,机器人进入住户区并执行相应的运动和定位调整。
- revise:位于集散区矫正自身位置,机器人通过计算中线均值和斜率调整自己的位置。
运动参数
机器狗的运动参数包括:
gait_type
:步态类型,3表示运动,4表示停止。step_height
:步高。stand_height
:站立高度。v_des[3]
:期望速度向量,包含前进速度、横移速度和转向速度。rpy_des[3]
:期望姿态角(滚转、俯仰、偏航)。
其他功能
- 机器人通过二值化处理图像以识别不同颜色的条带。
- 机器人通过计算中线和赛道两侧边缘的平均值和斜率来调整其行驶路径。
- 机器人在不同模式下根据不同的状态值(如
residenceTransientProcess
和divergeTransientProcess
)调整运动参数,以完成特定任务。