{"id":2063,"date":"2026-09-11T10:14:06","date_gmt":"2026-09-11T10:14:06","guid":{"rendered":"https:\/\/learn.newproferm.ro\/?page_id=2063"},"modified":"2026-09-23T08:26:50","modified_gmt":"2026-09-23T08:26:50","slug":"live-teleoperation","status":"publish","type":"page","link":"https:\/\/learn.newproferm.ro\/ro\/live-teleoperation\/","title":{"rendered":"Teleoperare \u00een timp real"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"2063\" class=\"elementor elementor-2063\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1e5d4ba2 e-flex e-con-boxed e-con e-parent\" data-id=\"1e5d4ba2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-67960f00 elementor-widget elementor-widget-image\" data-id=\"67960f00\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_24_41-PM-1024x576.png\" class=\"attachment-large size-large wp-image-2066\" alt=\"\" srcset=\"https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_24_41-PM-1024x576.png 1024w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_24_41-PM-300x169.png 300w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_24_41-PM-768x432.png 768w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_24_41-PM-1536x864.png 1536w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_24_41-PM-18x10.png 18w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_24_41-PM-600x338.png 600w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_24_41-PM.png 1672w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6f44d43 e-flex e-con-boxed e-con e-parent\" data-id=\"6f44d43\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5cb91769 elementor-widget elementor-widget-heading\" data-id=\"5cb91769\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Control a Real Robot in Real Time<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3834937a e-flex e-con-boxed e-con e-parent\" data-id=\"3834937a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-54d5ba1 elementor-widget elementor-widget-text-editor\" data-id=\"54d5ba1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3 class=\"PDq2pG_selectionAnchorContainer\" data-section-id=\"quk48s\" data-start=\"383\" data-end=\"426\">Your commands are transmitted to a physical robot and executed in the real workspace.<\/h3><p class=\"PDq2pG_selectionAnchorContainer\" data-start=\"259\" data-end=\"392\">During your scheduled session, you will connect remotely to a real robotic arm and control it from your <strong data-start=\"363\" data-end=\"391\">PC, tablet or smartphone<\/strong>.<\/p><p data-start=\"394\" data-end=\"436\">The Live Teleoperation interface provides:<\/p><ul data-start=\"438\" data-end=\"895\"><li data-section-id=\"1xha4k9\" data-start=\"438\" data-end=\"514\"><strong data-start=\"440\" data-end=\"461\">Live camera views<\/strong> \u2014 see the robot and workspace from multiple angles<\/li><li data-section-id=\"dnlztl\" data-start=\"515\" data-end=\"594\"><strong data-start=\"517\" data-end=\"535\">Robot controls<\/strong> \u2014 move the robotic arm using joint or Cartesian controls<\/li><li data-section-id=\"euac3i\" data-start=\"595\" data-end=\"674\"><strong data-start=\"597\" data-end=\"616\">Gripper control<\/strong> \u2014 open and close the gripper to manipulate real objects<\/li><li data-section-id=\"4erioj\" data-start=\"675\" data-end=\"751\"><strong data-start=\"677\" data-end=\"694\">Session timer<\/strong> \u2014 monitor the remaining time in your 10-minute session<\/li><li data-section-id=\"q9t3qd\" data-start=\"752\" data-end=\"824\"><strong data-start=\"754\" data-end=\"775\">Connection status<\/strong> \u2014 verify that the robot and cameras are online<\/li><li data-section-id=\"pmxr23\" data-start=\"825\" data-end=\"895\"><strong data-start=\"827\" data-end=\"845\">Emergency Stop<\/strong> \u2014 immediately stop the robot whenever necessary<\/li><\/ul><p data-start=\"897\" data-end=\"971\"><strong data-start=\"897\" data-end=\"971\">Every command you send produces a real movement on the physical robot.<\/strong><\/p><p data-start=\"973\" data-end=\"1079\">Only qualified students with a simulator final score of <strong data-start=\"1029\" data-end=\"1048\">at least 80\/100<\/strong> can access Live Teleoperation.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-30a55505 e-flex e-con-boxed e-con e-parent\" data-id=\"30a55505\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-10768560 e-con-full e-flex e-con e-child\" data-id=\"10768560\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2e4912b6 elementor-widget elementor-widget-image\" data-id=\"2e4912b6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_27_05-PM-1024x576.png\" class=\"attachment-large size-large wp-image-2067\" alt=\"\" srcset=\"https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_27_05-PM-1024x576.png 1024w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_27_05-PM-300x169.png 300w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_27_05-PM-768x432.png 768w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_27_05-PM-1536x864.png 1536w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_27_05-PM-18x10.png 18w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_27_05-PM-600x338.png 600w, https:\/\/learn.newproferm.ro\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-11-2026-01_27_05-PM.png 1672w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-76bd906b elementor-widget elementor-widget-text-editor\" data-id=\"76bd906b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>The following steps show how a Live Teleoperation session works \u2014 from connecting to the real robot and checking the camera views to completing the task and receiving your performance score.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-50afc1ec e-flex e-con-boxed e-con e-parent\" data-id=\"50afc1ec\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-67e40d6a elementor-widget elementor-widget-heading\" data-id=\"67e40d6a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Your Live Robot Session \u2014 Step by Step<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e272628 elementor-widget elementor-widget-text-editor\" data-id=\"1e272628\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"PDq2pG_selectionAnchorContainer\" data-start=\"1213\" data-end=\"1264\">Your real robot session follows five simple stages:<\/p><ol data-start=\"1266\" data-end=\"1711\"><li data-section-id=\"4fgqvw\" data-start=\"1266\" data-end=\"1371\"><strong data-start=\"1269\" data-end=\"1280\">Connect<\/strong> \u2014 join your scheduled session and verify that the robot, cameras and connection are ready.<\/li><li data-section-id=\"4oy1gy\" data-start=\"1372\" data-end=\"1455\"><strong data-start=\"1375\" data-end=\"1392\">Check Cameras<\/strong> \u2014 inspect the workspace using the available live camera views.<\/li><li data-section-id=\"xyf7fg\" data-start=\"1456\" data-end=\"1533\"><strong data-start=\"1459\" data-end=\"1470\">Control<\/strong> \u2014 move the robot carefully from your PC, tablet or smartphone.<\/li><li data-section-id=\"du1ypr\" data-start=\"1534\" data-end=\"1631\"><strong data-start=\"1537\" data-end=\"1558\">Complete the Task<\/strong> \u2014 use the gripper to pick up the object and place it in the target area.<\/li><li data-section-id=\"1n2d3h3\" data-start=\"1632\" data-end=\"1711\"><strong data-start=\"1635\" data-end=\"1653\">Finish &amp; Score<\/strong> \u2014 complete the task and receive your performance results.<\/li><\/ol><p data-start=\"1713\" data-end=\"1748\">Your performance is measured using:<\/p><p data-start=\"1750\" data-end=\"1779\"><strong data-start=\"1750\" data-end=\"1779\">Time \u2022 Precision \u2022 Safety<\/strong><\/p><p data-start=\"1781\" data-end=\"1857\">At any moment, <strong data-start=\"1796\" data-end=\"1814\">Emergency Stop<\/strong> can be used to stop the robot immediately.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-36779dd e-flex e-con-boxed e-con e-parent\" data-id=\"36779dd\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-827a7a3 elementor-widget elementor-widget-shortcode\" data-id=\"827a7a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\r\n    <div id=\"lrs-live-teleoperation\">\r\n\r\n        <div id=\"lrs-live-access-status\" class=\"lrs-live-card\">\r\n\r\n            <div class=\"lrs-live-loading\">\r\n                Checking your Real Robot session access...\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n\r\n        <div\r\n            id=\"lrs-live-session-panel\"\r\n            style=\"display:none;\"\r\n        >\r\n\r\n            <div class=\"lrs-live-ready-card\">\r\n\r\n                <div class=\"lrs-live-status-dot\"><\/div>\r\n\r\n                <div class=\"lrs-live-content\">\r\n\r\n                    <div class=\"lrs-live-label\">\r\n                        LIVE SESSION ACCESS\r\n                    <\/div>\r\n\r\n                    <h2>\r\n                        Ready for Live Teleoperation\r\n                    <\/h2>\r\n\r\n                    <p id=\"lrs-live-session-details\"><\/p>\r\n\r\n\r\n                    <div class=\"lrs-live-timer-wrap\">\r\n\r\n                        <span class=\"lrs-live-timer-label\">\r\n                            SESSION TIME REMAINING\r\n                        <\/span>\r\n\r\n                        <div id=\"lrs-live-timer\">\r\n                            10:00\r\n                        <\/div>\r\n\r\n                    <\/div>\r\n\r\n\r\n                    <button\r\n                        type=\"button\"\r\n                        id=\"lrs-start-live-session\"\r\n                    >\r\n                        START LIVE TELEOPERATION\r\n                    <\/button>\r\n\r\n                <\/div>\r\n\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <style>\r\n\r\n        #lrs-live-teleoperation {\r\n            max-width: 900px;\r\n            margin: 35px auto;\r\n            font-family: inherit;\r\n        }\r\n\r\n\r\n        .lrs-live-card,\r\n        .lrs-live-ready-card {\r\n\r\n            background: #ffffff;\r\n\r\n            border: 1px solid #dbeafe;\r\n\r\n            border-radius: 16px;\r\n\r\n            padding: 28px;\r\n\r\n            box-shadow:\r\n                0 8px 30px rgba(15, 23, 42, 0.08);\r\n        }\r\n\r\n\r\n        .lrs-live-loading {\r\n\r\n            text-align: center;\r\n\r\n            font-size: 17px;\r\n\r\n            color: #1e3a8a;\r\n\r\n            font-weight: 600;\r\n        }\r\n\r\n\r\n        .lrs-live-ready-card {\r\n\r\n            display: flex;\r\n\r\n            align-items: flex-start;\r\n\r\n            gap: 20px;\r\n        }\r\n\r\n\r\n        .lrs-live-status-dot {\r\n\r\n            width: 18px;\r\n\r\n            height: 18px;\r\n\r\n            min-width: 18px;\r\n\r\n            margin-top: 8px;\r\n\r\n            border-radius: 50%;\r\n\r\n            background: #22c55e;\r\n\r\n            box-shadow:\r\n                0 0 0 6px rgba(34, 197, 94, 0.15);\r\n        }\r\n\r\n\r\n        .lrs-live-content {\r\n            width: 100%;\r\n        }\r\n\r\n\r\n        .lrs-live-label {\r\n\r\n            color: #0b63f6;\r\n\r\n            font-size: 13px;\r\n\r\n            font-weight: 800;\r\n\r\n            letter-spacing: 1px;\r\n        }\r\n\r\n\r\n        .lrs-live-ready-card h2 {\r\n\r\n            margin: 5px 0 6px;\r\n\r\n            color: #0f172a;\r\n        }\r\n\r\n\r\n        .lrs-live-ready-card p {\r\n\r\n            margin: 0;\r\n\r\n            color: #475569;\r\n        }\r\n\r\n\r\n        .lrs-live-timer-wrap {\r\n\r\n            margin-top: 24px;\r\n\r\n            padding: 20px;\r\n\r\n            background: #eff6ff;\r\n\r\n            border-radius: 12px;\r\n\r\n            text-align: center;\r\n        }\r\n\r\n\r\n        .lrs-live-timer-label {\r\n\r\n            display: block;\r\n\r\n            margin-bottom: 6px;\r\n\r\n            color: #1e3a8a;\r\n\r\n            font-size: 12px;\r\n\r\n            font-weight: 800;\r\n\r\n            letter-spacing: 1px;\r\n        }\r\n\r\n\r\n        #lrs-live-timer {\r\n\r\n            font-size: 38px;\r\n\r\n            line-height: 1;\r\n\r\n            font-weight: 800;\r\n\r\n            color: #0b63f6;\r\n        }\r\n\r\n\r\n        #lrs-start-live-session {\r\n\r\n            width: 100%;\r\n\r\n            margin-top: 20px;\r\n\r\n            padding: 15px 20px;\r\n\r\n            border: 0;\r\n\r\n            border-radius: 8px;\r\n\r\n            background: #0b63f6;\r\n\r\n            color: #ffffff;\r\n\r\n            font-size: 15px;\r\n\r\n            font-weight: 800;\r\n\r\n            cursor: pointer;\r\n        }\r\n\r\n\r\n        #lrs-start-live-session:hover {\r\n            opacity: 0.92;\r\n        }\r\n\r\n\r\n        .lrs-live-error {\r\n\r\n            color: #991b1b;\r\n\r\n            background: #fef2f2;\r\n\r\n            border-color: #fecaca;\r\n        }\r\n\r\n\r\n        .lrs-live-scheduled {\r\n\r\n            color: #1e3a8a;\r\n\r\n            background: #eff6ff;\r\n\r\n            border-color: #bfdbfe;\r\n        }\r\n\r\n\r\n        .lrs-live-ended {\r\n\r\n            color: #475569;\r\n\r\n            background: #f8fafc;\r\n\r\n            border-color: #cbd5e1;\r\n        }\r\n\r\n\r\n        @media (max-width: 650px) {\r\n\r\n            .lrs-live-ready-card {\r\n                padding: 20px;\r\n            }\r\n\r\n            #lrs-live-timer {\r\n                font-size: 32px;\r\n            }\r\n        }\r\n\r\n    <\/style>\r\n\r\n\r\n    <script>\r\n\r\n    document.addEventListener(\r\n        'DOMContentLoaded',\r\n        function () {\r\n\r\n            const statusBox =\r\n                document.getElementById(\r\n                    'lrs-live-access-status'\r\n                );\r\n\r\n            const sessionPanel =\r\n                document.getElementById(\r\n                    'lrs-live-session-panel'\r\n                );\r\n\r\n            const sessionDetails =\r\n                document.getElementById(\r\n                    'lrs-live-session-details'\r\n                );\r\n\r\n            const timer =\r\n                document.getElementById(\r\n                    'lrs-live-timer'\r\n                );\r\n\r\n            const startButton =\r\n                document.getElementById(\r\n                    'lrs-start-live-session'\r\n                );\r\n\r\n\r\n            if (!statusBox || !sessionPanel) {\r\n                return;\r\n            }\r\n\r\n\r\n            \/*\r\n             * Same student identity used by\r\n             * Simulator + Booking.\r\n             *\/\r\n\r\n            let studentProfile = {};\r\n\r\n            try {\r\n\r\n                studentProfile =\r\n                    JSON.parse(\r\n                        localStorage.getItem(\r\n                            'learn_robotics_student'\r\n                        ) || '{}'\r\n                    ) || {};\r\n\r\n            } catch (e) {\r\n\r\n                studentProfile = {};\r\n            }\r\n\r\n\r\n            const studentEmail = String(\r\n\r\n                studentProfile.email ||\r\n\r\n                localStorage.getItem(\r\n                    'lrs_student_email'\r\n                ) ||\r\n\r\n                ''\r\n\r\n            ).trim();\r\n\r\n\r\n            if (!studentEmail) {\r\n\r\n                statusBox.classList.add(\r\n                    'lrs-live-error'\r\n                );\r\n\r\n                statusBox.innerHTML =\r\n                    '<strong>LIVE TELEOPERATION LOCKED<\/strong><br>' +\r\n                    'Start Robotics Training first so your student profile can be identified.';\r\n\r\n                return;\r\n            }\r\n\r\n\r\n            let countdownInterval = null;\r\n\r\n\r\n            function formatTime(seconds) {\r\n\r\n                seconds = Math.max(\r\n                    0,\r\n                    parseInt(seconds, 10) || 0\r\n                );\r\n\r\n                const minutes =\r\n                    Math.floor(seconds \/ 60);\r\n\r\n                const remainingSeconds =\r\n                    seconds % 60;\r\n\r\n                return (\r\n                    String(minutes).padStart(2, '0')\r\n                    +\r\n                    ':'\r\n                    +\r\n                    String(remainingSeconds).padStart(2, '0')\r\n                );\r\n            }\r\n\r\n\r\n            function startCountdown(seconds) {\r\n\r\n                if (countdownInterval) {\r\n                    clearInterval(countdownInterval);\r\n                }\r\n\r\n                let remaining =\r\n                    parseInt(seconds, 10) || 0;\r\n\r\n                timer.textContent =\r\n                    formatTime(remaining);\r\n\r\n\r\n                countdownInterval =\r\n                    setInterval(\r\n                        function () {\r\n\r\n                            remaining--;\r\n\r\n                            if (remaining <= 0) {\r\n\r\n                                clearInterval(\r\n                                    countdownInterval\r\n                                );\r\n\r\n                                timer.textContent =\r\n                                    '00:00';\r\n\r\n                                sessionPanel.style.display =\r\n                                    'none';\r\n\r\n                                statusBox.style.display =\r\n                                    'block';\r\n\r\n                                statusBox.className =\r\n                                    'lrs-live-card lrs-live-ended';\r\n\r\n                                statusBox.innerHTML =\r\n                                    '<strong>SESSION ENDED<\/strong><br>' +\r\n                                    'Your 10-minute Real Robot session has finished.';\r\n\r\n                                return;\r\n                            }\r\n\r\n                            timer.textContent =\r\n                                formatTime(remaining);\r\n\r\n                        },\r\n                        1000\r\n                    );\r\n            }\r\n\r\n\r\n            async function checkAccess() {\r\n\r\n                try {\r\n\r\n                    const response =\r\n                        await fetch(\r\n\r\n                            'https:\/\/learn.newproferm.ro\/ro\/wp-json\/learn-robotics\/v1\/live-teleoperation\/access'\r\n                            +\r\n                            '?email='\r\n                            +\r\n                            encodeURIComponent(\r\n                                studentEmail\r\n                            ),\r\n\r\n                            {\r\n                                credentials:\r\n                                    'same-origin'\r\n                            }\r\n                        );\r\n\r\n\r\n                    const data =\r\n                        await response.json();\r\n\r\n\r\n                    \/*\r\n                     * ACTIVE LIVE SESSION\r\n                     *\/\r\n\r\n                    if (\r\n                        response.ok &&\r\n                        data.success &&\r\n                        data.access &&\r\n                        data.state === 'live'\r\n                    ) {\r\n\r\n                        statusBox.style.display =\r\n                            'none';\r\n\r\n                        sessionPanel.style.display =\r\n                            'block';\r\n\r\n\r\n                        sessionDetails.textContent =\r\n\r\n                            data.booking_date\r\n                            +\r\n                            ' \u2022 '\r\n                            +\r\n                            data.start_time\r\n                            +\r\n                            ' \u2013 '\r\n                            +\r\n                            data.end_time\r\n                            +\r\n                            ' \u2022 PAID & CONFIRMED';\r\n\r\n\r\n                        startCountdown(\r\n                            data.seconds_remaining\r\n                        );\r\n\r\n                        return;\r\n                    }\r\n\r\n\r\n                    \/*\r\n                     * PAID SESSION WAITING\r\n                     *\/\r\n\r\n                    if (\r\n                        data.state === 'scheduled'\r\n                    ) {\r\n\r\n                        sessionPanel.style.display =\r\n                            'none';\r\n\r\n                        statusBox.style.display =\r\n                            'block';\r\n\r\n                        statusBox.className =\r\n                            'lrs-live-card lrs-live-scheduled';\r\n\r\n                        statusBox.innerHTML =\r\n\r\n                            '<strong>SESSION CONFIRMED<\/strong><br><br>' +\r\n\r\n                            'Your payment has been confirmed.<br>' +\r\n\r\n                            'Your Live Teleoperation session is scheduled for:<br><br>' +\r\n\r\n                            '<strong>'\r\n                            +\r\n                            data.booking_date\r\n                            +\r\n                            ' \u2022 '\r\n                            +\r\n                            data.start_time\r\n                            +\r\n                            ' \u2013 '\r\n                            +\r\n                            data.end_time\r\n                            +\r\n                            '<\/strong><br><br>' +\r\n\r\n                            'Return to this page at your scheduled time.';\r\n\r\n                        return;\r\n                    }\r\n\r\n\r\n                    \/*\r\n                     * SESSION ENDED\r\n                     *\/\r\n\r\n                    if (\r\n                        data.state === 'ended'\r\n                    ) {\r\n\r\n                        sessionPanel.style.display =\r\n                            'none';\r\n\r\n                        statusBox.style.display =\r\n                            'block';\r\n\r\n                        statusBox.className =\r\n                            'lrs-live-card lrs-live-ended';\r\n\r\n                        statusBox.innerHTML =\r\n\r\n                            '<strong>SESSION ENDED<\/strong><br>' +\r\n\r\n                            'Your Real Robot session '\r\n                            +\r\n                            data.start_time\r\n                            +\r\n                            ' \u2013 '\r\n                            +\r\n                            data.end_time\r\n                            +\r\n                            ' has finished.';\r\n\r\n                        return;\r\n                    }\r\n\r\n\r\n                    \/*\r\n                     * NO PAID SESSION\r\n                     *\/\r\n\r\n                    sessionPanel.style.display =\r\n                        'none';\r\n\r\n                    statusBox.style.display =\r\n                        'block';\r\n\r\n                    statusBox.className =\r\n                        'lrs-live-card lrs-live-error';\r\n\r\n                    statusBox.innerHTML =\r\n\r\n                        '<strong>LIVE TELEOPERATION LOCKED<\/strong><br>' +\r\n\r\n                        'No paid and confirmed Real Robot session was found.<br>' +\r\n\r\n                        'Book and pay for a Real Robot session first.';\r\n\r\n\r\n                } catch (error) {\r\n\r\n                    statusBox.classList.add(\r\n                        'lrs-live-error'\r\n                    );\r\n\r\n                    statusBox.innerHTML =\r\n\r\n                        '<strong>CONNECTION ERROR<\/strong><br>' +\r\n\r\n                        'Live Teleoperation access could not be verified.';\r\n                }\r\n            }\r\n\r\n\r\n            \/*\r\n             * This button will later connect\r\n             * to the actual robot control system.\r\n             *\r\n             * For now we deliberately DO NOT\r\n             * simulate robot control.\r\n             *\/\r\n\r\n            startButton.addEventListener(\r\n                'click',\r\n                function () {\r\n\r\n                    alert(\r\n                        'Live Robot Control connection will be activated when the physical robot gateway is connected.'\r\n                    );\r\n                }\r\n            );\r\n\r\n\r\n            \/*\r\n             * Initial check.\r\n             *\/\r\n\r\n            checkAccess();\r\n\r\n\r\n            \/*\r\n             * Re-check access every 15 seconds.\r\n             *\r\n             * This means the page can automatically\r\n             * unlock when the booked time arrives.\r\n             *\/\r\n\r\n            setInterval(\r\n                checkAccess,\r\n                15000\r\n            );\r\n\r\n        }\r\n    );\r\n\r\n    <\/script>\r\n\r\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Control a Real Robot in Real Time Your commands are transmitted to a physical robot and executed in the real workspace. During your scheduled session, you will connect remotely to a real robotic arm and control it from your PC, tablet or smartphone. The Live Teleoperation interface provides: Live camera views \u2014 see the robot [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-2063","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/learn.newproferm.ro\/ro\/wp-json\/wp\/v2\/pages\/2063","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learn.newproferm.ro\/ro\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/learn.newproferm.ro\/ro\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/learn.newproferm.ro\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/learn.newproferm.ro\/ro\/wp-json\/wp\/v2\/comments?post=2063"}],"version-history":[{"count":7,"href":"https:\/\/learn.newproferm.ro\/ro\/wp-json\/wp\/v2\/pages\/2063\/revisions"}],"predecessor-version":[{"id":2253,"href":"https:\/\/learn.newproferm.ro\/ro\/wp-json\/wp\/v2\/pages\/2063\/revisions\/2253"}],"wp:attachment":[{"href":"https:\/\/learn.newproferm.ro\/ro\/wp-json\/wp\/v2\/media?parent=2063"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}