<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Alexa控制的樂高生物實驗

Alexa控制的樂高生物實驗

2023-06-19 | zip | 0.00 MB | 次下載 | 免費

資料介紹

描述

Alexa 控制的樂高生物實驗

背景

空間。最后的邊界。在 NASA 準備重返月球之際,國際空間站在過去 20 年中一直以 17, 000 英里/小時的速度飛越天空,進行了數不清的科學研究,造福了地球上的我們。這項研究的一個關鍵主題是研究微重力下生命的行為,包括人類水平和微觀尺度。當人類夢想在其他星球上定居時,我們必須首先嚴格了解生物有機體如何在微重力下運作。一些在地球上相對無害的病原體在微重力環境下會變得危險嗎?人造器官可以在失重環境中生長和制造嗎?空間究竟如何改變細胞的功能?哪些醫學進步可以拯救地球上的生命?

太空實驗很昂貴。一名宇航員的時間價值每小時 60, 000 到 80, 000 美元。許多宇航員本身并不是科學家,而是工程師和飛行員。他們接受了廣泛的實驗培訓和指導程序,但基礎科學往往不是他們的母語學科。

此外,未來的火星任務可能會發現它們離地球太遠,無法與任務控制中心進行實時交互以幫助運行或進行實驗。如果是這種情況,工作人員必須自給自足,并獲得進行實驗所需的幫助。

問題陳述

由于在低地球軌道 (LEO) 和長時間的行星際飛行期間運行和監測微重力實驗的復雜性,宇航員需要一種與實驗交互的直觀方法,從而消除對特定科學領域的利基知識的需求,并促進簡單的互動與最少的培訓。

解決方案概述

為解決此解決方案,我制作了 ALBERT 或 Alexa 控制的 LEGO Biological ExpeRimenT 原型。ALBERT 展示了語音控制實驗界面的有效性,該界面允許宇航員在沒有與任務控制持續通信且無需大量培訓的情況下直觀地與系統交互。

pYYBAGOIL0KAJJa5AAwQ5plIByM310.jpg

在目前的形式下,ALBERT 能夠對語音命令做出反應,以創建新的細菌生長實驗、選擇、擦拭、儲存和監測瓊脂平板。宇航員只需要插入一根棉簽并說:“Alexa,使用這個棉簽?!?要檢查實驗,機組人員可以簡單地問,“Alexa,檢查板 1”。鑒于 ALBERT 是由樂高材料制成的,它確實嘗試了一些成功的可變性,但是,它反復能夠創建和存儲盤子。

直觀語音控制的重要性

ALBERT 直觀的語音控制界面對其主要目標至關重要——簡化復雜實驗的界面,使幾乎未經訓練的機組人員能夠快速、熟練地創建和監控科學研究。當前工作的擴展將允許與多個實驗進行動態語音交互,圖像處理和數據記錄的集成,以及從發射到著陸的整個實驗過程的關鍵簡化。

為什么選擇 Alexa?

Alexa 是 ALBERT 的完美語音輸入方法。通過意圖對命令進行分類,Alexa 理解話語背后目的的能力優于簡單的語音識別系統。此外,Alexa 與許多其他工具和系統集成的能力為其用作具有直觀交互的復雜系統(例如軌道實驗室或航天器)的統一自然語言界面打開了大門。

應用

與為太空探索開發的許多其他技術一樣,ALBERT 的影響可以遠遠超出國際空間站或行星際飛行器。潛在的其他應用包括:

地球上的自動化實驗室(像這樣)

展示將實驗室與語音助手(如 Alexa)集成以實現統一的人機實驗室或乘員車輛界面的價值

促進可以利用新的深度學習人工智能技術的全自動實驗監控工具的開發

設計問題

在構建 ALBERT 原型時,遇到了幾個關鍵的設計問題。此處簡要總結了它們以及所選的解決方案。

剛架

項目開始時的一個關鍵問題是確保必要部分(工作站、機械臂、無菌板存儲和現場實驗存儲)的仔細定位。這些組件之間的錯位會對程序的可靠性和可重復性產生負面影響。

為了緩解這種情況,所有關鍵模型都固定在鋁制 TETRIX 框架上。

pYYBAGOIL0aAZfuRAAI7iPMs0jQ830.png

鋁制 TETRIX 底座

可靠的板定位

樂高齒輪系經常會經歷大量的活動,使得非常精確的定位變得非常困難。然而,盤子必須始終放置在工作站上的狹窄區域,以使手臂能夠可靠地抬起和更換蓋子。此外,垂直存儲架幾乎沒有水平位置誤差的余地。

通過將軸作為導軌放置在工作站轉盤的底部,我可以確保即使在出現水平操縱器錯誤的情況下,也能將盤子向下引導到轉盤中。為確保印版能夠始終如一地垂直存放,機架設計中包含了傾斜的導軌。

擦拭盤子

要制作實驗板,拭子不能簡單地接觸瓊脂,而必須在一定面積的表面上擦拭。

我沒有需要第二個機械臂來在瓊脂表面上操縱棉簽,而是選擇直接旋轉培養皿以在其表面上劃出弧線。只需將帶有橡膠輪胎的電機連接到工作站,即可輕松旋轉盤子,無需復雜的組裝。

pYYBAGOIL0mAA4IoAAHHdd2rKmQ231.png

旋轉盤子的橡膠輪

控制兩個子系統

為了限制復雜性,ALBERT 分為兩個主要子系統:機械臂和工作站。ALBERT 的主控制器 EV3 智能程序塊必須能夠與工作站通信以觸發擦拭和監控操作。

ev3dev 操作系統使 EV3 能夠使用nxt-python庫通過 USB 連接遠程控制 NXT。

兩位夾持器/手腕

要垂直存放板并將它們水平放置在工作站中,需要兩個手臂位置,水平和垂直。

腕關節可以實現這種旋轉,但必須注意將腕關節旋轉軸與末端執行器的中心對齊。未對準會導致水平和垂直夾持器方向彼此略微偏移,從而在放置板或取下蓋子時引起問題。

poYBAGOIL0yAF7ftAAHzHrEckhA692.png

手腕機構

可重復的基本位置

手臂必須能夠在無菌架、工作站和存儲架上重復定位。最初,這是通過航位推算完成的,但為了提高性能,EV3 顏色傳感器用于檢測手臂底座旋轉時的彩色條紋。

poYBAGOIL0-AVxtpAAHW4-uGlQ0497.png

使用彩色膠帶作為關鍵點標記

提起培養皿蓋

提起盤蓋很困難。在我的估計中,公差只有大約 +/- 0.25 厘米,這是很難用樂高齒輪實現的。雖然 ALBERT 幾次抓住邊緣都能掀開蓋子,但并不一致。蓋子通常會在夾具中轉動,防止它被重新裝回盤子上,或者完全滑出夾具。

解決辦法是稍微修改一下盤子的蓋子,增加一個“把手”,抓手可以很容易地抓住它。這個手柄由兩個錐齒輪制成,并用熱膠粘在盤蓋上。

poYBAGOIL3OAUUN7AA4Kcxsj0ig465.jpg

原型管道膠帶手柄和最終的熱粘錐齒輪手柄

軟件架構

軟件堆棧分為兩個主要部分:Alexa 托管的 Node.js 技能和 EV3 上的 Python Alexa Gadget 代碼。

Alexa 技能

Alexa技能代碼可在技能目錄中瀏覽。遵循 LEGO MINDSTORMS Alexa 挑戰的示例任務模式,定義并實施了幾個關鍵意圖。

MakePlateIntent - 此意圖將“制作盤子”指令發送到 EV3 小工具

CheckPlateIntent - 此意圖將“檢查車牌”指令連同要檢查的車牌號一起發送到 EV3 小工具。在大多數情況下,這將是一個,但將來會擴展到具有多個存儲架的設備。

GadgetEventHandler - 此處理程序捕獲從 EV3 小工具返回的事件,以報告板材何時制作或先前制作的板材的狀態。

EV3 Python 小工具代碼

小工具代碼旨在從基于云的 Alexa 技能接收小工具命令并激活 ALBERT。這包括一個將 ALBERT 的功能封裝在albert.py中的類和一個基于示例代碼的小工具類,在albert_gadget.py中編寫。小工具代碼與用作起點的示例任務非常相似。ALBERT 控制代碼廣泛使用為操縱器(手臂)定義的關鍵點,以簡潔地編碼每項任務所需的運動序列。然后可以從小工具代碼觸發這些任務。主要的小工具事件處理程序很簡單,處理 Alexa 指令并根據任務生成事件。

?

def on_custom_mindstorms_gadget_control(self, directive):
    try:
        payload = json.loads(directive.payload.decode("utf-8"))
        print("Control payload: {}".format(payload), file=sys.stderr)
        control_type = payload["type"]
        if control_type == "make_plate":
            # make the plate
            self.albert.make_plate()
            self.plate_counter += 1
            self.send_custom_event('Custom.Mindstorms.Gadget', 'plate_finished', {
                'plate_number': self.plate_counter
            })
        elif control_type == "check_plate":
        # check the plate
        # will need plate number
        number = int(payload["plate_number"])
        if number > self.plate_counter:
            self.send_custom_event('Custom.Mindstorms.Gadget', 'plate_status', {
                'plate_number': -1
            })
        else:
            refl = self.albert.check_plate()
            self.send_custom_event('Custom.Mindstorms.Gadget', 'plate_status', {
                'plate_number': number,
                'reflectivity': round(refl, 2)
            })
    except KeyError:
        print("Missing expected parameters: {}".format(directive), file=sys.stderr)

?

這是albert.py中的一段代碼,用于使用顏色傳感器對齊底座。注意最后的旋轉,將傳感器從彩色膠帶的邊緣移動到中心。這可確保底座在從任一方向旋轉時都停在正確的位置。

?

def rotate_base(self, color):
    '''
    Rotate from one color indicator to another.
    Color order is:
    YELLOW <--> BLUE   <--> RED
    STORE  <--> STATION <--> STERILE
    '''
    current_color = self.color_sensor.color
    if current_color == color:
        return
    direction = 1
    if (current_color == STATION_COLOR and color == STERILE_COLOR) or current_color == STORE_COLOR:
        direction = -1
    self.arm_base.on(SPEEDS[0]*direction, block=False)
    while self.color_sensor.color != color:
        pass
    self.arm_base.stop()
    self.arm_base.on_for_rotations(SPEEDS[0], direction*STRIPE_BIAS)

?

連同將肩膀和手腕移動到關鍵點的功能,這使我們可以編寫如下程序功能:

?

def get_plate(self, from_storage=False, upside_down=False):
    '''
    Sequence to get a plate and place it in the workstation.
    Post-conditions
    Gripper: WIDE
    Arm:     DOWN
    Base:    STATION
    '''
    src = STORE_COLOR if from_storage else STERILE_COLOR
    self.move_to_keypoint(KP_UP_HORZ)
    self.rotate_base(src)
    self.set_gripper(GRIP_NARROW)
    self.move_to_keypoint(KP_DOWN_HORZ)
    self.set_gripper(GRIP_CLOSED)
    self.move_to_keypoint(KP_UP_HORZ)
    self.rotate_base(STATION_COLOR)
    dest_up = KP_UP_VERT_INVERT if upside_down else KP_UP_VERT
    dest_down = KP_DOWN_VERT_INVERT if upside_down else KP_DOWN_VERT
    self.move_to_keypoint(dest_up)
    self.move_to_keypoint(dest_down)
    self.set_gripper(GRIP_WIDE)
    self.move_to_keypoint(KP_DOWN_HORZ)

?

可以進一步調用這些來執行完整的任務:

?

