--- title: 機器人導論 tags: description: View the slide with "Slide Mode". --- {%hackmd @HungPin/Dark %} <!-- [toc] --> <!-- # <font color="#FFC300">機器人導論</font> --> <!-- Put the link to this slide here so people can follow --> <!-- slide: https://hackmd.io/p/template-Talk-slide --> <!-- --- --> <!-- We have a collaborative session please prepare laptop or smartphone to join! --> ## <font color="#FFC300">機器人的定義</font> ### <font color="#FFC300">什麼是機器人?</font> 基本上沒有絕對的說法,但是就功能性而言可以想像成 -> 感知 + 思考 + 行動 = 機器人 :robot_face: 透過環境的感測,進行一些分析或判斷,再做出決定的機器就是一個機器人。 就像是掃地機器人、火星探測機器人、仿生機器人等等。 ### <font color="#FFC300">機器人的分類</font> 機器人可以從移動的方式分類,例如分成水上、陸上、空中機器人,再細分成機械式、仿生式機器人等;也可以直接從產業分類,例如農業機器人、醫療機器人。 <!-- ::: info DIT 主要以輪型移動式機器人為主,但也有做人型機器人、空拍機等等的類型。 ::: --> ### <font color="#FFC300">為什麼要製造機器人?</font> 基本上就是要解決一些問題,像是取代人力(無人搬運車)、幫助人類(機器手臂) 等等,是==以某個目的或要求來製作這些機器人的。== :star: --- ## <font color="#FFC300">機器人的製造流程</font> 看完機器人的簡介,那麼現在我們來看看如何從頭開始製作出一台機器人。 首先,我們要列出機器人的功能要求,以及機器人的限制。例如機器人需要把撞球搬運至集貨區、機器人的長寬高限制等等。 接著根據上述列出的條件,分成==機構、電路及控制==做考量。 ### <font color="#FFC300">機構</font> 1.確認所需的功能與大小限制。 2.參考現有的解法,分析其優劣與可用性。 3.發想機構雛形,並利用軟體繪製出構圖。這個步驟相當重要,需要考慮相當多因素,像是組裝的先後順序、鎖螺絲的難易度、機構受力大小與方向等等。 4.列出所需材料並用 Excel 等等軟體建立物料清單。 5.訂購材料與組裝。 ### <font color="#FFC300">電路</font> 1.依照所需的功能選擇對應的 ==致動器Actuators ( Ex : 步進馬達 ) 、 控制器 Controller ( Ex : Arduino ) 、 感測器 Sensor ( Ex : 雷射測距儀 )==。 2. 閱讀 DataSheet 與相關資料,瞭解其腳位、使用方式、原理、使用電壓、所需電流、通訊方式等等資訊。 3. 畫出電路圖,確認其走線無誤後製作電路板。 ### <font color="#FFC300">控制</font> 1. 根據設計出來的機構,寫出能達到任務要求的程式,並完成各自的除錯。像是分別撰寫底盤、手臂的控制程式,並==分別測試==,確定可以獨立運行沒有 Bugs。 2. 整合前面寫出來的程式,完成整機的控制。 <!-- {%youtube E8Nj7RwXf0s %} --> <!-- --- ### --- ```graphviz digraph { compound=true rankdir=RL graph [ fontname="Source Sans Pro", fontsize=20 ]; node [ fontname="Source Sans Pro", fontsize=18]; edge [ fontname="Source Sans Pro", fontsize=12 ]; subgraph core { c [label="Hackmd-it \ncore"] [shape=box] } c -> sync [ltail=session lhead=session] subgraph cluster1 { concentrate=true a [label="Text source\nGithub, Gitlab, ..."] [shape=box] b [label="HackMD Editor"] [shape=box] sync [label="sync" shape=plaintext ] b -> sync [dir="both"] sync -> a [dir="both"] label="An edit session" } } ``` --- ### Architecture of extension ---  --- ## Content script - Bind with each page - Manipulate DOM - Add event listeners - Isolated JavaScript environment - It doesn't break things --- # :fork_and_knife: --- <style> code.blue { color: #337AB7 !important; } code.orange { color: #F7A004 !important; } </style> - <code class="orange">onMessage('event')</code>: Register event listener - <code class="blue">sendMessage('event')</code>: Trigger event --- # :bulb: --- - Dead simple API - Only cares about application logic --- ```typescript import * as Channeru from 'channeru' // setup channel in different page environment, once const channel = Channeru.create() ``` --- ```typescript // in background script const fakeLogin = async () => true channel.answer('isLogin', async () => { return await fakeLogin() }) ``` <br> ```typescript // in inject script const isLogin = await channel.callBackground('isLogin') console.log(isLogin) //-> true ``` --- # :100: :muscle: :tada: --- ### Wrap up - Cross envornment commnication - A small library to solve messaging pain - TypeScript Rocks :tada: --- ### Thank you! :sheep: You can find me on - GitHub - Twitter - or email me -->
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up