برنامه نویسی

مقایسه برنامه نویسی LEGO Spike Prime: کدام یک برای مسابقات رباتیک بهترین است؟ – 2

آیا محیط برنامه نویسی بر دقت تأثیر می گذارد؟ یک تست چرخش 360 درجه
آیا هنگام استفاده از LEGO Spike Prime در مسابقات رباتیک ، آیا انتخاب محیط برنامه نویسی بر دقت حرکت تأثیر می گذارد؟
برای بررسی این موضوع ، من یک آزمایش را با مقایسه محیط های مختلف برنامه نویسی انجام دادم.

محیط های برنامه نویسی آزمایش شده

من چهار محیط زیر را مقایسه کردم:


پیکربندی ربات

برای تست ، من از یک ربات از نوع ماشین با تنظیم زیر استفاده کردم:
• موتور چپ: بندر A
• موتور راست: بندر B
شرح تصویر


روش تست

برای مقایسه محیط ها ، من آزمایش زیر را انجام دادم:

  • به ربات دستور دهید تا با استفاده از زاویه موتور مشخص 360 درجه بچرخد
  • تفاوت بین زاویه هدف و چرخش واقعی را اندازه گیری کنید
  • برای هر محیط 10 کارآزمایی انجام دهید و خطای متوسط ​​را محاسبه کنید
  • از همین منطق برای همه محیط ها استفاده شد
    https://www.youtube.com/watch؟v=uy_zyjhbu6k

کد برنامه (برای همه محیط ها):
بلوک های کلمه ای (Spike App3)
شرح تصویر
پایتون (Spike App3)

tread = 8
d_tire = 5.6
goal = 360;

for i in range(10):
motor.reset_relative_position(port.A, 0)
start_angle = motor.relative_position(port.A)
motor.run(port.A, -300)
motor.run(port.B, -300)

while tread/d_tire*goal > -motor.relative_position(port.A):
pass

motor.stop(port.A, stop=motor.BRAKE)
motor.stop(port.B, stop=motor.BRAKE)

time.sleep_ms(500)
print("error:", abs(motor.relative_position(port.A)-start_angle) - tread/d_tire*goal )
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Python (Pybricks)

hub = PrimeHub()
motorA = Motor(Port.A, Direction.COUNTERCLOCKWISE)
motorB = Motor(Port.B, Direction.CLOCKWISE)

tread = 8
d_tire = 5.6
goal = 360

for i in range(10):
start_angle = motorA.angle()

motorA.run(300)
motorB.run(-300)

while tread/d_tire*goal > motorA.angle() - start_angle:
pass

motorA.brake()
motorB.brake()

wait(500)
print("error", motorA.angle()-start_angle - tread/d_tire*goal )
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

زبان ج (Spike-RT)

void Main(intptr_t exinf)
{
dly_tsk(5000000);

uint8_t tread = 8;
float d_tire = 5.6;
uint32_t goal = 360;

motorA = pup_motor_init(PBIO_PORT_ID_A, PUP_DIRECTION_COUNTERCLOCKWISE);
motorB = pup_motor_init(PBIO_PORT_ID_B, PUP_DIRECTION_CLOCKWISE);

int8_t i;
for (i = 0; i < 10; i++){
pup_motor_reset_count(motorA);

pup_motor_set_speed(motorA, 300);
pup_motor_set_speed(motorB, -300);

while(tread/d_tire*goal > pup_motor_get_count(motorA));

pup_motor_brake(motorA);
pup_motor_brake(motorB);

dly_tsk(500000);

float error = pup_motor_get_count(motorA) - (tread / d_tire * goal);
syslog(LOG_NOTICE, "error: %d.%05d", (int)error, (int)((error - (int)error) * 100000));
}
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

نتایج: کدام محیط دقیق ترین بود؟

شرح تصویر
در اینجا میانگین خطاهای چرخش (کوچکتر بهتر است):
1 ⃣ 12 ° – C Language (Spike -RT) 🏆
2 ⃣ 13 ° – Python (Pybricks)
2 13 درجه – پایتون (برنامه سنبله 3)
4 ⃣ 14 ° – بلوک های کلمه ای (برنامه سنبله 3)
علاوه بر این ، من دامنه نوسانات خطا (قوام) را اندازه گیری کردم:
1⃣ 2 ° – Python (برنامه سنبله 3)
2 ⃣ 3 ° – C Language (Spike -RT)
2 ⃣ 3 ° – بلوک های کلمه ای (برنامه سنبله 3)
4 ⃣ 5 ° – Python (Pybricks)

غذای اصلی:
زبان C (Spike-RT) دقیق ترین چرخش (کوچکترین خطا)
پایتون (برنامه سنبله 3) پایدارترین نتایج (کوچکترین تنوع)


آیا می خواهید برنامه نویسی C را در LEGO Spike Prime امتحان کنید؟

اگر علاقه مند به تلاش C در Spike Prime هستید ، مطالب یادگیری دوستانه مبتدی در دسترس است. از مارس 2025 ، یک نسخه آزمایشی نیز در دسترس است – آن را امتحان کنید!


برای دیدن بیشتر

اگر به آزمایش های بیشتر LEGO Spike Prime با زبان C علاقه دارید ، این مقاله مرتبط را بررسی کنید:

آزمایش های بیشتر برنامه ریزی شده است ، از جمله ارزیابی های بیشتر برای مسابقات روباتیک. برای به روزرسانی های آینده با ما همراه باشید! 🚀

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا