Pion¶
Примечание
Мы используем uv
Вместо «python script.py» в инструкции будет использоваться «uv run script.py»
SDK для управления дронами geoscan pioneer base по протоколу MAVLink.
Поддерживает дроны с модификацией ультразвуковой системы навигации локус и с Raspberry Pi Zero 2W (модификация «Арена») или на radxa zero 3w.
Тесты проводились также на pioneer mini, но могут быть ошибки в некоторых методах.
Перед работой с модулем рекомендуется загрузить рекомендуемые параметры через Pioneer Station.
Установка¶
pip install pionsdk
pip install git+https://github.com/OnisOris/pion
Установка для разработки¶
Данный способ требуется только для модификации модуля. Для использования устанавливайте через pip.
pip install -e .
Подключение¶
Для подключения к дрону создайте экземпляр класса Pion.
Частый IP для реального дрона: 10.1.100.[номер] Порт: 5656
В примере указан IP и порт для Геоскан симулятора:
from pion import Pion
ip = "127.0.0.1"
port = 8000
drone = Pion(ip=ip, mavlink_port=port)
Рой дронов¶
В pionsdk реализовано роевое управление через класс SwarmCommunicator.
Схематичное отображение дронов и векторов управления
Автоустановка swarmserver на Radxa¶
curl -o pion_install.sh https://raw.githubusercontent.com/OnisOris/pion/refs/heads/dev/scripts/pion_swarm_radxa_install.sh
chmod +x pion_install.sh
sudo ./pion_install.sh
После установки достаточно запустить /scripts/vserver.py и pionsrv для управления роем.
Консоль управления роем¶
После установки необходимо прописать команду
start_control_server
Визуализация¶
Для запуска вам нужен uv:
pip install uv
Или matplotlib:
pip install matplotlib
После установки запустите
2D + 3D
uv run ./scripts/4xvserver.py
2D
uv run ./scripts/vserver.py
Подробное описание с примерами¶
Дополнительное ПО¶
Описание классов и функций¶
- Установка модуля Pion
- Описание работы скриптов
- Pion
PionPion.__init__()Pion.arm()Pion.disarm()Pion.goto()Pion.goto_from_outside()Pion.goto_process()Pion.goto_to_autopilot()Pion.goto_yaw()Pion.land()Pion.led_control()Pion.led_custom()Pion.point_tracking()Pion.poweroff()Pion.rc_while()Pion.reboot_board()Pion.reboot_computer()Pion.send_rc_channels()Pion.send_speed()Pion.set_rc()Pion.set_v()Pion.sland()Pion.speedPion.stakeoff()Pion.start_track_point()Pion.stop()Pion.stop_moving()Pion.takeoff()Pion.trajectory_tracking()Pion.trajectory_tracking_process()Pion.v_while()Pion.wait_point()
- sPion
SpionSpion.__init__()Spion.attitudeSpion.borders()Spion.goto()Spion.goto_body()Spion.goto_from_outside()Spion.land()Spion.positionSpion.position_controller()Spion.send_rc_channels()Spion.send_speed()Spion.set_body_velocity()Spion.speedSpion.start_message_handler()Spion.stop()Spion.stop_message_handler()Spion.takeoff()Spion.velocity_controller()
- aPion
- Simulator
- Pio
DroneBaseDroneBase.__init__()DroneBase.arm()DroneBase.attitudeDroneBase.attitude_write()DroneBase.check_battery()DroneBase.disarm()DroneBase.goto_yaw()DroneBase.heartbeat()DroneBase.land()DroneBase.led_control()DroneBase.positionDroneBase.position_controller()DroneBase.print_information()DroneBase.print_latest_logs()DroneBase.reboot_board()DroneBase.save_data()DroneBase.send_rc_channels()DroneBase.set_v()DroneBase.sland()DroneBase.stakeoff()DroneBase.takeoff()DroneBase.xyzDroneBase.yaw
- Controller