Интеграция авторской модификации алгоритма уклонения от препятствий БПЛА в систему ROS

Автор: Мокронос К.К., Еремина В.В.

Журнал: Международный журнал гуманитарных и естественных наук @intjournal

Рубрика: Технические науки

Статья в выпуске: 10-5 (97), 2024 года.

Бесплатный доступ

В данной статье представлена интеграция модифицированного алгоритма уклонения от препятствий в робототехническую операционную систему (ROS) для беспилотных летательных аппаратов (БПЛА). В статье рассматривается взаимодействие трех ключевых компонентов: фильтра Калмана, динамической системной модуляции (DSM) и адаптивного алгоритма 3DVFH+. Эти компоненты обеспечивают точную оценку состояния, адаптивное управление и эффективное планирование траектории движения БПЛА, что повышает его маневренность и безопасность в условиях сложной среды. Особое внимание уделено реализации взаимодействия компонентов через ROS, что способствует модульности и масштабируемости системы.

Еще

Бпла, фильтр калмана, динамическая системная модуляция, уклонение от препятствий, автономное управление

Короткий адрес: https://sciup.org/170207052

IDR: 170207052   |   DOI: 10.24412/2500-1000-2024-10-5-16-20

Integration of the author’s modification of the UAV obstacle avoidance algorithm into the ROS system

This paper presents the integration of a modified obstacle avoidance algorithm into the Robotic Operating System (ROS) for unmanned aerial vehicles (UAVs). The paper considers the interaction of three key components: Kalman filter, Dynamic System Modulation (DSM), and 3DVFH+ adaptive algorithm. These components provide accurate state estimation, adaptive control, and efficient trajectory planning of the UAV, which improves its maneuverability and safety in complex environments. Particular attention is paid to the implementation of component interactions through ROS, which contributes to the modularity and scalability of the system.

Еще

Текст научной статьи Интеграция авторской модификации алгоритма уклонения от препятствий БПЛА в систему ROS

Автономная навигация и уклонение от препятствий являются фундаментальными задачами при разработке систем управления для беспилотных летательных аппаратов (БПЛА). В условиях динамичной и непредсказуемой среды безопасность и надежность выполнения полетных заданий зависят от способности БПЛА быстро реагировать на изменения окружающей обстановки. В рамках данного исследования рассматривается интеграция трех основных компонентов системы управления с использованием ROS. Эти компоненты включают фильтр Калмана, динамическую системную модуляцию (DSM) и адаптивный алгоритм 3DVFH+, что позволяет повысить точность навигации и надежность управления БПЛА в изменяющихся условиях окружающей среды [1-3].

Фильтр Калмана используется для повышения точности оценки состояния БПЛА, что критически важно для обеспечения надежного управления. Динамическая системная модуляция отвечает за адаптивную корректировку управляющих воздействий, а алгоритм 3DVFH+ обеспечивает эффективное планирование пути и обход препятствий в реальном времени. ROS, будучи открытой платформой для разработки робототехнических систем, предоставляет мощные средства для интеграции данных компонентов, что упрощает их взаимодействие и тестирование.

Интеграция модулей в систему ROS

Для эффективной интеграции фильтра Калмана в среду ROS создается отдельный узел, который обрабатывает данные сенсоров и публикует уточненные оценки состояния. Основным элементом является класс KalmanFilter, реализующий методы предсказания и обновления состояния на основе данных сенсоров и процессного шума. Важной особенностью фильтра Калмана является его способность минимизировать влияние шумов и неточностей в данных, что особенно актуально при работе с БПЛА, где сенсоры часто подвергаются воздействию неблагоприятных внешних факторов.

Теперь создадим узел ROS, который будет использовать класс KalmanFilter для обработки данных датчиков и публикации оценок состояния (рис. 1).

^include

^include

#include

#include "kalman_fliter.h"

class KalmanFilterNode { public:

KalmanFilterNode(ros::NodeHandle pose_sub = nh.subscribe("uav/pose"3 1000, SKalmanFilterNode::poseCallback3 this);

state_pub = nh.advertise<:posestamped>("uav/state_estimate"3 1000);

Eigen::Vector3d acceleration(msg->linear_acceleration.x, msg->linear_acceleration.y., msg->linear_acceleration.z);

Eigen::VectorXd u(3);

u << acceleration^)., acceleration(1), acceleration^);