def make_plate(self):
    ''' Sequence to make a plate. '''
    self.get_plate()
    self.lift_lid()
    self.swab_plate()
    self.lower_lid()
    self.store_plate()

?

一些支持函數支持檢查印版時使用的附加參數

?

def check_plate(self):
    ''' Sequence to check plate. '''
    self.get_plate(from_storage=True, upside_down=True)
    self.move_to_keypoint(KP_UP_HORZ)
    refl = self.station.check_status()
    self.move_to_keypoint(KP_DOWN_HORZ)
    self.store_plate(is_upside_down=True)
    return refl

?

workstation.py文件利用nxt-python庫通過USB 連接遠程控制 NXT。首先,我們可以設置工作站連接:

?

self.brick = nxt.locator.find_one_brick(method=nxt.locator.Method(bluetooth=False))
self.color = Color20(self.brick, PORT_4)
self.tilt_motor = Motor(self.brick, PORT_B)
self.rotate_motor = Motor(self.brick, PORT_C)

?

拭子和檢查板操作簡單,將頭部移動到位并在必要時旋轉培養皿。擦拭功能如下所示:

?

def swab(self):
    self.tilt_motor.turn(TILT_MOTOR_POWER, TILT_DEGREES)
    self.rotate_motor.turn(ROTATE_MOTOR_POWER,PLATE_ROTATION_DEGREES)
    self.tilt_motor.turn(-TILT_MOTOR_POWER, TILT_DEGREES)

?

所有代碼都封裝在類中,方便維護。

建立你自己的

所有 CAD 模型都是使用Studio創建的。為簡潔起見,省略了分步構建說明,因為您構建的 ALBERT 可能具有不同的外形或實驗設計。

1. 構建手臂

pYYBAGOIQmeAQeneAAcmSuG0ARg237.png

附上手臂 CAD 模型以了解有關構建手臂的詳細信息。

2.搭建工作站

pYYBAGOIQnyAO7PcAAdYLLXtNMs045.png

使用附加的workstation.io文件構建工作站。

3. 構建 TETRIX 底座和板架

pYYBAGOIQomAKvk3AAR1mIyLpVU814.png

使用plate_holder.io構建兩個板架(鏡像)。

為了創建帶有彩色條紋的平臺,我使用了一段泡沫芯板。將手臂與每個無菌架、工作站和存儲架對齊,并分別在傳感器下方放置一條紅色、藍色和黃色膠帶。

4. 設置軟件環境

1. 從下載頁面下載 ev3dev 。

2. 使用Etcher將映像刷入 SD 卡。

3. 使用 USB A-to-Mini-B 電纜將 EV3 程序塊連接到您的計算機并啟用 USB 互聯網共享。

4. 在您??的計算機上,安裝Microsoft 的Visual Studio Code 。

5. 安裝后,打開擴展面板 ( Ctrl+Shift+X )。然后搜索并安裝ev3dev-browser擴展。

6. 在您的計算機上,從GitHub存儲庫下載源代碼。如果您不熟悉 git,只需使用本頁右上角的按鈕將代碼下載為 zip 文件。高級用戶可以克隆存儲庫。

7. 為了與 NXT 工作站通信,nxt-python必須安裝在 EV3 (不是你的電腦)上。為此,您需要在 EV3 程序塊終端中運行一些命令。

要訪問此終端,請展開資源管理器面板底部的“ev3dev 設備瀏覽器”組 ( Ctrl+Shift+E ) 并通過單擊“單擊此處連接設備”連接到您的程序塊。

連接后,右鍵單擊 ev3dev 設備并選擇“打開 SSH 終端”。

