פיתוח אפליקציות מובייל לשליטה ברובוטים

שליטה ברובוט מהטלפון דורשת תגובה מיידית, אך בחירה בפרוטוקול שגוי מובילה לעיכובים ולאובדן חיבור. אנחנו מפתחים אפליקציות מובייל לשליטה ברובוטים, ומבטיחים קישוריות יציבה וביצוע פקודות מדויק. הצוות שלנו מספק פרויקטים מסוג מפתח לצרכן - מהארכיטקטורה ועד לתמיכה - המותאמים לחומרה ולמקרי השימוש שלכם.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
פיתוח אפליקציות מובייל לשליטה ברובוטים
מורכב
מ- 2 שבועות עד 3 חודשים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

מהנדס עומד בפני האתגר של שליטה מרחוק ברובוט באמצעות מכשיר נייד עם זמן השהיה מתחת ל-100 אלפיות השנייה. בחירת פרוטוקול העברת הנתונים קובעת את מהירות התגובה, הבטיחות ועלות הפיתוח. ארכיטקטורה שגויה עלולה להוביל לאובדן חיבור ולתאונות. אנו מתמחים בפיתוח אפליקציות לשליטה ברובוטים — מ-AGVs ועד זרועות שיתופיות. במשך יותר מ-5 שנים, סיפקנו יותר מ-15 פרויקטים, והשגנו זמני השהיה מתחת ל-100 אלפיות השנייה אפילו על LTE.

באיזה פרוטוקול כדאי לבחור לזמן השהיה מינימלי?

בחירת שכבת התעבורה קובעת את זמן ההשהיה, האמינות ומורכבות הפיתוח. בניסיון שלנו, אנו משתמשים בשלושה פרוטוקולים עיקריים:

פרוטוקול זמן השהיה הבטחת מסירה מקרה שימוש
ROS 2 (WebSocket) 50–200 אלפיות השנייה כן (TCP) רובוטי ROS, ארכיטקטורת פקודות מורכבת
MQTT 20–100 אלפיות השנייה QoS 1 (לפחות פעם אחת) רובוטי IoT, AGVs, שליטה קלה
UDP < 10 אלפיות השנייה לא זרועות, פקודות בתדירות גבוהה

UDP מספק זמן השהיה נמוך פי 10 מ-MQTT אך אינו מבטיח מסירה — זהו יתרון בתרחישי זמן אמת שבהם פקודה חדשה חשובה יותר מאמינות. MQTT עם QoS 1 אמין יותר אך מוסיף תקורה. עבור רובוטי ROS, WebSocket דרך rosbridge הוא אופטימלי, אם כי סריאליזציית JSON יכולה להפוך לצוואר בקבוק בתדירויות גבוהות (לפי תיעוד rosbridge_protocol הרשמי).

מדוע watchdog הוא חובה?

תרחיש קריטי הוא אובדן חיבור. ללא הגנה, הרובוט עלול להמשיך לנוע, דבר המסוכן. אנו מיישמים watchdog בשלבים:

  1. על הרובוט, הפעל טיימר של 1–2 שניות.
  2. אם לא מתקבלת פקודה בתוך זמן זה, הרובוט עובר ל-safe_stop (עצירת כל המנועים) או שומר על מיקום.
  3. הטלפון מציג את מצב החיבור ומתחבר מחדש אוטומטית עם מחוון איכות שירות.

בנוסף, אנו משתמשים באימות PIN/QR כדי למנוע שליטה ברובוט אחר.

כיצד להפחית את זמן ההשהיה של הזרמת הווידאו?

עבור זרמי H.264 ממצלמות IP על הרובוט, אנו משתמשים ב-ExoPlayer (אנדרואיד) או AVPlayer עם HLS (iOS). זמן ההשהיה של HLS הוא 5–30 שניות, דבר שאינו מקובל לשליטה. הגישה הנכונה היא WebRTC (זמן השהיה < 200 אלפיות השנייה) או RTSP דרך LibVLC/ffmpeg בצינור MediaCodec (זמן השהיה 100–300 אלפיות השנייה).

סוג רכיבים זמן השהיה מורכבות
WebRTC STUN/TURN, איתות < 200 אלפיות השנייה גבוהה (דורש תשתית)
RTSP VLC, ffmpeg 100–300 אלפיות השנייה בינונית (ספריות מוכנות)
HLS AVPlayer, ExoPlayer 5–30 שניות נמוכה (התקנה פשוטה)

WebRTC מורכב יותר להקמה אך מציע את זמן ההשהיה הנמוך ביותר וקצב סיביות אדפטיבי. לשליטה מקומית (Wi-Fi), RTSP מספק איזון אופטימלי.

תעבורה ופרוטוקולים (בפירוט)

ROS 2 + rosbridge (WebSocket)

המחסנית הנפוצה ביותר לרובוטי ROS: על הרובוט, rosbridge_server מופעל; הטלפון מתחבר דרך WebSocket ומפרסם/נרשם לנושאים באמצעות פרוטוקול JSON rosbridge_protocol. עבור לקוחות ניידים, קיימים עטיפות תואמות roslibjs, אך עבור אנדרואיד/iOS מקוריים אנו כותבים את הלקוח בעצמנו — זהו 300–400 שורות קוד עם חיבור מחדש ותור הודעות.

בעיה: rosbridge הוא JSON על WebSocket, דבר איטי לנושאים בתדירות גבוהה. נושא /cmd_vel עם פקודות Twist ב-20 הרץ מייצר כ-40 kbps של תעבורה. אם הרובוט על Wi-Fi עם תפוקה אמיתית של 1 Mbps, זה בסדר. אם על LTE עם jitter, חבילות מגיעות בפרצים, מה שגורם לעיכוב בביצוע פקודות. פתרון: הפחתת תדירות הפקודות ל-10 הרץ והוספת watchdog — אם אין פקודה מהטלפון במשך 500 אלפיות השנייה, הרובוט עובר ל-safe_stop.

MQTT לשליטה קלה

עבור רובוטי IoT ללא ROS (AGVs, ממיינים, פלטפורמות מותאמות) — ברוקר MQTT (Mosquitto או EMQ X) בתוספת פרוטוקול פקודות קל. הטלפון מפרסם ל-robot/{id}/cmd, הרובוט נרשם לנושא זה. טלמטריה הולכת בכיוון ההפוך: robot/{id}/state, robot/{id}/battery. אנו משתמשים ב-MQTT עם QoS 1 (לפחות פעם אחת) לפקודות שליטה — QoS 0 מאבד חבילות על Wi-Fi לא יציב, QoS 2 יוצר סבבים נוספים. הודעת retained עבור robot/{id}/state מאפשרת ללקוח חדש לקבל מיד את המצב הנוכחי מבלי לחכות לעדכון הבא.

UDP לזמן אמת (< 50 אלפיות השנייה)

אם נדרש זמן השהיה מינימלי, השתמש ב-socket UDP ישיר על יציאת השליטה. באנדרואיד: DatagramSocket ב-CoroutineScope(Dispatchers.IO), שליחה כל 50 אלפיות השנייה. אין הבטחות מסירה — זהו יתרון: פקודות ישנות אינן חוסמות חדשות בתור. משמש לשליטה בזרועות שבהן זמן השהיה של פקודה חשוב יותר מהבטחת מסירה.

דוגמה לתצורת נושאי MQTT
robot/{id}/cmd — команды управления (velocity, gripper)
robot/{id}/state — телеметрия (position, battery)
robot/{id}/video — метаданные потока (URL, кодек)

ארכיטקטורת לקוח נייד

class RobotControlViewModel(
    private val robotRepository: RobotRepository
) : ViewModel() {
    private val _robotState = MutableStateFlow<RobotState>(RobotState.Disconnected)
    val robotState: StateFlow<RobotState> = _robotState

    fun sendVelocityCommand(linear: Float, angular: Float) {
        viewModelScope.launch {
            robotRepository.publishVelocity(
                TwistCommand(
                    linear = linear,
                    angular = angular
                )
            )
        }
    }

    fun connect(robotIp: String) {
        viewModelScope.launch {
            robotRepository.connect(robotIp)
                .onEach { state -> _robotState.value = state }
                .launchIn(this)
        }
    }
}

robot/{id}/cmd — команды управления (velocity, gripper) robot/{id}/state — телеметрия (position, battery) robot/{id}/video — метаданные потока (URL, кодек) מכיל את שכבת התעבורה הספציפית — WebSocket, MQTT או UDP. שינוי שכבת התעבורה אינו משפיע על ViewModel או על ממשק המשתמש. זה קריטי: בפרויקטים אמיתיים, החומרה או הפרוטוקול משתנים לעתים קרובות בין אב טיפוס לייצור.

ג'ויסטיק וירטואלי וטיפול בקלט

class RobotControlViewModel( private val robotRepository: RobotRepository ) : ViewModel() { private val _robotState = MutableStateFlow<RobotState>(RobotState.Disconnected) val robotState: StateFlow<RobotState> = _robotState fun sendVelocityCommand(linear: Float, angular: Float) { viewModelScope.launch { robotRepository.publishVelocity( TwistCommand(linear = linear, angular = angular) ) } } fun connect(robotIp: String) { viewModelScope.launch { robotRepository.connect(robotIp) .onEach { state -> _robotState.value = state } .launchIn(this) } } } מופעל עד 60 פעמים בשנייה במהלך תנועת אצבע מהירה. שליחת פקודה על כל אירוע מעמיסה על הערוץ. אנו משתמשים ב-RobotRepository מ-Kotlin Coroutines Flow — הוא לוקח את הערך העדכני ביותר בתוך חלון של 50 אלפיות השנייה. ערכים ישנים ובינוניים נזרקים, וזמן תגובת ההשהיה נשאר מתחת ל-50 אלפיות השנייה.

אזור מת במרכז הג'ויסטיק: אנו מסננים 10–15% מהרדיוס לאפס. ללא זאת, רעידות מיקרו גורמות לפקודות מהירות נמוכה קבועות, מה שגורם לרובוט "לקפוץ" במנוחה.

מה כלול בפיתוח?

אנו מספקים חבילת שירות מלאה:

  • עיצוב ארכיטקטורת פרוטוקול (בחירת שכבת תעבורה, סכימת פקודות)
  • פיתוח אפליקציה ניידת מקורית לאנדרואיד ו/או iOS
  • שילוב הזרמת וידאו דרך WebRTC או RTSP
  • פיתוח תרחישי watchdog ושחזור חירום
  • בדיקות על רובוט אמיתי בתנאים קרובים לתפעול
  • תיעוד טכני והדרכת מפעילים

לוחות זמנים

לקוח בסיסי עם ג'ויסטיק, טלמטריה והזרמת וידאו בפלטפורמה אחת — 3–5 שבועות. פתרון חוצה פלטפורמות התומך במספר פרוטוקולים, מפת מתקן ומשימות אוטונומיות — 2–4 חודשים. לוחות זמנים מדויקים נקבעים לאחר ניתוח פלטפורמת הרובוט ודרישות זמן ההשהיה.

אנו נעריך את הפרויקט שלך ונציע פתרון אופטימלי. קבל ייעוץ על ארכיטקטורת פרוטוקול. צור קשר לדיון מפורט.