Содержание
- 2. Структура очной части курса Работа с реальными роботами Программирование робота Работа с периферией Телеуправление Автономная навигация
- 3. День 1 Работа с реальными роботами Разбор заочного курса, ответы на вопросы Управление роботом
- 4. Linux для роботов
- 5. Орг вопросы Wi-Fi TurtleBro или TurtleBro_5G turtlew001
- 6. Linux. Основы командной строки. Для программистов, разработчиков робототехники, операторов роботов и инженеров Terminal это один из
- 7. Linux. Основы командной строки. Основные команды Linux. ls (List - список) вывод списка файлов в текущей
- 8. Python для роботов
- 9. Python для роботов >>> print ("Hello robot") Hello robot >>> Основы и синтаксис a = 2
- 10. Python для роботов Числа и операции над ними Целые числа - int Действительные числа - float
- 11. Python для роботов Операторы сравнения чисел Истина - true Ложь - false > “Больше” — условие
- 12. Python для роботов Переменные и оператор присваивания Оператор присваивания = >>> moon_to_earth = 384400 >>> moon_to_earth
- 13. Python для роботов Ввод и вывод данных print(3 + 5) print(2 * 9, (6 - 9)
- 14. Python для роботов Преобразование типов Функция type() - возвращает тип аргумента Для явного преобразования типов переменной
- 15. Python для роботов Списки и строки Primes = [2, 3, 5, 7, 11, 13] Rainbow =
- 16. Python для роботов Ход выполнения программы a = 2 b = 3 c = a +
- 17. Python для роботов Ветвления хода программы if (5 > 3): print("Условие == true") print("Основной путь ветвления")
- 18. Python для роботов Логические операторы Стандартные логические операторы: логическое И, логическое ИЛИ, логическое НЕ (отрицание) логическое
- 19. Python для роботов Циклы while (условие == истина): код for (переменная in итерируемый объект): код с
- 20. Python для роботов Функции Определение - Описание функции. Алгоритм работы. Вызов - Выполнение функции. Непосредственно работа.
- 21. Python для роботов Область видимости Разделение доступа к переменным def function1(): a = 1 print(a) def
- 22. Python для роботов Глобальные переменные def function1(): global a a = 5 print(a) def function2(): global
- 23. Python для роботов Стандартные функции print(), input(), len(), type(), str(), int(), float(), list(), dict(), tuple(), range(),
- 24. Python для роботов Библиотека math round(x)Округляет число до ближайшего целого. Если дробная часть числа равна 0.5,
- 25. Python для роботов ООП Объектно-ориентированное программирование (ООП) — это парадигма программирования, где различные компоненты компьютерной программы
- 26. Python для роботов Класс и его экземпляр Каждый объект является экземпляром некоторого класса. Класс это некий
- 27. Python для роботов Разбор задач import math t = 10 x = 5 z = (9*math.pi*t
- 28. Python для роботов Разбор задач def rotate_left(triple): new_triple = list(triple) new_triple = [new_triple[1],new_triple[2],new_triple[0]] print(tuple(new_triple)) def rotate_right(triple):
- 29. Основы ROS
- 30. Основы ROS Установка и запуск ROS Инструкция установки ROS для Ubuntu http://wiki.ros.org/noetic/Installation/Ubuntu Настройка рабочего окружения
- 31. Основы ROS Базовые понятия ROS Мастер (Master), Мастер-Нода Нода (Node) Пакет (Package) Сообщение (Message) Топик (Topic)
- 32. Основы ROS Стандарты ROS Единицы измерений используемые в ROS, должны соответствовать единицам СИ Список всех стандартов
- 33. Разработка в ROS
- 34. Разработка в ROS Python для ROS rospy - это клиентская библиотека Python для ROS. Библиотека позволяет
- 35. Разработка в ROS Программа Издатель import rospy from std_msgs.msg import String rospy.init_node("welcome_node") pub = rospy.Publisher("welcome_topic", String,
- 36. Разработка в ROS Программа Подписчик import rospy from std_msgs.msg import String rospy.init_node("welcome_node") def callback(msg): print(msg) rospy.Subscriber("welcome_topic",
- 37. Разработка в ROS Взаимодействие Подписчика и Издателя в рамках одной ноды import rospy from geometry_msgs.msg import
- 38. Разработка в ROS Взаимодействие Подписчика и Издателя в рамках одной ноды 2 import rospy from geometry_msgs.msg
- 39. Разработка в ROS Взаимодействие Подписчика и Издателя в рамках одной ноды 2 def callback_handler(self, msg): self.distance_passed
- 40. Разработка в ROS Взаимодействие Подписчика и Издателя в рамках одной ноды 2 def callback_handler(self, msg): self.distance_passed
- 41. Разработка в ROS Разбор задач Доработать программу, чтобы при запуске программы робот черепаха двигалась по квадрату
- 42. Продвинутая разработка в ROS
- 43. Продвинутая разработка в ROS Сервис. Пример серверной части import rospy from rospy_tutorials.srv import AddTwoInts,AddTwoIntsResponse rospy.init_node('sum_server') def
- 44. Продвинутая разработка в ROS Сервис. Пример клиентской части import rospy import random from rospy_tutorials.srv import AddTwoInts
- 45. Продвинутая разработка в ROS Экшн-Сервер. Пример серверной части import rospy import actionlib from actionlib_tutorials.msg import FibonacciAction,
- 46. Продвинутая разработка в ROS Экшн-Сервер. Пример серверной части def execute_cb(self, goal): success = True self.feedback.sequence =
- 47. Продвинутая разработка в ROS Экшн-Сервер. Пример серверной части self.feedback.sequence.append(self.feedback.sequence[i] + self.feedback.sequence[i-1]) self.asr.publish_feedback(self.feedback) rospy.sleep(1) if success: self.result.sequence
- 48. Продвинутая разработка в ROS Экшн-Сервер. Пример серверной части
- 49. Продвинутая разработка в ROS Экшн-Сервер. Пример клиентской части import rospy import actionlib from actionlib_tutorials.msg import FibonacciAction,
- 50. Продвинутая разработка в ROS Экшн-Сервер. Пример клиентской части def done_callback(self, _, result): print(result) rospy.init_node('fibonacci_client_py') fib =
- 51. Продвинутая разработка в ROS Экшн-Сервер. Пример клиентской части
- 52. Продвинутая разработка в ROS Параметры в ROS Сервер параметров может хранить только простые переменные, числа, строки
- 53. Продвинутая разработка в ROS Параметры в ROS, пример работы с параметрами на Python import rospy rospy.init_node('params_demo')
- 54. Продвинутая разработка в ROS .bag файлы Идея использования ,bag файлов довольно проста и немного похожа на
- 55. Администрирование ROS
- 56. Пакеты в ROS. Утилита Catkin. Структура пакета Пакет ROS содержат множество различных файлов. Для того, чтобы
- 57. Пакеты в ROS. Утилита Catkin. Установка пакета из репозитория Поиск пакета ROS apt seach ros-noetic-Имя Если
- 58. Пакеты в ROS. Утилита Catkin. Сборка пакета из исходников Настройка catkin_ws Копирование директории пакета в catkin_ws/src/
- 59. Пакеты в ROS. Утилита Catkin. создание собственного пакета Проще всего создавать пакет при помощи утилиты catkin_create_pkg,
- 60. Пакеты в ROS. Утилита Catkin. создание собственного типа сообщений Сначала сделаем файл содержащий описание нашего сообщения
- 61. Пакеты в ROS. Утилита Catkin. Launch файлы Лаунч файлы - запускают работу программ для РОС, по
- 62. Подключение к роботу, работа с инструкцией получение информации о роботе
- 63. Робот TurtleBro Инструкция Образовательный робот TurtleBro разработан для изучения основ современной робототехники на примере мета-операционной системы
- 64. Робот TurtleBro Подключение робота к сети По умолчанию при старте raspberry попытается подключиться к WiFi точке
- 65. Робот TurtleBro Подключение к роботу Условия подключения: Ваш компьютер и робот в одной сети. По умолчанию
- 66. Робот TurtleBro Доступные на роботе топики Топик /bat Содержит данные о состоянии подключенной к плате батарейке.
- 67. Робот TurtleBro Доступные на роботе сервисы Сервис /reset Сервис вызывает сброс одометрии (данные /odom) и текущих
- 68. Робот TurtleBro Получение информации о роботе Название дистрибутива Linux и кодовое имя сборки Версия интерпретатора python
- 69. Робот TurtleBro Проверки робота Проверка батареи Вывод напряжения батареи в топике rostopic echo /bat -n 1
- 70. Робот TurtleBro Проверка работы камеры Проверить наличие подключенных устройств в /dev/ Получить данные о максимальном разрешения
- 71. Управление роботом
- 72. Управление роботом ROS и работа по сети Одна из основных возможностей ROS, это прозрачная работа по
- 73. Управление роботом Управление движением робота geometry_msgs/Vector3 linear float64 x float64 y float64 z geometry_msgs/Vector3 angular float64
- 74. Управление роботом Данные о положении робота Топик /odom Данные одометрии (положения робота, рассчитанного на основании вращения
- 75. Управление роботом Преобразование углов Кватернио́ны (от лат. quaterni, по четыре) — система гиперкомплексных чисел, образующая векторное
- 76. Управление роботом Преобразование углов - Комплексные числа X Y R=1 X = R*cosA Y = R*sinA
- 77. Управление роботом Преобразование углов Кватернио́ны (от лат. quaterni, по четыре) — система гиперкомплексных чисел, образующая векторное
- 78. Управление роботом Преобразование углов Какому кватерниону соответствует поворот на 60 градусов влево без вращения Y X
- 79. Управление роботом Преобразование углов Какому углу поворота соответствует кватернион 1 + 0,707i - 0,707j + 0k
- 80. Управление роботом Преобразование углов Какому углу поворота соответствует кватернион 1 - 0,707i + 0,707j + 0,5k
- 81. Управление роботом Преобразование углов - Кватернионы X Y R=1 X = R*cosA Y = R*sinA a
- 82. Управление роботом Преобразование углов import math def quaternion_to_theta(odom): t1 = +2.0 * (odom.pose.pose.orientation.w * odom.pose.pose.orientation.z +
- 83. Управление роботом Разбор типовых задач на чтение данных датчиков Робот лазерный дальномер Подписываемся на топик /scan
- 84. Управление роботом Разбор типовых задач на чтение данных датчиков Робот транспортир import rospy import math from
- 85. Управление роботом Разбор типовых задач на чтение данных датчиков Робот лазерный дальномер import rospy import math
- 86. День 2 Работа с периферией Телеуправление Автономная навигация
- 87. Работа с периферией
- 88. Работа с периферией Настройки Arduino МК Atmega 2560, функционально полностью совместимый с платами Arduino Mega. Для
- 89. Работа с периферией Настройки Arduino проверка - Тестовый скетч Blink. 3. В Arduino IDE: sudo chmod
- 90. Работа с периферией Настройки Arduino #include class NewHardware : public ArduinoHardware { public: NewHardware():ArduinoHardware(&Serial1, 115200){}; };
- 91. Работа с периферией Arduino Издатель #include #include class NewHardware : public ArduinoHardware { public: NewHardware():ArduinoHardware(&Serial1, 115200){};
- 92. Работа с периферией Arduino Издатель void setup() { nh.initNode(); nh.advertise(chatter); } void loop() { str_msg.data =
- 93. Работа с периферией Arduino Подписчик #include #include class NewHardware : public ArduinoHardware { public: NewHardware():ArduinoHardware(&Serial1, 115200){};
- 94. Работа с периферией Arduino Подписчик void setup() { pinMode(13, OUTPUT); nh.initNode(); nh.subscribe(sub); } void loop() {
- 95. Работа с периферией Arduino Типовые задачи Останавливать робота при нажатии на кнопку Код для ардуино #include
- 96. Работа с периферией Arduino Типовые задачи Останавливать робота при нажатии на кнопку Код для python import
- 97. Работа с периферией Arduino Типовые задачи Крутить сервиком, задавая угол поворота через РОС Код для Ардуино
- 98. Работа с периферией Arduino Типовые задачи Крутить сервиком, задавая угол поворота через РОС Код для Python
- 99. Работа с периферией Arduino Типовые задачи Парктроник Python import rospy from sensor_msgs.msg import LaserScan from std_msgs.msg
- 100. Работа с периферией Arduino Типовые задачи Парктроник Python def laser_callback(self, msg): self.minimum_of_each_sector_of_laser_scan_array = [] for i
- 101. Работа с периферией Arduino Типовые задачи Парктроник Python def color_definition(self, array_of_minimums): array_of_colors_for_led = [] for k
- 102. Работа с периферией Arduino Типовые задачи Парктроник Python else: array_of_colors_for_led.append(0) array_of_colors_for_led.append(127) array_of_colors_for_led.append(0) return array_of_colors_for_led def LED_publisher(self,array_of_leds_colors):
- 103. Работа с периферией Arduino Типовые задачи Парктроник Python if __name__ == '__main__': l = LedBlink() #class
- 104. Работа с периферией Arduino Типовые задачи Парктроник Arduino #include #include #include "std_msgs/ByteMultiArray.h" #define DATA_PIN 30 #define
- 105. Работа с периферией Arduino Типовые задачи Парктроник Arduino class NewHardware : public ArduinoHardware { public: NewHardware():ArduinoHardware(&Serial1,
- 106. Работа с периферией Arduino Типовые задачи Парктроник Arduino for(i=0;i { pincolorred = arrscan.data[i*3]; pincolorgreen = arrscan.data[i*3+1];
- 107. Работа с периферией Arduino Типовые задачи Парктроник Arduino void setup() { delay(3000); // sanity delay FastLED.addLeds
- 108. День 3 Автономная навигация Работа с камерой Практикум: патрулирование
- 109. Телеуправление
- 110. Телеуправление Введение Телеуправление (ТУ) — управление положением или состоянием дискретных объектов и объектов с непрерывным множеством
- 111. Телеуправление Пакет JoyBro https://github.com/voltbro/joybro Установить пакет на компьютер Установить пакет на робота Залить на джойстик прошивку
- 112. Автономная навигация
- 113. Автономная навигация Введение Навигация робота это комплексный подход, позволяющий роботу самостоятельно и автономно перемещаться из одного
- 114. Автономная навигация Работа с картой В рамках ROS, при работе с картой наиболее широкое распространение получили
- 115. Автономная навигация Работа с картой gmapping Для робота TurlteBro мы будем использовать Gmapping Запустим ноду gmapping
- 116. Автономная навигация Работа с картой gmapping Сохранение карты map_server rosrun map_server map_saver -f map map -
- 117. Автономная навигация Локализация Если у нас есть карта, то следующей необходимой информацией, будет “А где робот
- 118. Автономная навигация Локализация Подключение карты После создания карты у вас должно быть два файла map.yaml и
- 119. Автономная навигация Введение Навигация робота это комплексный алгоритм, позволяющий роботу самостоятельно и автономно перемещаться из одного
- 120. Автономная навигация Работа с rviz и Лидаром В составе ROS, есть специальная графическая программа rviz, которая
- 121. Автономная навигация Работа с rviz и Лидаром За один оборот, лидар получает 360 точек с данными
- 122. Автономная навигация Работа с rviz и Лидаром Давайте посмотрим на эти данные в "человеческом" виде в
- 123. Автономная навигация Работа с rviz и Лидаром Настройка rviz Отображение модели робота Add->By display type->RobotModel Отображение
- 124. Работа с камерой
- 125. Работа с камерой Веб интерфейс На роботе запущено небольшое веб приложение, которое позволяет управлять роботом прямо
- 126. Работа с камерой Настройка нод камеры При включении робота автоматический стартует вещание видео необходимое для работы
- 127. Работа с камерой Пакет uvc_camera Пакет публикует сжатые данные sensor_msgs/CompressedImage в топик front_camera/compressed Официальная документация пакета
- 128. Работа с камерой Подключение библиотеки OpenCV На роботе установлена библиотека OpenCV, поэтому с камерой можно работать
- 129. Работа с камерой Пример программы которая следит за цветным мячиком Функциональность поворота робота за шариком
- 130. Работа с камерой Определение местонахождения шарика import cv2 import numpy as np Давайте разберемся как
- 131. Работа с камерой Определение местонахождения шарика Создадим класс, который будет делать всю работу по определению
- 132. Работа с камерой Определение местонахождения шарика В самом классе напишем функцию, которая будет искать шарик
- 133. Работа с камерой Определение местонахождения шарика Создадим маску изображения, т.е. закрасим черным все, что не
- 134. Работа с камерой Определение местонахождения шарика Уберем все возможные крапинки размытием mask = cv2.erode(mask, None,
- 135. Работа с камерой Определение местонахождения шарика И будем искать контуры на маске. Контуры это границы
- 136. Работа с камерой Определение местонахождения шарика Обнулим значение переменных перед очередной итерацией center = None self.current_data
- 137. Работа с камерой Определение местонахождения шарика Дальше мы воспользуемся библиотечной функцией ((x, y), radius) = cv2.minEnclosingCircle(c)
- 138. Работа с камерой Определение местонахождения шарика Определим центр шарика при помощи графических моментов, M = cv2.moments(c)
- 139. Работа с камерой Определение местонахождения шарика А еще мне очень нравится определение из Википедии: Моменты изображения
- 140. Работа с камерой Определение местонахождения шарика Давайте для простоты возьмем только первый компонент центра M["m10"] /
- 141. Работа с камерой Определение местонахождения шарика Давайте проделаем это руками на примере вот такого изображения. Посчитаем
- 142. Работа с камерой Определение местонахождения шарика Вернемся к нашей функции. Итак мы рассчитали центр изображения нашего
- 143. Работа с камерой Определение местонахождения шарика Опишем еще одну функцию нашего класса, которая будет возвращать переменную
- 144. Работа с камерой Получение изображения с камеры и управление роботом import rospy import cv2 import numpy
- 145. Работа с камерой Получение изображения с камеры и управление роботом Импортируем структуры данных, которые мы будем
- 146. Работа с камерой Получение изображения с камеры и управление роботом bp = BallProcessing() Создадим экземпляр класса
- 147. Работа с камерой Получение изображения с камеры и управление роботом while not rospy.is_shutdown(): Теперь используя стандартный
- 148. Работа с камерой Получение изображения с камеры и управление роботом Закинем полученное изображение в модуль BallProcessing,
- 149. Работа с камерой Получение изображения с камеры и управление роботом Теперь запросим у BallProcessing результаты обработки
- 150. Работа с камерой Заключение Итого, мы написали два файла, первый захватывает изображение, передает его второму, второй
- 151. Практикум: Патрулирование
- 152. Практикум: Патрулирование Функциональное описание Пакет патрулирования реализует функциональность робота-патрульного. Робот циклически патрулирует некоторую территорию по
- 153. Практикум: Патрулирование Установка пакета Исходные коды лежат в репозитории гитхаба: https://github.com/voltbro/turtlebro_patrol Установка на робота: cd
- 154. Практикум: Патрулирование Настройка и запуск пакета Перед запуском пакета надо обнулить данные одометрии, чтобы зафиксировать
- 155. Практикум: Патрулирование Модификация конфигурационного файла с точками патрулирования Для того, чтобы изменить задание для робота,
- 156. День 4 Работа с удаленным роботом Итоговая работа
- 157. Практикум: Работа с удаленным роботом
- 158. Практикум: Работа с удаленным роботом Настройка VPN подключения Для доступа к роботам удаленного полигона используется
- 160. Скачать презентацию