-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathseeding_drone.html
136 lines (112 loc) · 63.3 KB
/
seeding_drone.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="VuePress 2.0.0-beta.38">
<style>
:root {
--c-bg: #fff;
}
html.dark {
--c-bg: #22272e;
}
html, body {
background-color: var(--c-bg);
}
</style>
<script>
const userMode = localStorage.getItem('vuepress-color-scheme');
const systemDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
if (userMode === 'dark' || (userMode !== 'light' && systemDarkMode)) {
document.documentElement.classList.toggle('dark', true);
}
</script>
<title>Seed spreading quadcopter | Clover</title><meta name="description" content="Clover Drone Kit">
<link rel="modulepreload" href="/clover-vuepress/assets/app.4f6a4bec.js"><link rel="modulepreload" href="/clover-vuepress/assets/seeding_drone.html.fbe025b8.js"><link rel="modulepreload" href="/clover-vuepress/assets/seeding_drone.html.4b72e3c3.js"><link rel="modulepreload" href="/clover-vuepress/assets/electronic2.bbd39d97.js"><link rel="modulepreload" href="/clover-vuepress/assets/ala-too.ce15e4dd.js">
<link rel="stylesheet" href="/clover-vuepress/assets/style.7a1025bf.css">
</head>
<body>
<div id="app"><!--[--><div class="theme-container"><!--[--><header ref_key="navbar" class="navbar"><div class="toggle-sidebar-button" title="true" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a href="/clover-vuepress/en/" class=""><img class="logo" src="/clover-vuepress/clover-logo.png" alt="Clover"><span class="site-name can-hide">Clover</span></a></span><div class="navbar-items-wrapper" style=""><!--[--><!--]--><nav class="navbar-items can-hide"><!--[--><div class="navbar-item"><a class="external-link" href="https://coex.tech" rel="noopener noreferrer" target="_blank" aria-label="Official Site"><!--[--><!--]--> Official Site <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://t.me/COEXHelpdesk" rel="noopener noreferrer" target="_blank" aria-label="Support Chat"><!--[--><!--]--> Support Chat <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><!--[--><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a aria-current="page" href="/clover-vuepress/en/seeding_drone.html" class="router-link-active router-link-exact-active router-link-active" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/clover-vuepress/ru/seeding_drone.html" class="" aria-label="Русский"><!--[--><!--]--> Русский <!--[--><!--]--></a></li><!--]--></ul><!--]--></div></div><div class="navbar-item"><a class="external-link" href="https://github.com/CopterExpress/clover" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button class="toggle-dark-button" title="toggle dark mode"><svg style="" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg style="display:none;" class="icon" focusable="false" viewBox="0 0 32 32"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><form class="search-box" role="search"><input type="search" autocomplete="off" spellcheck="false" value><!----></form></div></header><!--]--><div class="sidebar-mask"></div><!--[--><aside class="sidebar"><nav class="navbar-items"><!--[--><div class="navbar-item"><a class="external-link" href="https://coex.tech" rel="noopener noreferrer" target="_blank" aria-label="Official Site"><!--[--><!--]--> Official Site <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><div class="navbar-item"><a class="external-link" href="https://t.me/COEXHelpdesk" rel="noopener noreferrer" target="_blank" aria-label="Support Chat"><!--[--><!--]--> Support Chat <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><div class="navbar-item"><div class="navbar-dropdown-wrapper"><button class="navbar-dropdown-title" type="button" aria-label="Select language"><span class="title">Languages</span><span class="arrow down"></span></button><button class="navbar-dropdown-title-mobile" type="button" aria-label="Select language"><span class="title">Languages</span><span class="right arrow"></span></button><!--[--><ul style="display:none;" class="navbar-dropdown"><!--[--><li class="navbar-dropdown-item"><a aria-current="page" href="/clover-vuepress/en/seeding_drone.html" class="router-link-active router-link-exact-active router-link-active" aria-label="English"><!--[--><!--]--> English <!--[--><!--]--></a></li><li class="navbar-dropdown-item"><a href="/clover-vuepress/ru/seeding_drone.html" class="" aria-label="Русский"><!--[--><!--]--> Русский <!--[--><!--]--></a></li><!--]--></ul><!--]--></div></div><div class="navbar-item"><a class="external-link" href="https://github.com/CopterExpress/clover" rel="noopener noreferrer" target="_blank" aria-label="GitHub"><!--[--><!--]--> GitHub <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="sidebar-items"><!--[--><li><a href="/clover-vuepress/en/" class="sidebar-item sidebar-heading" aria-label="COEX Clover"><!--[--><!--]--> COEX Clover <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/glossary.html" class="sidebar-item sidebar-heading" aria-label="Glossary"><!--[--><!--]--> Glossary <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/safety.html" class="sidebar-item sidebar-heading" aria-label="Safety tips"><!--[--><!--]--> Safety tips <!--[--><!--]--></a><!----></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Assembly <span class="right arrow"></span></p><!--[--><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/clover-vuepress/en/assembly.html" class="sidebar-item" aria-label="Clover drone assembly"><!--[--><!--]--> Clover drone assembly <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/assemble_4_2.html" class="sidebar-item" aria-label="Clover 4.2 assembly"><!--[--><!--]--> Clover 4.2 assembly <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/assemble_4_2_ws.html" class="sidebar-item" aria-label="Clover 4 assembly"><!--[--><!--]--> Clover 4 assembly <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/assemble_4.html" class="sidebar-item" aria-label="Clover 4 assembly"><!--[--><!--]--> Clover 4 assembly <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/assemble_3.html" class="sidebar-item" aria-label="Assembly of Clover 3"><!--[--><!--]--> Assembly of Clover 3 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/assemble_2.html" class="sidebar-item" aria-label="Clover 2 construction kit assembly instruction"><!--[--><!--]--> Clover 2 construction kit assembly instruction <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Configuration <span class="right arrow"></span></p><!--[--><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/clover-vuepress/en/setup.html" class="sidebar-item" aria-label="Initial setup"><!--[--><!--]--> Initial setup <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/calibration.html" class="sidebar-item" aria-label="Sensor calibration"><!--[--><!--]--> Sensor calibration <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/radio.html" class="sidebar-item" aria-label="RC setup"><!--[--><!--]--> RC setup <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/rc_flysky_a8s.html" class="sidebar-item" aria-label="Using Flysky FS-A8S"><!--[--><!--]--> Using Flysky FS-A8S <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/modes.html" class="sidebar-item" aria-label="Flight modes"><!--[--><!--]--> Flight modes <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/power.html" class="sidebar-item" aria-label="Power setup"><!--[--><!--]--> Power setup <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/failsafe.html" class="sidebar-item" aria-label="Failsafe configuration"><!--[--><!--]--> Failsafe configuration <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Manual flight <span class="right arrow"></span></p><!--[--><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/clover-vuepress/en/flight.html" class="sidebar-item" aria-label="Flight"><!--[--><!--]--> Flight <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/flight_exercises.html" class="sidebar-item" aria-label="Drone control exercises"><!--[--><!--]--> Drone control exercises <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Working with Raspberry Pi <span class="right arrow"></span></p><!--[--><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/clover-vuepress/en/raspberry.html" class="sidebar-item" aria-label="Raspberry Pi"><!--[--><!--]--> Raspberry Pi <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/image.html" class="sidebar-item" aria-label="Raspberry Pi image"><!--[--><!--]--> Raspberry Pi image <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/wifi.html" class="sidebar-item" aria-label="Connecting to Clover via Wi-Fi"><!--[--><!--]--> Connecting to Clover via Wi-Fi <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/connection.html" class="sidebar-item" aria-label="Connecting Raspberry Pi to the flight controller"><!--[--><!--]--> Connecting Raspberry Pi to the flight controller <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/gcs_bridge.html" class="sidebar-item" aria-label="Using QGroundControl via Wi-Fi"><!--[--><!--]--> Using QGroundControl via Wi-Fi <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/ssh.html" class="sidebar-item" aria-label="SSH access to Raspberry Pi"><!--[--><!--]--> SSH access to Raspberry Pi <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/cli.html" class="sidebar-item" aria-label="Command line interface"><!--[--><!--]--> Command line interface <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/selfcheck.html" class="sidebar-item" aria-label="Automatic check"><!--[--><!--]--> Automatic check <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/web_video_server.html" class="sidebar-item" aria-label="Viewing images from cameras"><!--[--><!--]--> Viewing images from cameras <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Programming <span class="right arrow"></span></p><!--[--><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/clover-vuepress/en/programming.html" class="sidebar-item" aria-label="Programming"><!--[--><!--]--> Programming <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/camera_setup.html" class="sidebar-item" aria-label="Camera setup"><!--[--><!--]--> Camera setup <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/aruco.html" class="sidebar-item" aria-label="ArUco markers"><!--[--><!--]--> ArUco markers <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/aruco_marker.html" class="sidebar-item" aria-label="ArUco marker detection"><!--[--><!--]--> ArUco marker detection <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/aruco_map.html" class="sidebar-item" aria-label="Map-based navigation with ArUco markers"><!--[--><!--]--> Map-based navigation with ArUco markers <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/optical_flow.html" class="sidebar-item" aria-label="Use of Optical Flow"><!--[--><!--]--> Use of Optical Flow <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/simple_offboard.html" class="sidebar-item" aria-label="Autonomous flight"><!--[--><!--]--> Autonomous flight <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/frames.html" class="sidebar-item" aria-label="Coordinate systems (frames)"><!--[--><!--]--> Coordinate systems (frames) <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/snippets.html" class="sidebar-item" aria-label="Code examples"><!--[--><!--]--> Code examples <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/laser.html" class="sidebar-item" aria-label="Working with a laser rangefinder"><!--[--><!--]--> Working with a laser rangefinder <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/leds.html" class="sidebar-item" aria-label="Working with a LED strip"><!--[--><!--]--> Working with a LED strip <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/gpio.html" class="sidebar-item" aria-label="Working with GPIO"><!--[--><!--]--> Working with GPIO <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/sonar.html" class="sidebar-item" aria-label="Working with the ultrasonic distance gage"><!--[--><!--]--> Working with the ultrasonic distance gage <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/camera.html" class="sidebar-item" aria-label="Working with the camera"><!--[--><!--]--> Working with the camera <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/rviz.html" class="sidebar-item" aria-label="Using rviz and rqt"><!--[--><!--]--> Using rviz and rqt <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/autolaunch.html" class="sidebar-item" aria-label="Software autorun"><!--[--><!--]--> Software autorun <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/javascript.html" class="sidebar-item" aria-label="Work with ROS from browser"><!--[--><!--]--> Work with ROS from browser <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/blocks.html" class="sidebar-item" aria-label="Blocks programming for Clover"><!--[--><!--]--> Blocks programming for Clover <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/simulation.html" class="sidebar-item" aria-label="Simulation overview"><!--[--><!--]--> Simulation overview <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/simulation_native.html" class="sidebar-item" aria-label="Native setup"><!--[--><!--]--> Native setup <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/simulation_vm.html" class="sidebar-item" aria-label="Simulation VM setup"><!--[--><!--]--> Simulation VM setup <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/simulation_usage.html" class="sidebar-item" aria-label="Using the simulator"><!--[--><!--]--> Using the simulator <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/simulation_m1.html" class="sidebar-item" aria-label="Running simulator on M1 powered computer"><!--[--><!--]--> Running simulator on M1 powered computer <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/ros.html" class="sidebar-item" aria-label="ROS"><!--[--><!--]--> ROS <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/mavros.html" class="sidebar-item" aria-label="MAVROS"><!--[--><!--]--> MAVROS <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Supplementary materials <span class="right arrow"></span></p><!--[--><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/clover-vuepress/en/supplementary.html" class="sidebar-item" aria-label="Supplementary materials"><!--[--><!--]--> Supplementary materials <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/coex_pix.html" class="sidebar-item" aria-label="COEX Pix"><!--[--><!--]--> COEX Pix <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/coex_pdb.html" class="sidebar-item" aria-label="COEX PDB"><!--[--><!--]--> COEX PDB <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/coex_gps.html" class="sidebar-item" aria-label="COEX GPS"><!--[--><!--]--> COEX GPS <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/auto_setup.html" class="sidebar-item" aria-label="Step-by-step guide on autonomous flight with Clover 4"><!--[--><!--]--> Step-by-step guide on autonomous flight with Clover 4 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/hostname.html" class="sidebar-item" aria-label="Hostname"><!--[--><!--]--> Hostname <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/sitl.html" class="sidebar-item" aria-label="PX4 Simulation"><!--[--><!--]--> PX4 Simulation <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/wall_aruco.html" class="sidebar-item" aria-label="Navigation using vertical ArUco-markers"><!--[--><!--]--> Navigation using vertical ArUco-markers <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/calibratePID.html" class="sidebar-item" aria-label="Configuring the PID coefficients"><!--[--><!--]--> Configuring the PID coefficients <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/models.html" class="sidebar-item" aria-label="Model files for parts"><!--[--><!--]--> Model files for parts <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/ros-install.html" class="sidebar-item" aria-label="ROS Melodic package installation and setup"><!--[--><!--]--> ROS Melodic package installation and setup <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/camera_calibration.html" class="sidebar-item" aria-label="Camera calibration"><!--[--><!--]--> Camera calibration <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/zerotire_vpn.html" class="sidebar-item" aria-label="Creating a virtual network ZeroTier One and connecting to it"><!--[--><!--]--> Creating a virtual network ZeroTier One and connecting to it <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/4g.html" class="sidebar-item" aria-label="Multi-copter control with 4G communication"><!--[--><!--]--> Multi-copter control with 4G communication <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/jetson_nano.html" class="sidebar-item" aria-label="Clover and Jetson Nano"><!--[--><!--]--> Clover and Jetson Nano <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/rc.html" class="sidebar-item" aria-label="Controlling Clover from a smartphone"><!--[--><!--]--> Controlling Clover from a smartphone <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/network.html" class="sidebar-item" aria-label="Configuring Wi-Fi"><!--[--><!--]--> Configuring Wi-Fi <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/uart.html" class="sidebar-item" aria-label="UART interface"><!--[--><!--]--> UART interface <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/parameters.html" class="sidebar-item" aria-label="PX4 Parameters"><!--[--><!--]--> PX4 Parameters <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/flight_logs.html" class="sidebar-item" aria-label="PX4 Logs and Topics"><!--[--><!--]--> PX4 Logs and Topics <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/firmware.html" class="sidebar-item" aria-label="Pixhawk / Pixracer firmware flashing"><!--[--><!--]--> Pixhawk / Pixracer firmware flashing <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/mavlink.html" class="sidebar-item" aria-label="MAVLink"><!--[--><!--]--> MAVLink <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/test_connection.html" class="sidebar-item" aria-label="How to use a multimeter?"><!--[--><!--]--> How to use a multimeter? <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/radioerrors.html" class="sidebar-item" aria-label="Possible radio failures"><!--[--><!--]--> Possible radio failures <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/esc_firmware.html" class="sidebar-item" aria-label="Flashing ESCs using BLHeliSuite"><!--[--><!--]--> Flashing ESCs using BLHeliSuite <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/arduino.html" class="sidebar-item" aria-label="Controlling the copter from Arduino"><!--[--><!--]--> Controlling the copter from Arduino <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/gps.html" class="sidebar-item" aria-label="Connecting GPS"><!--[--><!--]--> Connecting GPS <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/ir_sensors.html" class="sidebar-item" aria-label="Working with IR sensors on Raspberry Pi 3"><!--[--><!--]--> Working with IR sensors on Raspberry Pi 3 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/fpv_clover_4_2.html" class="sidebar-item" aria-label="Installing and configuring FPV equipment"><!--[--><!--]--> Installing and configuring FPV equipment <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/fpv.html" class="sidebar-item" aria-label="Installation of FPV"><!--[--><!--]--> Installation of FPV <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/magnetic_grip.html" class="sidebar-item" aria-label="Assembling and setting up the electromagnetic gripper"><!--[--><!--]--> Assembling and setting up the electromagnetic gripper <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/mechanical_grip.html" class="sidebar-item" aria-label="Assembling and setting up a mechanical gripper"><!--[--><!--]--> Assembling and setting up a mechanical gripper <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/trainer_mode.html" class="sidebar-item" aria-label="FlySky Trainer mode settings"><!--[--><!--]--> FlySky Trainer mode settings <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/tinning.html" class="sidebar-item" aria-label="Blanching"><!--[--><!--]--> Blanching <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/connectortypes.html" class="sidebar-item" aria-label="Types of power connectors"><!--[--><!--]--> Types of power connectors <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/4in1.html" class="sidebar-item" aria-label="Connecting 4 in 1 ESCs"><!--[--><!--]--> Connecting 4 in 1 ESCs <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/tb.html" class="sidebar-item" aria-label="Soldering safety"><!--[--><!--]--> Soldering safety <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/leds_old.html" class="sidebar-item" aria-label="Working with a LED strip on Raspberry 3"><!--[--><!--]--> Working with a LED strip on Raspberry 3 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/contributing.html" class="sidebar-item" aria-label="Contribution to Clover"><!--[--><!--]--> Contribution to Clover <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/packages.html" class="sidebar-item" aria-label="COEX packages repository"><!--[--><!--]--> COEX packages repository <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/migrate20.html" class="sidebar-item" aria-label="Migration to version 0.20"><!--[--><!--]--> Migration to version 0.20 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/migrate22.html" class="sidebar-item" aria-label="Migration to version 0.22"><!--[--><!--]--> Migration to version 0.22 <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><li><p tabindex="0" class="sidebar-item sidebar-heading collapsible">Events <span class="right arrow"></span></p><!--[--><ul style="display:none;" class="sidebar-item-children"><!--[--><li><a href="/clover-vuepress/en/events.html" class="sidebar-item" aria-label="Events"><!--[--><!--]--> Events <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/copterhack2022.html" class="sidebar-item" aria-label="CopterHack 2022"><!--[--><!--]--> CopterHack 2022 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/copterhack2021.html" class="sidebar-item" aria-label="CopterHack 2021"><!--[--><!--]--> CopterHack 2021 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/copterhack2019.html" class="sidebar-item" aria-label="Copter Hack 2019"><!--[--><!--]--> Copter Hack 2019 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/copterhack2018.html" class="sidebar-item" aria-label="Copter Hack 2018"><!--[--><!--]--> Copter Hack 2018 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/copterhack2017.html" class="sidebar-item" aria-label="Copter Hack 2017"><!--[--><!--]--> Copter Hack 2017 <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/video_contest.html" class="sidebar-item" aria-label="Contest for the best educational video on assembly and configuration"><!--[--><!--]--> Contest for the best educational video on assembly and configuration <!--[--><!--]--></a><!----></li><li><a href="/clover-vuepress/en/educational_contests.html" class="sidebar-item" aria-label="Educational contests"><!--[--><!--]--> Educational contests <!--[--><!--]--></a><!----></li><!--]--></ul><!--]--></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="page"><!--[--><!--]--><div class="theme-default-content"><!--[--><h1 id="seed-spreading-quadcopter" tabindex="-1"><a class="header-anchor" href="#seed-spreading-quadcopter" aria-hidden="true">#</a> Seed spreading quadcopter</h1><p><a href="/clover-vuepress/en/copterhack2021.html" class="">CopterHack-2021</a>, team <strong>MINIONS</strong>.</p><p>Have you ever wondered what a world without trees would look like? Close your eyes, and try to imagine a desolate Earth. There'd be no more paper, and everyone would have to resort to technological use - that is, if anyone was left. Trees are a crucial factor to our existence not only because they produce paper, lumber and chewing gum, but because they serve an important role in the carbon cycle.</p><p>Ever since the industrial revolution between 1760 and 1840, the world has been in a never-ending carbon chaos. Trees and Plankton are our only saviours in terms of handling this problem, and we can only control one of them, trees.</p><p>We need to save trees by protecting them from the destructive human activities like clearance of forests, deforestation for urbanization, etc. Trees are the lungs for the earth. It is an important part of nature’s ecosystem. They balance the soil composition and also act as the barrier for wind and storm. Thus, they provide various uses to the ecosystem. For these reasons, it’s imperative that we save trees.</p><p>Since there are a lot of dangerous and difficult-to-reach landsides for humans to plant, the most viable alternative is to use drones for plantation in those regions.</p><p>Seed-firing drones will, as the name suggests, fire seeds into fertile soil to allow millions of trees to grow back after being cut down for industrial use. If the rate of planting exceeds the rate of cutting, eventually we will restore the trees we once felled.</p><img src="/clover-vuepress/assets/image.6d61b0e2.jpg" alt="" width="400px" class="center"><h2 id="our-aim" tabindex="-1"><a class="header-anchor" href="#our-aim" aria-hidden="true">#</a> Our Aim</h2><p>We will make drones able to hold seeds onboard and drop them in an area which we drove in a special application. We can control the density of the seeds and the height of the drop. We also thought about protection of the seeds from insects, animals and dehydration. We choose the earth ball technique invented by Masanobu Fukuoka, aka Fukuoka Technique. This earth ball contains all needed elements to grow, plant seeds and earth for protection. When we drop it on the ground, the earth ball will hold seeds until it gets the needed amount of water and seeds will begin to grow.</p><p>YouTube video link - <a href="https://www.youtube.com/embed/Nz1w59v451U" target="_blank" rel="noopener noreferrer">https://www.youtube.com/embed/Nz1w59v451U<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>.</p><p>We achieved to do small seeding missions but we faced some problem about autonomous flying with GPS.</p><p>We coated our battery to protect it from cold weather, seeding missions need to start in winter since apple seeds need to stay in a cold place for some time to break dormancy.</p><ul><li><a href="#seed-capsules">Seed capsules</a></li><li><a href="#how-to-assemble-seeding-mechanism-to-clover-42-drone">How to assemble seeding mechanism to clover 4.2 drone</a></li><li><a href="#how-to-control-the-seeding-mechanism">How to control the seeding mechanism</a></li><li><a href="#programming">Programming</a></li></ul><h2 id="files" tabindex="-1"><a class="header-anchor" href="#files" aria-hidden="true">#</a> Files</h2><p>Link for the all files used in this project: <a href="https://github.com/Sahinysf/TreeSeedQuad" target="_blank" rel="noopener noreferrer">https://github.com/Sahinysf/TreeSeedQuad<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a>.</p><h2 id="seed-capsules" tabindex="-1"><a class="header-anchor" href="#seed-capsules" aria-hidden="true">#</a> Seed capsules</h2><h3 id="fukuoka-technique" tabindex="-1"><a class="header-anchor" href="#fukuoka-technique" aria-hidden="true">#</a> Fukuoka technique</h3><p>In southern Japan, the Japanese farmer and philosopher Masanobu Fukuoka invented a seed ball planting technique. The method is regarded as a natural farming technique that requires no machines, no chemicals and very little weeding. By the use of seed balls, land is cultivated without any soil preparation.</p><img src="/clover-vuepress/assets/1.6e4488f6.jpg" width="250px" class="center"><p>Advantages of seed balls:</p><ul><li>It is simple and easier to make seed balls without machines.</li><li>Easier for reforestation and plantation in difficult terrains.</li><li>Contribute to protect soil, environment and livelihood.</li><li>It is an organic technique and doesn’t use any chemicals.</li><li>It is a low-cost method compared to traditional afforestation/reforestation techniques.</li><li>It requires low maintenance.</li></ul><h3 id="which-seeds-can-be-used" tabindex="-1"><a class="header-anchor" href="#which-seeds-can-be-used" aria-hidden="true">#</a> Which Seeds can be used?</h3><p>Any seed which grows in your area (In our it’s apple seed).</p><p>Size and weight of the seed capsule: size and Weight of seed capsules are very important for this project. After some experiments we decided that best size is 16-18mm diameter and maximum weight is 10 g.</p><p>Required materials for making seed balls:</p><ol><li>1 bucket of clay</li><li>1 bucket of organic dark soil / compost</li><li>1 bucket of water (amount of water may vary depending on the soil type)</li><li>¼ bucket of seeds</li></ol><p>Steps for making seed balls:</p><ol><li>Collect same quantity of both clay and organic soil. For example, if you use one bucket of clay, then you should mix with one bucket of organic soil.</li><li>Make sure that clay and organic soil fine particles.</li><li>The clay and organic soil texture should be wet but not sticky</li><li>Take a bit of mixture and roll it into balls. Test the ball by throwing it on a flat surface. If the ball doesn’t break easily, it means it has got good bonding.</li><li>Seed balls must be a perfectly round shape otherwise they will be stuck while throwing with the quadcopter</li><li>Insert seeds (1 to 2 seeds per seed ball for permanent trees such as mahogany, sandalwood, orange, moringa…) (± 5 seeds per seed ball for vegetables, flowers, grasses, clovers…)</li><li>Dry the seed balls for one to two days in a shaded area, if properly dry, the seed balls will be protected from external predators such as chickens, birds, rats…</li></ol><img src="/clover-vuepress/assets/3.03f3ff6e.jpg" width="250px" class="center"><p>Second technique - paper seed capsules.</p><p>This method was influenced by a Korean newspaper that contained seed that could be planted outside after reading it. Paper seed capsules :</p><p>Required materials:</p><ol><li>Any kind of paper</li><li>Water</li><li>Blender</li><li>Seeds</li></ol><p>Steps for making paper seed balls:</p><ol><li>Shred all of your paper.</li><li>Put paper in blender and add water, after 2 minutes blend.</li><li>Squeeze all the water out with paper.</li><li>Add seeds and give round shape.</li><li>Let it dry overnight.</li></ol><img src="/clover-vuepress/assets/2.ca61d656.jpg" width="400px" class="center"><p>Advantages of paper balls:</p><ul><li>Easy to find materials.</li><li>Environmentally friendly.</li></ul><p>REREFENCES</p><p><a href="https://web.archive.org/web/20090115211020/http://www.rmaf.org.ph/Awardees/Biography/BiographyFukuokaMas.htm" target="_blank" rel="noopener noreferrer">https://web.archive.org/web/20090115211020/http://www.rmaf.org.ph/Awardees/Biography/BiographyFukuokaMas.htm<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a><a href="http://www.guerrillagardening.org/ggseedbombs.html" target="_blank" rel="noopener noreferrer">http://www.guerrillagardening.org/ggseedbombs.html<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></p><h2 id="how-to-assemble-seeding-mechanism-to-clover-4-2-drone" tabindex="-1"><a class="header-anchor" href="#how-to-assemble-seeding-mechanism-to-clover-4-2-drone" aria-hidden="true">#</a> How to assemble seeding mechanism to Clover 4.2 drone</h2><h3 id="how-to-assemble-seeding-mechanism" tabindex="-1"><a class="header-anchor" href="#how-to-assemble-seeding-mechanism" aria-hidden="true">#</a> How to assemble seeding mechanism</h3><p>After finishing step 4, at section Installing guard of Clover 4.2 assembly.</p><ol><li><p>Install the Lower Tank Holders to top Deck mount and fix with the M3x8 screws.</p><img src="/clover-vuepress/assets/1.127519dd.png" width="400px" class="center"></li><li><p>Install Nylon rack(40 mm) to 4 sides of the Deck mount.</p><img src="/clover-vuepress/assets/2.4bc22d62.png" width="400px" class="center"></li><li><p>Install the Grab deck and fix with the M3x8 screws.</p><img src="/clover-vuepress/assets/3.aff46119.png" width="400px" class="center"></li><li><p>Install the Upper Tank Holders to top Grab mount and fix with the M3x8 screws.</p><img src="/clover-vuepress/assets/4.135495dc.png" width="400px" class="center"></li><li><p>Connect the Tanks carefully to Tank Holders.</p><img src="/clover-vuepress/assets/5.1a0fea41.png" width="400px" class="center"></li><li><p>Connect SG90 servo motors to Tank using zip tie.</p></li></ol><p>Final view of seeding drone:</p><img src="/clover-vuepress/assets/6.b4220075.jpg" alt="" width="400px" class="center"><h3 id="gps-module" tabindex="-1"><a class="header-anchor" href="#gps-module" aria-hidden="true">#</a> GPS Module</h3><p>We installed the GPS Module to the top using 2 Nylon rack (40 mm):</p><img src="/clover-vuepress/assets/7.125c6103.jpg" alt="" width="400px" class="center"><p>We coated the battery to protect it from the cold weather:</p><img src="/clover-vuepress/assets/8.1b9493d3.jpg" alt="" width="400px" class="center"><h2 id="how-to-control-the-seeding-mechanism" tabindex="-1"><a class="header-anchor" href="#how-to-control-the-seeding-mechanism" aria-hidden="true">#</a> How to control the seeding mechanism</h2><p>Electronic part of seed dropping mechanism consists of:</p><ul><li>Raspberry Pi 4 B of COEX Clover 4.</li><li>2 Micro Servo Motors SG90.</li><li>PDB (Power Distribution Board) of COEX Clover 4.</li></ul><p>Servo motor’s signal pins are connected to Raspberry Pi’s Hardware PWM pins 32 and 33, and power is taken from Power Distribution Board (5 V).</p><img src="/clover-vuepress/assets/electronic1.7148fbe2.png" alt="" width="400px" class="center"><h3 id="explanation-of-code-for-controlling-servo-motors" tabindex="-1"><a class="header-anchor" href="#explanation-of-code-for-controlling-servo-motors" aria-hidden="true">#</a> Explanation of code for controlling servo motors</h3><p>Servo motors are controlled using a PWM (Pulse-Width Modulation) signal from Raspberry Pi. PWM controls the amount of time when signal is HIGH or LOW within a certain period of time. Duty Cycle – percentage of time when signal is HIGH.</p><p>In a table below it's presented the duty cycle of Servo Motor SG90 of each angle of servo motor. In order to use duty cycle in code we need to convert time to percentage by dividing duty cycle time by the total PWM period.</p><p>What we get is:</p><ul><li>-90° rotation angle or 2ms Duty Cycle => 1/20*100% = 5% Duty Cycle.</li><li>90° rotation angle or 2ms Duty Cycle => 2/20*100% = 10% Duty Cycle.</li><li>0° rotation angle or 1,5ms Duty Cycle => 1,5/20*100% = 7,5% Duty Cycle.</li></ul><img src="/clover-vuepress/assets/electronic2.68a5a10e.png" alt="" width="400px" class="center"><p>We’ll do this by using the RPi.GPIO library and writing Python code on the Raspberry Pi.</p><p>First, import the RPi.GPIO library and the sleep function:</p><div class="language-python ext-py"><pre class="language-python"><code><span class="token keyword">import</span> RPi<span class="token punctuation">.</span>GPIO <span class="token keyword">as</span> GPIO
<span class="token keyword">from</span> time <span class="token keyword">import</span> sleep
</code></pre></div><p>Then, setup the GPIO mode as BOARD:</p><div class="language-python ext-py"><pre class="language-python"><code>servo <span class="token operator">=</span> <span class="token number">33</span>
GPIO<span class="token punctuation">.</span>setmode<span class="token punctuation">(</span>GPIO<span class="token punctuation">.</span>BOARD<span class="token punctuation">)</span>
GPIO<span class="token punctuation">.</span>setup<span class="token punctuation">(</span>servo<span class="token punctuation">,</span> GPIO<span class="token punctuation">.</span>OUT<span class="token punctuation">)</span>
</code></pre></div><p>Next, create a variable for the servo, PWM. Then, send a 50 Hz PWM signal on that GPIO pin using the <code>GPIO.PWM</code> function. Start the signal at 0:</p><div class="language-python ext-py"><pre class="language-python"><code>pwm<span class="token operator">=</span>GPIO<span class="token punctuation">.</span>PWM<span class="token punctuation">(</span>servo<span class="token punctuation">,</span> <span class="token number">50</span><span class="token punctuation">)</span>
pwm<span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
</code></pre></div><p>Use the <code>ChangeDutyCycle</code> function to write duty cycle percentages to the servo motor.</p><div class="language-python ext-py"><pre class="language-python"><code>pwm<span class="token punctuation">.</span>ChangeDutyCycle<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> <span class="token comment"># left -90 deg position</span>
sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
pwm<span class="token punctuation">.</span>ChangeDutyCycle<span class="token punctuation">(</span><span class="token number">7.5</span><span class="token punctuation">)</span> <span class="token comment"># neutral position</span>
sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
pwm<span class="token punctuation">.</span>ChangeDutyCycle<span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span> <span class="token comment"># right +90 deg position</span>
sleep<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span>
</code></pre></div><h2 id="programming" tabindex="-1"><a class="header-anchor" href="#programming" aria-hidden="true">#</a> Programming</h2><p>In order for the mission to be achievable in the best way and within our reach, we were required to utilize the threading in Python.</p><p>Simple mission code:</p><div class="language-python ext-py"><pre class="language-python"><code><span class="token keyword">import</span> threading
<span class="token keyword">import</span> time
<span class="token keyword">import</span> rospy
<span class="token keyword">from</span> clover <span class="token keyword">import</span> srv
<span class="token keyword">from</span> std_srvs<span class="token punctuation">.</span>srv <span class="token keyword">import</span> Trigger
<span class="token keyword">import</span> RPi<span class="token punctuation">.</span>GPIO <span class="token keyword">as</span> GPIO
rospy<span class="token punctuation">.</span>init_node<span class="token punctuation">(</span><span class="token string">'flight'</span><span class="token punctuation">)</span>
get_telemetry <span class="token operator">=</span> rospy<span class="token punctuation">.</span>ServiceProxy<span class="token punctuation">(</span><span class="token string">'get_telemetry'</span><span class="token punctuation">,</span> srv<span class="token punctuation">.</span>GetTelemetry<span class="token punctuation">)</span>
navigate <span class="token operator">=</span> rospy<span class="token punctuation">.</span>ServiceProxy<span class="token punctuation">(</span><span class="token string">'navigate'</span><span class="token punctuation">,</span> srv<span class="token punctuation">.</span>Navigate<span class="token punctuation">)</span>
navigate_global <span class="token operator">=</span> rospy<span class="token punctuation">.</span>ServiceProxy<span class="token punctuation">(</span><span class="token string">'navigate_global'</span><span class="token punctuation">,</span> srv<span class="token punctuation">.</span>NavigateGlobal<span class="token punctuation">)</span>
set_position <span class="token operator">=</span> rospy<span class="token punctuation">.</span>ServiceProxy<span class="token punctuation">(</span><span class="token string">'set_position'</span><span class="token punctuation">,</span> srv<span class="token punctuation">.</span>SetPosition<span class="token punctuation">)</span>
set_velocity <span class="token operator">=</span> rospy<span class="token punctuation">.</span>ServiceProxy<span class="token punctuation">(</span><span class="token string">'set_velocity'</span><span class="token punctuation">,</span> srv<span class="token punctuation">.</span>SetVelocity<span class="token punctuation">)</span>
set_attitude <span class="token operator">=</span> rospy<span class="token punctuation">.</span>ServiceProxy<span class="token punctuation">(</span><span class="token string">'set_attitude'</span><span class="token punctuation">,</span> srv<span class="token punctuation">.</span>SetAttitude<span class="token punctuation">)</span>
set_rates <span class="token operator">=</span> rospy<span class="token punctuation">.</span>ServiceProxy<span class="token punctuation">(</span><span class="token string">'set_rates'</span><span class="token punctuation">,</span> srv<span class="token punctuation">.</span>SetRates<span class="token punctuation">)</span>
land <span class="token operator">=</span> rospy<span class="token punctuation">.</span>ServiceProxy<span class="token punctuation">(</span><span class="token string">'land'</span><span class="token punctuation">,</span> Trigger<span class="token punctuation">)</span>
servo1 <span class="token operator">=</span> <span class="token number">33</span> <span class="token comment"># PWM pins</span>
servo2 <span class="token operator">=</span> <span class="token number">32</span>
GPIO<span class="token punctuation">.</span>setmode<span class="token punctuation">(</span>GPIO<span class="token punctuation">.</span>BOARD<span class="token punctuation">)</span> <span class="token comment">#set pin numbering system</span>
GPIO<span class="token punctuation">.</span>setup<span class="token punctuation">(</span>servo1<span class="token punctuation">,</span>GPIO<span class="token punctuation">.</span>OUT<span class="token punctuation">)</span>
GPIO<span class="token punctuation">.</span>setup<span class="token punctuation">(</span>servo2<span class="token punctuation">,</span>GPIO<span class="token punctuation">.</span>OUT<span class="token punctuation">)</span>
pwm1 <span class="token operator">=</span> GPIO<span class="token punctuation">.</span>PWM<span class="token punctuation">(</span>servo1<span class="token punctuation">,</span><span class="token number">50</span><span class="token punctuation">)</span> <span class="token comment">#create PWM instance with frequency</span>
pwm2 <span class="token operator">=</span> GPIO<span class="token punctuation">.</span>PWM<span class="token punctuation">(</span>servo2<span class="token punctuation">,</span><span class="token number">50</span><span class="token punctuation">)</span>
pwm1<span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token comment">#start PWM of required Duty Cycle</span>
pwm2<span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span>
<span class="token keyword">def</span> <span class="token function">servo_drop</span><span class="token punctuation">(</span>seconds<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment">#function to drop seed capsules from 2 tanks</span>
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Dropping"</span><span class="token punctuation">)</span>
i <span class="token operator">=</span> <span class="token number">1</span> <span class="token comment">#variable to choose which tank</span>
<span class="token keyword">for</span> num <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span>seconds<span class="token operator">/</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
<span class="token keyword">if</span><span class="token punctuation">(</span>i <span class="token operator">==</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment">#first tank</span>
pwm1<span class="token punctuation">.</span>ChangeDutyCycle<span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span> <span class="token comment"># release one seed capsule</span>
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">0.5</span><span class="token punctuation">)</span>
pwm1<span class="token punctuation">.</span>ChangeDutyCycle<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> <span class="token comment"># push then drop the capsule</span>
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">0.5</span><span class="token punctuation">)</span>
i <span class="token operator">=</span> <span class="token number">2</span> <span class="token comment">#changing the variable for to use the second tank in next dropping</span>
<span class="token keyword">elif</span><span class="token punctuation">(</span>i <span class="token operator">==</span> <span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token comment">#first tank</span>
pwm2<span class="token punctuation">.</span>ChangeDutyCycle<span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span> <span class="token comment"># release one seed capsule</span>
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">0.5</span><span class="token punctuation">)</span>
pwm2<span class="token punctuation">.</span>ChangeDutyCycle<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span> <span class="token comment"># push then drop the capsule</span>
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">0.5</span><span class="token punctuation">)</span>
i <span class="token operator">=</span> <span class="token number">1</span> <span class="token comment">#changing the variable for to use the first tank in next dropping</span>
<span class="token keyword">print</span><span class="token punctuation">(</span>num<span class="token punctuation">)</span>
time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> name <span class="token operator">==</span> <span class="token string">"main"</span><span class="token punctuation">:</span>
<span class="token comment"># Take off and drone 10m above the ground</span>
navigate<span class="token punctuation">(</span>x<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> y<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> z<span class="token operator">=</span><span class="token number">10</span><span class="token punctuation">,</span> frame_id<span class="token operator">=</span><span class="token string">'body'</span><span class="token punctuation">,</span> auto_arm<span class="token operator">=</span><span class="token boolean">True</span><span class="token punctuation">)</span>
<span class="token comment"># rospy waits for 10 seconds to take off</span>
rospy<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span>
<span class="token comment"># Dropping starts simultaneously with flying forwards 5 meters</span>
d <span class="token operator">=</span> threading<span class="token punctuation">.</span>Thread<span class="token punctuation">(</span>target<span class="token operator">=</span>servo_drop<span class="token punctuation">,</span> args<span class="token operator">=</span><span class="token punctuation">(</span><span class="token number">18</span><span class="token punctuation">,</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token comment"># 18 is the sum of all the time that the drone hovers after take off</span>
d<span class="token punctuation">.</span>start<span class="token punctuation">(</span><span class="token punctuation">)</span>
navigate<span class="token punctuation">(</span>x<span class="token operator">=</span><span class="token number">5</span><span class="token punctuation">,</span> y<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> z<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> frame_id<span class="token operator">=</span><span class="token string">'body'</span><span class="token punctuation">)</span>
<span class="token comment">#rospy waits for 8 seconds to fly forward</span>
rospy<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">8</span><span class="token punctuation">)</span>
<span class="token comment"># Fly right 1 m</span>
navigate<span class="token punctuation">(</span>x<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> y<span class="token operator">=</span><span class="token number">1</span><span class="token punctuation">,</span> z<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> frame_id<span class="token operator">=</span><span class="token string">'body'</span><span class="token punctuation">)</span>
<span class="token comment">#rospy waits for 2 seconds to fly right</span>
rospy<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>
<span class="token comment"># Fly backward 5 m</span>
navigate<span class="token punctuation">(</span>x<span class="token operator">=</span><span class="token operator">-</span><span class="token number">5</span><span class="token punctuation">,</span> y<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> z<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">,</span> frame_id<span class="token operator">=</span><span class="token string">'body'</span><span class="token punctuation">)</span>
<span class="token comment">#rospy waits for 8 seconds to fly backward</span>
rospy<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">8</span><span class="token punctuation">)</span>
<span class="token comment"># Perform landing</span>
land<span class="token punctuation">(</span><span class="token punctuation">)</span>
pwm1<span class="token punctuation">.</span>stop<span class="token punctuation">(</span><span class="token punctuation">)</span>
pwm2<span class="token punctuation">.</span>stop<span class="token punctuation">(</span><span class="token punctuation">)</span>
GPIO<span class="token punctuation">.</span>cleanup<span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre></div><h3 id="references" tabindex="-1"><a class="header-anchor" href="#references" aria-hidden="true">#</a> References</h3><ul><li><a href="https://www.nationalgeographic.com/environment/article/deforestation" target="_blank" rel="noopener noreferrer">https://www.nationalgeographic.com/environment/article/deforestation<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></li><li><a href="http://www.fao.org/fileadmin/templates/rap/files/NRE/Forestry_Group/Landslide_PolicyBrief.pdf" target="_blank" rel="noopener noreferrer">http://www.fao.org/fileadmin/templates/rap/files/NRE/Forestry_Group/Landslide_PolicyBrief.pdf<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></li><li><a href="https://earthenginepartners.appspot.com/" target="_blank" rel="noopener noreferrer">https://earthenginepartners.appspot.com/<span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span></a></li></ul><h2 id="developed-by-team-minions" tabindex="-1"><a class="header-anchor" href="#developed-by-team-minions" aria-hidden="true">#</a> Developed by Team MINIONS</h2><p>Special thanks to International Ala-Too University for funding the Clover 4 kits.</p><img src="/clover-vuepress/assets/ala-too.d99fb57b.png"><!--]--></div><footer class="page-meta"><div class="meta-item edit-link"><a class="external-link meta-item-label" href="https://github.com/CopterExpress/clover/edit/master/docs/en/seeding_drone.md" rel="noopener noreferrer" target="_blank" aria-label="Edit this page"><!--[--><!--]--> Edit this page <span><svg class="external-link-icon" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewbox="0 0 100 100" width="15" height="15"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path><polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg><span class="external-link-icon-sr-only">open in new window</span></span><!--[--><!--]--></a></div><!----><!----></footer><!----><!--[--><!--]--></main><!--]--></div><!----><!--]--></div>
<script type="module" src="/clover-vuepress/assets/app.4f6a4bec.js" defer></script>
</body>
</html>