ارتباط بین ربات ها
هنگامی که یکی از ربات ها توپ را میبیند و مختصات آن را حساب میکند، میتواند این مختصات را برای دیگر ربات های تیم خود ارسال کند تا آنها از موقعیت فعلی توپ باخبر شوند. در برنامه زیر پس از محاسبه مختصات توپ اطلاعات مورد نیاز برای دیگر ربات های تیم خودی ارسال میشود. سپس اطلاعات دریافتی مورد بررسی قرار میگیرد و اگر ربات فعلی توپ را ندید و ربات دیگری توپ را دیده و اطلاعات آن را ارسال کرده از مختصاتی که ربات دیگر فرستاده استفاده میگردد. در این برنامه تنها تابع readData از فایل utils.py تغییر میکند.
utils.py
def readData(robot):
gps = robot.get_gps_coordinates()
robot.heading = degrees(robot.get_compass_heading())
robot.xr = gps[0]
robot.yr = gps[1]
if robot.is_new_ball_data():
ball_dir = robot.get_new_ball_data()['direction']
robot.ball_angle = degrees(atan2(ball_dir[1], ball_dir[0]))
robot.ball_distance = abs(0.0166666666/(abs(ball_dir[2])/sqrt(1 - ball_dir[2]**2)))
robot.xb = -sin(radians(robot.ball_angle + robot.heading)) * robot.ball_distance + robot.xr
robot.yb = cos(radians(robot.ball_angle + robot.heading)) * robot.ball_distance + robot.yr
robot.is_ball = True
else:
robot.is_ball = False
####### send team data
robot.send_data_to_team({
'id': robot.robot.getName()[1],
'is_ball': robot.is_ball,
'xb': robot.xb,
'yb': robot.yb,
'xr': robot.xr,
'yr': robot.yr,
})
####### get team data
while robot.is_new_team_data():
team_data = robot.get_new_team_data()['robot_id']
if team_data['is_ball'] and not robot.is_ball:
robot.is_ball = True
robot.xb = team_data['xb']
robot.yb = team_data['yb']
برنامه نهایی و کامل
| دانلود برنامه کامل ربات ها | دانلود |




دیدگاه کاربران