Интеграция авторской модификации алгоритма уклонения от препятствий БПЛА в систему 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
Текст научной статьи Интеграция авторской модификации алгоритма уклонения от препятствий БПЛА в систему 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
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