مقایسه برنامه نویسی 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 علاقه دارید ، این مقاله مرتبط را بررسی کنید:
آزمایش های بیشتر برنامه ریزی شده است ، از جمله ارزیابی های بیشتر برای مسابقات روباتیک. برای به روزرسانی های آینده با ما همراه باشید! 🚀