Программирование Геоскан Пионер на Lua
Создавайте автономные миссии и управляйте периферией с помощью простого и мощного API.
Управление светодиодами
Установка цвета
Используйте модуль Ledbar для управления RGB-светодиодами на борту квадрокоптера.
-- Создаем объект управления светодиодами
local leds = Ledbar.new(4) -- Инициализируем 4 светодиода
-- Устанавливаем красный цвет на первом светодиоде (индекс 0)
-- Параметры: индекс, R, G, B (от 0 до 1)
leds:set(0, 1, 0, 0)
| Параметр | Тип | Описание |
|---|---|---|
index |
number | Индекс светодиода (0-3) |
r, g, b |
number | Интенсивность цвета (0.0 - 1.0) |
Индикация состояний
Отображение уровня заряда батареи и режимов полета с помощью цветовых кодов.
local leds = Ledbar.new(4)
-- Функция индикации батареи
function updateBatteryStatus()
local voltage = sensors.battery()
if voltage < 7.0 then
-- Критический уровень: мигающий красный
leds:set(0, 1, 0, 0)
elseif voltage < 7.4 then
-- Низкий уровень: желтый
leds:set(0, 1, 0.5, 0)
else
-- Норма: зеленый
leds:set(0, 0, 1, 0)
end
end
Базовые миссии
1. Автоматический взлет
Перед взлетом необходимо выполнить префлайт-проверку и убедиться в готовности GPS/LPS.
-- Проверка готовности к взлету
ap.push(Ev.MCE_PREFLIGHT)
-- Задержка для стабилизации сенсоров
Timer.callLater(2, function()
local x, y, z = sensors.position()
if z < 0.1 then -- Мы на земле
ap.push(Ev.MCE_TAKEOFF)
else
print("Внимание: дрон уже в воздухе или ошибка сенсора")
end
end)
| Параметр | Значение | Описание |
|---|---|---|
| Высота взлета | 1.5 м | Значение по умолчанию |
| Точность GPS | < 2.0 | Рекомендуемое HDOP |
Flight demonstration
2. Полет по координатам
Перемещение в локальной системе координат с контролем скорости и высоты.
-- Полет по квадрату: (x, y, z, time)
local mission_points = {
{1, 0, 1.5, 3}, -- 1м вперед
{1, 1, 1.5, 3}, -- 1м вправо
{0, 1, 1.5, 3}, -- 1м назад
{0, 0, 1.5, 3} -- Домой
}
local current_p = 1
function next_point()
if mission_points[current_p] then
local p = mission_points[current_p]
ap.goToLocalPoint(p[1], p[2], p[3], p[4])
current_p = current_p + 1
else
ap.push(Ev.MCE_LANDING)
end
end
function callback(event)
if event == Ev.TAKEOFF_COMPLETE or event == Ev.POINT_REACHED then
next_point()
end
end
3. Безопасная посадка
Контролируемое снижение с проверкой высоты и скорости снижения.
-- Инициализация посадки
ap.push(Ev.MCE_LANDING)
function callback(event)
if event == Ev.COPTER_LANDED then
print("Посадка выполнена. Моторы выключены.")
end
end
| Параметр | Тип | Описание |
|---|---|---|
Descent Speed |
number | ~0.5 - 1.0 м/с (авто) |
Safe Zone |
bool | Проверка препятствий (ИК/УЗ) |