機器人編程教程1機器人簡介

来源:https://www.cnblogs.com/testing-/archive/2023/08/11/17615226.html
-Advertisement-
Play Games

博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...


1 機器人簡介

我們將製作一個機器人,併為其創建程式,賦予機器人行為,使其看起來具有智能並能夠做出決策。我們將編寫代碼,使用感測器觀察機器人周圍的環境,並構建高級主題的實際示例,包括視覺、語音識別和說話。

您將看到簡單的構建技術如何與少量代碼相結合,使機器感覺像某種寵物。你還將看到當機器出錯時如何進行調試。您還將瞭解如何讓機器人向您反饋問題,以及如何選擇您想要演示的行為。我們將為它連接一個手柄,讓它進行語音控制,最後還將教你如何計划進一步的機器人製作。

在開始製作機器人之前,我們應該先瞭解一下什麼是機器人。我們可以探索一些機器人類型,以及區分機器人和其他機器的基本原理。你會想一想機器人和非機器人機器之間的界限在哪裡,然後也許會用有些模糊的事實把這條界限弄得有點模糊。然後,我們將看看業餘愛好者和業餘機器人愛好者製造的一些機器人。

在本章中,我們將討論以下主題:

  • 機器人是什麼?
  • 探索先進的、令人印象深刻的機器人
  • 探索家用機器人
  • 探索工業機器人
  • 競技、教育和業餘愛好機器人

1.1 機器人是什麼?

機器人是一種根據感測器的輸入自主決策的機器。軟體代理是自動處理輸入並產生輸出的程式。也許將機器人描述為帶有感測器和移動輸出的自主軟體代理最恰當,或者將其描述為帶有運行軟體的機電平臺最恰當。無論如何,機器人都需要電子設備、機械零件和代碼。

機器人這個詞會讓人聯想到夢幻般的科幻作品,具有傳奇般的力量和智慧的裝置。這些機器人通常遵循人體結構,因此被稱為機器人(android),一種類似人類的機器人。它們通常被賦予個性,行為舉止就像人,而這個人在某種程度上是幼稚的:

機器人一詞來自科幻小說。該詞源於捷克語,意為奴隸,最早出現在1921年卡雷爾-卡佩克的戲劇《羅森的萬能機器人》中。科幻小說作家艾薩克-阿西莫夫(Isaac Asimov)在探索智能機器人行為時創造了機器人這個詞。

在我們的家庭和工業中,大多數真實的機器人並不先進和引人註目。它們大多沒有兩條腿,甚至沒有任何腿。有些機器人有輪子,有些雖然不能移動,但仍有活動部件和感測器。

現代洗衣機、自動吸塵器、完全自動調節的鍋爐和空氣採樣風扇等機器人已經滲入我們的家庭,成為日常生活的一部分。它們並不具有威脅性,已經成為我們身邊的另一種機器。不過,3D 印表機、機械臂和學習玩具則更令人興奮:

機器人的核心可以簡化為電機等輸出端、感測器等輸入端以及用於處理或運行代碼的控制器。因此基本的機器人應該是這樣的:

  • 它有輸入和感測器,用於測量和採樣環境屬性。
  • 它有電機、燈光、聲音、閥門或加熱器等輸出端來改變環境。
  • 它利用輸入的數據自主決定如何控制輸出。

現在,我們將在下一節瞭解一些先進的機器人。

1.2 探索先進的、令人印象深刻的機器人

現在大家對機器人有了一個總體的瞭解,下麵我將介紹一些具體的例子,它們代表了目前最傑出的機器人,以及它們的能力。除了火星機器人外,人類和動物形態的機器人因其適應性強而受到這些機器人製造商的青/睞,這與為工業用途設計的機器人形成了鮮明對比,它們都是為了單一重覆使用而設計的。

  • 機器人1

麻省理工學院的Cog。Cog嘗試在動作和感測器方面與人類相似。

  • 機器人2

