資料介紹
描述
這是 Dronesmith Technologies 的 Dronesmith API 的示例項(xiàng)目。Dronesmith API 是一個(gè)基于 HTTP 請(qǐng)求的 API,支持軟件優(yōu)先無人機(jī)開發(fā)。您可以在 API 中內(nèi)置的虛擬無人機(jī)上測(cè)試您的代碼,然后在真實(shí)無人機(jī)上部署相同的代碼。該項(xiàng)目使用虛擬無人機(jī)在虛構(gòu)的場(chǎng)景中完成任務(wù)。
這個(gè)項(xiàng)目需要一些 Python 和 HTML/CSS 的基本經(jīng)驗(yàn)。
在開始之前,我們建議您查看我們的Dronesmith API 教程。
情景
蘇黎世大學(xué)一位精神錯(cuò)亂的物理學(xué)教授一直在校園北側(cè)的各種建筑物中進(jìn)行實(shí)驗(yàn)。昨晚,他用放射性材料進(jìn)行的一項(xiàng)實(shí)驗(yàn)出現(xiàn)了嚴(yán)重錯(cuò)誤,校園變得充滿了放射性。現(xiàn)在由您和您的團(tuán)隊(duì)使用配備輻射傳感器的無人機(jī)找到失敗實(shí)驗(yàn)的位置。
任務(wù)
構(gòu)建一個(gè)應(yīng)用程序,讓無人機(jī)在校園周圍飛行,同時(shí)測(cè)量輻射強(qiáng)度水平并識(shí)別包含輻射源的建筑物。
提示:輻射強(qiáng)度遵循牛頓反平方定律。
關(guān)于 API
在我們深入了解應(yīng)用程序的工作原理之前,讓我們先回顧一下 Dronesmith API。無人機(jī)的命令采用 HTTP 請(qǐng)求的形式。例如,要檢索無人機(jī)的位置,您可以向 URL http://api.dronesmith.io/api/drone/{drone-name}/position發(fā)送請(qǐng)求。下面是一個(gè)使用 Python 模塊請(qǐng)求的 API 調(diào)用示例。
import json
import requests
USER_EMAIL = 'example@example.com'
USER_API_KEY = 'example-api-key'
DRONE_NAME = 'prickly_galileo'
headers = {
'user-email': USER_EMAIL,
'user-key': USER_API_KEY,
'Content-Type': 'application/json'
}
response = requests.get('http://api.dronesmith.io/api/drone/'+ DRONE_NAME + '/position', headers=headers)
jsonText = json.loads(response.text)
print json.dumps(jsonText, indent=2, sort_keys=True)
此代碼發(fā)送一個(gè) GET 請(qǐng)求并打印來自服務(wù)器的響應(yīng)。服務(wù)器使用以下 JSON 對(duì)象進(jìn)行響應(yīng)。
{
"X": 0.004026684,
"Y": -0.02161496,
"Z": -0.11607925,
"Latitude": 47.39774,
"Longitude": 8.545593,
"Altitude": 0.047,
"Heading": 3.95
}
一些請(qǐng)求具有 BODY 字段,例如以下起飛命令。
import json
import requests
USER_EMAIL = 'example@example.com'
USER_API_KEY = 'example-api-key'
DRONE_NAME = 'prickly_galileo'
headers = {
'user-email': USER_EMAIL,
'user-key': USER_API_KEY,
'Content-Type': 'application/json'
}
# Command drone to takeoff and hover 20 meters above Lat: 47.399091, Lon: 8.549200
response = requests.post('http://api.dronesmith.io/api/drone/' + DRONE_NAME + '/takeoff', json={
"lat": 47.399091,
"lon": 8.549200,
"altitude": 20
}, headers=headers)
jsonText = json.loads(response.text)
print json.dumps(jsonText, indent=2, sort_keys=True)
對(duì)此起飛請(qǐng)求的響應(yīng)是以下確認(rèn)。
{
"Command": 22,
"Status": "Command accepted.",
"StatusCode": 0
}
有關(guān)更多示例,請(qǐng)參閱我們的API 參考。
對(duì)于單個(gè) API 請(qǐng)求,使用 Python 或任何腳本語言可能有點(diǎn)麻煩。我們強(qiáng)烈推薦使用Postman API 工具來測(cè)試 Dronesmith API 請(qǐng)求。
先決條件
要完成此項(xiàng)目,您需要 Dronesmith API 密鑰。前往api.dronesmith.io請(qǐng)求 API 密鑰。幾分鐘后,您將收到一封包含您的密鑰的電子郵件。
您還需要一個(gè) Google Developers API 密鑰。https://developers.google.com/maps/documentation/javascript/get-api-key
設(shè)置 Python
安裝 Python:https ://www.python.org/downloads/release/python-2712/
注意:確保您使用的是 Python 2.7,而不是 Python 3。在命令行中鍵入 python --version 以驗(yàn)證您的版本。
如果您不熟悉使用 Python,請(qǐng)通過以下兩個(gè)入門練習(xí)來設(shè)置您的開發(fā)人員環(huán)境:
http://learnpythonthehardway.org/book/ex0.html
http://learnpythonthehardway.org/book/ex1.html
安裝 Python pip 模塊:https ://pip.pypa.io/en/stable/installing/
這應(yīng)該默認(rèn)包含在最新的 Python 版本中。
安裝 Python 請(qǐng)求模塊:pip install requests
安裝 Python geopy 模塊:pip install geopy
如果你在 Windows 上,你可能需要運(yùn)行python -m pip
而不只是 pip。
應(yīng)用程序
您可以從我們的 Github 下載示例應(yīng)用程序。
https://github.com/dronesmith/Radiation-Detection-Example
該應(yīng)用程序命令虛擬無人機(jī)在蘇黎世大學(xué)校園周圍的路徑上飛行,同時(shí)在地圖上繪制路徑。它還顯示沿飛行路徑的每個(gè)點(diǎn)的輻射強(qiáng)度值。
當(dāng)前形式的應(yīng)用程序?qū)⒄也坏捷椛湓础?/font>您可以根據(jù)自己的策略來修改應(yīng)用程序以查找?guī)в休椛湓吹慕ㄖ铩?/font>
該應(yīng)用程序由4個(gè)文件組成
- 索引.html
- 服務(wù)器.py
- 輻射傳感器.py
- 用戶帳戶.json
這些文件的主要工作是server.py 。在此文件中,啟動(dòng)了一個(gè)通過端口 8080 在 localhost 上運(yùn)行的 Web 服務(wù)器。它提供無人機(jī)的當(dāng)前位置和傳感器數(shù)據(jù)。
Web 服務(wù)器通過發(fā)送 Dronesmith API 請(qǐng)求定期檢索無人機(jī)的位置和無人機(jī)輻射傳感器的強(qiáng)度值。在與網(wǎng)絡(luò)服務(wù)器不同的線程中,通過發(fā)出 Dronesmith API 請(qǐng)求,指示無人機(jī)在校園周圍的腳本路徑中飛行。
在index.html中,通過向 http//:localhost:8080/data 發(fā)送 GET 請(qǐng)求來定期檢索位置和強(qiáng)度值。在每個(gè) GET 請(qǐng)求之后,無人機(jī)標(biāo)記和飛行路徑都會(huì)更新,并使用 Google Maps API 在最新位置繪制一個(gè)半徑與輻射強(qiáng)度成正比的新圓圈。
文件radiation_sensor.py用作我們的模擬輻射傳感器。該文件定期獲取無人機(jī)位置并使用緯度和經(jīng)度值計(jì)算輻射強(qiáng)度值。然后它會(huì)更新無人機(jī)輻射傳感器的強(qiáng)度場(chǎng)值。在運(yùn)行server.py文件之前,您需要在單獨(dú)的終端中運(yùn)行此代碼。
JSON 文件user-account.json用于存儲(chǔ) Dronesmith API 憑據(jù)。
Github 項(xiàng)目中還包含一個(gè)設(shè)置腳本,drone_setup.py,您可以運(yùn)行該腳本以在您的帳戶上創(chuàng)建具有輻射傳感器對(duì)象的虛擬無人機(jī)。
運(yùn)行應(yīng)用程序
按照以下步驟運(yùn)行應(yīng)用程序并查看它的運(yùn)行情況。
1. 下載或克隆 Github 項(xiàng)目。
https://github.com/dronesmith/Radiation-Detection-Example
2. 將您的電子郵件和 Dronesmith API 密鑰添加到user.json。
將drone_name 字段留空。
3. 將您的 Google Developers API 密鑰添加到index.html。
在 HTML 正文中找到包含map.googleapis.com源的腳本,并將您的密鑰添加到 URL 中的密鑰字段。
4. 運(yùn)行。python drone_setup.py
這將在您的帳戶上創(chuàng)建一個(gè)新的虛擬無人機(jī)并為其添加一個(gè)輻射傳感器。
5. 運(yùn)行并讓它繼續(xù)運(yùn)行。python radiation_sensor.py
6.在另一個(gè)終端運(yùn)行。 python server.py
您應(yīng)該會(huì)立即看到 Google 地圖視圖。無人機(jī)標(biāo)記將在頁面加載后大約 10 秒內(nèi)顯示。直到無人機(jī)起飛并達(dá)到所需高度后,標(biāo)記才會(huì)移動(dòng)。然后你應(yīng)該看到無人機(jī)在校園里繞了一圈。
尋找輻射源
您可以采取許多不同的策略來定位輻射源。您可能對(duì)來源的位置有預(yù)感并更改無人機(jī)路徑以測(cè)試您的假設(shè),或者您可能使用花哨的三角測(cè)量算法。重要的是你在為時(shí)已晚之前找到輻射源。
注意:當(dāng)您準(zhǔn)備好檢查您的解決方案時(shí),可以在Radiation_sensor.py文件中找到實(shí)際的源緯度和經(jīng)度。
請(qǐng)告訴我們您尋找輻射源的方法。
祝無人機(jī)工匠們好運(yùn)!
有用的網(wǎng)址
- RoboFly無人機(jī)原理圖及PCB和測(cè)試程序下載 16次下載
- DragonFly無人機(jī)原理圖免費(fèi)下載 26次下載
- 基于無人機(jī)圖像的兩階段銷釘缺陷檢測(cè)模型 39次下載
- 基于無人機(jī)遙感影像的建筑物輪廓目標(biāo)檢測(cè)系統(tǒng) 13次下載
- 基于局部加權(quán)擬合的無人機(jī)遙感影像多尺度檢測(cè) 28次下載
- 一種通過軌跡和形態(tài)識(shí)別檢測(cè)無人機(jī)的方法 18次下載
- 小型電動(dòng)無人機(jī)的總體參數(shù)設(shè)計(jì)方法研究說明 19次下載
- 無人機(jī)的地面站任務(wù)規(guī)劃資料和應(yīng)用程序免費(fèi)下載 4次下載
- 無人機(jī)的檢測(cè)和跟蹤系統(tǒng)中的技術(shù)資料研究 21次下載
- 無人機(jī)和無人機(jī)控制方法及無人機(jī)遠(yuǎn)程操控系統(tǒng)方法說明 69次下載
- 無人機(jī)中繼模塊和無人機(jī)圖傳控制系統(tǒng)介紹 60次下載
- 無人機(jī)柔性裝配工裝應(yīng)用 2次下載
- 基于無人機(jī)的分類 20次下載
- 基于STM32的無人機(jī)姿態(tài)測(cè)量系統(tǒng)設(shè)計(jì) 44次下載
- ADI民用無人機(jī)解決方案 19次下載
- 基于深度學(xué)習(xí)的無人機(jī)檢測(cè)與識(shí)別技術(shù) 482次閱讀
- 無人機(jī)在電力行業(yè)有怎么樣的應(yīng)用 1w次閱讀
- 無人機(jī)設(shè)計(jì)的常見電路保護(hù)組件 6077次閱讀
- 無人機(jī)中超聲波原理 2448次閱讀
- 無人機(jī)是如何充電的? 2w次閱讀
- 怎樣使無人機(jī)安全飛行?無人機(jī)飛行需要掌握什么安全知識(shí) 1.5w次閱讀
- 新疆為什么禁飛無人機(jī)_新疆無人機(jī)禁飛區(qū)域 5.7w次閱讀
- 水下無人機(jī)的用途和優(yōu)勢(shì)有哪些 9214次閱讀
- 水下無人機(jī)原理分析 1.3w次閱讀
- nixie微型無人機(jī)的功能介紹_nixie微型無人機(jī)多少錢 1.3w次閱讀
- 微型無人機(jī)發(fā)展前景_無人機(jī)發(fā)展趨勢(shì) 8416次閱讀
- 大疆做不做軍用無人機(jī) 2w次閱讀
- 中國(guó)有哪些軍用無人機(jī)_國(guó)內(nèi)軍用無人機(jī)排名 11.2w次閱讀
- 大疆無人機(jī)如何在禁飛區(qū)起飛 15.1w次閱讀
- 電動(dòng)無人機(jī)和油動(dòng)無人機(jī)性能的對(duì)比 2710次閱讀
下載排行
本周
- 1ADE-12H混頻器規(guī)格書
- 0.28 MB | 1次下載 | 5 積分
- 2AD9984A高性能10位顯示接口英文手冊(cè)
- 0.49 MB | 1次下載 | 5 積分
- 351開發(fā)板芯片資料
- 14.95 MB | 1次下載 | 1 積分
- 4用TL431LI-Q1監(jiān)控電流供應(yīng)
- 176.71KB | 1次下載 | 免費(fèi)
- 5十進(jìn)制數(shù)據(jù)轉(zhuǎn)十六進(jìn)制字符_轉(zhuǎn)ASCII碼
- 0.01 MB | 次下載 | 免費(fèi)
- 6使用TRF7970A進(jìn)行NFC主動(dòng)和被動(dòng)點(diǎn)對(duì)點(diǎn)通信
- 926.87KB | 次下載 | 免費(fèi)
- 7LP8864-Q1 LP8864S-Q1 LP8866-Q1和LP8866S-Q1診斷說明和故障處理程序
- 577.42KB | 次下載 | 免費(fèi)
- 8將設(shè)計(jì)移植到LP3470A低lq電壓監(jiān)控器,以改善電源監(jiān)控
- 115.28KB | 次下載 | 免費(fèi)
本月
- 1HFSS電磁仿真設(shè)計(jì)應(yīng)用詳解PDF電子教程免費(fèi)下載
- 24.30 MB | 129次下載 | 1 積分
- 2正激、反激、推挽、全橋、半橋區(qū)別和特點(diǎn)
- 0.91 MB | 36次下載 | 1 積分
- 3GBT 4706.1-2024家用和類似用途電器的安全第1部分:通用要求
- 7.43 MB | 20次下載 | 免費(fèi)
- 4在設(shè)計(jì)中使用MOSFET瞬態(tài)熱阻抗曲線
- 1.57MB | 15次下載 | 免費(fèi)
- 5幾張電動(dòng)車充電器電路圖
- 0.23 MB | 9次下載 | 1 積分
- 6AD18學(xué)習(xí)筆記
- 14.47 MB | 8次下載 | 2 積分
- 7H橋中的電流感測(cè)
- 545.39KB | 7次下載 | 免費(fèi)
- 8電機(jī)驅(qū)動(dòng)器電路板布局的最佳實(shí)踐
- 3.03MB | 6次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935113次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420061次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191360次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183329次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81578次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73804次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65985次下載 | 10 積分
評(píng)論
查看更多