{"success":true,"data":[{"id":"cmw3oafqx00p101mvucnmlj00","slug":"nastoyaschie-roboty-v-simulyatore","title":"Настоящие роботы в симуляторе","description":null,"level":"ADVANCED","duration":null,"status":"PUBLISHED","publicationApproved":true,"accessType":"PUBLIC","thumbnail":"https://api.edu.sverk.tech/api/storage/file?key=courses%2F1793895173840-EWREGATIDFmv.jpg","order":0,"isPublicInCatalog":true,"isDocumentation":false,"gitlabSourceUrl":"https://git.sverk.io/s1rne/sverk-sim-course","organizationId":null,"createdById":null,"organizationVisibility":"PUBLIC","metadata":{"gitlabImportSettings":{"moduleSortBy":"natural","lessonStructure":"nested_modules","lessonTitleSource":"filename","useSummaryHierarchy":false}},"createdAt":"2026-11-05T15:00:41.145Z","updatedAt":"2026-11-05T16:12:55.593Z","deletedAt":null,"modules":[{"id":"cmw3qtmkp010c01mvs88xcmp6","courseId":"cmw3oafqx00p101mvucnmlj00","title":"О курсе","order":0,"status":"PUBLISHED","lessons":[{"id":"cmw3qtml6010m01mvyt12jprl","slug":"01-o-kurse","title":"О курсе","type":"THEORY","order":0,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmkp010c01mvs88xcmp6","courseId":"cmw3oafqx00p101mvucnmlj00"}]},{"id":"cmw3qtmkq010d01mvrypoqkeo","courseId":"cmw3oafqx00p101mvucnmlj00","title":"Как устроен серверный симулятор","order":1,"status":"PUBLISHED","lessons":[{"id":"cmw3qtml9010o01mvx8qx982n","slug":"01-urok-0-kak-ustroen-servernyi-simulyator","title":"Урок 0. Как устроен серверный симулятор","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmkq010d01mvrypoqkeo","courseId":"cmw3oafqx00p101mvucnmlj00"}]},{"id":"cmw3qtmkq010e01mv4rgukvfw","courseId":"cmw3oafqx00p101mvucnmlj00","title":"Первый полёт","order":2,"status":"PUBLISHED","lessons":[{"id":"cmw3qtmlc010q01mvaiidhcj2","slug":"01-urok-1-pervyi-polet","title":"Урок 1. Первый полёт","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmkq010e01mv4rgukvfw","courseId":"cmw3oafqx00p101mvucnmlj00"},{"id":"cmw3qtmle010s01mv8oxwpq3r","slug":"02-zadanie-pervyi-polet-kvadrat-bez-gnss","title":"Задание. Первый полёт. квадрат без GNSS","type":"THEORY","order":3,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmkq010e01mv4rgukvfw","courseId":"cmw3oafqx00p101mvucnmlj00"}]},{"id":"cmw3qtmkr010f01mvqfyhg8qm","courseId":"cmw3oafqx00p101mvucnmlj00","title":"Точная посадка по метке","order":3,"status":"PUBLISHED","lessons":[{"id":"cmw3qtmlh010u01mv8qg8uu88","slug":"01-urok-2-tochnaya-posadka-po-metke","title":"Урок 2. Точная посадка по метке","type":"THEORY","order":4,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmkr010f01mvqfyhg8qm","courseId":"cmw3oafqx00p101mvucnmlj00"},{"id":"cmw3qtmlj010w01mvi3eljuer","slug":"02-zadanie-tochnaya-posadka-po-metke","title":"Задание. Точная посадка по метке","type":"THEORY","order":5,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmkr010f01mvqfyhg8qm","courseId":"cmw3oafqx00p101mvucnmlj00"}]},{"id":"cmw3qtmks010g01mvxd6jqzzr","courseId":"cmw3oafqx00p101mvucnmlj00","title":"Охота за шарами. компьютерное зрение","order":4,"status":"PUBLISHED","lessons":[{"id":"cmw3qtmll010y01mvu1a4avx0","slug":"01-urok-3-ohota-za-sharami-kompyuternoe-zrenie","title":"Урок 3. Охота за шарами. компьютерное зрение","type":"THEORY","order":6,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmks010g01mvxd6jqzzr","courseId":"cmw3oafqx00p101mvucnmlj00"},{"id":"cmw3qtmln011001mv5ftrbfrr","slug":"02-zadanie-ohota-za-sharami","title":"Задание. Охота за шарами","type":"THEORY","order":7,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmks010g01mvxd6jqzzr","courseId":"cmw3oafqx00p101mvucnmlj00"}]},{"id":"cmw3qtmks010h01mv59s3tert","courseId":"cmw3oafqx00p101mvucnmlj00","title":"Сальто на ветру","order":5,"status":"PUBLISHED","lessons":[{"id":"cmw3qtmlq011201mv8q9f7o13","slug":"01-urok-4-salto-na-vetru","title":"Урок 4. Сальто на ветру","type":"THEORY","order":8,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmks010h01mv59s3tert","courseId":"cmw3oafqx00p101mvucnmlj00"},{"id":"cmw3qtmlt011401mvuf47ybvm","slug":"02-zadanie-salto-na-vetru","title":"Задание. Сальто на ветру","type":"THEORY","order":9,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmks010h01mv59s3tert","courseId":"cmw3oafqx00p101mvucnmlj00"}]},{"id":"cmw3qtmkt010i01mvp7dcss1r","courseId":"cmw3oafqx00p101mvucnmlj00","title":"Шоу трёх дронов","order":6,"status":"PUBLISHED","lessons":[{"id":"cmw3qtmlv011601mvwvoarmh0","slug":"01-urok-5-shou-treh-dronov","title":"Урок 5. Шоу трёх дронов","type":"THEORY","order":10,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmkt010i01mvp7dcss1r","courseId":"cmw3oafqx00p101mvucnmlj00"},{"id":"cmw3qtmlx011801mvxf8h30nf","slug":"02-zadanie-shou-treh-dronov","title":"Задание. Шоу трёх дронов","type":"THEORY","order":11,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmkt010i01mvp7dcss1r","courseId":"cmw3oafqx00p101mvucnmlj00"}]},{"id":"cmw3qtmku010j01mvo6yiv2uv","courseId":"cmw3oafqx00p101mvucnmlj00","title":"Наземный робот","order":7,"status":"PUBLISHED","lessons":[{"id":"cmw3qtmm0011a01mvnlefeoab","slug":"01-urok-6-nazemnyi-robot","title":"Урок 6. Наземный робот","type":"THEORY","order":12,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmku010j01mvo6yiv2uv","courseId":"cmw3oafqx00p101mvucnmlj00"},{"id":"cmw3qtmm2011c01mvn6q9wgf5","slug":"02-zadanie-nazemnyi-robot-kvadrat-po-odometrii","title":"Задание. Наземный робот. квадрат по одометрии","type":"THEORY","order":13,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmku010j01mvo6yiv2uv","courseId":"cmw3oafqx00p101mvucnmlj00"}]},{"id":"cmw3qtmku010k01mvwg1bpam3","courseId":"cmw3oafqx00p101mvucnmlj00","title":"Финал. посадка под вентилятором","order":8,"status":"PUBLISHED","lessons":[{"id":"cmw3qtmm4011e01mvvi91v27h","slug":"01-urok-7-final-posadka-pod-ventilyatorom","title":"Урок 7. Финал. посадка под вентилятором","type":"THEORY","order":14,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmku010k01mvwg1bpam3","courseId":"cmw3oafqx00p101mvucnmlj00"},{"id":"cmw3qtmm8011g01mvurhm3mr6","slug":"02-zadanie-final-posadka-pod-ventilyatorom","title":"Задание. Финал. посадка под вентилятором","type":"THEORY","order":15,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmw3qtmku010k01mvwg1bpam3","courseId":"cmw3oafqx00p101mvucnmlj00"}]}],"lessons":[],"_count":{"modules":9,"lessons":16,"acceptedUsers":0},"organization":null,"createdBy":null},{"id":"cmoykymrp00003oqv37p7g6xf","slug":"gebondar-ros-2-jazzy","title":"GeBondar: ROS 2 Jazzy","description":null,"level":"BEGINNER","duration":null,"status":"PUBLISHED","publicationApproved":true,"accessType":"PUBLIC","thumbnail":"https://api.edu.sverk.tech/api/storage/file?key=courses%2F1778351222999-jJklQTj2arl6.png","order":0,"isPublicInCatalog":true,"isDocumentation":false,"gitlabSourceUrl":null,"organizationId":null,"createdById":null,"organizationVisibility":"PUBLIC","metadata":null,"createdAt":"2026-05-09T16:50:44.293Z","updatedAt":"2026-05-09T18:27:06.097Z","deletedAt":null,"modules":[{"id":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 1 (install ROS2 and testing)","order":0,"status":"PUBLISHED","lessons":[{"id":"cmoykymsc000e3oqvuimia910","slug":"readme","title":"README","type":"THEORY","order":0,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymsh000g3oqvvoenp78i","slug":"ros2-doctor","title":"Ros2 doctor","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymsl000i3oqvjwrizbgw","slug":"ros2-environment","title":"Ros2 environment","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymsq000k3oqvmhjrdy5h","slug":"ros2-humble-install","title":"Ros2 humble install","type":"THEORY","order":3,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymsv000m3oqv8kejm92f","slug":"ros2-jazzy-install","title":"Ros2 jazzy install","type":"THEORY","order":4,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymt1000o3oqvfm3mf0ks","slug":"ros2-rqt","title":"Ros2 rqt","type":"THEORY","order":5,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymt6000q3oqvyfcrl8mh","slug":"ros2-testing","title":"Ros2 testing","type":"THEORY","order":6,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymta000s3oqv8ecbwj3h","slug":"ros2-turtlesim","title":"Ros2 turtlesim","type":"THEORY","order":7,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymte000u3oqvxg6ob2ri","slug":"rqt-console","title":"Rqt console","type":"THEORY","order":8,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymtj000w3oqvkz7o3x0x","slug":"windows-wsl2-jazzy-install","title":"Windows wsl2 jazzy install","type":"THEORY","order":9,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrs00013oqv5ee2zvhq","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 2 (nodes and topics)","order":1,"status":"PUBLISHED","lessons":[{"id":"cmoykymtn000y3oqvl5vzx5j4","slug":"readme-2","title":"README","type":"THEORY","order":10,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymtr00103oqv52fontt6","slug":"ros2-bag","title":"Ros2 bag","type":"THEORY","order":11,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymtw00123oqvj8ms8zw3","slug":"rosdep","title":"Rosdep","type":"THEORY","order":12,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymu100143oqvqhk3j6pw","slug":"understanding-nodes","title":"Understanding nodes","type":"THEORY","order":13,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymu700163oqvcvwyaofi","slug":"understanding-topics","title":"Understanding topics","type":"THEORY","order":14,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymuc00183oqvk0zlkwxq","slug":"workspace-colcon-package","title":"Workspace colcon package","type":"THEORY","order":15,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymuk001a3oqvyrzww1vr","slug":"writing-listener","title":"Writing listener","type":"THEORY","order":16,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymuw001c3oqvmvcpph3g","slug":"writing-talker","title":"Writing talker","type":"THEORY","order":17,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymru00023oqvju26l464","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykymrv00033oqvm4c4aicy","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 3 (actions and services)","order":2,"status":"PUBLISHED","lessons":[{"id":"cmoykymv0001e3oqva9lvqnbk","slug":"readme-3","title":"README","type":"THEORY","order":18,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrv00033oqvm4c4aicy","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymv7001g3oqvrfv2rr6j","slug":"understanding-actions","title":"Understanding actions","type":"THEORY","order":19,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrv00033oqvm4c4aicy","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymve001i3oqveunfcr3o","slug":"understanding-services","title":"Understanding services","type":"THEORY","order":20,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrv00033oqvm4c4aicy","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymvm001k3oqv6rma35yi","slug":"writing-action","title":"Writing action","type":"THEORY","order":21,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrv00033oqvm4c4aicy","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymvr001m3oqvsmititw9","slug":"writing-fibonacci-action","title":"Writing fibonacci action","type":"THEORY","order":22,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrv00033oqvm4c4aicy","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymvy001o3oqvfjkvw1oy","slug":"writing-service","title":"Writing service","type":"THEORY","order":23,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrv00033oqvm4c4aicy","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykymrw00043oqvq7ez40e8","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 4 (launches and parameters)","order":3,"status":"PUBLISHED","lessons":[{"id":"cmoykymw3001q3oqvh20vhxrl","slug":"readme-4","title":"README","type":"THEORY","order":24,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrw00043oqvq7ez40e8","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymw7001s3oqveushipza","slug":"understanding-launches","title":"Understanding launches","type":"THEORY","order":25,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrw00043oqvq7ez40e8","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymwe001u3oqvu88j0s0c","slug":"understanding-parameters","title":"Understanding parameters","type":"THEORY","order":26,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrw00043oqvq7ez40e8","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymwk001w3oqvbz8fh61s","slug":"writing-launches","title":"Writing launches","type":"THEORY","order":27,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrw00043oqvq7ez40e8","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykymrx00053oqv41fdjaf3","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 5 (URDF and XACRO)","order":4,"status":"PUBLISHED","lessons":[{"id":"cmoykymwo001y3oqvxk0rzq3w","slug":"exporting-urdf","title":"Exporting URDF","type":"THEORY","order":28,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrx00053oqv41fdjaf3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymwu00203oqvvlwi0llj","slug":"movable-robot","title":"Movable robot","type":"THEORY","order":29,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrx00053oqv41fdjaf3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymwz00223oqvmyejnxee","slug":"physical-and-collisions","title":"Physical and collisions","type":"THEORY","order":30,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrx00053oqv41fdjaf3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymx600243oqvv8qklnxd","slug":"readme-5","title":"README","type":"THEORY","order":31,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrx00053oqv41fdjaf3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymxd00263oqviot42qd2","slug":"understanding-urdf","title":"Understanding URDF","type":"THEORY","order":32,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrx00053oqv41fdjaf3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymxk00283oqvplkgzdlg","slug":"understanding-xacro","title":"Understanding xacro","type":"THEORY","order":33,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrx00053oqv41fdjaf3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymxr002a3oqvrelcgn8h","slug":"writing-state-publisher","title":"Writing state publisher","type":"THEORY","order":34,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrx00053oqv41fdjaf3","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykymry00063oqvjs7r9mo9","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 6 (RViz2 and rqt)","order":5,"status":"PUBLISHED","lessons":[{"id":"cmoykymxy002c3oqvjh7k4zj6","slug":"readme-6","title":"README","type":"THEORY","order":35,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymry00063oqvjs7r9mo9","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymy6002e3oqv0fhf8ok1","slug":"rviz-introduction","title":"RViz introduction","type":"THEORY","order":36,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymry00063oqvjs7r9mo9","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykymry00073oqvvm5c9oc3","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 7 (TF2)","order":6,"status":"PUBLISHED","lessons":[{"id":"cmoykymya002g3oqv1jb1ymld","slug":"adding-tf-frame","title":"Adding tf frame","type":"THEORY","order":37,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymry00073oqvvm5c9oc3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymye002i3oqvmu2ntp5e","slug":"dynamic-tf-broadcaster","title":"Dynamic tf broadcaster","type":"THEORY","order":38,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymry00073oqvvm5c9oc3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymyj002k3oqvnnaxymyk","slug":"introducing-tf2","title":"Introducing tf2","type":"THEORY","order":39,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymry00073oqvvm5c9oc3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymyv002m3oqvschsnsku","slug":"readme-7","title":"README","type":"THEORY","order":40,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymry00073oqvvm5c9oc3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymyz002o3oqvf9myiejd","slug":"static-tf-broadcaster","title":"Static tf broadcaster","type":"THEORY","order":41,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymry00073oqvvm5c9oc3","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykymz4002q3oqvju7iilre","slug":"writing-tf-listener","title":"Writing tf listener","type":"THEORY","order":42,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymry00073oqvvm5c9oc3","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykymrz00083oqv68bugvxe","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 8 (Gazebo)","order":7,"status":"PUBLISHED","lessons":[{"id":"cmoykymzh002s3oqvz3jgvclp","slug":"readme-8","title":"README","type":"THEORY","order":43,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykymrz00083oqv68bugvxe","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykyms000093oqvsxn7l4rh","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 9 (NAV2)","order":8,"status":"PUBLISHED","lessons":[{"id":"cmoykymzp002u3oqvdg3cix2t","slug":"readme-9","title":"README","type":"THEORY","order":44,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykyms000093oqvsxn7l4rh","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykyms1000a3oqvurat1s15","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 10 (turtlebot3 sim)","order":9,"status":"PUBLISHED","lessons":[{"id":"cmoykymzt002w3oqv1hcnmtdp","slug":"install-jazzy-turtlebot3","title":"Install jazzy turtlebot3","type":"THEORY","order":45,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykyms1000a3oqvurat1s15","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykyn02002y3oqvbahkkeao","slug":"readme-10","title":"README","type":"THEORY","order":46,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykyms1000a3oqvurat1s15","courseId":"cmoykymrp00003oqv37p7g6xf"},{"id":"cmoykyn0600303oqvhrlzdfnx","slug":"turtlebot3-intro","title":"Turtlebot3 intro","type":"THEORY","order":47,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykyms1000a3oqvurat1s15","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykyms2000b3oqvm2r3f6r5","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Lesson 11 (micro ros)","order":10,"status":"PUBLISHED","lessons":[{"id":"cmoykyn0f00323oqvfwa2mtv4","slug":"readme-11","title":"README","type":"THEORY","order":48,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykyms2000b3oqvm2r3f6r5","courseId":"cmoykymrp00003oqv37p7g6xf"}]},{"id":"cmoykyms3000c3oqv2bapjqx3","courseId":"cmoykymrp00003oqv37p7g6xf","title":"Ros2 ws","order":11,"status":"PUBLISHED","lessons":[{"id":"cmoykyn1300363oqv1994lfvd","slug":"readme-13","title":"Src: README","type":"THEORY","order":50,"status":"PUBLISHED","estimatedTime":null,"moduleId":"cmoykyms3000c3oqv2bapjqx3","courseId":"cmoykymrp00003oqv37p7g6xf"}]}],"lessons":[{"id":"cmoykyn0r00343oqv4jvb9sf5","slug":"readme-12","title":"README","type":"THEORY","order":49,"status":"PUBLISHED","estimatedTime":null,"moduleId":null,"courseId":"cmoykymrp00003oqv37p7g6xf"}],"_count":{"modules":12,"lessons":51,"acceptedUsers":0},"organization":null,"createdBy":null},{"id":"cmoj1aj8x002w3qo9chpbesr5","slug":"znakomstvo-s-platformoy","title":"Знакомство с платформой Сверх","description":"Первый запуск Python, устройство учебной среды и короткая миссия в браузерном симуляторе. Научимся читать результат команды, выбирать координаты и подтверждать завершение полёта.","level":"BEGINNER","duration":75,"status":"PUBLISHED","publicationApproved":true,"accessType":"PUBLIC","thumbnail":"https://api.edu.sverk.tech/api/storage/file?key=courses%2F1777819805892-pTrXjWkvYc4G.png","order":2,"isPublicInCatalog":true,"isDocumentation":false,"gitlabSourceUrl":null,"organizationId":null,"createdById":null,"organizationVisibility":"PUBLIC","metadata":null,"createdAt":"2026-04-28T19:43:34.641Z","updatedAt":"2026-10-12T19:43:18.939Z","deletedAt":null,"modules":[{"id":"cmopvho9000383qmq0hh3z5o3","courseId":"cmoj1aj8x002w3qo9chpbesr5","title":"О платформе Сверх","order":1,"status":"PUBLISHED","lessons":[{"id":"cmopvhoc5003a3qmqni13q7c6","slug":"chto-takoe-sverh","title":"Что такое Сверх","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvho9000383qmq0hh3z5o3","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhofe003c3qmqiym21ndp","slug":"dlya-kogo-i-kak-uchitsa","title":"Для кого этот курс и как учиться","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":7,"moduleId":"cmopvho9000383qmq0hh3z5o3","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhoxs003i3qmqmp9mel89","slug":"quiz-o-platforme","title":"Мини-квиз: о платформе","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":4,"moduleId":"cmopvho9000383qmq0hh3z5o3","courseId":"cmoj1aj8x002w3qo9chpbesr5"}]},{"id":"cmopvhp3o003j3qmqjjss8ixa","courseId":"cmoj1aj8x002w3qo9chpbesr5","title":"Первые шаги в редакторе","order":2,"status":"PUBLISHED","lessons":[{"id":"cmopvhp6t003l3qmqo31va6xv","slug":"interfeis-platformy","title":"Интерфейс платформы за 5 минут","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":6,"moduleId":"cmopvhp3o003j3qmqjjss8ixa","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhped003n3qmq4uz8xsav","slug":"pervyy-zapusk-koda","title":"Первый запуск Python в браузере","type":"COLAB","order":2,"status":"PUBLISHED","estimatedTime":12,"moduleId":"cmopvhp3o003j3qmqjjss8ixa","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhpiq003p3qmq25ajsjx6","slug":"blockly-i-python","title":"От Blockly к Python без барьеров","type":"THEORY","order":3,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvhp3o003j3qmqjjss8ixa","courseId":"cmoj1aj8x002w3qo9chpbesr5"}]},{"id":"cmopvhprf003q3qmqsy5ka0bb","courseId":"cmoj1aj8x002w3qo9chpbesr5","title":"Программирование дронов","order":3,"status":"PUBLISHED","lessons":[{"id":"cmopvhpvo003s3qmq2bw55k9d","slug":"anatomiya-programmy-drona","title":"Анатомия программы дрона","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvhprf003q3qmqsy5ka0bb","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhq2a003u3qmqxyyj4tke","slug":"pishem-pervuyu-missiyu","title":"Пишем первую миссию","type":"PRACTICE","order":2,"status":"PUBLISHED","estimatedTime":18,"moduleId":"cmopvhprf003q3qmqsy5ka0bb","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhqo800403qmqtehvyelu","slug":"quiz-pro-missii","title":"Квиз: основы миссии","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":5,"moduleId":"cmopvhprf003q3qmqsy5ka0bb","courseId":"cmoj1aj8x002w3qo9chpbesr5"}]},{"id":"cmopvhqv700413qmqrnevnasa","courseId":"cmoj1aj8x002w3qo9chpbesr5","title":"Симулятор и физика","order":4,"status":"PUBLISHED","lessons":[{"id":"cmopvhqyf00433qmqy2id31au","slug":"chto-takoe-simulator","title":"Что даёт 3D-симулятор","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvhqv700413qmqrnevnasa","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhr4a00453qmqi22idsnt","slug":"razbiraem-aruco","title":"ArUco-маркеры на пальцах","type":"COLAB","order":2,"status":"PUBLISHED","estimatedTime":12,"moduleId":"cmopvhqv700413qmqrnevnasa","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhrky004a3qmqu4asx05c","slug":"quiz-simulator","title":"Квиз: симулятор и навигация","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":4,"moduleId":"cmopvhqv700413qmqrnevnasa","courseId":"cmoj1aj8x002w3qo9chpbesr5"}]},{"id":"cmopvhrsk004b3qmqt2apwwaj","courseId":"cmoj1aj8x002w3qo9chpbesr5","title":"Куда двигаться дальше","order":5,"status":"PUBLISHED","lessons":[{"id":"cmopvhrvl004d3qmqx9mtmsrv","slug":"kursy-i-treki","title":"Какие курсы пройти после этого","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":6,"moduleId":"cmopvhrsk004b3qmqt2apwwaj","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhryv004f3qmqibnri8ha","slug":"kak-rabotat-s-soobshchestvom","title":"Сообщество и поддержка","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":5,"moduleId":"cmopvhrsk004b3qmqt2apwwaj","courseId":"cmoj1aj8x002w3qo9chpbesr5"},{"id":"cmopvhsnq004n3qmqlatvqwwv","slug":"itogovyy-kviz","title":"Итоговый квиз","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":7,"moduleId":"cmopvhrsk004b3qmqt2apwwaj","courseId":"cmoj1aj8x002w3qo9chpbesr5"}]}],"lessons":[],"_count":{"modules":5,"lessons":15,"acceptedUsers":0},"organization":null,"createdBy":null},{"id":"cmopvl14j004o3qmq1pmq2x8a","slug":"python-dlya-dronov","title":"Python для дронов с нуля","description":"Базовый Python через примеры, в которых каждый кусок кода что-то делает с дроном. Переменные, циклы, функции, списки, словари — всё на сценариях полёта.","level":"BEGINNER","duration":240,"status":"PUBLISHED","publicationApproved":true,"accessType":"PUBLIC","thumbnail":"https://api.edu.sverk.tech/api/storage/file?key=theory%2F1777819950614-45km47whv36k.jpg","order":4,"isPublicInCatalog":true,"isDocumentation":false,"gitlabSourceUrl":null,"organizationId":null,"createdById":null,"organizationVisibility":"PUBLIC","metadata":null,"createdAt":"2026-05-03T14:38:09.907Z","updatedAt":"2026-06-30T17:31:25.969Z","deletedAt":null,"modules":[{"id":"cmopvl1ac004p3qmq0b2yeq6o","courseId":"cmopvl14j004o3qmq1pmq2x8a","title":"Первые шаги: переменные и операции","order":1,"status":"PUBLISHED","lessons":[{"id":"cmopvl1e4004r3qmq4auien2k","slug":"zachem-python-dlya-dronov","title":"Зачем дрону Python","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvl1ac004p3qmq0b2yeq6o","courseId":"cmopvl14j004o3qmq1pmq2x8a"},{"id":"cmopvl1k6004t3qmq9bmsk7uy","slug":"peremennye-i-tipy","title":"Переменные и базовые типы","type":"COLAB","order":2,"status":"PUBLISHED","estimatedTime":18,"moduleId":"cmopvl1ac004p3qmq0b2yeq6o","courseId":"cmopvl14j004o3qmq1pmq2x8a"},{"id":"cmopvl1xi004x3qmq2atxq3iz","slug":"task-konvertor-vysoty","title":"Задача: конвертер высоты","type":"PROGRAMMING","order":3,"status":"PUBLISHED","estimatedTime":15,"moduleId":"cmopvl1ac004p3qmq0b2yeq6o","courseId":"cmopvl14j004o3qmq1pmq2x8a"}]},{"id":"cmopvl23r004y3qmqgd9wfj2q","courseId":"cmopvl14j004o3qmq1pmq2x8a","title":"Управление потоком: if, while, for","order":2,"status":"PUBLISHED","lessons":[{"id":"cmopvl26t00503qmqgx27wzm2","slug":"if-i-bool-logika","title":"if / elif / else и булева логика","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvl23r004y3qmqgd9wfj2q","courseId":"cmopvl14j004o3qmq1pmq2x8a"},{"id":"cmopvl2cs00523qmqoxvmhten","slug":"tsikly-while-for","title":"Циклы while и for","type":"COLAB","order":2,"status":"PUBLISHED","estimatedTime":18,"moduleId":"cmopvl23r004y3qmqgd9wfj2q","courseId":"cmopvl14j004o3qmq1pmq2x8a"},{"id":"cmopvl2uw00583qmq6yru1g0l","slug":"quiz-flow","title":"Квиз: условия и циклы","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":6,"moduleId":"cmopvl23r004y3qmqgd9wfj2q","courseId":"cmopvl14j004o3qmq1pmq2x8a"}]},{"id":"cmopvl30k00593qmqn1vloui4","courseId":"cmopvl14j004o3qmq1pmq2x8a","title":"Функции и структуры данных","order":3,"status":"PUBLISHED","lessons":[{"id":"cmopvl33k005b3qmq1fzt651l","slug":"funktsii","title":"Функции — кирпичи большой программы","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvl30k00593qmqn1vloui4","courseId":"cmopvl14j004o3qmq1pmq2x8a"},{"id":"cmopvl39f005d3qmqvvxib3sj","slug":"spiski-i-slovari","title":"Списки и словари","type":"COLAB","order":2,"status":"PUBLISHED","estimatedTime":18,"moduleId":"cmopvl30k00593qmqn1vloui4","courseId":"cmopvl14j004o3qmq1pmq2x8a"},{"id":"cmopvl3nw005h3qmqx9cqchbj","slug":"task-srednyaya-vysota","title":"Задача: средняя высота полёта","type":"PROGRAMMING","order":3,"status":"PUBLISHED","estimatedTime":18,"moduleId":"cmopvl30k00593qmqn1vloui4","courseId":"cmopvl14j004o3qmq1pmq2x8a"}]},{"id":"cmopvl3ur005i3qmq3o6eozii","courseId":"cmopvl14j004o3qmq1pmq2x8a","title":"Модули, классы и реальный код миссии","order":4,"status":"PUBLISHED","lessons":[{"id":"cmopvl3xw005k3qmqh8el1lsg","slug":"moduli-i-importy","title":"Модули и импорты","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvl3ur005i3qmq3o6eozii","courseId":"cmopvl14j004o3qmq1pmq2x8a"},{"id":"cmopvl421005m3qmqr591xaaa","slug":"klassy-bazovo","title":"Классы — базовая идея","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvl3ur005i3qmq3o6eozii","courseId":"cmopvl14j004o3qmq1pmq2x8a"},{"id":"cmopvl4ey005q3qmqgbe6e7q9","slug":"task-proyti-marshrut","title":"Задача: общая длина маршрута","type":"PROGRAMMING","order":3,"status":"PUBLISHED","estimatedTime":20,"moduleId":"cmopvl3ur005i3qmq3o6eozii","courseId":"cmopvl14j004o3qmq1pmq2x8a"}]}],"lessons":[],"_count":{"modules":4,"lessons":12,"acceptedUsers":0},"organization":null,"createdBy":null},{"id":"cmopvr0s9006y3qmqs9hbdmli","slug":"computer-vision-dronov","title":"Компьютерное зрение для дронов","description":"Пиксели, цветовые маски и морфология на выполняемых примерах. Получим кадр нижней камеры в симуляторе, обнаружим ArUco через OpenCV, оценим её положение и выполним центрирование перед посадкой.","level":"INTERMEDIATE","duration":220,"status":"PUBLISHED","publicationApproved":true,"accessType":"PUBLIC","thumbnail":"https://api.edu.sverk.tech/api/storage/file?key=theory%2F1777819950849-GihcfTd7yXgc.png","order":5,"isPublicInCatalog":true,"isDocumentation":false,"gitlabSourceUrl":null,"organizationId":null,"createdById":null,"organizationVisibility":"PUBLIC","metadata":null,"createdAt":"2026-05-03T14:42:49.401Z","updatedAt":"2026-10-12T19:43:18.939Z","deletedAt":null,"modules":[{"id":"cmopvr0ya00713qmqps39lgvh","courseId":"cmopvr0s9006y3qmqs9hbdmli","title":"Откуда берётся картинка","order":1,"status":"PUBLISHED","lessons":[{"id":"cmopvr11y00753qmq3up3e4sf","slug":"kamera-na-drone","title":"Камера на дроне: что и как","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":9,"moduleId":"cmopvr0ya00713qmqps39lgvh","courseId":"cmopvr0s9006y3qmqs9hbdmli"},{"id":"cmopvr15f00793qmqt54vryoh","slug":"rgb-i-hsv","title":"RGB и HSV: почему оттенок важнее","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvr0ya00713qmqps39lgvh","courseId":"cmopvr0s9006y3qmqs9hbdmli"},{"id":"cmopvr1bc007d3qmq9gad4btl","slug":"rabotaem-s-pixelami","title":"Работаем с пикселями","type":"COLAB","order":3,"status":"PUBLISHED","estimatedTime":14,"moduleId":"cmopvr0ya00713qmqps39lgvh","courseId":"cmopvr0s9006y3qmqs9hbdmli"}]},{"id":"cmopvr1hd007f3qmq3ff4f7s7","courseId":"cmopvr0s9006y3qmqs9hbdmli","title":"ArUco-маркеры — рабочая лошадка","order":2,"status":"PUBLISHED","lessons":[{"id":"cmopvr1kw007j3qmqj7afnfuf","slug":"chto-takoe-aruco","title":"Как устроен ArUco-маркер","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvr1hd007f3qmq3ff4f7s7","courseId":"cmopvr0s9006y3qmqs9hbdmli"},{"id":"cmopvr1rd007m3qmq1iny8710","slug":"detekciya-aruco","title":"Кадр камеры, обнаружение ArUco и посадка","type":"PRACTICE","order":2,"status":"PUBLISHED","estimatedTime":15,"moduleId":"cmopvr1hd007f3qmq3ff4f7s7","courseId":"cmopvr0s9006y3qmqs9hbdmli"},{"id":"cmopvr29r007z3qmqsbcbrb5r","slug":"quiz-aruco","title":"Квиз: ArUco","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":5,"moduleId":"cmopvr1hd007f3qmq3ff4f7s7","courseId":"cmopvr0s9006y3qmqs9hbdmli"}]},{"id":"cmopvr2fj00813qmq1no3bk6d","courseId":"cmopvr0s9006y3qmqs9hbdmli","title":"Поиск объектов по цвету","order":3,"status":"PUBLISHED","lessons":[{"id":"cmopvr2io00843qmqrnw7ch6m","slug":"tsvetovoy-tracking","title":"Цветовой трекинг шаг за шагом","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvr2fj00813qmq1no3bk6d","courseId":"cmopvr0s9006y3qmqs9hbdmli"},{"id":"cmopvr2oi00883qmqabpbux2n","slug":"morfologiya","title":"Морфология: очистка бинарной маски","type":"COLAB","order":2,"status":"PUBLISHED","estimatedTime":12,"moduleId":"cmopvr2fj00813qmq1no3bk6d","courseId":"cmopvr0s9006y3qmqs9hbdmli"},{"id":"cmopvr30c008i3qmqf9i9l5l1","slug":"task-srednyaya-yarkost","title":"Задача: средняя яркость кадра","type":"PROGRAMMING","order":3,"status":"PUBLISHED","estimatedTime":15,"moduleId":"cmopvr2fj00813qmq1no3bk6d","courseId":"cmopvr0s9006y3qmqs9hbdmli"}]},{"id":"cmopvr369008k3qmqfem53rhg","courseId":"cmopvr0s9006y3qmqs9hbdmli","title":"Соединяем всё: посадка по маркеру","order":4,"status":"PUBLISHED","lessons":[{"id":"cmopvr39h008o3qmqgopwdw1u","slug":"scenariy-posadki","title":"Сценарий: автономная посадка по ArUco","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":12,"moduleId":"cmopvr369008k3qmqfem53rhg","courseId":"cmopvr0s9006y3qmqs9hbdmli"},{"id":"cmopvr3fe008r3qmqhjmqa4ae","slug":"calculate-correction","title":"Считаем коррекцию по кадру","type":"COLAB","order":2,"status":"PUBLISHED","estimatedTime":12,"moduleId":"cmopvr369008k3qmqfem53rhg","courseId":"cmopvr0s9006y3qmqs9hbdmli"},{"id":"cmopvr3x500953qmq03a19j0z","slug":"quiz-cv-final","title":"Финальный квиз курса","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":7,"moduleId":"cmopvr369008k3qmqfem53rhg","courseId":"cmopvr0s9006y3qmqs9hbdmli"}]}],"lessons":[],"_count":{"modules":4,"lessons":12,"acceptedUsers":0},"organization":null,"createdBy":null},{"id":"cmopvr0sa006z3qmqxh245gl4","slug":"autonomous-navigation","title":"Автономная навигация дронов","description":"Практическое введение в команды навигации: map и body, подтверждение ArUco, ожидание прибытия и обработка ошибок. Выполним маршрут в симуляторе и проверим расчёт обхода точек.","level":"INTERMEDIATE","duration":280,"status":"PUBLISHED","publicationApproved":true,"accessType":"PUBLIC","thumbnail":"https://api.edu.sverk.tech/api/storage/file?key=theory%2F1777819956845-u9R5LQhT6lPI.png","order":6,"isPublicInCatalog":true,"isDocumentation":false,"gitlabSourceUrl":null,"organizationId":null,"createdById":null,"organizationVisibility":"PUBLIC","metadata":null,"createdAt":"2026-05-03T14:42:49.400Z","updatedAt":"2026-10-12T19:43:18.939Z","deletedAt":null,"modules":[{"id":"cmopvr0ya00703qmqs2zd1ma0","courseId":"cmopvr0sa006z3qmqxh245gl4","title":"ROS и автопилот: как они общаются","order":1,"status":"PUBLISHED","lessons":[{"id":"cmopvr11w00743qmqpysxg79q","slug":"ros-osnovy","title":"Топики, сервисы и интерфейс симулятора","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvr0ya00703qmqs2zd1ma0","courseId":"cmopvr0sa006z3qmqxh245gl4"},{"id":"cmopvr15d00783qmqr3xvayw4","slug":"mavros-i-px4","title":"Автопилот и транспорт команд","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvr0ya00703qmqs2zd1ma0","courseId":"cmopvr0sa006z3qmqxh245gl4"},{"id":"cmopvr1o5007l3qmqkq2hllvl","slug":"quiz-ros","title":"Квиз: ROS и MAVROS","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":5,"moduleId":"cmopvr0ya00703qmqs2zd1ma0","courseId":"cmopvr0sa006z3qmqxh245gl4"}]},{"id":"cmopvr1u4007n3qmq4wko5wc4","courseId":"cmopvr0sa006z3qmqxh245gl4","title":"Координатные фреймы и навигация","order":2,"status":"PUBLISHED","lessons":[{"id":"cmopvr1xd007r3qmq5qjst2ll","slug":"frame-id-explained","title":"Координатные фреймы — frame_id","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvr1u4007n3qmq4wko5wc4","courseId":"cmopvr0sa006z3qmqxh245gl4"},{"id":"cmopvr23t007u3qmquqr7xu6w","slug":"marshrut-na-aruco-mape","title":"Маршрут вокруг наблюдаемой метки","type":"PRACTICE","order":2,"status":"PUBLISHED","estimatedTime":18,"moduleId":"cmopvr1u4007n3qmq4wko5wc4","courseId":"cmopvr0sa006z3qmqxh245gl4"},{"id":"cmopvr2fl00823qmqipsey7nz","slug":"task-tsp-greedy","title":"Задача: жадный обход точек","type":"PROGRAMMING","order":3,"status":"PUBLISHED","estimatedTime":25,"moduleId":"cmopvr1u4007n3qmq4wko5wc4","courseId":"cmopvr0sa006z3qmqxh245gl4"}]},{"id":"cmopvr2lg00853qmqhar7gy30","courseId":"cmopvr0sa006z3qmqxh245gl4","title":"Безопасность и failsafe","order":3,"status":"PUBLISHED","lessons":[{"id":"cmopvr2oj00893qmq54cv7wgb","slug":"failsafe-i-rtl","title":"Failsafe: что происходит, когда всё идёт не так","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvr2lg00853qmqhar7gy30","courseId":"cmopvr0sa006z3qmqxh245gl4"},{"id":"cmopvr2rm008c3qmq7z88awp5","slug":"obkhod-prepyatstviy-osnovy","title":"Обход препятствий — базовая идея","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvr2lg00853qmqhar7gy30","courseId":"cmopvr0sa006z3qmqxh245gl4"},{"id":"cmopvr39g008n3qmqc7s1cdj4","slug":"quiz-failsafe","title":"Квиз: безопасность","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":5,"moduleId":"cmopvr2lg00853qmqhar7gy30","courseId":"cmopvr0sa006z3qmqxh245gl4"}]},{"id":"cmopvr3fd008q3qmqkq80jrge","courseId":"cmopvr0sa006z3qmqxh245gl4","title":"Полная миссия и подготовка к соревнованию","order":4,"status":"PUBLISHED","lessons":[{"id":"cmopvr3ii008u3qmqavtcg0ww","slug":"polnaya-missiya","title":"Миссия с проверкой каждого этапа","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":10,"moduleId":"cmopvr3fd008q3qmqkq80jrge","courseId":"cmopvr0sa006z3qmqxh245gl4"},{"id":"cmopvr3lh008x3qmq2a0iwaph","slug":"kak-trenirovatsya","title":"Как тренироваться к финалу","type":"THEORY","order":2,"status":"PUBLISHED","estimatedTime":7,"moduleId":"cmopvr3fd008q3qmqkq80jrge","courseId":"cmopvr0sa006z3qmqxh245gl4"},{"id":"cmopvr48p00993qmqn2cmezv6","slug":"quiz-final-nav","title":"Финальный квиз","type":"QUIZ","order":3,"status":"PUBLISHED","estimatedTime":8,"moduleId":"cmopvr3fd008q3qmqkq80jrge","courseId":"cmopvr0sa006z3qmqxh245gl4"}]}],"lessons":[],"_count":{"modules":4,"lessons":12,"acceptedUsers":0},"organization":null,"createdBy":null},{"id":"cmoqgwmw300g83qn20eek8ie4","slug":"roy-primer","title":"Практика управления роем","description":"Четыре выполняемых примера на подготовленных сценах: последовательное управление аппаратами, сбор данных лидара, формация змейкой и маршрут по лабиринту. У каждого примера есть условия запуска и проверяемый результат.","level":"BEGINNER","duration":null,"status":"PUBLISHED","publicationApproved":true,"accessType":"PUBLIC","thumbnail":"https://api.edu.sverk.tech/api/storage/file?key=courses%2F1777855484945-DqiAVAIoK3go.jpg","order":7,"isPublicInCatalog":true,"isDocumentation":false,"gitlabSourceUrl":null,"organizationId":null,"createdById":null,"organizationVisibility":"PUBLIC","metadata":null,"createdAt":"2026-05-04T00:35:03.267Z","updatedAt":"2026-10-12T19:43:18.939Z","deletedAt":null,"modules":[{"id":"cmoqgx8lx00g93qn21u4ae3fr","courseId":"cmoqgwmw300g83qn20eek8ie4","title":"Рой. Вводный.","order":1,"status":"PUBLISHED","lessons":[{"id":"cmoqgy71700ga3qn2wje1kets","slug":"pervyy-polet","title":"Первый полёт четырёх аппаратов","type":"PRACTICE","order":1,"status":"PUBLISHED","estimatedTime":99,"moduleId":"cmoqgx8lx00g93qn21u4ae3fr","courseId":"cmoqgwmw300g83qn20eek8ie4"},{"id":"cmouh2m1c001l3qpfwe845v1w","slug":"razmetka-territorii-s-ispolzovaniem-roya","title":"Облака лидара от четырёх аппаратов","type":"PRACTICE","order":2,"status":"PUBLISHED","estimatedTime":15,"moduleId":"cmoqgx8lx00g93qn21u4ae3fr","courseId":"cmoqgwmw300g83qn20eek8ie4"},{"id":"cmp3fxc4i002t3omq35gzlwhz","slug":"vosmerka-roem","title":"Рой проходит змейкой","type":"PRACTICE","order":3,"status":"PUBLISHED","estimatedTime":15,"moduleId":"cmoqgx8lx00g93qn21u4ae3fr","courseId":"cmoqgwmw300g83qn20eek8ie4"},{"id":"cmp3fzkzy00593omqtc5qwwke","slug":"prolet-labirinta","title":"Проверяемый маршрут в лабиринте","type":"PRACTICE","order":4,"status":"PUBLISHED","estimatedTime":15,"moduleId":"cmoqgx8lx00g93qn21u4ae3fr","courseId":"cmoqgwmw300g83qn20eek8ie4"}]}],"lessons":[],"_count":{"modules":1,"lessons":4,"acceptedUsers":0},"organization":null,"createdBy":null},{"id":"cmtvmb0ni00wg3vrs7l83km22","slug":"kompas-compas-core","title":"КОМПАС compas-core","description":null,"level":"ADVANCED","duration":10,"status":"PUBLISHED","publicationApproved":true,"accessType":"PUBLIC","thumbnail":"https://api.edu.sverk.tech/api/storage/file?key=courses%2F1789050212798-4dHqQz6HUf8w.png","order":10,"isPublicInCatalog":true,"isDocumentation":false,"gitlabSourceUrl":null,"organizationId":null,"createdById":"cmrv8l4xd02wp3oo9jsrz24eu","organizationVisibility":"PUBLIC","metadata":null,"createdAt":"2026-09-10T14:23:34.926Z","updatedAt":"2026-09-10T14:23:34.926Z","deletedAt":null,"modules":[{"id":"cmtvmb7ar00wh3vrs2bq6kp57","courseId":"cmtvmb0ni00wg3vrs7l83km22","title":"Инструкция","order":1,"status":"PUBLISHED","lessons":[{"id":"cmtvmefap00ww3vrs40ihgagc","slug":"zapuskaem-compas-core-u-sebya","title":"Запускаем compas core у себя","type":"THEORY","order":1,"status":"PUBLISHED","estimatedTime":15,"moduleId":"cmtvmb7ar00wh3vrs2bq6kp57","courseId":"cmtvmb0ni00wg3vrs7l83km22"}]}],"lessons":[],"_count":{"modules":1,"lessons":1,"acceptedUsers":0},"organization":null,"createdBy":{"id":"cmrv8l4xd02wp3oo9jsrz24eu","name":"Участник №3888514684","image":null}}],"meta":{"timestamp":"2026-11-09T10:45:21.837Z","total":8,"page":1,"limit":10,"totalPages":1}}