本田ASIMO,它的走路和說話方式有點像人類。ASIMO的兩個攝像頭能避開物體,還能識別手勢和臉部,並有激光測距感測器來感知地面。它還能通過紅外線感測器跟蹤地板上的標記。ASIMO可接受英語和日語語音指令。

  • 機器人3

軟銀機器人公司的Nao機器人。這個高58釐米的可愛機器人被設計為供用戶編程的學習和游戲機器人。它有感測器來檢測自己的運動,包括是否摔倒,還有超聲波距離感測器來避免顛簸。Nao使用揚聲器和麥克風進行語音處理。它有多個攝像頭,可以完成與ASIMO類似的動作。

  • 機器人4

是波士頓動力公司的Atlas。這款機器人兩條腿行動迅速,動作自然。它有一個激光雷達(LIDAR)陣列,用來感知周圍的情況,從而規劃自己的行動,避免碰撞。

  • 機器人5

波士頓動力公司的 BigDog,它是一個四條腿的機器人,或稱四足機器人。它可以行走和奔跑。它是最穩定的四足機器人之一,在被推搡和冰雪路面行走時都能保持直立。

你們將在自己製作的機器人中增加一些類似的功能。我們將使用距離感測器來避開障礙物,與Nao,一樣使用超聲波感測器,並討論像ASIMO一樣的激光測距感測器。我們將探索用於視覺處理的攝像頭、用於跟蹤地板標記的線性感測器,以及用於執行口語命令的語音處理。我們還將為Cog的頭部那樣的攝像頭製作平移和傾斜裝置。

1.2.1 火星漫游車

火星漫游車機器人是為
在另一個星球上工作而設計的,在那裡,如果機器人壞了,人類是沒有機會進行干預的。它們的設計非常堅固。更新的軟體只能通過遠程鏈接發送到火星車上,因為派人帶著屏幕和鍵盤上去是不現實的。火星車的設計是無頭的:

火星車依靠輪子而不是腿,因為穩定輪子上的機器人要比穩定腿上的機器人簡單得多,出錯的可能性也更小。火星車上的每個輪子都有自己的電機。這些輪子的佈置是為了提供最大的抓地力和穩定性,以應對火星的岩石地形和較低的重力。

火星車在火星上著陸時,其靈敏的相機是摺疊起來的。著陸後,通過伺服電機將相機展開並定位。相機通過一個搖攝和俯仰裝置進行定位。它需要拍攝儘可能多的火星景觀,並將鏡頭和圖片傳回美國宇航局進行分析。

與火星機器人一樣,你在本書中要製作的機器人也使用電機驅動的輪子。我們的機器人還可以在沒有鍵盤和滑鼠的情況下運行,是無頭設計。隨著機器人功能的擴展,我們還將使用伺服電機來驅動搖攝和俯仰機構。

1.3 發現家中的機器人

許多機器人已經滲入我們的家庭。它們之所以被當作機器人而被忽視,是因為乍一看,它們顯得普通而平凡。然而它們比錶面看起來更複雜。

1.3.1 洗衣機

在一些家庭中,洗衣機每天都在不停地清洗、脫水和烘乾衣物。但這怎麼能算是機器人呢?

中央控制器與顯示屏相連,可控制選擇程式。從控制器輸出的線路是輸出端。進入控制器的連接線是來自感測器的數據。從輸出端到感測器的虛線顯示了現實世界中輸出動作引起感測器變化的閉環。這就是反饋,機器人技術中的一個基本概念。

洗衣機通過顯示屏和按鈕讓用戶選擇設置並查看狀態。按下啟動按鈕後,控制器會檢查門感測器,如果門是開著的,控制器會理智地拒絕啟動。一旦門關閉並按下啟動按鈕,控制器將輸出鎖門信號。之後,控制器會使用加熱器、閥門和泵將加熱過的水註入桶中,並通過感測器反饋來調節水位和溫度。

每個過程都可以用一組類似的語句來表示,這些語句同時向水桶註水並保持水桶加熱:

start water pump
turn on the water heater

while water is not filled and water is not hot enough:
  if water filled then
    stop water pump
  if the water is hot enough then
    turn off heater
  else
    turn on the water heater

註意這裡的 "else",以防水溫略微低於正確溫度。然後,洗衣機開始滾筒脫水程式--慢轉、快轉、感應速度以滿足標準。洗衣機會排空滾筒,脫乾衣物,鬆開門鎖,然後停止。

無論從哪個方面看,這台洗衣機都是機器人。洗衣機有感測器和輸出端來影響周圍環境。通過處理,洗衣機可以遵循程式,並利用感測器的反饋來達到和維持條件。洗衣機維修人員可能比我更像機器人專家。

1.3.2 其他家用機器人

燃氣中央供暖鍋爐有感測器、泵和閥門。鍋爐利用反饋機制來維持室內溫度、加熱水流、燃氣流量,並確保引火燈一直亮著。鍋爐是自動的,有許多類似機器人的功能,但它是固定的,不能隨時改裝成其他用途。智能風扇和印表機等其他家用電器也是如此。

智能風扇利用感測器檢測室內溫度、濕度和空氣質量,然後通過風扇轉速和加熱元件進行輸出。

家庭中的其他機器,例如微波爐,只有定時器操作,它們不做決定,而且過於簡單,不能被視為機器人。

最明顯的家用機器人可能是機器人吸塵器:

這種帶輪子的移動機器人就像我們要在這裡製作的一樣,但更漂亮。它們裝有感測器,可以探測牆壁、袋子的高度和障礙區,避免碰撞。它們最能代表我們正在研究的機器人類型。這種機器人是自主的、可移動的,並且可以重新編程,做出不同的行為。

在我們製造機器人的過程中,我們將探索如何利用其感測器檢測事物並做出反應,形成我們在洗衣機中看到的反饋迴路。

1.4 探索工業機器人

機器人常見的另一個領域是工業。第一批有用的機器人是在工廠中使用的,而且已經存在了很長時間。

1.4.1 機械臂

機械臂的種類繁多,從用於轉動雞蛋的小巧精緻的機器人,到移動貨運集裝箱的巨大怪獸,不一而足。機械臂通常使用步進電機和伺服電機。我們將在本書使用的搖攝和俯仰機構中介紹伺服電機。大多數工業機械臂(例如ABB焊接機器人)都遵循預定的移動模式,不具備任何決策功能。不過,要想獲得更加基於感測器的智能系統,請看Rethink Robotics公司的Baxter,它給人留下了深刻印象。巴克斯特是一個協作機器人,旨在與人類一起工作:

許多機械臂在旁邊工作不安全,可能會導致事故,因此需要在其周圍設置籠子或警告標誌。Baxter則不同,它能感知人類,併在周圍工作或暫停,以確保全全。在上一張圖片中,我們可以看到這些感測器位於頭部周圍。手臂感測器和軟關節也能讓Baxter特感知碰撞並做出反應。

Baxter有一套訓練和重覆機制,讓工人能夠適應任務。在訓練或回放動作時,它使用感測器檢測關節位置。我們的機器人將使用編碼器感測器來精確控制車輪運動。

1.4.2 倉庫機器人

另一種常見的工業機器人是在工廠車間或倉庫中移動物品的機器人:

上圖顯示了用於在倉庫中移動托盤的機器人起重機系統。它們接收指令,在貨架系統內移動貨物。

較小的物品移動機器人,如圖2中的Intellicart,採用線型感測器,通過跟蹤地板上的線,磁感應地板下的電線,或跟蹤像 ASIMO這樣的標記信標。我們的機器人將跟隨這樣的線。這些跟蹤線的小車經常使用輪子,因為輪子易於維護,而且可以形成穩定的平臺。

參考資料

1.5 競技、教育和業餘愛好機器人

最有趣的機器人是由業餘機器人製作者創造的。這是一個極具創新性的領域。

機器人技術在教育領域一直占有一席之地,學術界的建造者將其用作學習和實驗平臺。許多商業企業就是在這種環境下起步的。大學機器人通常是集體創作,可以使用高科技設備進行製造:

Kismet於90年代末在麻省理工學院誕生。一些業餘愛好者使用的機器人都是從它衍生出來的。它使用電機驅動模仿人類表情的面部動作,在當時具有開創性意義。使用伺服電機的低價業餘愛好者套件OhBot就是基於Kismet開發的。OhBot與樹莓派(Raspberry Pi)相連,利用語音識別和攝像頭處理技術做出令人信服的表情。

業餘機器人技術與開源軟體/硬體社區緊密相連,可利用GitHub(https://github.com)等網站共用設計和代碼,從而產生更多想法。業餘機器人可以利用互聯網上提供的套件製作,併進行修改和添加。這些套件的複雜程度範圍很廣,從簡單的三輪底座到無人機套件和六足機器人。它們有帶電子設備的,也有不帶電子設備的。第6章 "構建機器人基礎知識--輪子、動力和佈線 "將介紹對套件的調查。我使用六腳架套件製作了SpiderBot,以探索行走動作:

上圖為我根據套件製作的蜘蛛機器人。控制器為 esp8266 + Adafruit 16伺服控制器

Skittlebot是我在2018年Pi Wars上的參賽作品,使用玩具黑客技術將遙控挖掘機玩具改裝成機器人平臺。Pi Wars是一項針對基於樹莓派(Raspberry Pi)的機器人的自主機器人挑戰賽,既有手動挑戰,也有自主挑戰。參賽作品既有裝飾性外殼,也有機智的工程設計。Skittlebot使用三個距離感測器來避開牆壁,我們將在第8章"使用Python對距離感測器進行編程"中研究這種感測器。Skittlebot使用攝像頭來尋找有顏色的物體,我們將在第13章 "機器人視覺--使用Pi攝像頭和OpenCV"中介紹:

上圖Skittlebot - 我的PiWars 2018 機器人

一些業餘愛好者使用3D列印、激光切割、真空成型、木工、數控和其他技術來構建底盤和部件,從而從零開始打造機器人:

2009年,我為倫敦機器人小組The Aurorans從零開始製作了圖中的機器人。該機器人在2009年被稱為 EeeBot,因為它是由 Eee PC筆記本電腦驅動的。Aurorans是一個討論機器人技術的社區。後來,該機器人被賦予了一個樹莓派(Raspberry Pi),而機械臂套件(uArm)似乎與之相匹配,因此它被命名為ArmBot。

目前市場上有很多底盤套件,初學者不需要用這種方法測量和切割材料,就能製作出一個正常工作的機器人。製作這些機器人的目的是為了進行實驗,並激發其他機器人製作者和孩子們的編程熱情。在本書的結尾,我們將介紹一些建造和分享機器人的社區,以及使用建造技術從零開始製作機器人的起點。

電視連續劇《機器人大戰》是一項著名的機器人競技活動,其構造和工程技術令人印象深刻。不過,《機器人大戰》中的機器人沒有自主行為,而是像遙控汽車一樣由人工駕駛。洗衣機雖然不那麼令人興奮,但卻更加智能,因此更嚴格地說,它們可以被視為機器人。

1.6 小結

在本章中,我們瞭解了機器人一詞的含義,以及與機器人相關的事實和虛構。我們定義了什麼是真正的機器人。你還看到了一臺機器需要做什麼才能被視為機器人。

我們研究了家庭和工業中的機器人。我們還向你們展示了一些設計用於驚奇或前往其他星球的機器人。我們還瞭解了業餘愛好者和教育機器人,以及其中一些機器人是如何只是為了好玩而製造的。你們還看到了現實世界中一些可能不被認為是機器人的設備方框圖。你還會發現,我們的家裡可能已經有了幾個機器人。

我希望本章能讓你們思考,什麼才能被稱為機器人。洗衣機可以是全自動的,可以在某個時間按照程式開始工作,有些先進的洗衣機還可以通過檢測衣服出水的水質來衡量衣服的乾凈程度,從而節約用水。然而,被稱為機器人的機器可能只是一種遙控裝置,如遠程呈現機器人或機器人大戰機器人。毫無疑問,所有這些機器人都擁有複雜的工程技術,需要許多類似的技能才能製造出來。

有些機器人顯然是機器人,如本田ASIMO和Baxter,但有些機器人則很難劃清界限。如果廣義的決策機電機器的概念適用於這些情況,那麼遙控型機器人將被排除在外。如果採用移動機器的概念,那麼玩具遙控車就包括在內,而完全自主的靜止智能機器則不包括在內。一臺機器可以做得像機器人,具有擬人(類人)特征,但僅僅是機械,上下移動手臂--這算是機器人嗎?它並沒有運行程式或對環境做出反應。

釘釘或微信號: pythontesting 微信公眾號:pythontesting
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 源碼請到:自然語言處理練習: 學習自然語言處理時候寫的一些代碼 (gitee.com) 數據來源:norvig.com/big.txt 貝葉斯原理可看這裡:機器學習演算法學習筆記 - 過客匆匆,沉沉浮浮 - 博客園 (cnblogs.com) 一、數據預處理 將輸入的數據全部變為小寫方便後續處理 de ...
  • 隨著互聯網的發展項目中的業務功能越來越複雜,有一些基礎服務我們不可避免的會去調用一些第三方的介面或者公司內其他項目中提供的服務,但是遠程服務的健壯性和網路穩定性都是不可控因素。 在測試階段可能沒有什麼異常情況,但上線後可能會出現調用的介面因為內部錯誤或者網路波動而出錯或返回系統異常,因此我們必須考慮 ...
  • 在mybatis中,我們在insert操作之後,可以獲取到自增主鍵的值,這個需要我們用到 INSERT INTO lawyer_id_offset (kgid) VALUES (#{kgid}) ``` # java中調用它 > 註意,這裡有個坑,獲取自增主鍵,不是獲取mapper的返回值,而是從當 ...
  • 字元串轉數字的用途和場景很多,其中主要包括以下幾個方面: 1. 數據清洗:在進行數據處理時,經常會遇到一些數據類型不匹配的問題,比如某些列中的字元串類型被誤認為是數字類型,此時需要將這些字元串類型轉換為數字類型,才能進行後續的數值計算或統計分析。 2. 數據整理:有時候輸入的原始數據可能存在格式問題 ...
  • [toc] # 簡介 - 高性能、開源的通用 RPC 框架 - 實現不同語言相互調用 - [官網](https://grpc.io/) - [Protobuf 消息參考](https://learn.microsoft.com/zh-cn/aspnet/core/grpc/protobuf?view ...
  • ## 前言: 上一篇分分享了[基於阿裡雲實現的簡訊驗證碼](https://www.cnblogs.com/wml-it/p/17613232.html)文章,考慮到為了防止登錄時,非人工操作,頻繁獲取驗證碼,趁熱打鐵,現在添加了圖片驗證碼服務功能。借鑒網上傳統的做法,把實現這兩個驗證的功能做成有個 ...
  • 公司有一個控制台應用程式,在關閉控制台應用程式視窗前,想處理一下業務邏輯。還有比如誤操作關閉了,或者像消息隊列啟動了發送消息提醒,那關閉了視窗代表控制台應用銷毀了,也需要發送消息通知。那這個時候添加關閉視窗事件就派上用場了。 ...
  • 通過深入理解和掌握NET Core MVC2.x從中學習到實用的技術和解決方案,提升自己在NET Core MVC2.x開發中的技能 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...