RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內不再提示
創(chuàng)作
電子發(fā)燒友網>電子資料下載>電子資料>Alexa控制的樂高生物實驗

Alexa控制的樂高生物實驗

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

資料介紹

描述

Alexa 控制的樂高生物實驗

背景

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

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

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

問題陳述

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

解決方案概述

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

pYYBAGOIL0KAJJa5AAwQ5plIByM310.jpg

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

直觀語音控制的重要性

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

為什么選擇 Alexa?

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

應用

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

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

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

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

設計問題

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

剛架

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

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

pYYBAGOIL0aAZfuRAAI7iPMs0jQ830.png

鋁制 TETRIX 底座

可靠的板定位

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

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

擦拭盤子

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

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

pYYBAGOIL0mAA4IoAAHHdd2rKmQ231.png

旋轉盤子的橡膠輪

控制兩個子系統(tǒng)

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

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

兩位夾持器/手腕

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

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

poYBAGOIL0yAF7ftAAHzHrEckhA692.png

手腕機構

可重復的基本位置

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

poYBAGOIL0-AVxtpAAHW4-uGlQ0497.png

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

提起培養(yǎng)皿蓋

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

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

poYBAGOIL3OAUUN7AA4Kcxsj0ig465.jpg

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

軟件架構

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

Alexa 技能

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

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

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

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

EV3 Python 小工具代碼

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

?

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

?

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)

?

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

?

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創(chuàng)建的。為簡潔起見,省略了分步構建說明,因為您構建的 ALBERT 可能具有不同的外形或實驗設計。

1. 構建手臂

pYYBAGOIQmeAQeneAAcmSuG0ARg237.png

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

2.搭建工作站

pYYBAGOIQnyAO7PcAAdYLLXtNMs045.png

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

3. 構建 TETRIX 底座和板架

pYYBAGOIQomAKvk3AAR1mIyLpVU814.png

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

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

4. 設置軟件環(huán)境

1. 從下載頁面下載 ev3dev 。

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

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

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 語音挑戰(zhàn)任務 1示例)

1.如果您還沒有亞馬遜開發(fā)者賬戶,請創(chuàng)建一個

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

3. 點擊頁面右上角的“創(chuàng)建產品”按鈕。

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

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

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

6. 編寫 Alexa 技能

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

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

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

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

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

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

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

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

package.json - 包信息

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

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

7. 在gadget目錄下創(chuàng)建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 應用程序執(zhí)行此操作。確保 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開發(fā)指南
  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次下載  |  免費
RM新时代网站-首页