ارتباط بین ربات ها

هنگامی که یکی از ربات ها توپ را می‌بیند و مختصات آن را حساب می‌کند، می‌تواند این مختصات را برای دیگر ربات های تیم خود ارسال کند تا آنها از موقعیت فعلی توپ باخبر شوند. در برنامه زیر پس از محاسبه مختصات توپ اطلاعات مورد نیاز برای دیگر ربات های تیم خودی ارسال می‌شود. سپس اطلاعات دریافتی مورد بررسی قرار می‌گیرد و اگر ربات فعلی توپ را ندید و ربات دیگری توپ را دیده و اطلاعات آن را ارسال کرده از مختصاتی که ربات دیگر فرستاده استفاده می‌گردد. در این برنامه تنها تابع 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']

برنامه نهایی و کامل

دانلود برنامه کامل ربات ها دانلود

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

1000 دیدگاه
4.7 (میانگین امتیاز کاربران)