資料介紹
描述
這是 Dronesmith Technologies 的 Dronesmith API 的示例項目。Dronesmith API 是一個基于 HTTP 請求的 API,支持軟件優先無人機開發。您可以在 API 中內置的虛擬無人機上測試您的代碼,然后在真實無人機上部署相同的代碼。該項目使用虛擬無人機在虛構的場景中完成任務。
這個項目需要一些 Python 和 HTML/CSS 的基本經驗。
在開始之前,我們建議您查看我們的Dronesmith API 教程。
情景
蘇黎世大學一位精神錯亂的物理學教授一直在校園北側的各種建筑物中進行實驗。昨晚,他用放射性材料進行的一項實驗出現了嚴重錯誤,校園變得充滿了放射性。現在由您和您的團隊使用配備輻射傳感器的無人機找到失敗實驗的位置。
任務
構建一個應用程序,讓無人機在校園周圍飛行,同時測量輻射強度水平并識別包含輻射源的建筑物。
提示:輻射強度遵循牛頓反平方定律。
關于 API
在我們深入了解應用程序的工作原理之前,讓我們先回顧一下 Dronesmith API。無人機的命令采用 HTTP 請求的形式。例如,要檢索無人機的位置,您可以向 URL http://api.dronesmith.io/api/drone/{drone-name}/position發送請求。下面是一個使用 Python 模塊請求的 API 調用示例。
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)
此代碼發送一個 GET 請求并打印來自服務器的響應。服務器使用以下 JSON 對象進行響應。
{
"X": 0.004026684,
"Y": -0.02161496,
"Z": -0.11607925,
"Latitude": 47.39774,
"Longitude": 8.545593,
"Altitude": 0.047,
"Heading": 3.95
}
一些請求具有 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)
對此起飛請求的響應是以下確認。
{
"Command": 22,
"Status": "Command accepted.",
"StatusCode": 0
}
有關更多示例,請參閱我們的API 參考。
對于單個 API 請求,使用 Python 或任何腳本語言可能有點麻煩。我們強烈推薦使用Postman API 工具來測試 Dronesmith API 請求。
先決條件
要完成此項目,您需要 Dronesmith API 密鑰。前往api.dronesmith.io請求 API 密鑰。幾分鐘后,您將收到一封包含您的密鑰的電子郵件。
您還需要一個 Google Developers API 密鑰。https://developers.google.com/maps/documentation/javascript/get-api-key
設置 Python
安裝 Python:https ://www.python.org/downloads/release/python-2712/
注意:確保您使用的是 Python 2.7,而不是 Python 3。在命令行中鍵入 python --version 以驗證您的版本。
如果您不熟悉使用 Python,請通過以下兩個入門練習來設置您的開發人員環境:
http://learnpythonthehardway.org/book/ex0.html
http://learnpythonthehardway.org/book/ex1.html
安裝 Python pip 模塊:https ://pip.pypa.io/en/stable/installing/
這應該默認包含在最新的 Python 版本中。
安裝 Python 請求模塊:pip install requests
安裝 Python geopy 模塊:pip install geopy
如果你在 Windows 上,你可能需要運行python -m pip
而不只是 pip。
應用程序
您可以從我們的 Github 下載示例應用程序。
https://github.com/dronesmith/Radiation-Detection-Example
該應用程序命令虛擬無人機在蘇黎世大學校園周圍的路徑上飛行,同時在地圖上繪制路徑。它還顯示沿飛行路徑的每個點的輻射強度值。
當前形式的應用程序將找不到輻射源。您可以根據自己的策略來修改應用程序以查找帶有輻射源的建筑物。
該應用程序由4個文件組成
- 索引.html
- 服務器.py
- 輻射傳感器.py
- 用戶帳戶.json
這些文件的主要工作是server.py 。在此文件中,啟動了一個通過端口 8080 在 localhost 上運行的 Web 服務器。它提供無人機的當前位置和傳感器數據。
Web 服務器通過發送 Dronesmith API 請求定期檢索無人機的位置和無人機輻射傳感器的強度值。在與網絡服務器不同的線程中,通過發出 Dronesmith API 請求,指示無人機在校園周圍的腳本路徑中飛行。
在index.html中,通過向 http//:localhost:8080/data 發送 GET 請求來定期檢索位置和強度值。在每個 GET 請求之后,無人機標記和飛行路徑都會更新,并使用 Google Maps API 在最新位置繪制一個半徑與輻射強度成正比的新圓圈。
文件radiation_sensor.py用作我們的模擬輻射傳感器。該文件定期獲取無人機位置并使用緯度和經度值計算輻射強度值。然后它會更新無人機輻射傳感器的強度場值。在運行server.py文件之前,您需要在單獨的終端中運行此代碼。
JSON 文件user-account.json用于存儲 Dronesmith API 憑據。
Github 項目中還包含一個設置腳本,drone_setup.py,您可以運行該腳本以在您的帳戶上創建具有輻射傳感器對象的虛擬無人機。
運行應用程序
按照以下步驟運行應用程序并查看它的運行情況。
1. 下載或克隆 Github 項目。
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. 運行。python drone_setup.py
這將在您的帳戶上創建一個新的虛擬無人機并為其添加一個輻射傳感器。
5. 運行并讓它繼續運行。python radiation_sensor.py
6.在另一個終端運行。 python server.py
您應該會立即看到 Google 地圖視圖。無人機標記將在頁面加載后大約 10 秒內顯示。直到無人機起飛并達到所需高度后,標記才會移動。然后你應該看到無人機在校園里繞了一圈。
尋找輻射源
您可以采取許多不同的策略來定位輻射源。您可能對來源的位置有預感并更改無人機路徑以測試您的假設,或者您可能使用花哨的三角測量算法。重要的是你在為時已晚之前找到輻射源。
注意:當您準備好檢查您的解決方案時,可以在Radiation_sensor.py文件中找到實際的源緯度和經度。
請告訴我們您尋找輻射源的方法。
祝無人機工匠們好運!
有用的網址
- RoboFly無人機原理圖及PCB和測試程序下載 16次下載
- DragonFly無人機原理圖免費下載 26次下載
- 基于無人機圖像的兩階段銷釘缺陷檢測模型 39次下載
- 基于無人機遙感影像的建筑物輪廓目標檢測系統 13次下載
- 基于局部加權擬合的無人機遙感影像多尺度檢測 28次下載
- 一種通過軌跡和形態識別檢測無人機的方法 18次下載
- 小型電動無人機的總體參數設計方法研究說明 19次下載
- 無人機的地面站任務規劃資料和應用程序免費下載 4次下載
- 無人機的檢測和跟蹤系統中的技術資料研究 21次下載
- 無人機和無人機控制方法及無人機遠程操控系統方法說明 69次下載
- 無人機中繼模塊和無人機圖傳控制系統介紹 60次下載
- 無人機柔性裝配工裝應用 2次下載
- 基于無人機的分類 20次下載
- 基于STM32的無人機姿態測量系統設計 44次下載
- ADI民用無人機解決方案 19次下載
- 基于深度學習的無人機檢測與識別技術 482次閱讀
- 無人機在電力行業有怎么樣的應用 1w次閱讀
- 無人機設計的常見電路保護組件 6077次閱讀
- 無人機中超聲波原理 2448次閱讀
- 無人機是如何充電的? 2w次閱讀
- 怎樣使無人機安全飛行?無人機飛行需要掌握什么安全知識 1.5w次閱讀
- 新疆為什么禁飛無人機_新疆無人機禁飛區域 5.7w次閱讀
- 水下無人機的用途和優勢有哪些 9214次閱讀
- 水下無人機原理分析 1.3w次閱讀
- nixie微型無人機的功能介紹_nixie微型無人機多少錢 1.3w次閱讀
- 微型無人機發展前景_無人機發展趨勢 8416次閱讀
- 大疆做不做軍用無人機 2w次閱讀
- 中國有哪些軍用無人機_國內軍用無人機排名 11.2w次閱讀
- 大疆無人機如何在禁飛區起飛 15.1w次閱讀
- 電動無人機和油動無人機性能的對比 2710次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多