kf.predict(u);

Eigen::Vector3d position(msg->pose.position.x, msg->pose.position.y, msg->pose.position.z);

Eigen::Vectored z(3);

z << position(0), position(l), position(2);

publishStateEstimate();

} void publishStateEstimate() {

Eigen::VectorXd state = kf.getState();

geometry_msgs::PoseStamped state_msg;

statepub.publish(statemsg);

} private:

ros::Subscriber imusub;

ros::Subscriber posesub;

ros::Publisher statepub;

KalmanFilter kf;

Рис. 1. Листинг узла ROS для фильтра Калмана

Созданный узел ROS подписывается на данные с инерциального измерительного блока (IMU) и позиционные данные, обрабатывает их с помощью фильтра Калмана и публикует оценки состояния в виде сообщений PoseStamped.

Основные функции узла включают:

  • -    Обработку данных с IMU и позиционных сенсоров.

  • -    Публикацию уточненных оценок состояния.

Для интеграции DSM в ROS создается класс DynamicSystemModulation, который подписывается на оценки состояния, публикуемые фильтром Калмана, и публикует модулированные команды управления.

Создадим узел ROS , который будет использовать класс DynamicSystemModulation (рис. 2).

^include

«include

«include

«include "dynamic_system_modulation.h"

class DSMNode { public:

DSMNode(ros::NodeHandle control_pub = nh.advertise<:twist>("uav/control", 1000);

dsm.setControlPublisher(controlpub);

Eigen::VectorXd state(6);

state << msg->pose.position.x, msg->pose.position.y, msg->pose.position.z, 0, 0, 0;

// Placeholder для входных данных управления (это будет рассчитываться из другого источника) Eigen::VectorXd control_input(3);

control_input << 0, 0, 0;

// Корректировка входных данных управления на основе состояния dsm.predictAndAdjust(state, control_input);

private:

ros::Subscriber state_sub;

ros::Publisher control_pub;

DynamicSystemModulation dsm;

Рис. 2. Листинг узла ROS для динамической системной модуляции

Узел ROS, использующий класс DynamicSystemModulation, подписывается на оценки состояния, предсказывает будущее поведение БПЛА и корректирует управляющие воздействия, публикуя команды управления в виде сообщений Twist. Такой подход позволяет адаптивно корректировать траекторию движения аппарата в зависимости от внешних условий, таких как наличие препятствий или изменения в погоде.

Основные функции узла включают:

  • -    Получение оценок состояния от фильтра Калмана.

  • -    Предсказание будущего состояния БПЛА.

  • -    Корректировку управляющих воздействий.

  • -    Публикацию модулированных команд управления.

Интеграция DSM позволяет улучшить устойчивость системы управления, обеспечивая высокую точность выполнения управляющих команд и минимизируя вероятность возникновения ошибок, связанных с задержками или неточностями в данных.

Адаптивный алгоритм 3DVFH+ интегрируется в ROS для реализации функции обхода препятствий в реальном времени. Класс Adaptive3DVFHPlus обрабатывает данные сенсоров, строит гистограмму направлений и выбирает оптимальное направление движения.

Создадим узел ROS , который будет использовать класс Adaptive3DVFHPlus для обработки данных сенсоров и публикации навигационных команд (рис. 3).

^include

^include

^include

^include "adaptive_3dvfh_plus. h"

class VFHPlusNode { public:

VFHPlusNode(ros: :NodeHandle &nh) : vfh_plus(l.0, 0.1) { // Пример инициализации ^угловым разрешением и порогом point_cloud_sub = nh.subscribe("point_cloud", 1000, &VFHPlusNode::pointCloudCallback, this);

state_sub = nh.subscribe("uav/state_estimate", 1000, &VFHPlusNode::stateCallback, this); // Подписка на оценки состояния nav_pub = nh.advertise("uav/navigation_cmd", 1600);

vfh_plus.setNavigationPublisher(nav_pub);

} void pointCloudCallback(const sensor_msgs::PointCloud2::ConstPtr& msg) { vfh_plus.process Pointcloud(msg);

// Используйте оценки состояния для улучшения планирования пути

Eigen::Vector3d position^msg->pose.position.х, msg->pose.position.у, msg->pose.position.z);

vfh_plus.updateState(position); // Метод для обновления состояния в 3DVFH+ private:

nos::Subscriber point_cloud_sub;

ros::Subscriber state_sub;

ros::Publisher nav_pub;

Adaptive3DVFHPlus vfh_plus;

Рис. 3. Листинг узла ROS для адаптивного алгоритма 3DVFH+

Узел ROS, использующий этот класс, подписывается на данные лидара и публикует навигационные команды. Лидар, благодаря высокой частоте обновления данных, обеспечивает актуальную информацию о ближайших препятствиях, что позволяет алгоритму 3DVFH+ эффективно выбирать безопасные направления движения.

Основные функции узла включают:

  • -    Обработку данных облака точек от лидара.

  • -    Построение и фильтрацию гистограммы направлений.

  • -    Выбор оптимального направления.

  • -    Публикацию навигационных команд.

Адаптивность алгоритма 3DVFH+ позволяет значительно улучшить качество планирования траектории, особенно в условиях плотной застройки или других сложных сред, где требуется высокая маневренность. Использование ROS для интеграции этого алгоритма обеспечивает возможность быстрого тестирования и улучшения его параметров.

Интеграция всех трех модулей в ROS обеспечивает их согласованное взаимодействие, что критически важно для выполнения задач автономной навигации. Лидар публикует данные облака точек на тему /point_cloud, которые затем используются адаптивным алгоритмом 3DVFH+ для построения гистограммы направлений. С помощью этой гистограм- мы алгоритм выбирает оптимальное направление, избегая обнаруженных препятствий.

Фильтр Калмана обрабатывает данные с IMU и других сенсоров, публикуя уточненные оценки состояния на тему /uav/state_estimate. Модуль DSM подписывается на оценки состояния, предсказывает будущее поведение БПЛА, корректирует управляющие воздействия и публикует модулированные команды управления на тему /uav/control. Адаптивный алгоритм 3DVFH+ использует данные облака точек и оценки состояния для выбора оптимального направления движения и публикации навигационных команд на тему /uav/navigation_cmd.

Заключение

В статье рассмотрена интеграция фильтра Калмана, динамической системной модуляции и адаптивного алгоритма 3DVFH+ в ROS, что позволяет создать эффективную и адаптивную систему управления для БПЛА. Модульная архитектура ROS способствует независимой разработке, тестированию и улучшению каждого компонента, что повышает гибкость и надежность всей системы. Согласованное взаимодействие модулей обеспечивает высокую точность оценки состояния, адаптивное управление и безопасное планирование пути, что делает систему пригодной для работы в сложных и динамичных условиях.

Планируется изучить возможности интеграции системы с другими робототехническими платформами и расширение функциональности системы для выполнения более в условиях ограниченной доступности данных. В перспективе, разработанная система управления может быть применена для решения широкого спектра задач, начиная от мо- сложных задач, таких как координация не- ниторинга и разведки и заканчивая доставкой скольких БПЛА в составе группы или работа грузов в труднодоступные районы.

Список литературы Интеграция авторской модификации алгоритма уклонения от препятствий БПЛА в систему ROS

  • Еремина В.В., Мокронос К.К. Модернизация типового алгоритма уклонения от препятствий. I // Информатика и системы управления. - 2022. - № 1(71). - С. 27-40. EDN: JGMSTL
  • Еремина В.В., Мокронос К.К. Модернизация типового алгоритма уклонения от препятствий. II // Информатика и системы управления. - 2023. - № 2(76). - С. 6-17. EDN: QQPEIT
  • Еремина В.В., Мокронос К.К. Модернизация типового алгоритма уклонения от препятствий. III // Информатика и системы управления. - 2024. - № 2(80). - С. 40-54. EDN: CYWZWB