ڊرون شاندار آهن. مون کي واقعي مزو ايندو آهي پنهنجي ڪواڊ سان کيڏڻ، فوٽوز ۽ وڊيوز وٺڻ، يا صرف مزو وٺڻ. پر غير پائلٽ فضائي گاڏيون (UAVs) صرف تفريح لاءِ استعمال ڪيون وينديون آهن. اهي سئنيما ۾ ڪم ڪن ٿا، گليشيئر جو مطالعو ڪن ٿا، ۽ فوجي ۽ زرعي شعبي جي نمائندن طرفان استعمال ٿين ٿا.
هن سبق ۾ اسين هڪ پروگرام ٺاهڻ تي نظر ڪنداسين جيڪو توهان کي ڊرون ڪنٽرول ڪرڻ جي اجازت ڏيندو. آواز حڪم استعمال ڪندي. ها، هيڪٽر اهو ئي ڪندو جيڪو توهان ان کي ڪرڻ لاءِ چئو. مضمون جي آخر ۾ اتي هڪ تيار ڪيل پروگرام ۽ UAV ڪنٽرول جي وڊيو آهي.
آئرن
اسان کي هيٺين ضرورت آهي:
توتا آرڊرون 2.0؛
Ethernet ڪيبل؛
سٺو مائڪروفون.
ترقي ۽ انتظام ڪيو ويندو ورڪ اسٽيشنن تي Windows/Mac/Ubuntu سان. ذاتي طور تي، مون Mac ۽ Ubuntu 18.04 سان ڪم ڪيو.
مخالف موٽر ساڳئي طرف ڪم ڪن ٿا. ھڪڙو جوڙو گھڙيءَ جي طرف گھمندو آھي، ٻيو گھڙيءَ جي وار وار. ڊرون زمين جي مٿاڇري سان لاڳاپي جي زاوي کي تبديل ڪندي، موٽرز جي گردش جي رفتار کي تبديل ڪندي ۽ ٻين ڪيترن ئي متحرڪ تحريڪن کي تبديل ڪندي.
جيئن ته اسان مٿي ڏنل ڊراگرام ۾ ڏسي سگهون ٿا، مختلف پيٽرولن کي تبديل ڪرڻ سان ڪاپٽر جي حرڪت جي هدايت ۾ تبديلي اچي ٿي. مثال طور، کاٻي ۽ ساڄي روٽرز جي گردش جي رفتار کي گهٽائڻ يا وڌائڻ هڪ رول ٺاهي ٿو. هي ڊرون کي اڳتي يا پوئتي اڏامڻ جي اجازت ڏئي ٿو.
موٽرز جي رفتار ۽ هدايت کي تبديل ڪندي، اسان ٽٽڻ وارا زاويا مقرر ڪريون ٿا جيڪي ڪاپٽر کي ٻين طرفن ۾ منتقل ڪرڻ جي اجازت ڏين ٿا. دراصل، موجوده پروجيڪٽ لاءِ ايروڊينامڪس پڙهڻ جي ڪا ضرورت ناهي، توهان کي صرف بنيادي اصولن کي سمجهڻ جي ضرورت آهي.
ڪيئن طوطا ARDrone ڪم ڪندو آهي
ڊرون هڪ وائي فائي هٽ اسپاٽ آهي. ڪاپٽر ڏانهن حڪم حاصل ڪرڻ ۽ موڪلڻ لاء، توهان کي هن نقطي سان ڳنڍڻ جي ضرورت آهي. اتي ڪيترائي مختلف ايپليڪيشنون آھن جيڪي توھان کي ڪنٽرول ڪرڻ جي اجازت ڏين ٿيون quadcopters. اهو سڀ ڪجهه هن طرح نظر اچي ٿو:
جيئن ئي ڊرون ڳنڍيل آهي، ٽرمينل کوليو ۽ ٽيلنٽ 192.168.1.1 - هي آهي ڪاپٽر جو IP. لينڪس لاء توهان استعمال ڪري سگهو ٿا لينڪس Busybox.
ايپليڪيشن فن تعمير
اسان جو ڪوڊ هيٺين ماڊلز ۾ ورهايو ويندو:
آواز جي سڃاڻپ لاءِ اسپيچ API سان يوزر انٽرفيس؛
فلٽرنگ حڪم ۽ معيار سان مقابلو ڪرڻ؛
ڊرون ڏانهن حڪم موڪلڻ؛
لائيو وڊيو نشر.
API ڪم ڪري ٿو جيستائين انٽرنيٽ ڪنيڪشن موجود آهي. انهي کي يقيني بڻائڻ لاء، اسان هڪ Ethernet ڪنيڪشن شامل ڪيو.
اهو هڪ ايپليڪيشن ٺاهڻ جو وقت آهي!
ڪوڊ
پهرين، اچو ته هڪ نئون فولڊر ٺاهيو ۽ ان کي تبديل ڪريو ٽرمينل استعمال ڪندي.
پوء اسان ھيٺ ڏنل حڪمن کي استعمال ڪندي نوڊ پروجيڪٽ ٺاھيو.
پهريون، اسان گهربل انحصار کي نصب ڪيو.
npm انسٽال ڪريو
اسان ھيٺ ڏنل حڪمن جي حمايت ڪنداسين:
لاهڻ؛
لينڊنگ
مٿي - ڊرون اڌ ميٽر وڌي ٿو ۽ هوري ٿو.
هيٺ - اڌ ميٽر پوي ٿو ۽ منجمد ٿي وڃي ٿو؛
کاٻي طرف - کاٻي طرف اڌ ميٽر وڃي ٿو؛
ساڄي طرف - ساڄي طرف اڌ ميٽر وڃي ٿو؛
گھمڻ - گھڙي گھڙي 90 درجا؛
اڳتي - اڳتي وڌندو اڌ ميٽر؛
واپس - اڌ ميٽر واپس وڃي ٿو؛
روڪ.
هتي اهو ڪوڊ آهي جيڪو توهان کي حڪم قبول ڪرڻ، انهن کي فلٽر ڪرڻ ۽ ڊرون کي ڪنٽرول ڪرڻ جي اجازت ڏئي ٿو.
const express = require('express');
const bodyparser = require('body-parser');
var arDrone = require('ar-drone');
const router = express.Router();
const app = express();
const commands = ['takeoff', 'land','up','down','goleft','goright','turn','goforward','gobackward','stop'];
var drone = arDrone.createClient();
// disable emergency
drone.disableEmergency();
// express
app.use(bodyparser.json());
app.use(express.static(__dirname + '/public'));
router.get('/',(req,res) => {
res.sendFile('index.html');
});
router.post('/command',(req,res) => {
console.log('command recieved ', req.body);
console.log('existing commands', commands);
let command = req.body.command.replace(/ /g,'');
if(commands.indexOf(command) !== -1) {
switch(command.toUpperCase()) {
case "TAKEOFF":
console.log('taking off the drone');
drone.takeoff();
break;
case "LAND":
console.log('landing the drone');
drone.land();
break;
case "UP":
console.log('taking the drone up half meter');
drone.up(0.2);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "DOWN":
console.log('taking the drone down half meter');
drone.down(0.2);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "GOLEFT":
console.log('taking the drone left 1 meter');
drone.left(0.1);
setTimeout(() => {
drone.stop();
clearTimeout();
},1000);
break;
case "GORIGHT":
console.log('taking the drone right 1 meter');
drone.right(0.1);
setTimeout(() => {
drone.stop();
clearTimeout();
},1000);
break;
case "TURN":
console.log('turning the drone');
drone.clockwise(0.4);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "GOFORWARD":
console.log('moving the drone forward by 1 meter');
drone.front(0.1);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "GOBACKWARD":
console.log('moving the drone backward 1 meter');
drone.back(0.1);
setTimeout(() => {
drone.stop();
clearTimeout();
},2000);
break;
case "STOP":
drone.stop();
break;
default:
break;
}
}
res.send('OK');
});
app.use('/',router);
app.listen(process.env.port || 3000);
۽ هتي HTML ۽ JavaScript ڪوڊ آهي جيڪو صارف کي ٻڌندو آهي ۽ نوڊ سرور ڏانهن هڪ حڪم موڪلي ٿو.
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Voice Controlled Notes App</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/shoelace-css/1.0.0-beta16/shoelace.css">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<h1>Voice Controlled Drone</h1>
<p class="page-description">A tiny app that allows you to control AR drone using voice</p>
<h3 class="no-browser-support">Sorry, Your Browser Doesn't Support the Web Speech API. Try Opening This Demo In Google Chrome.</h3>
<div class="app">
<h3>Give the command</h3>
<div class="input-single">
<textarea id="note-textarea" placeholder="Create a new note by typing or using voice recognition." rows="6"></textarea>
</div>
<button id="start-record-btn" title="Start Recording">Start Recognition</button>
<button id="pause-record-btn" title="Pause Recording">Pause Recognition</button>
<p id="recording-instructions">Press the <strong>Start Recognition</strong> button and allow access.</p>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="script.js"></script>
</body>
</html>
۽ پڻ JavaScript ڪوڊ ڪم ڪرڻ لاءِ آواز جي حڪمن سان، انهن کي نوڊ سرور ڏانهن موڪلڻ.
try {
var SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
var recognition = new SpeechRecognition();
}
catch(e) {
console.error(e);
$('.no-browser-support').show();
$('.app').hide();
}
// other code, please refer GitHub source
recognition.onresult = function(event) {
// event is a SpeechRecognitionEvent object.
// It holds all the lines we have captured so far.
// We only need the current one.
var current = event.resultIndex;
// Get a transcript of what was said.
var transcript = event.results[current][0].transcript;
// send it to the backend
$.ajax({
type: 'POST',
url: '/command/',
data: JSON.stringify({command: transcript}),
success: function(data) { console.log(data) },
contentType: "application/json",
dataType: 'json'
});
};
ايپليڪيشن کي لانچ ڪندي
پروگرام کي ھيٺئين طور تي شروع ڪري سگھجي ٿو (اھو پڪ ڪرڻ ضروري آھي ته ڪوپٽر وائي فائي سان ڳنڍيل آھي ۽ ايٿرنيٽ ڪيبل ڪمپيوٽر سان ڳنڍيل آھي).
Open localhost:3000 برائوزر ۾ ۽ ڪلڪ ڪريو Start Recognition.
اسان ڊرون کي ڪنٽرول ڪرڻ جي ڪوشش ڪئي ۽ خوش آهيون.
ڊرون کان وڊيو نشر ڪرڻ
پروجيڪٽ ۾، هڪ نئين فائل ٺاهيو ۽ هن ڪوڊ کي اتي نقل ڪريو: