資料介紹
描述
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)交互。
在目前的形式下,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 框架上。
鋁制 TETRIX 底座
可靠的板定位
樂高齒輪系經常會經歷大量的活動,使得非常精確的定位變得非常困難。然而,盤子必須始終放置在工作站上的狹窄區(qū)域,以使手臂能夠可靠地抬起和更換蓋子。此外,垂直存儲架幾乎沒有水平位置誤差的余地。
通過將軸作為導軌放置在工作站轉盤的底部,我可以確保即使在出現水平操縱器錯誤的情況下,也能將盤子向下引導到轉盤中。為確保印版能夠始終如一地垂直存放,機架設計中包含了傾斜的導軌。
擦拭盤子
要制作實驗板,拭子不能簡單地接觸瓊脂,而必須在一定面積的表面上擦拭。
我沒有需要第二個機械臂來在瓊脂表面上操縱棉簽,而是選擇直接旋轉培養(yǎng)皿以在其表面上劃出弧線。只需將帶有橡膠輪胎的電機連接到工作站,即可輕松旋轉盤子,無需復雜的組裝。
旋轉盤子的橡膠輪
控制兩個子系統(tǒng)
為了限制復雜性,ALBERT 分為兩個主要子系統(tǒng):機械臂和工作站。ALBERT 的主控制器 EV3 智能程序塊必須能夠與工作站通信以觸發(fā)擦拭和監(jiān)控操作。
ev3dev 操作系統(tǒng)使 EV3 能夠使用nxt-python庫通過 USB 連接遠程控制 NXT。
兩位夾持器/手腕
要垂直存放板并將它們水平放置在工作站中,需要兩個手臂位置,水平和垂直。
腕關節(jié)可以實現這種旋轉,但必須注意將腕關節(jié)旋轉軸與末端執(zhí)行器的中心對齊。未對準會導致水平和垂直夾持器方向彼此略微偏移,從而在放置板或取下蓋子時引起問題。
手腕機構
可重復的基本位置
手臂必須能夠在無菌架、工作站和存儲架上重復定位。最初,這是通過航位推算完成的,但為了提高性能,EV3 顏色傳感器用于檢測手臂底座旋轉時的彩色條紋。
使用彩色膠帶作為關鍵點標記
提起培養(yǎng)皿蓋
提起盤蓋很困難。在我的估計中,公差只有大約 +/- 0.25 厘米,這是很難用樂高齒輪實現的。雖然 ALBERT 幾次抓住邊緣都能掀開蓋子,但并不一致。蓋子通常會在夾具中轉動,防止它被重新裝回盤子上,或者完全滑出夾具。
解決辦法是稍微修改一下盤子的蓋子,增加一個“把手”,抓手可以很容易地抓住它。這個手柄由兩個錐齒輪制成,并用熱膠粘在盤蓋上。
原型管道膠帶手柄和最終的熱粘錐齒輪手柄
軟件架構
軟件堆棧分為兩個主要部分: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. 構建手臂
附上手臂 CAD 模型以了解有關構建手臂的詳細信息。
2.搭建工作站
使用附加的workstation.io文件構建工作站。
3. 構建 TETRIX 底座和板架
使用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 日是最新的。
?
- 由Alexa控制的臺燈構建
- 由Alexa提供支持的樂高R2D2機器人
- Sky Finder:樂高Alexa小工具
- 樂高時鐘開源設計
- 如何使用Alexa和ESP32控制
- Alexa控制的門牌演示
- Alexa通過樹莓派控制LED
- 從Alexa控制Raspberry Pi(Linux設備)
- 由亞馬遜Alexa提供支持的樂高小狗
- 樂鑫README
- 如何使用Alexa語音控制電視遙控器 11次下載
- 將無線傳感器網絡應用于生物實驗室的設計方案說明 13次下載
- XShow-卡樂控制軟件下載 1次下載
- 電子仿真技術在生物醫(yī)學工程實驗中的探索
- 生物安全實驗室自動控制系統(tǒng)的應用研究
- 基于高光譜成像技術的應用研究 1637次閱讀
- 微雪電子ROC-RK3308主板CC-Amazon Alexa簡介 1282次閱讀
- 復合放大器實現高精度的高輸出驅動能力 獲得最佳的性能 1600次閱讀
- 海天雄電子:生物醫(yī)療電子實驗箱介紹 3587次閱讀
- 海天雄電子:生物醫(yī)療電子實驗分析 2390次閱讀
- 更小更智能的電機控制器推進HEV/EV市場 1105次閱讀
- 便攜式生物傳感器幫助醫(yī)生更好地控制劑量 2695次閱讀
- 區(qū)塊鏈上的虛擬樂高是什么? 1561次閱讀
- 生物神經電極放大器系統(tǒng)(肌電檢測系統(tǒng))的設計及測試 3638次閱讀
- 生物識別概念股有哪些_生物識別概念股一覽 1.6w次閱讀
- 基于PBS生物反應器的共享控制平臺解決方案 1153次閱讀
- 基于FPGA的高幀頻面陣CCD驅動控制設計 2343次閱讀
- 生物芯片分類及應用 2.1w次閱讀
- 基于生物反饋技術的可穿戴式心電監(jiān)測系統(tǒng)的設計 2297次閱讀
- 看樂高機器人如何搖身一變成樂隊? 4125次閱讀
下載排行
本周
- 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開發(fā)指南
- 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次下載 | 免費
評論
查看更多