Дрон для высаживания семян
CopterHack-2021, команда MINIONS.
Вы когда-нибудь задумывались, как будет выглядеть мир без деревьев? Закройте глаза и попробуйте представить себе безлюдную Землю. Деревья являются решающим фактором нашего существования не только потому, что они производят бумагу, пиломатериалы и жевательную резинку, но и потому, что они играют важную роль в углеродном цикле.
Со времени промышленной революции 1760–1840 годов мир пребывает в нескончаемом углеродном хаосе. Деревья и планктон - наши единственные спасители с точки зрения решения этой проблемы, и мы можем контролировать только одно из них - деревья.
Нам нужно спасать деревья, защищая их от разрушительной деятельности человека, такой как вырубка лесов, вырубка лесов в целях урбанизации и т. д. Деревья - легкие для земли. Это важная часть природной экосистемы. Они уравновешивают состав почвы, а также служат барьером для ветра и шторма. Таким образом, они обеспечивают различное использование экосистемы. По этим причинам крайне важно спасать деревья.
Поскольку существует множество опасных и труднодоступных участков для посадки людей, наиболее жизнеспособной альтернативой является использование дронов для посадки в этих регионах.
Как следует из названия, дроны, стреляющие семенами, будут стрелять семенами в плодородную почву, чтобы позволить миллионам деревьев вырасти снова после вырубки для промышленного использования. Если скорость посадки превышает скорость вырубки, в конечном итоге мы восстановим деревья, которые когда-то срубили.
Наша цель
Мы сделаем дроны способными удерживать семена на борту и сбрасывать их в область, которую мы проехали в специальном приложении. Мы можем контролировать плотность семян и высоту капли. Мы также думали о защите семян от насекомых, животных и обезвоживания. Мы выбираем технику шара земли, изобретенную Масанобу Фукуока, также известную как Техника Фукуока. Этот земной шар содержит все необходимые элементы для выращивания, семена растений и землю для защиты. Когда мы бросаем его на землю, земной шар будет удерживать семена, пока он не получит необходимое количество воды, и семена не начнут прорастать.
Видео с YouTube:
Нам удалось выполнить небольшие посевные миссии, но мы столкнулись с некоторыми проблемами, связанными с автономным полетом с GPS.
Мы покрыли нашу батарею, чтобы защитить ее от холода, посевные работы нужно начинать зимой, так как семена яблони должны оставаться в холодном месте в течение некоторого времени, чтобы акклиматизироваться.
- Капсулы с семенами.
- Как собрать высевающий механизм на дрон Clover 4.2.
- Как управлять механизмом раздачи.
- Программирование.
Файлы
Ссылка на все файлы, используемые в этом проекте: https://github.com/Sahinysf/TreeSeedQuad.
Капсулы с семенами
Техника Фукуока
На юге Японии японский фермер и философ Масанобу Фукуока изобрел технику посадки семенных шариков. Этот метод считается естественной техникой земледелия, не требующей машин, химикатов и очень небольшого количества прополки. При использовании семенных шариков земля обрабатывается без какой-либо подготовки почвы.
Преимущества семенных шариков
- Делать шарики с семенами проще и проще без использования машин.
- Легче для лесовосстановления и посадки на труднопроходимой местности
- Способствовать защите почвы, окружающей среды и средств к существованию
- Это органический метод, без использования каких-либо химикатов.
- Это недорогой метод по сравнению с традиционными методами облесения / лесовозобновления.
- Требует низких эксплуатационных расходов.
Какие семена можно использовать?
Любое семя, которое растет в вашем районе (у нас это семя яблока).
Размер и вес семенной капсулы:
Размер и вес семенных коробочек очень важны для этого проекта. После некоторых экспериментов мы решили, что лучший размер - диаметр 16-18 мм, а максимальный вес - 10 грамм.
Необходимые материалы для изготовления семенных шариков:
- 1 ведро глины;
- 1 ведро органической темной почвы / компоста;
- 1 ведро воды (количество воды может варьироваться в зависимости от типа почвы);
- ¼ ведро семян.
Шаги по изготовлению семенных шариков:
- Соберите одинаковое количество глины и органической почвы. Например, если вы используете одно ведро глины, вам следует смешать его с одним ведром органической почвы.
- Убедитесь, что глина и органические частицы почвы мелкие.
- Текстура глины и органической почвы должна быть влажной, но не липкой.
- Возьмите немного смеси и скатайте ее в шарики. Проверьте мяч, бросив его на плоскую поверхность. Если мяч не ломается легко, значит, у него хорошее сцепление.
- Шарики с семенами должны быть идеально круглой формы, иначе они застрянут при броске квадрокоптером.
- Вставьте семена (от 1 до 2 семян на семенной шарик для постоянных деревьев, таких как красное дерево, сандал, апельсин, моринга…) (± 5 семян на семенной шарик для овощей, цветов, трав, клевера…)
- Сушите семенные шарики в течение одного-двух дней в затененном месте, если высохнуть должным образом, семенные шарики будут защищены от внешних хищников, таких как птицы, грызуны…
Вторая техника - бумажные капсулы с семенами.
На этот метод повлияла корейская газета, в которой были семена, которые можно было посадить на улице после прочтения. Бумажные капсулы с семенами:
Необходимые материалы:
- любая бумага;
- вода;
- блендер;
- семена.
Шаги по изготовлению шариков из бумаги:
- Измельчение всей вашей бумаги,
- Положите бумагу в блендер и добавьте воды, через 2 минуты перемешайте.
- Выдавить всю воду бумагой,
- Добавьте семена и придайте круглую форму.
- Дайте высохнуть на ночь.
Преимущества бумажных шаров:
- легко найти материалы;
- экологически чистый.
Как собрать высевной механизм для Clover 4.2
Установите нижние держатели бака на крепление верхней палубы и закрепите винтами M3x8.
Установите нейлоновую стойку (40 мм) с 4 сторон крепления для деки.
Установите поручень и закрепите винтами M3x8.
Установите верхние держатели бака на верхнее захватное крепление и закрепите винтами M3x8.
Осторожно подсоедините резервуары к держателям резервуаров.
Подсоедините серводвигатели SG90 к резервуару с помощью стяжки.
Окончательный вид сеялки дрона:
Модуль GPS
Мы установили модуль GPS наверх, используя 2 нейлоновые стойки (40 мм).
Мы покрыли аккумулятор, чтобы защитить его от холода.
Как управлять механизмом высева
Электронная часть механизма высева семян состоит из:
- Raspberry Pi 4 B из COEX Clover 4.
- 2 микро-серводвигателя SG90.
- PDB (блок распределения питания) COEX Clover 4.
Сигнальные контакты серводвигателя подключены к контактам 32 и 33 аппаратной ШИМ Raspberry Pi, а питание снимается с платы распределения питания (5 В).
Пояснение кода для управления серводвигателями
Сервомоторы управляются с помощью сигнала ШИМ (широтно-импульсной модуляции) от Raspberry Pi. ШИМ контролирует количество времени, когда сигнал ВЫСОКИЙ или НИЗКИЙ в течение определенного периода времени. Рабочий цикл - процент времени, когда сигнал ВЫСОКИЙ.
В таблице ниже представлен рабочий цикл серводвигателя SG90 для каждого угла серводвигателя. Чтобы использовать рабочий цикл в коде, нам нужно преобразовать время в проценты, разделив время рабочего цикла на общий период ШИМ.
Что мы получаем:
- Угол поворота -90° или рабочий цикл 2 мс => 1/20 * 100% = рабочий цикл 5%.
- Угол поворота 90° или рабочий цикл 2 мс => 2/20 * 100% = рабочий цикл 10%.
- Угол поворота 0° или рабочий цикл 1,5 мс => 1,5 / 20 * 100% = 7,5% рабочий цикл.
Мы сделаем это с помощью библиотеки RPi.GPIO и написания кода Python на Raspberry Pi.
Сначала импортируйте библиотеку RPi.GPIO и функцию сна:
import RPi.GPIO as GPIO
from time import sleep
Затем установите режим GPIO как BOARD:
servo = 33
GPIO.setmode(GPIO.BOARD)
GPIO.setup(servo, GPIO.OUT)
Далее создайте переменную для сервопривода ШИМ. Затем отправьте сигнал ШИМ 50 Гц на этот вывод GPIO с помощью функции GPIO.PWM(). Начните сигнал с 0.
pwm=GPIO.PWM(servo, 50)
pwm.start(0)
Используйте функцию ChangeDutyCycle()
, чтобы записать проценты рабочего цикла в серводвигатель.
pwm.ChangeDutyCycle(5) # left -90 deg position
sleep(1)
pwm.ChangeDutyCycle(7.5) # neutral position
sleep(1)
pwm.ChangeDutyCycle(10) # right +90 deg position
sleep(1)
Программирование
Чтобы миссия была достигнута наилучшим образом и в пределах нашей досягаемости, от нас требовалось использовать многопоточность в Python.
Простой код миссии.
import threading
import time
import rospy
from clover import srv
from std_srvs.srv import Trigger
import RPi.GPIO as GPIO
rospy.init_node('flight')
get_telemetry = rospy.ServiceProxy('get_telemetry', srv.GetTelemetry)
navigate = rospy.ServiceProxy('navigate', srv.Navigate)
navigate_global = rospy.ServiceProxy('navigate_global', srv.NavigateGlobal)
set_position = rospy.ServiceProxy('set_position', srv.SetPosition)
set_velocity = rospy.ServiceProxy('set_velocity', srv.SetVelocity)
set_attitude = rospy.ServiceProxy('set_attitude', srv.SetAttitude)
set_rates = rospy.ServiceProxy('set_rates', srv.SetRates)
land = rospy.ServiceProxy('land', Trigger)
servo1 = 33 # PWM pins
servo2 = 32
GPIO.setmode(GPIO.BOARD) #set pin numbering system
GPIO.setup(servo1,GPIO.OUT)
GPIO.setup(servo2,GPIO.OUT)
pwm1 = GPIO.PWM(servo1,50) #create PWM instance with frequency
pwm2 = GPIO.PWM(servo2,50)
pwm1.start(0) #start PWM of required Duty Cycle
pwm2.start(0)
def servo_drop(seconds): #function to drop seed capsules from 2 tanks
print("Dropping")
i = 1 #variable to choose which tank
for num in range(seconds/2):
if(i == 1): #first tank
pwm1.ChangeDutyCycle(10) # release one seed capsule
time.sleep(0.5)
pwm1.ChangeDutyCycle(5) # push then drop the capsule
time.sleep(0.5)
i = 2 #changing the variable for to use the second tank in next dropping
elif(i == 2): #first tank
pwm2.ChangeDutyCycle(10) # release one seed capsule
time.sleep(0.5)
pwm2.ChangeDutyCycle(5) # push then drop the capsule
time.sleep(0.5)
i = 1 #changing the variable for to use the first tank in next dropping
print(num)
time.sleep(2)
if name == "main":
# Take off and drone 10m above the ground
navigate(x=0, y=0, z=10, frame_id='body', auto_arm=True)
# rospy waits for 10 seconds to take off
rospy.sleep(10)
# Dropping starts simultaneuously with flying forwards 5 meters
d = threading.Thread(target=servo_drop, args=(18,)) # 18 is the sum of all the time that the drone hovers after take off
d.start()
navigate(x=5, y=0, z=0, frame_id='body')
#rospy waits for 8 seconds to fly foward
rospy.sleep(8)
# Fly right 1 m
navigate(x=0, y=1, z=0, frame_id='body')
#rospy waits for 2 seconds to fly right
rospy.sleep(2)
# Fly backward 5 m
navigate(x=-5, y=0, z=0, frame_id='body')
#rospy waits for 8 seconds to fly backward
rospy.sleep(8)
# Perform landing
land()
pwm1.stop()
pwm2.stop()
GPIO.cleanup()
Литература
- Deforestation explained
- http://www.fao.org/fileadmin/templates/rap/files/NRE/Forestry_Group/Landslide_PolicyBrief.pdf
- Global Forest Change
- https://web.archive.org/web/20090115211020/http://www.rmaf.org.ph/Awardees/Biography/BiographyFukuokaMas.htm
- http://www.guerrillagarpting.org/ggseedbombs.html
Разработано командой MINIONS
Особая благодарность Международному университету Ала-Тоо за финансирование наборов Clover 4.