資料介紹
描述
抽象的
辦公室、餐廳、圖書館有許多共享工作空間。人們來來去去。在這次 COVID-19 大流行中,我們需要確保這些工作空間在其他人來使用它們之前是清潔和消毒的。該項(xiàng)目將應(yīng)用 AWS IOT 技術(shù)和 H/W M5Stack CORE2 for AWS 來控制機(jī)器人在人們離開工作區(qū)后噴灑酒精并用 UV-C 燈清潔地板。
項(xiàng)目描述
我們計(jì)劃建造一個(gè)小型機(jī)器人,它可以噴灑微滴酒精,同時(shí)機(jī)器人會(huì)攜帶紫外線消毒器,以確保工作空間的清潔和安全。用戶通過掃描餐桌上的二維碼開始使用工作區(qū),完成后只需按下移動(dòng) Web 上的“完成”按鈕。AWS IOT 將計(jì)算使用持續(xù)時(shí)間并命令機(jī)器人開始使用 UV-C 射線和酒精噴霧進(jìn)行清潔。同時(shí),此用法將保留在 Dynamo DB 中。如果感染了 COVID-19 的人以前使用過此工作區(qū),此數(shù)據(jù)庫將用于歷史跟蹤。
(注意***我們計(jì)劃使用 PIR 傳感器來檢測人來并使用 Alexa 來獲取用戶的姓名。但是 PIR 傳感器非常不可靠,用戶需要一直坐在桌旁,這不實(shí)用。對于 Alexa , 沒有簡單的方法將語音轉(zhuǎn)換為文本。由于時(shí)間限制,我們選擇將解決方案與建議的解決方案稍微改變一下。)
系統(tǒng)架構(gòu)
這個(gè)項(xiàng)目有兩個(gè)部分。
1)客戶端,使用M5 stack Core 2來控制所有機(jī)器人的動(dòng)作,如前進(jìn)、后退、左右轉(zhuǎn)、噴酒精和控制紫外線。檢查所有傳感器以防止與物體碰撞和跌倒檢測。當(dāng)用戶使用完工作區(qū)后,該機(jī)器人將由 AWS IOT 控制。AWS IOT 會(huì)將工作區(qū)占用標(biāo)志更新為 false(意味著工作區(qū)現(xiàn)在可用) CORE2 將更新使用時(shí)間并開始機(jī)器人清潔。完成清潔后,機(jī)器人將停止工作,工作空間可供下一個(gè)人使用。
2)服務(wù)器端使用AWS上的一些服務(wù)。用戶開始掃描桌面上顯示的二維碼注冊姓名。該網(wǎng)站是一個(gè)簡單的靜態(tài)網(wǎng)站,存儲(chǔ)在 Amazon S3 AWS 上。當(dāng)用戶按下注冊按鈕時(shí),javascript會(huì)將信息傳遞給存儲(chǔ)在API網(wǎng)關(guān)上的Restful API。API 網(wǎng)關(guān)將調(diào)用 AWS lambda 在 AWS IOT 上更新設(shè)備或獲取設(shè)備影子的設(shè)備狀態(tài)。AWS IOT 更新工作區(qū)和機(jī)器人的狀態(tài),并在用戶使用完工作區(qū)后發(fā)布到 Dynamo DB。
我們可以用下圖總結(jié)所有活動(dòng)
先決條件
因?yàn)檫@個(gè)項(xiàng)目需要很多技術(shù)的基礎(chǔ)。通過完成以下教程,您應(yīng)該熟悉這些技術(shù)。
- AWS 服務(wù)(S3、API 網(wǎng)關(guān)、Lampda、AWS IOT)您可能需要查看每項(xiàng)服務(wù)的教程。這些 AWS 服務(wù)的 Google 教程。
- 熟悉platformIO和Core2forAWS的開發(fā)環(huán)境。轉(zhuǎn)到https://edukit.workshop.aws/en/getting-started.html以獲取教程,按照說明直到主題 3 智能恒溫器。這將確保您可以連接到 AWS 服務(wù)并通過所有安全檢查。我們的項(xiàng)目是從這個(gè)項(xiàng)目擴(kuò)展而來的。
- 從 S3 -> API-> Lampda->AWS IOT 的應(yīng)用流程。本教程對于讓您了解每個(gè) AWS 服務(wù)之間的流程非常有用。https://iot-esp32.workshop.aws/en/module3.html項(xiàng)目實(shí)施
硬件實(shí)現(xiàn)
對于硬件構(gòu)建,我們需要添加額外的兩個(gè) M5stack 模塊(M5Stack DC Motor 和 M5Stack Proto)DC 電機(jī)模塊帶有四個(gè)用于樂高電機(jī)的連接器,非常適合我們的快速原型。我們使用原型模塊將 CORE2 總線連接到 14 針插座。這些模塊可以按順序堆疊,但要注意堆疊的順序
Core 2 --> Proto --> DC Motor --> M5GO2(自帶core2)
************************************使用 < > 查看更多圖片 ********* ************************
我們在這個(gè)項(xiàng)目中使用的端口是
- 用于 UV-C LED 的 GPIO32
- GPIO27 酒精噴霧
- 用于紅外傳感器的 GPIO13、GPIO36
- GPIO 33、26 用于跌倒檢測
- 用于 PIR 的 GPIO 19
- GPIO3、GPIO1、GPIO35(未使用)
- 5V引腳
- 3V引腳
- 接地引腳
在 Core2 上使用 GPIO 對我來說非常棘手。您需要考慮許多限制。這是我可以從數(shù)據(jù)表中收集的一些信息。
- 應(yīng)避免使用這些端口 GPIO1、GPIO3、GPIO12、GPIO15,因?yàn)樗鼈兛赡苡糜谡{(diào)試和閃存。
- 端口 34 - 39 只能用于 I/P,沒有上拉/下拉
- 端口不是 5V 容差,這意味著如果您的傳感器是 5V 傳感器類型,您需要使用電平轉(zhuǎn)換器。并且某些電平轉(zhuǎn)換器無法正常工作,如果您想避免出現(xiàn)問題,請確保購買優(yōu)質(zhì)的。
對于電平轉(zhuǎn)換器,我將它放在一個(gè)單獨(dú)的盒子中,其中包括 PIR 傳感器、繼電器模塊以及傳感器和外圍設(shè)備的所有連接,如圖所示。
有兩個(gè)設(shè)備需要兩個(gè)繼電器來打開/關(guān)閉。因?yàn)槲覀兪褂迷谑袌錾箱N售的商業(yè)廣告。需要進(jìn)行一些修改。
酒精噴霧
我們使用便攜式酒精噴霧,只需 2 美元即可輕松購買。本設(shè)備配有內(nèi)置電池。我們只是從按鈕開關(guān)并聯(lián)到我們的插座,如圖所示。
UV-C LED
請注意,并非所有的紫外線都能殺死病毒。您需要使用比普通 UV Led 更昂貴的 UV-C 產(chǎn)品。UV-C 對眼睛和皮膚有危險(xiǎn)。請確保您在實(shí)驗(yàn)過程中不要暴露在這種光線下。我買了手機(jī)UV-C盒子,取出UV-C模塊。對于這個(gè)模塊,我需要連接外部電池(1x 18650 Battery 3.7V)因?yàn)殡姵卦诤凶永锾罅恕?/font>如圖所示,我從啟動(dòng)開關(guān)到插座并聯(lián)接線。
電池盒
核心 2 無法為兩個(gè)電機(jī)提供足夠的電力。我們需要一個(gè)單獨(dú)的電池來驅(qū)動(dòng)直流電機(jī)。我為 2x 18650 選擇電池盒。這將連接到直流電機(jī)模塊。您必須使用 3.7 V 的電池來驅(qū)動(dòng) UV-C 模塊。我沒有這個(gè)的照片。您可以選擇任何您喜歡的電池盒。
機(jī)器人框架
因?yàn)槲覀兪褂脴犯唠姍C(jī),所以我選擇使用樂高構(gòu)建機(jī)器人框架。如果你不是樂高迷。您可以根據(jù)可用的材料和想象力選擇任何電機(jī)和框架。這是我使用樂高的機(jī)器人框架的圖片。
傳感器
在這個(gè)項(xiàng)目中使用了四個(gè)傳感器,兩個(gè)在前面用于跌倒檢測和碰撞檢測,另外兩個(gè)在后面。我使用兩種不同類型的紅外傳感器進(jìn)行跌倒檢測和碰撞。如圖所示。
使其與樂高兼容。我把樂高板貼在傳感器的背面。對于這個(gè)技巧,您可以使用小塑料蓋作為盒子的家用電燈開關(guān)。
完成所有接線并安裝所有傳感器、組件。這是消毒機(jī)器人的最終說明。
軟件實(shí)施
軟件實(shí)現(xiàn)有很多部分。了解更多概念。您可能需要開始學(xué)習(xí)這兩個(gè)教程
- 了解有關(guān)此項(xiàng)目中使用的 AWS IOT 概念和工具的更多信息。
https://iot-esp32.workshop.aws/en/introduction.html
- 了解有關(guān)許多 AWS 服務(wù)流程的更多信息。
https://iot-esp32.workshop.aws/en/module3.html
更完整的源碼請到github https://github.com/wtos03/HealthySpaces
我將僅提取一些代碼片段以進(jìn)行解釋。
網(wǎng)頁
該頁面將用于注冊工作區(qū),如下圖所示
用戶開始選擇注冊地點(diǎn)。此選項(xiàng)菜單將幫助將名稱轉(zhuǎn)換為 AWS IOT 中使用的事物名稱。
<select name="roomNames" >
<option value="0123a8024945e75c01"> Binary Roomoption>
<option value="TT"> Analog Roomoption>
select>
用戶輸入姓名并按注冊按鈕后。網(wǎng)頁將發(fā)布帶有 Jason 格式數(shù)據(jù)的請求(工作空間狀態(tài)的名稱和 wsOccupancy 標(biāo)志)以預(yù)定義 Web API 影子狀態(tài)(參見 url:下面)
$("#register").click(function(event){
currentvalue = document.getElementById('register').innerHTML;
yourName = document.getElementById('name').value;
// trying to add the value from text box
thingName = document.getElementById("roomNames").value;
console.log(thingName);
var mydata={"action":"on","wsOccupancy":true,"userName":yourName, "thingname":thingName};
console.log(mydata);
document.getElementById("status").innerHTML= `Workspace Usage : ${yourName}`;
document.getElementById("status").setAttribute("class","button is-rounded is-large is-fullwidth is-loading");
$.ajax( {
type: 'POST',
url:'https://u2gtqb6j39.execute-api.us-west-2.amazonaws.com/Dev/shadow-state',
contentType: 'application/json',
crossDomain: true,
processData: false,
dataType: "json",
data: JSON.stringify(mydata),
success:function(data) {
console.log(" on success");
document.getElementById("status").setAttribute("class","button is-success is-rounded is-large is-fullwidth");
},
error:function(data) {
console.log(" on fail;");
document.getElementById("status").setAttribute("class","button is-success is-rounded is-large is-fullwidth");
}
});
});
如果用戶按下 Finished 按鈕,wsOccupancy 標(biāo)志將設(shè)置為 false 并發(fā)布到與注冊過程相同的 API。
如果用戶按下 Occupy 按鈕來檢查 Workspace 的狀態(tài),網(wǎng)頁將向預(yù)定義的 Web API 影子狀態(tài)發(fā)送獲取請求。此 API 將返回可用或已占用的工作區(qū)狀態(tài)。
$("#status").click(function(event){
console.log("Checking Workspace status");
//check the status of Shadow
// thingName = "ESP32"
thingName = document.getElementById("roomNames").value;
console.log(`thingname=${thingName}`);
$.ajax( {
type: 'GET',
url:'https://u2gtqb6j39.execute-api.us-west-2.amazonaws.com/Dev/shadow-state',
contentType: 'application/json',
crossDomain: true,
processData: false,
dataType: "json",
data: `thingname=${thingName}`,
success:function(data) {
console.log("success");
console.log(data.status);
document.getElementById("status").innerHTML=data.status;
if (data.status == "Available" )
{
document.getElementById("status").setAttribute("class","button is-success is-rounded is-large is-fullwidth");
}
else{
document.getElementById("status").setAttribute("class","button is-danger is-rounded is-large is-fullwidth");
}
},
error:function(data) {
console.log("error");
}
});
});
靜態(tài)網(wǎng)頁的優(yōu)點(diǎn)是您可以在任何支持Javascript的網(wǎng)絡(luò)瀏覽器下在本地網(wǎng)頁上運(yùn)行它。無需 Web 服務(wù)器托管此服務(wù)。但是要分享這個(gè)網(wǎng)頁,我們可以上傳到 S3 存儲(chǔ)桶并將它們標(biāo)記為靜態(tài)網(wǎng)頁。通過將此文件 (index.html) 上傳到 S3 存儲(chǔ)桶并啟用為靜態(tài)網(wǎng)站托管。定義公共訪問權(quán)限或僅特定組的權(quán)限。并復(fù)制 Bucket 網(wǎng)站端點(diǎn)以在網(wǎng)頁上使用。在這個(gè)例子中是
http://cleanws.com.s3-website-us-west-2.amazonaws.com
我們可以翻譯此 URL 以創(chuàng)建 QR 碼或放入 NFC 標(biāo)簽,以供人們來到工作區(qū)時(shí)訪問。
蘭普達(dá)功能
在創(chuàng)建 API 網(wǎng)關(guān)之前,我們需要先創(chuàng)建 Lampda。因?yàn)?API 需要 Lampda 函數(shù)名指向。
我們需要?jiǎng)?chuàng)建兩個(gè) Lampda 函數(shù)
- Shadow_Status_Check 此函數(shù)通過獲取 wsOccupancy 標(biāo)志的值來檢查 AWS IOT 的狀態(tài)。如果 true 將返回值“Occupied”以顯示在網(wǎng)頁上。如果 false 將返回值“可用”。該標(biāo)志將從報(bào)告的影子狀態(tài)中讀取。
- Shadow_Update 此函數(shù)使用 wsOccupancy 和 userName 的值更新 IOT 設(shè)備影子的狀態(tài)。
這些源代碼是用 python 3.8 編寫的。確保這兩個(gè)功能有權(quán)訪問 AWS IOT 服務(wù)(在左側(cè)的配置和權(quán)限選項(xiàng)卡下
所有源代碼都位于 LampdaFunctions 目錄下
API網(wǎng)關(guān)
讓網(wǎng)頁輕松訪問 AWS IOT 服務(wù)。我們可以定義連接到 Lampda 函數(shù)的 API。Lampda 功能可以連接到 AWS IOT 服務(wù)。我們無法創(chuàng)建 Web API 來直接連接到 AWS IOT。(我不知道原因,但我認(rèn)為這是安全問題)要?jiǎng)?chuàng)建 API,您需要?jiǎng)?chuàng)建資源影子狀態(tài)和兩個(gè)方法 get 和 post。
“獲取方法”鏈接到“Shadow_Status_Check”Lampda 函數(shù)。
“發(fā)布方法”鏈接到“Shadow_Update Lampda”功能。
?
AWS 物聯(lián)網(wǎng)
我們沒有在 AWS IOT 服務(wù)器上進(jìn)行太多配置。大多數(shù)在客戶端完成的任務(wù)都是由 CORE2 模塊完成的。確保正確設(shè)置所有配置和安全性。在開始這部分工作之前,請?jiān)?/font>https://edukit.workshop.aws/en/getting-started.html運(yùn)行這兩個(gè)教程 Cloud Connected Blinky 和 ??Smart Thermostat 。
ThingName 將使用每個(gè)設(shè)備唯一的設(shè)備 ID 自動(dòng)創(chuàng)建。
CORE 2 將開始連接 AWS IOT Shadow 服務(wù)并在數(shù)據(jù) userName 和 wsOccupancy 標(biāo)志上注冊增量更改
// register delta callback for workSpaceActuator and nameActuator
rc = aws_iot_shadow_register_delta(&iotCoreClient, &nameActuator);
if(SUCCESS != rc) {
ESP_LOGE(TAG, "Shadow Register userName Delta Error");
}
rc = aws_iot_shadow_register_delta(&iotCoreClient, &workSpaceActuator);
if(SUCCESS != rc) {
ESP_LOGE(TAG, "Shadow Register wsOccupancy Delta Error");
}
這兩個(gè) Actuator 將注冊回調(diào)函數(shù),如下面的數(shù)據(jù)結(jié)構(gòu)。
jsonStruct_t nameActuator;
nameActuator.cb = userName_Callback;
nameActuator.pKey = "userName";
nameActuator.pData = &userName;
nameActuator.type = SHADOW_JSON_STRING;
nameActuator.dataLength = MAX_NAME_LENGTH;
jsonStruct_t workSpaceActuator;
workSpaceActuator.cb = occupancy_Callback;
workSpaceActuator.pKey = "wsOccupancy";
workSpaceActuator.pData = &wsOccupancy;
workSpaceActuator.type = SHADOW_JSON_BOOL;
workSpaceActuator.dataLength = sizeof(bool);
計(jì)算開始和停止使用時(shí)間之間的時(shí)間差。我們需要先正確設(shè)置時(shí)間。為了方便設(shè)置和方便,我們使用 ntp 協(xié)議來設(shè)置時(shí)間,它在 ntptime.h 中定義并在 ntptime.c 中實(shí)現(xiàn)。當(dāng) CORE2 將 wsOccupancy 的更新 delta 狀態(tài)從 false 變?yōu)?true 時(shí),CORE2 將在 LED 條上打開紅色,獲取 startUsagetime 并將 robotStatus 更改為“Stop Clean”
if (*(bool *)(pContext->pData)) //True mean workspace is used
{
Core2ForAWS_Sk6812_SetSideColor(SK6812_SIDE_LEFT, 0xFF0000);
Core2ForAWS_Sk6812_SetSideColor(SK6812_SIDE_RIGHT, 0xFF0000);
Core2ForAWS_Sk6812_Show();
// Add starttime
getTimeStructure(&startTime);
strftime(startUsageTime, sizeof(startUsageTime), "%c", &startTime);
ESP_LOGI(TAG, "The current date/time in Thailand is: %s", startUsageTime);
strcpy(robotStatus,"Stop Clean");
}
如果用戶使用完工作區(qū)。wsOccupancy 的 delta 標(biāo)志將從 true 變?yōu)?false,這將觸發(fā)獲取 stopUsageTime,以 HH:MM 格式計(jì)算時(shí)間差,停止 LED 條并將機(jī)器人狀態(tài)更改為“開始清潔”
else
{
Core2ForAWS_Sk6812_Clear();
Core2ForAWS_Sk6812_Show();
// Add stoptime
getTimeStructure(&stopTime);
strftime(stopUsageTime, sizeof(stopUsageTime), "%c", &stopTime);
ESP_LOGI(TAG, "The current date/time in Thailand is: %s", stopUsageTime);
// Find time difference
diffTimePeriod (stopTime,startTime,&diffTime);
sprintf(durationTime,"%d Hr: %d Min: %d Sec",diffTime.tm_hour,diffTime.tm_min,diffTime.tm_sec);
ESP_LOGI(TAG, "The workspace usage time is: %s \n", durationTime);
strcpy(robotStatus,"Start Clean");
}
CORE2 將在第 461 行指定的每個(gè)特定時(shí)間發(fā)送報(bào)告設(shè)備影子
vTaskDelay(pdMS_TO_TICKS(1000)); Line 461
發(fā)電機(jī)數(shù)據(jù)庫
該數(shù)據(jù)庫將繼續(xù)使用工作區(qū)。一旦用戶完成使用工作區(qū)并且 CORE2 完成計(jì)算使用時(shí)間,我們將發(fā)布到 DB。您需要為保存的數(shù)據(jù)創(chuàng)建表,定義主鍵。有關(guān)更多信息,請?jiān)L問此網(wǎng)站以了解更多如何在 Dynamo DB 中存儲(chǔ)設(shè)備數(shù)據(jù)
https://docs.aws.amazon.com/iot/latest/developerguide/iot-ddb-rule.html
要發(fā)布到數(shù)據(jù)庫,我們需要在左側(cè)的規(guī)則選項(xiàng)卡下定義規(guī)則來處理物聯(lián)網(wǎng)數(shù)據(jù)。規(guī)則查詢將使用 SQL 語句開始發(fā)布到數(shù)據(jù)庫。這需要改進(jìn) SQL 語句以僅在用戶完成時(shí)發(fā)布。
SELECT state.reported.userName, state.reported.temperature, state.reported.startUsageTime, state.reported.stopUsagetime, state.reported.durationHandler FROM '$aws/things/0123a8024945e75c01/shadow/update/accepted'
機(jī)器人控制
這是我們從 aws_iot_task 注冊單獨(dú)進(jìn)程的另一個(gè)任務(wù)
xTaskCreatePinnedToCore(&robot_task, "robot_task", 2048, NULL, 3, NULL, 1);
xTaskCreatePinnedToCore(&aws_iot_task, "aws_iot_task", 4096*2, NULL, 5, NULL, 0);
robotStatus 標(biāo)志將用于控制機(jī)器人的狀態(tài)。如果用戶離開工作區(qū),狀態(tài)將變?yōu)殚_始清潔,機(jī)器人將開始清潔,直到完成或其他用戶進(jìn)入。這部分尚未完全實(shí)施。當(dāng)機(jī)器人撞到東西或幾乎要??摔倒時(shí),只需簡單的服務(wù),如前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和掉頭。實(shí)現(xiàn)機(jī)器人移動(dòng)算法需要更多的時(shí)間來開發(fā)和測試。
使用 i2c 協(xié)議的直流電機(jī)驅(qū)動(dòng)器在目錄組件 /dc-motor/m5-dcmotor.c 中實(shí)現(xiàn)
項(xiàng)目測試
因?yàn)槲业脑O(shè)備在截止日期前三天停止工作。(CORE2 無法重新編程。引導(dǎo)信息顯示 PSRAM 讀取錯(cuò)誤) 屏幕像這樣出現(xiàn)垃圾。
我不能有視頻來展示項(xiàng)目的最終工作。但是在開發(fā)期間。所有功能(電機(jī)運(yùn)動(dòng)、傳感器。和打開設(shè)備的繼電器都已經(jīng)過測試并且運(yùn)行良好。除了 GPIO 有時(shí)會(huì)在傳感器上讀取錯(cuò)誤。
AWS 和 CORE2 之間的邏輯已經(jīng)過測試。當(dāng)用戶按下完成按鈕時(shí)機(jī)器人開始工作,并在發(fā)生新注冊時(shí)停止工作。唯一錯(cuò)過測試的一件事是在打開 UV-C 和酒精噴霧時(shí)進(jìn)行傳感器檢查。
正如您在此視頻中看到的,AWS 部件工作正常。
以史為鑒
我從這個(gè)項(xiàng)目中學(xué)到了一些技巧。對其他人進(jìn)一步發(fā)展而不是再次嘗試和錯(cuò)誤將是有用的。
- CORE2 中的許多設(shè)備共享相同的 i2C 總線,這有時(shí)會(huì)導(dǎo)致問題。例如,我的直流電機(jī)控制和 MPU6886 協(xié)同工作有問題。
- 在項(xiàng)目快完成時(shí)升級(jí)開發(fā)環(huán)境或拉新庫是一個(gè)壞主意。這導(dǎo)致我的項(xiàng)目完全停止。我無法及時(shí)解決問題。
- 端口 ESP32 不是 5v 容差。不能直接連接 5 V 傳感器。
- FreeRtos 取決于任務(wù)計(jì)劃。這會(huì)影響您的實(shí)時(shí)操作。我在從輸入端口讀取值以及調(diào)整時(shí)間延遲或添加更多任務(wù)時(shí)遇到問題。我從讀取端口得到了不同的行為。
- AWS 中有很多安全設(shè)置。這給我?guī)砹撕芏鄦栴},直到我決定打開所有安全性。這將是一個(gè)很大的安全漏洞。黑客可以使用您的 API 來管理 AWS IOT。我希望亞馬遜將在安全設(shè)置方面進(jìn)行更多改進(jìn),使其集中且易于設(shè)置和理解
我希望你覺得這個(gè)項(xiàng)目很有用。建議復(fù)制并粘貼此項(xiàng)目的某些部分,以幫助您更快地開發(fā)項(xiàng)目。我會(huì)很高興聽到這個(gè)消息。謝謝你。
?
- 由電話控制的小型機(jī)器人
- 語音機(jī)器人的構(gòu)建
- 機(jī)器人的構(gòu)建
- 機(jī)器人項(xiàng)目構(gòu)建
- 構(gòu)建機(jī)器人系統(tǒng)
- 小型機(jī)載計(jì)算機(jī)電源的設(shè)計(jì)
- 基于Matlab的機(jī)構(gòu)與機(jī)器人分析資料下載 11次下載
- 基于DSP和PC的農(nóng)業(yè)機(jī)器人控制系統(tǒng) 17次下載
- 基于DSP芯片的足球機(jī)器人實(shí)現(xiàn)與設(shè)計(jì) 26次下載
- 移動(dòng)機(jī)器人的導(dǎo)航定位和地圖構(gòu)建技術(shù)綜述 22次下載
- 如何才能實(shí)現(xiàn)移動(dòng)機(jī)器人的導(dǎo)航定位和地圖構(gòu)建技術(shù) 22次下載
- 小型仿人機(jī)器人系統(tǒng)的設(shè)計(jì)資料詳細(xì)說明 3次下載
- TMS320LF2407在小型機(jī)器人控制系統(tǒng)中的應(yīng)用 6次下載
- 基于嵌入式視覺的移動(dòng)式自重構(gòu)微小型機(jī)器人
- 微小型自主偵察機(jī)器人控制系統(tǒng)設(shè)計(jì)
- 如何構(gòu)建一個(gè)可充電酒精檢測儀 2114次閱讀
- 基于ATmega16構(gòu)建的線跟隨機(jī)器人的完整電路圖 1789次閱讀
- 如何使用DonkeyCar平臺(tái)構(gòu)建一個(gè)自主機(jī)器人 2114次閱讀
- 基于使用A4988驅(qū)動(dòng)程序和HC-05 bt模塊構(gòu)建自平衡機(jī)器人 2007次閱讀
- 基于TMS320F2812芯片實(shí)現(xiàn)移動(dòng)機(jī)器人的導(dǎo)航和控制系統(tǒng)的應(yīng)用方案 2705次閱讀
- 機(jī)器人對TF電機(jī)要求有哪些 1274次閱讀
- 面對疫情 醫(yī)療機(jī)器人能幫上什么忙? 2126次閱讀
- 教育機(jī)器人市場分析_教育機(jī)器人市場前景 5544次閱讀
- 協(xié)作機(jī)器人的起源_為什么需要協(xié)作機(jī)器人 8127次閱讀
- 仙知機(jī)器人自主研發(fā)用于移動(dòng)機(jī)器人應(yīng)用專業(yè)級(jí)客戶端軟件Roboshop 6069次閱讀
- 如何選擇機(jī)器人電機(jī)_機(jī)器人電機(jī)選擇舉例 1w次閱讀
- 軟體機(jī)器人 前所未見的機(jī)器人 3692次閱讀
- Python+樹莓派實(shí)現(xiàn)的微信拍攝機(jī)器人 1w次閱讀
- 如何使用HRMRP機(jī)器人平臺(tái)構(gòu)建機(jī)器人應(yīng)用系統(tǒng) 1629次閱讀
- 如何構(gòu)建不傷害人類的工業(yè)機(jī)器人 1129次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多