RoboCup智能机器人足球教程(三)
实现守门员代码
守门员逻辑实现比较容易,但是最好开始的时候画好流程图,理顺逻辑,守门员一直盯着球,当球距离守门员够近的时候,守门员前去扑球,扑到球后朝对面射出,逻辑图为:
实现逻辑的办法就是定义状态变量,用if控制,在这里,我们定义如下几个重要的状态变量:
isCatchBall: 球是否在脚下
isMove: 是否进行了瞬移,守门员扑到球后是可以进行瞬移的,我们要利用好。
主要架构的伪代码为:
if isCatchBall == true
search goal
kick
else
if ball_distance < 1
catch ball
else
look at ball
下面是完全的代码:
if(id == 1){
if (std::strncmp(msg, "(see ", 5)==0){
if(isCatchBall == 0){
double ball_di