Посмотрите примеры программ для Nanopix на различных языках, и выберите подходящий для вас:
Вы создаёте программу из блоков, а Roboton Studio в реальном времени показывает вам, как этот код выглядит на текстовом языке.
В Arduino IDE вы пишете программу внутри функции
void flightScript()
, где можете использовать более 50 функций, которые умеет выполнять Nanopix.
Для программирования на Python вы можете использовать любую удобную среду разработки, мы в методиках используем Thonny, поскольку она ориентирована на обучающихся.
Инструкции по установке и настройке для поддерживаемых языков программирования можно найти по ссылкам:
Установка Roboton Studio (графические блоки / Scratch)
Установка и настройка Arduino IDE (С++ )
Установка и настройка Thonny IDE (Python)
Далее следует описание каждой доступной функции с примерами на всех языках программирования.
Если вы хотите разобраться с общим принципом программирования Nanopix на базовых примерах, то пройдите по ссылкам:
В функциях движения в графических блоках используются сантиметры, а в Arduino и Python используйте значения в метрах!
Функция осуществляет автоматический взлет дрона до высоты 60 сантиметров.
Блок ожидает завершения взлёта.
nanopix.takeoff(bool is_blocking);
- запускает двигатели и совершает автовзлет до 60 сантиметров.
По умолчанию функция ожидает завершение вызванного движения. Если вы хотите отключить ожидание выполнения движения, передайте
false
параметромis_blocking
.
nanopix.takeoff()
- запускает двигатели и отсылает команду на автовзлет до 60 сантиметров.
Важно! Функции в Python не ожидают завершения движения, необходимо добавлять задержки самостоятельно!
Функция осуществляет автоматическую посадку (с любой высоты) и выключение двигателей.
Блок ожидает завершения посадки.
nanopix.land(bool is_blocking);
- совершает посадку и выключает двигатели.
По умолчанию функция ожидает завершение вызванного движения. Если вы хотите отключить ожидание выполнения движения, передайте
false
параметромis_blocking
.
nanopix.land()
- отсылает команду на автопосадку.
Важно! Функции в Python не ожидают завершения движения, необходимо добавлять задержки самостоятельно!
Функции осуществляют движение в указанную сторону на указанное расстояние.
Важно, всегда помните, что направление вперед определяется следующим образом:
Блок ожидает завершения вызванного движения.
Передайте в функцию значение в метрах, на которое вы хотите совершить пролёт:
nanopix.moveForward(1.2);
- выполняет движение вперед на 120 сантиметров (1.2 метра)nanopix.moveBackward(0.5);
- выполняет движение назад на 50 сантиметров (0.5 метра)nanopix.moveLeft(1);
- выполняет движение влево на 100 сантиметров (1 метр)nanopix.moveRight(3);
- выполняет движение вправо на 300 сантиметров (3 метра)Передайте в функцию значение в метрах, на которое вы хотите совершить пролёт:
nanopix.move_forward(1.2)
- выполняет движение вперед на 120 сантиметров (1.2 метра)nanopix.move_backward(0.5)
- выполняет движение назад на 50 сантиметров (0.5 метра)nanopix.move_left(1)
- выполняет движение влево на 100 сантиметров (1 метр)nanopix.move_right(3)
- выполняет движение вправо на 300 сантиметров (3 метра)Важно! Функции в Python не ожидают завершения движения, необходимо добавлять задержки самостоятельно!
Функция осуществляет изменение высоты аппарата до указанной высоты от точки взлета.
Важно! Функция задает абсолютное значение (от точки взлёта, где высота = 0), а не относительно текущей высоты.
Диапазон значений параметра 15 - 300 см.
После установления заданной высоты в сантиметрах программа переходит к следующему блоку.
nanopix.setTargetAltitude(float meters, float max_speed, bool is_blocking);
float meters
- параметр задаёт целевую высоту в метрах, диапазон значений 0.15 - 3 метра.float max_speed
- параметр задаёт скорость выполнения движения (м/с), необязательный параметр, значение по умолчанию 0.2 метра в секунду.bool is_blocking
- параметр отвечает за ожидание выполнения, необязательный параметр, значение по умолчанию true
, т.е. функция ожидает завершения движения.По умолчанию функция ожидает завершение вызванного движения. Если вы хотите отключить ожидание выполнения движения, передайте
false
третим параметромis_blocking
.
Диапазон значений параметра 0.15 - 3 м.
nanopix.set_altitude(1.2)
- устанавливает целевую высоту аппарата на 120 сантиметров (1.2 метра)Важно! Функции в Python не ожидают завершения движения, необходимо добавлять задержки самостоятельно!
Функция осуществляет изменение высоты аппарата на указанное значение от текущей высоты полёта.
Важно! Функция задает относительное значение относительно текущей высоты.
Диапазон значений параметра от 0 до 300 см.
После завершения движения по изменению высоты программа переходит к следующему блоку.
nanopix.offsetTargetAltitude(float delta_meters, float max_speed, bool is_blocking);
float delta_meters
- параметр задаёт изменение высоты в метрах относительно текущей, диапазон значений от -3 до 3.float max_speed
- параметр задаёт скорость выполнения движения (м/с), необязательный параметр, значение по умолчанию 0.2 метра в секунду.bool is_blocking
- параметр отвечает за ожидание выполнения, необязательный параметр, значение по умолчанию true
, т.е. функция ожидает завершения движения.По умолчанию функция ожидает завершение вызванного движения. Если вы хотите отключить ожидание выполнения движения, передайте
false
третим параметромis_blocking
.
Диапазон значений параметра от -3 до 3 м.
nanopix.offset_altitude(0.6)
- увеличивает текущую высоту аппарата на 60 сантиметров (0.6 метра)Важно! Функции в Python не ожидают завершения движения, необходимо добавлять задержки самостоятельно!
Функции осуществляют поворот по курсу. При первом взлете после запуска миссии значение угла курса = 0
.
Устанавливает абсолютное значение угла курса в грудусах
Диапазон значений параметра от -180 до 180 градусов.
После завершения движения по изменению курса программа переходит к следующему блоку.
Изменяет текущий курс аппарата на указанное количество градусов
Диапазон значений параметра от -180 до 180 градусов.
После завершения движения по изменению курса программа переходит к следующему блоку.
Задает скорость по курсу в [градусах в секунду]
Диапазон значений параметра от 0 до 55 градусов в секунду.
Важно! Данный блок не ожидает завершения вращения по курсу! Если вы хотите завершить вращение, вам нужно вызвать данный блок со значением = 0.
nanopix.setYawDegrees(float target_yaw_deg, float speed_deg_sec, bool is_blocking);
float target_yaw_deg
- параметр задаёт абсолютный целевой угол курса в градусах, диапазон значений от -180 до 180 градусов.float speed_deg_sec
- параметр задаёт скорость выполнения движения (м/с), необязательный параметр, значение по умолчанию 35 град/сек.bool is_blocking
- параметр отвечает за ожидание выполнения, необязательный параметр, значение по умолчанию true
, т.е. функция ожидает завершения движения.nanopix.rotateYawDegrees(float delta_yaw_deg, float speed_deg_sec, bool is_blocking);
float delta_yaw_deg
- параметр задаёт изменение угла курса в градусах относительно текущего, диапазон значений от -180 до 180 градусов.float speed_deg_sec
- параметр задаёт скорость выполнения движения (м/с), необязательный параметр, значение по умолчанию 35 град/сек.bool is_blocking
- параметр отвечает за ожидание выполнения, необязательный параметр, значение по умолчанию true
, т.е. функция ожидает завершения движения.nanopix.setYawSpeed(float speed_deg_sec);
float speed_deg_sec
- параметр задаёт скорость вращения по курсу в градусах в секунду, диапазон значений от 0 до 55 градусов в секунду.По умолчанию функции ожидают завершения вызванного движения. Если вы хотите отключить ожидание выполнения движения, передайте
false
третим параметромis_blocking
.
nanopix.set_yaw(yaw_value_deg)
yaw_value_deg
- параметр задаёт абсолютный целевой угол курса в градусах, диапазон значений от -180 до 180 градусов.nanopix.rotateYawDegrees(yaw_offset_deg);
yaw_offset_deg
- параметр задаёт изменение угла курса в градусах относительно текущего, диапазон значений от -180 до 180 градусов.nanopix.set_yaw_speed(speed_deg_sec)
speed_deg_sec
- параметр задаёт скорость вращения по курсу в градусах в секунду, диапазон значений от 0 до 55 градусов в секунду.Важно! Функции в Python не ожидают завершения движения, необходимо добавлять задержки самостоятельно!
Функции осуществляют движение по координатам, представляют собой расширенную версию функций Вперед / Назад / Вправо / Влево.
Устанавливает абсолютное значение координат в сантиметрах
Изменяет текущий курс аппарата на указанное количество градусов
Для обычного блока после завершения движения по изменению курса программа переходит к следующему блоку. Для блока
без ожидания
ожидание завершения движения не выполняется и программа сразу переходит к следующему блоку.
Функция устанавливает абсолютные координаты (отсчитывая от точки первого взлета с начала миссии).
nanopix.setTargetPos(float pos_x, float pos_y, bool is_blocking);
float pos_x, float pos_y
- параметры задают абсолютые (X, Y) координаты в метрах.bool is_blocking
- параметр отвечает за ожидание выполнения, необязательный параметр, значение по умолчанию true
, т.е. функция ожидает завершения движения.Функция устанавливает смещение относительно текущего положения.
nanopix.offsetTargetPos(float pos_dx, float pos_dy, bool is_blocking = true);
float pos_x, float pos_y
- параметры задают относительное смещение (dX, dY) координат в метрах.bool is_blocking
- параметр отвечает за ожидание выполнения, необязательный параметр, значение по умолчанию true
, т.е. функция ожидает завершения движения.Аналогично, но по всем 3-м координатам:
nanopix.setTargetPos(float pos_x, float pos_y, float pos_z, float vel_x, float vel_y, float vel_z, bool is_blocking);
nanopix.offsetTargetPos(float pos_dx, float pos_dy, float pos_dz, float vel_x, float vel_y, float vel_z, bool is_blocking);
По умолчанию функции ожидают завершения вызванного движения. Если вы хотите отключить ожидание выполнения движения, передайте
false
в параметреis_blocking
.
nanopix.set_xy_pos(x_meters, y_meters);
x_meters, y_meters
- параметры задают абсолютые (X, Y) координаты в метрах.nanopix.offset_xy_pos(dx_meters, dy_meters)
dx_meters, dy_meters
- параметры задают относительное смещение (dX, dY) координат в метрах.Важно! Функции в Python не ожидают завершения движения, необходимо добавлять задержки самостоятельно!
Функции получают текущее значение высоты аппарата относительно точки взлета.
Возвращает значение высоты аппарата в сантиметрах:
Возвращает значение высоты аппарата в сантиметрах (int):
nanopix.getAltitudeCentimeters();
Возвращает значение высоты аппарата в метрах (float):
nanopix.getPosZ();
Возвращает значение высоты аппарата в метрах:
nanopix.get_pos_z()
Функции получают текущее угловое положение дрона (крен, тангаж, курс):
Возвращают значения углов наклона аппарата в градусах:
Возвращают значения углов наклона аппарата в градусах:
nanopix.getRoll();
nanopix.getPitch();
nanopix.getYaw();
Функции получают текущее положение джойстиков пульта (любого из управляющих девайсов: приложения на смартфоне, пульта Nanopad или ПК).
Функции возвращают значения отклонения джойстиков в условных единицах от 1000 до 2000 единиц:
Функции возвращают значения отклонения джойстиков в условных единицах от 1000 до 2000 единиц:
nanopix.getRC_Roll();
nanopix.getRC_Pitch();
nanopix.getRC_Yaw();
nanopix.getRC_Throttle();
Функции получают текущие кординаты и значения скоростей дрона по каждой из осей (X, Y, Z).
Функции возвращают текущие координаты дрона в метрах и скорость в метрах в секунду:
Функции возвращают текущие координаты дрона в метрах:
nanopix.getPosX();
nanopix.getPosY();
nanopix.getPosZ();
nanopix.getVelX();
nanopix.getVelY();
nanopix.getVelZ();
Функции получают текущие значения IMU датчика Nanopix по каждой из осей (X, Y, Z).
Функции возвращают:
Функции возвращают текущие показания акселерометра, нормированные на ускорение свободного падения (~9.81 м/с^2):
nanopix.getAccelX();
nanopix.getAccelY();
nanopix.getAccelZ();
nanopix.getGyroX();
nanopix.getGyroY();
nanopix.getGyroZ();
Для получения данных о препятствиях вам требуется подключить к Nanopix внешний датчик.
Инструкция по подключению.
Функция для получения расстояния до объекта в сантиметрах, измеряется датчиком с частотой 40 раз в секунду.
Функция для получения расстояния до объекта в сантиметрах, измеряется датчиком с частотой 40 Гц (40 раз в секунду).
nanopix.getDistanceSensorVal();
Функции для запуска и остановки двигателей.
Функции для запуска и остановки двигателей.
nanopix.armMotors();
nanopix.disarmMotors();
Функции для запуска и остановки двигателей.
nanopix.arm_motors()
nanopix.disarm_motors()
Функции для задания цвета свечения светодиодов. Диапазон значений по каждому каналу: от 0 до 255.
Функции для задания цвета свечения светодиодов. Диапазон значений по каждому каналу: от 0 до 255.
nanopix.setFrontLEDColor(int R, int G, int B);
nanopix.setBackLEDColor(int R, int G, int B);
Функции для задания цвета свечения светодиодов. Диапазон значений по каждому каналу: от 0 до 255.
nanopix.set_front_led(R, G, B)
nanopix.set_back_led(R, G, B)
Функция для печати отладочного собщения в лог. Отображается в Nanopix Ground Station или в приложении на Android (нужно нажать 5 раз на иконку аккумулятора, чтобы отобразить логи).
Блок поддерживает печать строки, целого или дробного числа.
nanopix.sendLogMsg(string / int / float)
- поддерживает печать строки, целого или дробного числаДля переноса грузов вам потребуется подключить к Nanopix внешний захват груза.
Инструкция по подключению.
Схема раскрытия захвата (процент передаётся параметром в функцию):
Блоки для управления захватом груза. Полное раскрытие/закрытие занимает 1 секунду, после чего блок завершает выполнение и программа переходит к следующему блоку.
Процент открытия задаётся в диапазоне от 0 до 100.
Функции для управления захватом груза. Полное раскрытие/закрытие занимает 1 секунду, после чего функция завершает выполнение.
nanopix.openClaw();
nanopix.closeClaw();
nanopix.setClaw(int percent);
- задает процент раскрытия (от 0 до 100)Мы используем собственную графическую среду программирования, она быстро работает даже на слабых ПК, а еще генерирует программный код на Arduino в реальном времени! ↩︎