The paper presents a practical application of Arduino Mega2560 in implementing a six-legged walking robot control system. A thorough analysis of the field reveals the importance of adopting such an approach to executive mechanism design. The paper reviews analogues from various manufacturers, highlighting their pros and cons; identifies essential constants affecting the positioning of the hexapod robot and key coordinates of its limbs; presents a modular system architecture, comprising distinct functional blocks. Developed algorithms control the automatic robot movement: the main operating algorithm determines critical moments of positioning. The algorithm for moving the main actuation mechanisms specifies the sequence of translational movements of the limbs, taking into account all predefined parameters; this algorithm considers and analyses stepping distance and amplitude computation. Additionally, the paper suggests an inverse kinematic algorithm, which calculates servomotor angles for limb segments based on target endpoint coordinates, yielding precise angular rotation values of servomotor angles. The developed algorithms are implemented programmatically as a hexapod control system based on microcontroller in Arduino IDE environment using C++ language.
control system, walking robot, servomotor, gait algorithms, kinematic algorithms, Arduino Mega2560, hexapod
Введение
В современных условиях информационных технологий, где автоматизация и роботизация являются важными направлениями, создание алгоритмов перемещения различных объектов является ключевым направлением, а благодаря использованию микроконтроллера Arduino Mega2560 автоматизация процессов становится более доступной и воспроизводимой [1, 2]. Одним из таких механизмов перемещения может оказаться механизм типа шагающий робот, имитирующий перемещение паука.
Материалы, модели, эксперименты и методы
На первых этапах для разработки системы управления шагающего робота необходимо проанализировать рынок подобных товаров. Первым из похожих решений является робот PhantomX Hexapod MK-III от Trossen Robotics на базе Arduino Mega2560 [3, 4]. Внешний вид робота продемонстрирован на рис. 1.
В данном роботе предусмотрены иерархические уровни управления: высокоуровневые алгоритмы планируют движение, а низкоуровневые реализуют команды.
В качестве второго аналога рассмотрим Hexapod Robot 2DOF PTZ 18DOF на базе Raspberry Pi 4B. Робот продемонстрирован на рис. 2.
|
|
|
|
Рис. 1. PhantomX Hexapod MK-III от Trossen Robotics Fig. 1. PhantomX Hexapod MK-III from Trossen Robotics |
Рис. 2. Hexapod Robot 2DOF PTZ 18DOF от PLSUP Fig. 2. Hexapod Robot 2DOF PTZ 18DOF From PLSUP |
Данный робот имеет 18 степеней свободы для передвижения, в том числе для перемещения по сложным поверхностям [5, 6].
Для написания алгоритмов перемещения сначала необходимо определить основные константы (исполнительные механизмы): длина бедра, колена и голени, а также углы смещения между осями сервоприводов. Для получения этих данных используются разнообразные инструменты. В рамках данной разработки использовался инструмент «Inspect» в программе «Autodesk Fusion», который после выбора объекта демонстрирует параметры или зависимости между несколькими объектами [7, 8].
После получения постоянных параметров необходимо исследовать параметры корпуса, которые будут являться домашними координатами крайних точек конечностей: координаты конца каждой конечности в координатной плоскости, нулевую точку вращения которой является ось вращения корпусного сервопривода, оси абсцисс и ординат параллельные поперечной и продольной осям корпуса, а также координаты оси вращения каждого сервопривода относительно центра корпуса.
Впоследствии после получения ключевой информации создается система с функциональными блоками:
- инициализация начальных значений;
- получение и обработка команд пользователя;
- вычисление новых координат;
- вычисление и применение углов поворота сервоприводов.
На основании собранной информации был предложен общий алгоритм работы программы, который реализует основное управление в стандартной процедуре «void loop()». Данный алгоритм выполняется циклически с небольшим интервалом времени [9, 10]. Алгоритм работы функции «loop()» представлен на рис. 3.
Рис. 3. Алгоритм функции «loop()»
Fig. 3. The algorithm of the «loop()» function
В разработанном проекте циклическая функция управления выполняется каждые 20 миллисекунд, что обеспечивает частоту обновления системы 50 раз в секунду. Каждый вызов функции проверяет разницу между интервалами [11]. Также при каждом вызове функции идет проверка подключения к контроллеру, после чего идет проверка нажатия кнопок, которые устанавливают режим ходьбы или действия робота. В самом конце алгоритма идет вычисление новых координат и углов поворота сервоприводов для каждой конечности.
Далее, после получения команды на движение выполняется алгоритм походки, который подразумевает под собой перемещение трех ног вперед [12]. При этом остальные три ноги остаются неподвижными, служат опорой. Алгоритм работы функции перемещения «triple_gait()» представлен на рис. 4.
Рис. 4. Алгоритм функции «triple_gait()»
Fig. 4. Algorithm of the «triple_gait()» function
Первый режим позиционирования ног – движение, при котором нога поднимается по синусоидальной траектории в направлении движения, а затем опускается. Второй режим – опора, при котором нога движется так, чтобы конец конечности остался на прежнем месте. Счётчик этапов увеличивается на один при каждом вызове функции, это необходимо для отслеживания прогресса движения. Значение счетчика определяет продолжительность каждого шага.
В функциях походок используются такие функции, как вычисление длины шага «compute_strides()» и вычисление амплитуд «compute_amplitudes()».
Метод вычисления длины шагов определяет длины основываясь на значении, которое передал контроллер. Далее происходит вычисление тригонометрических функций для вращения по оси Z. Последний этап – установка продолжительности движения от выбранной скорости ходьбы.
Метод вычисления амплитуд рассчитывает расстояние от центра туловища до крайней точки ноги. Затем вычисляется текущее значение смещения по осям X и Y, вызванное наклоном корпуса, так как робот может вращаться вокруг оси Z, что приводит к смещению целевых координат для каждой ноги. Далее следуют вычисления амплитуд движения по осям X и Y и их ограничение с целью предотвращения столкновения конечностей. Заключительным этапом является вычисление амплитуды движения по оси Z. Она вычисляется как произведение коэффициента высоты шага и максимальной длины шага по осям X, Y.
Столь же важным алгоритмом является инверсная кинематика, которая используется для вычисления углов сервоприводов в сегментах конечностей на основе целевых координат кончика ноги [13].
Входными параметрами метода «leg_InverseKinematics» являются номер ноги от 0 до 5 и координаты целевой точки по осям X, Y, Z. Выходными – три значения углов сервоприводов конечности от бедра до голени.
Метод «void InverseKinematicsForLeg(int leg_number, float X, float Y, float Z)» вызывается для каждой конечности отдельно, чтобы рассчитать углы поворота сервоприводов бедра, колена и голени. Алгоритм работы метода продемонстрирован на рис. 5.
Рис. 5. Алгоритм функции «InverseKinematicsForLeg»
Fig. 5. Algorithm of the «InverseKinematicsForLeg» function
Данный алгоритм позволяет получить точные значения углов поворота сервоприводов независимо от того какой режим работы или походки выбран.
Программная реализация алгоритмов выполнена в среде Arduino IDE с использованием языка C++. Основная структура программы включает глобальные массивы для хранения координат конечностей, углов сервоприводов и параметров походки. Ключевые функции системы организованы модульно: функция «triple_gait()» управляет алгоритмами походки, «InverseKinematicsForLeg()» реализует вычисления обратной кинематики, а вспомогательные функции «compute_strides()» и «compute_amplitudes()» обеспечивают расчет параметров движения. Для работы с приводами используется библиотека «Servo.h». Программный код был оптимизирован для выполнения в реальном времени с учетом ограниченных вычислительных ресурсов микроконтроллера «Arduino Mega 2560».
Для физической реализации данных алгоритмов необходимо загрузить программное обеспечение в плату микроконтроллера Arduino, используя инструментарий среды разработки Arduino IDE через последовательный порт.
Заключение
В ходе работы была предложена и реализована система управления гексапода на основе микроконтроллера Arduino Mega2560. Алгоритмы управления обеспечивают стабильное управление движением робота. Программное обеспечение было успешно загружено и проверено в работе.
Разработанная система может быт использована в качестве базы для дальнейших исследований в области робототехники. Наиболее перспективными направлениями развития являются: интеграция системы компьютерного зрения для автономной навигации, реализация адаптивных алгоритмов походки и внедрение системы обратной связи с датчиками давления для повышения устойчивости. Дополнительно планируется разработка беспроводного управления и создание модульной архитектуры для масштабирования системы на роботов с различной конфигурацией конечностей. Полученные результаты могут найти применение в создании поисково-спасательных роботов, систем мониторинга труднодоступных территорий и образовательных робототехнических комплексов.
1. Ma X. Additive Technologies in Amber Production: Comparative Analysis of Properties and Quality of Products. Economics: Yesterday, Today and Tomorrow. 2021;11(11-1):70-77.
2. Additive Technologies: Fabrication Techniques and Materials. Quality Management. 2017;10:66-68.
3. Kuzmenko A, Filippov R, Filippova L. The Formation of Ergonomic Thinking When Designing Complex Information Systems in the Conditions of Sociotechnogenic Development of the World. In: Proceedings of the 2nd International Workshop on Hybrid Methods of Modelling and Optimization in Complex Systems (HMMOCS-II-2023); 2023 Nov 28-30; Krasnoyarsk: EDP Sciences: 2024; vol. 59. p. 2001.
4. Kovalchuk A.K. Selection of Kinematic Structure and the Study of the Dynamics of Tree-Actuator Robot-Crab. BMSTU Journal of Mechanical Engineering. 2013;7:73-79.
5. Ignatyev S.V., Begletsov A.A., Tikhonov V.B. Automation Tools for Technical Diagnostics System of Radio Electronic Equipment. Software and Systems. 2013;1:24.
6. Ilicheva V.V., Svetlichny V.V. Information System for Automating Vehicle Equipping Process Using Intelligent Technologies. Informatization and Communication. 2024;3:69-78.
7. Krakhmalev O.N. Mathematical Modelling of the Dynamics of Manipulation Robots. In the World of Scientific Discoveries. 2012;8-1(32):51-59.
8. Sabanova B.K., Ivanova I.V. Calculating the Parts of the Foot Algorithm for the Six-Legged Robot Spider. Publishings KSPI. 2020;2(58):126-133.
9. Ponomarev A.N., Kazantseva L.V. Machine Vision: Relevance and Application. Scientific and Technical Volga Region Bulletin. 2021;(4):100-102.
10. Filippov RA, Filippova LB, Leonov YA, et al. Application of the Arduino Mega 2560 Microcontroller for Automation of the LEICA DM IRM Microscope. In: Proceedings of the All-Russian Conference on Automation and Modelling in Design and Management; 2021 May 19; Bryansk: BSTU: 2021. p. 210-213.
11. Filippov RA, Filippova LB, Averchenkov AV, et al. Development of a Mathematical Model of an Information System for Inventory and Monitoring of Software and Hardware Based on Fuzzy Logic Methods. Quality. Innovation. Education. 2018;7(158):105-112.
12. Kalugin DR, Leonov YuA, et al. Development of an Information and Analytical System for Modelling the Demographic Situation in the Russian Federation. In: Proceedings of the 3rd International Workshop on Modelling, Information Processing and Computing MIP: Computing-2021; 2021 May 28; Krasnoyarsk: CEUR-WS: 2021; vol. 2899. p. 133-140.
13. Averchenkov VI, Averchenkov AV, Filippov RA, et al. Program-Hardware Complex of Automation of Manufacture of Casing Details on the Basis of Management of the Statistical Setting of the Tool. Izvestiya Tula State University. 2017;8-1:178-185.