在終端中運行以下命令(您可以忽略以“#”開頭的行;這些是注釋)

?

# install pip3 (python3 package manager)
sudo apt install python3-pip

# install pyusb for USB connection to NXT
sudo pip3 install pyusb

# install nxt-python (python3 beta)
wget https://github.com/ev3dev/nxt-python/archive/ev3dev-stretch.zip
unzip ev3dev-stretch
cd nxt-python-ev3dev-stretch
python3 setup.py install # you may need to prepend `sudo`

?

5. 設置 Alexa 小工具

(這些步驟改編自LEGO MINDSTORMS 語音挑戰任務 1示例)

1.如果您還沒有亞馬遜開發者賬戶,請創建一個

2. 進入Alexa語音服務頁面,點擊“產品”按鈕。

3. 點擊頁面右上角的“創建產品”按鈕。

4. 將產品命名為“MINDSTORMS EV3”,ID 為“EV3_01”。產品類型可以是“Alexa Gadget”,類別是“Animatronic or Figure”。填寫說明,如果打算進行商業分發,則選擇“否”,如果是兒童產品,則選擇“否”。點擊完成產品創建。

5. 在控制臺的設備列表中單擊您的新設備。

6. 在產品頁面上,記下 Amazon ID 和 Alexa Gadget Secret 代碼。稍后您將需要它們。

6. 編寫 Alexa 技能

(這些步驟改編自LEGO MINDSTORMS 語音挑戰任務 3示例。)

1. 轉到Alexa Developer Console ,然后單擊頁面右側的藍色“Create Skill”按鈕。

2. 將技能命名為“ALBERT”并使用默認選擇的“Custom”模型。在頁面底部,選擇“Alexa-Hosted (Node.js)”。完成點擊技能創建頁面。

3. 通過在左側菜單中選擇“Interfaces”并打開“Custom Interface Controller”來啟用自定義界面控制器。使用頁面頂部的按鈕保存更新。

4. 接下來,通過單擊左側菜單中的“JSON 編輯器”項(在“交互模型”標題下)設置交互模型,然后從ALBERT 源代碼的技能文件夾中拖放model.json文件。使用頁面頂部的按鈕保存并構建模型。

5. 單擊屏幕頂部的“代碼”選項卡。創建以下文件并將相應 ALBERT 源文件中的內容復制并粘貼到skill/lambda目錄中。

common.js - 常見的意圖處理,例如尋求幫助或取消操作(來自 Mission 3)

index.js - 包含主要意圖和事件處理程序

package.json - 包信息

util.js - 實用程序代碼(來自 Mission 3)

6.點擊“保存”,然后點擊“部署”來激活你的技能!

7. 在gadget目錄下創建albert_gadget.ini文件,內容如下:

?

[GadgetSettings]
amazonId = YOUR_GADGET_AMAZON_ID
alexaGadgetSecret = YOUR_GADGET_SECRET
[GadgetCapabilities]
Custom.Mindstorms.Gadget = 1.0

?

ID 和 secret 是第 5 步中的值。

7. 下載運行

差不多好了!在 VS Code 資源管理器面板 ( Ctrl+Shift+E ) 中,在屏幕底部找到 ev3dev 設備。單擊 ev3dev 設備瀏覽器標題左邊緣附近的下載按鈕。

如果您沒有看到此按鈕,請確保您已連接到您的 EV3 程序塊

復制文件后,找到albert/gadget/albert_gadget.py文件,右鍵單擊它,然后選擇“運行”。

如果這是您第一次跑步,您需要通過藍牙將 EV3 與您的 Alexa 設備配對。您可以通過 Alexa 應用程序執行此操作。確保 EV3 的藍牙已打開。

如果您遇到藍牙在 EV3 上不可用的問題,請參閱此 Github 問題。TL;DR:在您的 EV3 終端(安裝nxt-python 的同一終端)上運行這些行

?

sudo systemctl mask systemd-rfkill.service
sudo systemctl mask systemd-rfkill.socket

?

然后重啟你的 EV3。

關于我

嘿!我是 Matthew,我正在攻讀機器學習博士學位。在肯塔基大學,10 多年前通過 NXT 首次與 LEGO MINDSTORMS 合作。在我的博客https://mruss.dev上更多地了解我。

---

這些說明截至 2019 年 12 月 25 日是最新的。

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>