UAVros содержит несколько пакетов ROS для симуляции и экспериментов PX4-gazebo. Тестирование было проведено для следующих версий дрона PX4:
— v1.11.3; — v1.12.0-beta3; — v1.13.3; — версия v1.14 находится в стадии тестирования.
Среда: Ubuntu 18.04 или Ubuntu 20.04 с ROS1.
Несколько примеров симуляций представлены в виде пакетов ROS в папке uavros_simulation/
:
ROS-модуль | Версия PX4 | Функция |
---|---|---|
ARtagLanding_sitl | v1.11.3, v1.12.0-beta3, v1.13.3 | Одноместный БПЛА приземляется на AR-метку на основе визуального сервопривода с использованием направленной вниз камеры |
kcffollow_simulation | v1.11.3, v1.12.0-beta3, v1.13.3 | Одноместный БПЛА отслеживает AR-метку с помощью направленной вниз камеры и алгоритма отслеживания KCF |
uavros_uavugv_sitl | v1.11.3, v1.12.0-beta3, v1.13.3 | Два БПЛА летают вокруг UGV по кругу |
uavros_wrzf_sitl | v1.11.3, v1.12.0-beta3, v1.13.3 | Одноместный БПЛА отслеживает заданные GPS-точки и движущийся UGV на основе обнаружения цвета с помощью направленной вниз камеры |
uavros_multi_gimbal_sitl | v1.13.3, v1.14 | Многоместные БПЛА с камерами на подвесе совместно ищут и отслеживают цели |
uavros_gazebo | > v1.11.3 | Модули симуляции Gazebo |
Клонируйте этот проект:
cd ~
git clone https://gitee.com/shu-peixuan/UAVros.git
cd UAVros/
Установите ROS1, если у вас его нет:
# Установите ROS noetic для ubuntu20:
sudo ./install_ros_noetic.sh
# Установите ROS melodic для ubuntu18:
sudo ./install_ros_melodic.sh
Установите зависимости:
# минимальные зависимости для ubuntu20:
sudo ./install_dep_minimal_ubuntu20.sh
# минимальные зависимости для ubuntu18:
sudo ./install_dep_minimal_ubuntu18.sh
# установите numba для отслеживания KCF (необязательно):
sudo ./install_dep_kcf_tracking.sh
Установите проект автопилота PX4:
cd ~
git clone https://github.com/PX4/PX4-Autopilot.git
cd PX4-Autopilot
git checkout v1.13.3 # или другая версия
git submodule update --init --recursive
bash Tools/setup/ubuntu.sh # Этот шаг занимает некоторое время. Убедитесь, что все зависимости установлены успешно!
# Перелогиньтесь или перезагрузите компьютер, затем:
make px4_sitl gazebo
Скомпилируйте UAVros:
cd UAVros/
./compile_all.sh
Добавьте путь источника в ~/.bashrc
:
### Добавьте путь пакета UAVros:
echo "source ~/UAVros/devel/setup.bash" >> ~/.bashrc
### Добавьте путь PX4:
# если вы используете версию px4 v1.13 или ниже:
echo "
source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo
" >> ~/.bashrc
# если вы используете версию px4 v1.14 (непроверенную):
echo "
source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic
" >> ~/.bashrc
Запустите симуляцию sitl:
roslaunch uavros_artaglanding_sitl singleLanding_sitl.launch
В rqt_image_view выберите тему image_raw.
Откройте QGroundControl. Нажмите левый верхний логотип Q -> Настройка параметров транспортного средства -> Параметры -> найдите «COM_RCL_EXCEPT» и измените его на 7. В противном случае БПЛА активирует режим возврата в безопасный режим, поскольку в симуляции нет ручного ввода с пульта дистанционного управления (ошибка в px4 1.13.3).
В QGroundControl нажмите «Готов к полёту» -> Arm -> Сдвиньте нижнюю панель, чтобы подтвердить постановку на охрану. Затем щёлкните верхний текст режима и переключитесь в режим «offboard». Затем дрон взлетит.
Начните отслеживание и посадку:
rostopic pub /uav0/command std_msgs/Int32 "data: 1"
Также в landing_service.cpp предоставляется услуга посадки для БПЛА, который находится в режиме offboard и имеет подходящую высоту для вызова посадки. Эта услуга используется в... Запуск sitl-симуляции Multi-UAV formation tracking UGV
Запустите симуляцию sitl:
roslaunch uavros_kcffollow_simulation KCF_track.launch
Откройте QGroundControl. Нажмите на логотип Q в левом верхнем углу -> Vehicle Setup -> Parameters -> найдите «COM_RCL_EXCEPT» и измените его на 7. В противном случае БПЛА активирует режим аварийного возврата, так как в симуляции нет ручного ввода с пульта дистанционного управления (ошибка в px4 1.13.3).
В QGroundControl нажмите «Ready To Fly» -> Arm -> Сдвиньте нижнюю панель, чтобы подтвердить постановку на охрану. Затем нажмите на верхний текст режима и переключитесь в режим «offboard». После этого дрон взлетит. Или вы можете использовать клавиатуру терминала для отправки 0 (поставить на охрану) и 2 (взлететь).
Выберите область ROI в окне отслеживания, после чего БПЛА начнёт отслеживать цель ROI.
Отслеживание формирования Multi-БПЛА UGV
Запустите sitl-симуляцию:
roslaunch uavros_uavugv_sitl uavugv_sitl.launch # (два дрона и один гоночный автомобиль)
roslaunch uavros_uavugv_sitl uavrover_sitl.launch # (два дрона и один вездеход)
roslaunch uavros_uavugv_sitl uavrover_valley_sitl.launch # (два дрона и один вездеход в долине)
В rqt_image_view выберите тему image_raw БПЛА.
Откройте QGroundControl. Нажмите на логотип Q в левом верхнем углу -> Vehicle Setup -> Parameters -> найдите «COM_RCL_EXCEPT» и измените его на 7. Сделайте это для каждого БПЛА! В противном случае БПЛА активирует режим аварийного возврата, поскольку в симуляции отсутствует ручной ввод с пульта дистанционного управления (ошибка в px4 1.13.3).
В QGroundControl нажмите «Ready To Fly» -> Arm -> сдвиньте нижнюю панель, чтобы подтвердить активацию. Затем нажмите верхний текст режима и переключите в режим «offboard». Повторите для каждого БПЛА. После этого дроны взлетят.
Начните отслеживание и обнаружение AR-тегов (остановится, вернётся и приземлится на UGV с помощью модуля посадки AR-тега):
rostopic pub /cmd std_msgs/Int32 "data: 1" # начать формирование
rostopic pub /cmd std_msgs/Int32 "data: 0" # остановить формирование
Видео с симуляцией ровера UGV и БПЛА: https://www.bilibili.com/video/BV1U44y1r7ey/
Отслеживание БПЛА GPS-точек и UGV
Запустите sitl-симуляцию:
roscd uavros_wrzf_sitl/launch/
./cam_track_sitl.sh
Откройте QGroundControl. Нажмите на логотип Q в левом верхнем углу -> Vehicle Setup -> Parameters -> найдите «COM_RCL_EXCEPT» и измените его на 7. Сделайте это для каждого БПЛА! В противном случае БПЛА активирует режим аварийного возврата, поскольку в симуляции отсутствует ручной ввод с пульта дистанционного управления (ошибка в px4 1.13.3).
В QGroundControl нажмите «Ready To Fly» -> Arm -> сдвиньте нижнюю панель, чтобы подтвердить активацию.
Взлёт -> полёт к первой точке GPS -> начало отслеживания (если цель потеряна на некоторое время, автоматически летите к следующей точке GPS, определённой в config/tracking_param_sitl.yaml
).
rostopic pub /jc_cmd std_msgs/Int32 "data: 0" # БПЛА ждёт
rostopic pub /jc_cmd std_msgs/Int32 "data: 1" # взлёт БПЛА
rostopic pub /jc_cmd std_msgs/Int32 "data: 6" # возвращение БПЛА
Переместите UGV, чтобы увидеть производительность отслеживания:
rostopic pub /ugv0/cmd_vel geometry_msgs/Twist "linear:
x: 1.0
y: 1.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0" -r 10
Многоцелевой БПЛА с кардановыми камерами
Чтобы запустить многоцелевой БПЛА с подвесными камерами, вам нужно использовать PX4 v1.14 (в стадии тестирования) или PX4 v1.13.3 со следующими изменениями:
# Если не в px4 v1.13.3, то сначала:
cd ~/PX4-Autopilot
git checkout v1.13.3
git submodule update --init --recursive
# 1. Замените gazebo_gimbal_controller_plugin.cpp (добавлен udp_gimbal_port_remote для различения карданов)
roscd uavros_gazebo
cp px4_modification/gazebo_gimbal_controller_plugin.cpp ~/PX4-Autopilot/Tools/sitl_gazebo/src/gazebo_gimbal_controller_plugin.cpp
# 2. Добавьте воздушные аппараты (8001_solo_gimbal с включённым карданом)
cp -r **Модификация PX4 / Airframes**
1. Удалите px4_sitl_default и создайте заново:
- cd ~/PX4-Autopilot
- rm -r build/px4_sitl_default/
- make px4_sitl_default gazebo
**Процедуры:**
1. Запустите симуляцию sitl:
```bash
roslaunch uavros_multi_gimbal_sitl multi_gimbal_uav_ugv.launch
Откройте QGroundControl. Нажмите на логотип Q в левом верхнем углу -> Vehicle Setup -> Parameters -> найдите «COM_RCL_EXCEPT» и измените его на 7. Сделайте это для каждого БПЛА! В противном случае БПЛА активирует режим аварийного возврата, так как в симуляции нет ручного ввода с пульта дистанционного управления (ошибка в px4 1.13.3).
Состояниями карданов можно управлять и считывать их с помощью:
# эхо угла кардана БПЛА0 (угол IMU следует FRD и угол ротора следует конфигурации BRD кардана)
rostopic echo /uav0/amov_gimbal_ros/gimbal_state
# управление углом кардана БПЛА0 (управление угловой скоростью недействительно):
rostopic pub /uav0/amov_gimbal_ros/gimbal_control amov_gimbal_sdk_ros/GimbalControl "header:
seq: 0
stamp: {secs: 0, nsecs: 0}
frame_id: ''
mode: 2
roll_angle: 0.0
pitch_angle: 0.0
yaw_angle: 60.0
roll_rate: 0.0
pitch_rate: 0.0
yaw_rate: 0.0" -r 10
# изображение кардана БПЛА0
rostopic hz /uav0/amov_gimbal_ros/gimbal_image
Угол кардана ограничен значениями по крену [-45, 45], тангажу [-90, 30] и рысканию [-80, 80] градусов, где крен и тангаж контролируются как инерциальный угол, а рыскание — как угол ротора.
imu_angle
в теме gimbal_state следует FRD (вперёд-вправо-вниз), правосторонней системе координат, и последовательность углов Эйлера — RPY (крен-тангаж-рыскание).
rotor_angle
в теме gimbal_state следует BRD (назад-вправо-вниз), правосторонней системе координат, и последовательность угла ротора соответствует конструкции кардана PRY (тангаж-крен-рыскание).
Вы можете использовать QGroundControl для постановки на охрану и запуска транспортного средства или свои скрипты mavros для управления полётом БПЛА и карданами.
Переместите UGV, чтобы увидеть характеристики отслеживания:
rostopic pub /ugv0/cmd_vel geometry_msgs/Twist "linear:
x: 0.5
y: 0.0
z: 0.0
angular:
x: 0.1
y: 0.0
z: 0.0" -r 10
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )