Saturday, April 27, 2019

協同產品設計實習流程

Clone Github 倉儲

以 scrum-1 帳號為例, 若採 ssh clone 倉儲, 需要先設定對應權限.

基本概念

https://github.com/scrum-1/cd2019 倉儲中對應的 clone or downloads 中 Clone with SSH, 所列出的 URL 為:

    git@github.com:scrum-1/cd2019.git

表示將以 git 帳號, 登入 github.com 主機, 進入 scrum-1 帳號中對應的 cd2019 倉儲, 若直接 git clone 此一倉儲, 則指令為:

    git clone git@github.com:scrum-1/cd2019.git

特別注意, 其中的 github.com 為網站符號名稱, 意思是所採用的 ssh 將利用 @ 前方的 git 當作帳號, 並且將採用 ssh 協定登入 github.com 網站.

假如, 使用者所採用的可攜程式套件, 只在 home 目錄下的 .ssh 目錄登記一個 private key, 使用者就可以直接在 home/.ssh/config 中,將 github.com 當作 Host 代號, 並對應到 Hostname 為 github.com 作為連線的網站名稱.

但是, 若使用者所使用的可攜程式套件, 登錄一個以上的 private keys 時, 就必須透過一個以上不同的 Host 名稱加以區別, 以便導引 ssh 協定至不同區段, 以不同的 private key 對應 Github 上不同帳號下所登錄的 public key.

實際 .ssh/config 設定

# no proxy at home
#ProxyCommand y:/PortableGit/mingw64/bin/connect.exe -H mdeuser@140.130.17.7:3128 %h %p

# for user1
# url = git@github.com_user1:user1/cmstest.git
Host github.com_user1
    User git
    Port 22
    Hostname github.com

    IdentityFile "y:\home\.ssh\id_rsa_user1"

    TCPKeepAlive yes
    IdentitiesOnly yes
   
# for user1
# url = git@github.com_user2:user2/cd2019.git
Host github.com_user2
    User git
    Port 22
    Hostname github.com

    IdentityFile "y:\home\.ssh\id_rsa_user2"

    TCPKeepAlive yes
    IdentitiesOnly yes
   
# for scrum-1
# url = git@github.com_scrum-1:scrum-1/cd2019.git
Host github.com_scrum-1
    User git
    Port 22
    Hostname github.com

    IdentityFile "y:\home\.ssh\id_rsa_scrum-1"

    TCPKeepAlive yes
    IdentitiesOnly yes

 根據上述設定, scrum-1 若要以 ssh 協定在近端 git clone Github 上的 https://github.com/scrum-1/cd2019 內容, 除了必須在 Github 上與 scrum-1 帳號對應的 SSH and GPG keys 中納入 public key 外, 就必須採用:

    git clone git@github.com_scrum-1:scrum-1/cd2019.git

才能將遠端的倉儲內容 git clone 到近端, 之後也才能透過 y:\home\.ssh\id_rsa_scrum-1 這個 private key 進行認證後, 將近端的提交版本推送到遠端.

取得 CMSimfly 倉儲內容

    git clone https://github.com/chiamingyen/cmsimfly.git

由於 https://github.com/scrum-1/cd2019 倉儲一開始只有一個 README.md 檔案, 接下來將最新的 CMSimfly 倉儲內容納入 scrum-1/cd2019 倉儲中.

有關 CMSimfly 倉儲

由於 CMSimfly 是一個以網際可程式化機械設計合成系統教學為目標的網際內容管理系統, 因此除了電子書類的動態與靜態網頁系統外, 還包括網際簡報與靜態網誌系統, 而且各系統的開發流程均採用 Leo Editor 大綱管理系統進行, 將這些原先各自獨立的網際系統混雜在一個倉儲中, 雖然容易讓初學者望之卻步, 但是若能夠花一些時間了解這些系統間彼此的關聯性, 其終極目標不外乎在試圖打造一套「網際可程式化機械設計合成系統」,  CMSimfly 倉儲中包含:

1. 動態的 Python Flask 網際內容管理系統 (即動態 CMSimfly), 主要讓使用者可以編寫伺服器段的 Python3 程式, 透過瀏覽器 frontend 上的表單介面與存放在伺服器上的 CAD, CAE, 自動控制或最佳化分析程式庫進行互動, 最後再以 email 通知使用者設計分析結果, 並將 2D, 3D 與動態模擬的結果, 以 HTML5 與 Javascripts 格式傳回瀏覽器端.

2. 靜態的 CMSimfly, 主要從上述動態的 Python Flask 系統, 將各頁面轉為純 html 資料, 其目的就是要使用只提供 WWW 功能的 Github Pages, Fossil SCM doc Page, Nginx 等系統伺服這些靜態網頁.

3. 靜態的 Reveal.js 網際簡報系統, 機械設計流程牽涉一系列的表達, 因此在 CMSimfly 中採用 config 目錄中的 reveal.leo 來管理網際簡報系統的內容. 使用者透過 config/reveal.leo 所產生的網際簡報系統位於 CMSimfly 倉儲中的 reveal 目錄中, 且簡報內容所使用的靜態圖檔, 例如: .png, .jpg, .git 或 .svg, 可以取自靜態的 CMSimfly 系統中的 images 目錄, stl 格式的 3D 零組件檔案則可從 CMSimfly 的 downloads 目錄中引用, 例如, 從 http://mde.tw/cd2019/content/FreeCAD%20STL.html 頁面中引用 FreeCAD 所建立的簡單零件:



 並且, Leo Editor 僅透過大綱層次管理 Reveal.js 網際簡報檔案中的各 block 頁面, 從協同產品設計實習課程的角度而言, 未來也能透過 Python 程式, 根據靜態 CMSimfly 或 Pelican 網誌, 從各倉儲版次內容中, 「自動」整理出設計階段所需的網際簡報內容.

4. 靜態的 Pelican 網誌系統, 動態或動態 CMSimfly, 目的在編寫章節清楚的電子書, Reveal.js 則旨在建立網際簡報, 而 Pelican 則可配合協同設計專案執行日期, 以日誌模式編寫協同設計紀事, 且可以在每篇網誌文章中加入 Disqus 網際留言互動系統, 以便針對協同產品設計流程中所記錄的事項進行各種互動與討論. 至於 Pelican 網誌系統中必須引用的各式 2D, 3D, 動畫或數學方程式, 與 Reveal.js 網際剪報系統相同, 可以引用自靜態 CMSimfly 中已經上傳至遠端 Github Pages 上的對應版本內容.

5. Github 倉儲中的 Issues 系統, 可用來追蹤與倉儲內容相關的各種議題, 也可以將協同產品設計專案中所牽涉的各項任務, 利用 Issues 指派給各協同人員, 並藉以回報任務處理進度或面臨問題時將採取的處理方案討論等.

6. Github 倉儲中的 Wiki 系統, 由於上述 CMSimfly, 靜態與動態系統, 或 Reveal.js, 或 Pelican 網誌, 甚至 Issues 都與協同設計流程有關, 當個別使用者針對這些內容改版時, 必須設法與先前的內容版本合併, 或必須循序針對執行任務的結果進行追蹤或討論, 而 Wiki 系統則可以在這些系統之外, 提供一個各協同人員可以隨時任意編輯的網際「快記」系統, 無論是針對尚未納入 CMSimfly 電子書之前的瑣碎資料收集, 或者在執行特定任務時, 必須提醒或引導其他組員的各種內容, 都可以直接先放在與 Github 倉儲對應的 Wiki 系統中.

手足球模擬系統專案

當參與協同產品設計實習的各組員, 在充分了解上述 Github 倉儲與 CMSimfly 所提供的各式網際內容管理系統後, 真正的協同設計任務才正要開始展開.

2019 年 Spring  的協同產品設計實習課程, 以虛擬手足球系統的搭建, 讓學員有機會利用上述網際內容管理系統, 從 OnshapeSolvespace 的手足球零組件設計, 到 V-rep 的機電資系統模擬, 課程專案的執行共牽涉以下任務 (各階段負責執行任務組員除了將各項執行細節內容納入倉儲網際管理外, 必須各自拍攝操作過程影片, 納入各自的 Youtube 帳號中):

1. 手足球系統的零組件尺寸分析 (可行性分析)

2. 手足球系統的零組件參數設計與繪圖 (零組件初步設計繪圖)

3. 手足球系統中各球員擊球與操控桿移動旋轉的 V-rep 動態模擬 (系統功能模擬)

4. 手足球發球與進球後自動送球機構設計與 V-rep 動態模擬 (機構與傳動系統設計與模擬)

5. 手足球模擬系統功能展示 (模擬展示與說明影片)

6. 完成手足球零組件細部設計 (可參考 https://youtu.be/PgnvZV5s13c 中各項設計), 並將設計 BOM (Bill of Materials) 納入 CMSimfly 網際內容管理系統. (系統 BOM 文件整理)

7. 各組利用倉儲中的 Reveal.js 進行結案簡報 (結案口頭簡報)

8. 各組完成 html 與 pdf 格式之手足球專案結案報告 (文字結案報告書)

協同產品設計實習課程規劃與執行討論

為何使用 Onshape

當許多在高工時代便已經熟悉 SolidWorks, Inventor, NX 或 Creo 的學員, 一接觸到以自行建構「網際可程式化機械設計合成系統」為目標的系列課程, 例如: 電腦輔助設計實習與協同產品設計實習課程時, 第一個疑問就是: 為什麼要使用 Onshape 執行零組件的參數設計繪圖, 而不採用上述這些傳統廣為業界採用的電腦輔助設計繪圖套件 (MCAD, Mechanical Computer Aided Design), 理由其實很簡單:

因為這些以單機 Windows 版本為主的 MCAD, 沒有免費提供給非營利的教育單位使用, 並且若要利用這些單機套件執行網際雲端協同產品設計專案, 通常還必須搭配高單價且綁定在 Windows Server、 MS SQL 與產品資料管理 (Product Data Management) 系統架構群中.

換言之, 之所以採用 Onshape 執行協同產品設計專案, 完全是時間與所花費心力成本的考量. 況且從網際可程式化的機械設計的角度而言, 吾人需要的重點技術是透過開源套件, 例如: SolvespaceFreeCADBlenderV-repWebotsRange3 等, 透過 Ubuntu 伺服器端的 Python3 加上 Cython, 讓參與協同的學員, 能夠自行快速打造各式 Python3 設計分析程式, 並透過 Cython 轉換, 以 C/C++ 的速度執行網際協同設計分析.

為何需要 Github

由於上述採用開源軟體執行專案的同時, 以程式化操控各式套件產生零組件的過程, 這些明碼的設計流程資料, 便有利用分散式版次管理系統的價值.

例如: 在 https://github.com/KmolYuan/Pyslvs-UI 的多連桿機構設計流程中, 尺寸合成後已經可以直接透過程式取得各連桿的 Solvespace 格式檔案, 但目前仍需仰賴手動進行後續避開機構干涉的組立流程, 之後若能透過伺服器端的 Python3 程式操控 FreeCAD 0.18 之後的版本 (才能支援 Python3), 整個手足球模擬系統的得分後送球機構零組件, 便可透過多連桿機構套件與 FreeCAD 的結合, 自動在尺寸合成後, 完成多連桿的組立流程, 甚至自動轉為 VRML97 格式, 轉入 Webots 進行後續的模擬分析.

而這些與機械、電子電機與資訊科技密切整合的設計過程, 所牽涉的各項參數與流程訂定, 在不同時間點會有不同的版本細節內容, 若能使用雲端分散式版次管理, 除了較無需擔心重要資料遺失之外, 也能讓每一位參與協同的成員, 對專案任務的付出內容, 完全攤在陽光下, 不僅能有效提供任課教師針對執行歷程評分外, 各學員也能養成長期參與全球協同開源專案的認知與能力.

假如沒有網路與 Github

多年來, 網路上許多原先免費提供使用的服務, 終究有中止或改變營運策略的可能, 那麼一旦 Onshape 不再免費提供非營利教育單位使用, 諸如 Github 的各種服務, 也可能不再免費或無法使用, 該如何持續進行所謂的「網際可程式化機械設計合成系統」開發或相關課程推動?

未來能夠取代 Onshape 的工具, 將會是 FreeCAD, 由於 FreeCAD 的原始碼位於 https://github.com/FreeCAD, 吾人必須有能力自行編譯各操作系統中使用的 FreeCAD 套件.

此外, 在區域網路搭建 Fossil SCM 伺服主機, 已經可以完全取代 Github 目前所提供的主要功能. 並且透過 Virtualbox 虛擬主機, 可以大幅提升網際可程式化機械設計合成系統開發的效能.


Monday, April 22, 2019

讀書的方法

為何還需要談讀書的方法?

因為許多年經學子, 儘管已經上學十二多多年了, 可能還沒能了解, 何謂讀書的方法!

讀書是求取學問有效的方法之一, 問題在於:

假如某一門課, 並沒有指定特定的一本教科書, 只提供一堆網頁, 一堆程式套件, 該如何「讀書」?

其實, 仔細想想, 讀書是一種學習態度, 無論是哪一門課, 由哪位老師任教, 採用何種教材, 準備傳授何種知識與技能, 只要態度正確, 就應該算是掌握了正確的讀書方法.

何謂正確的讀書態度?

正確讀書態度的第一要務是積極, 積極的學習指的是一位學生:
  1. 會在課堂時間認真面對各時段所討論的主題
  2. 會認真設法了解電腦操作過程中的每一項細節
  3. 會思考揣摩任課教師所要傳達的理念
  4. 會想盡方法鼓舞同組學員認真參與學習
  5. 會認真仔細的幫助同組學員解決各項問題
  6. 會勤作筆記, 針對課程內容, 整理出屬於自己的一套學習心得
  7. 會隨時做好準備, 針對課程主題, 發表自己的看法
以網際內容管理課程為例

在機械設計工程系開設「網際內容管理」選修課程, 有其歷史背景.

當年, 虎尾科技大學在創設「資訊管理系」的時候, 正好是教育部推動「製造與商務科技教育整合」的時段, 當年機械設計工程系、自動化工程系、工業管理系與資訊管理系共同推動一個所謂「製商整合」學程, 其中的理念可說是目前正夯的「工業 4.0」概念初步萌芽的階段. 許多專家都一致認為, 機械設計與製造必須積極運用網路與資訊, 讓不同領域的工程師能夠透過網路與內容管理系統進行協同設計與製造.

於是, 「網際內容管理」選修課程就開在當年擁有全校唯一獨立連外網路專線, 且電腦伺服器眾多的機械設計工程系.

「網際內容管理」課程的目標, 就是讓機械設計工程師有能力透過網際上的內容管理系統, 從配置實體或虛擬的伺服器開始, 逐步將機械設計流程中所涉的各項內容, 包括口語、文字、 2D、3D、數學與實體內容, 放上網路, 目的在設法提升機械產品設計、自動化管理與製造流程的效益..

儘管之後不如預期達成四系製商整合學程的終極目標, 但是開設於機械設計工程系的「網際內容管理」課程的目的, 仍一本初衷, 希望透過與「計算機程式」、「電腦輔助設計實習」與「協同產品設計實習」等系列課程的訓練, 達到讓每一位學員都能運用網路與系統, 搭建一套「網際可程式化機械設計合成系統」的目的.
  1. 計算機程式 - 可程式化設計 - programming
  2. 網際內容管理 - 網際可程式化設計 - web-based programming
  3. 電腦輔助設計實習 - 網際可程式化機械設計 - web-based programmable mechanical design
  4. 協同產品設計實習 - 網際可程式化機械設計合成 - web-based programmable mechanical design synthesis
programming - python, c, lua, javascript, git, github, 網際工程計算機與運算儲存資料庫
web-based programming - flask, bs4, lxml, 網際內容管理與資料庫整合
web-based programmable mechanical design - onshape, solvespace, freecad, blender
從正齒輪齒面寬網際設計 - freecad 產生齒輪 3D 零件到網際齒輪箱設計
web-based programmable mechanical design synthesis - range3, fossil scm
AI 與影像辨識系統置入手足球系統或彈珠台

因此, 「網際內容管理」課程的主題, 就包含重點主題 - 延伸主題:
  1. 操作系統的網路設定 - Windows 10 與 Ubuntu 18.04-2
  2. 瀏覽器的代理主機設定 - 代理主機如何設置
  3. 可攜系統的網路應用 - Python、C 與 Lua 程式執行與分散式版次管理環境
  4. 網際內容管理系統的使用 - Python based 與 Blogger 整合
  5. 網際內容管理系統的創建 - 網路動態前後端系統與 Python/Javascript 整合
  6. 網際內容管理系統的配置 - 雲端與 Ubuntu 虛實伺服器整合
而各項主題的任務執行過程, 就會出現許多操作細節, 並且課程中所要傳達的重要理念就是:

機械設計工程師能否了解網路與內容管理系統, 進而透過網際內容管理系統的配置, 提升協同機械設計流程的效益.

以協同產品設計實習課程為例

一旦完成上述「網際內容管理」課程所要傳授的技術與知識, 隨後的「電腦輔助設計實習」與 「協同產品設計實習」課程其實都架構在同一個主線上, 也就是持續探討:

機械設計工程師能否運用網路系統, 以協同模式有效且持續改進的流程進行產品開發? 因為從 https://appstore.onshape.com 中各項原先被限制在只能單機或區網運作的許多機械設計分析與延伸規劃, 已經逐步被搬上雲端.

「電腦輔助設計實習」之所以主要採用 Onshape 進行零組件的設計與繪製, 就是植基於網際協同的大目標, 而透過 Github 整合所有課程內容, 則更是在有效協同與持續改進的方向上, 讓學員有機會利用網際系統長時間累積自己的學習歷程, 證明自己的學習成效.

「協同產品設計實習」課程的主題, 其實與「電腦輔助設計實習」的課程主題相同, 只是後者為前者的基礎, 當使用者能夠使用雲端 Onshape 進行實習項目的零組件設計繪圖之後, 必須設法透過參數化與程式化的設計結合, 在分散式版次管理的流程下, 進行機械設計,  以下就是這兩門課程的重點主題 - 延伸主題:
  1. 能否充分掌握 Onshape 設計繪圖的功能 - 利用 FeatureScript 進行零組件設計
  2. 能否將電腦輔助繪圖中的參數與設計目標結合 - 將繪圖系統配置於遠端, 透過網際表單操控零組件
  3. 能否透過設計分析進行機構設計 - 利用網際平台執行平面機構的結構與尺寸合成
  4. 能否透過設計分析進行傳動設計 - 利用網際平台執行傳動設計
  5. 能否透過設計分析進行機電設計 - 利用網際平台執行機電設計
  6. 能否利用單機套件進行機電資產品功能模擬 - 利用網際平台執行機電資產品功能模擬
  7. 能否針對上述機電資整合產品建立完成的製程規劃 - 能夠利用網際平台完成產品原型製作
結語

以「網際可程式化機械設計合成系統」 (web based programmable mechanical design synthesis system) 的開發, 作為培養下一代機械設計工程師的終極目標, 已經可以從 https://github.com/KmolYuan/Pyslvs-UI 專案開發歷程中看到方向, 過去幾乎必須仰賴封閉高價商用軟體套件教學的時代, 從 2013 年 V-rep 開源且教育版可自由使用, 到 2018 年的 WebotsRange3 開源及商業可自由使用, 加上 FreeCAD 0.18 版起開始支援 Python3, 以及 2002 年就已經開源可自由使用的 Blender, 對於能夠充分掌握讀書方法的機械設計工程師, 再也沒有比現在更好充分利用網際與開源套件, 打造真正屬於自己能掌握的高效機電資整合產品平台更好的時機了!

參考資料

Blender

https://www.blender.org



FreeCAD

https://forum.arduino.cc/index.php?topic=486053.0

https://github.com/FreeCAD/FreeCAD/releases/tag/0.18

FreeCAD 0.18.7z


Sunday, April 21, 2019

Virtualbox 虛擬主機的網路設定

Virtualbox 兩層次設定

Virtualbox File 下拉式功能表下的 Preferences 屬於全系統的偏好設定, 而與各虛擬主機對應的 Settings 則僅與該對應的虛擬主機有關.

Virtualbox 虛擬主機網路設定

參考:

https://www.virtualbox.org/manual/ch06.html

https://technology.amis.nl/2018/07/27/virtualbox-networking-explained/

Not Attached

當使用者需要模擬虛擬主機的網路卡連接線被拔除的情況時, 可將該虛擬主機的網路卡以 Not Attached 模式設定.

NAT

當使用者只需要讓虛擬主機能夠上網, 下載檔案或登入電子郵箱時, 可以將虛擬主機的網路卡以 NAT 模式設定. 在 NAT 模式下, 只有 ping 能夠運作, tracert 與其他與 ICMP 、VPN 或 PPTP 等協定對應的功能都將會失效.

NAT  Network

NAT Network 與 NAT 類似, 但使用者可以透過 File-Preferences-Network 新增多個 NAT Network, 並選擇所要使用的網段與 DHCP 或是否支援 IPv6 等設定.

Bridged Adapter

當使用者需要利用虛擬主機建立與 Host 位階相同的網路模式時, 可以將虛擬主機的網卡設訂為 Bridged Adapter.

Internal Network

當使用者需要讓虛擬主機設定為 https://en.wikipedia.org/wiki/Software-defined_networking 時, 可以將網路卡設為可透過軟體調控的網路模式.

Host-only Adapter

當使用者只需要讓虛擬主機與 Host 電腦連線時, 可以將網卡設為 Host-only Adapter, 此一模式的使用時機可以在虛擬主機中配置 WWW 伺服器、應用程式伺服器、Fossil SCM 伺服器, 然後透過 Host 上的瀏覽器進行連線測試, 或者在虛擬主機上安裝特定軟體套件的認證主機, 以便讓 Host 中的軟體套件透過虛擬主機執行授權認證.

參考 vdi:

位於雲端的 Ubuntu 18.04_201904.vdi (約 9 GB) - 已經配置 Fossil SCM: https 5443, Host-only: 192.168.56.2, https: 443 and 8843 for CMSimfly, Squid Proxy Server.

假如要利用 USB 隨身碟存放上述約 9 GB 的 Ubuntu 18.04 vdi 檔案, 必須將隨身碟格式化為 NTFS, 若採 Fat32 格式, 最大單一檔案必須小於 4 GB.

另外在近端有一類似的檔案, 可提供上課學員下載:

http://wcmg1.kmol.info:88/ub1804_nox.vdi (僅限近端用戶使用 IPv6 協定者下載)

參考網際應用程式:

https://github.com/mdecourse/wcms-scrum1

http://mde.tw/2017springcd/blog/brython-spur-gears.html

https://github.com/mdecourse/cd2018/issues/33

https://github.com/looooo/freecad.gears

https://forum.freecadweb.org/viewtopic.php?t=27566

https://www.freecadweb.org/wiki/Scripting_examples

https://github.com/mdecourse/WebCADViewer

https://github.com/JMG1/ExplodedAssembly

https://github.com/shaise/FreeCAD_SheetMetal

https://github.com/jmplonka/InventorLoader

https://github.com/jptned/3DGuitar

https://framagit.org/FrViPofm/Bike3D

Ubuntu 18.04 虛擬主機網路連線設定

設定檔案 /etc/netplan/50-cloud-init.yaml

修改後, 以

    sudo netplan apply

讓設定生效.

Ubuntu 18.04 Service 管理

https://github.com/mdecourse/cadp2018/issues/16#issuecomment-485048985

CMSimfly 透過 uwsgi 在 Ubuntu 18.04 以 service 啟動

https://github.com/mdecourse/cadp2018/issues/16#issuecomment-485080368

Ubuntu 18.04 apt proxy 設定

安裝 Ubuntu 18.04-2 過程中所輸入的 proxy server, 將存入 /etc/apt/apt.conf.d/90curtin-aptproxy 檔案中, 這與之前使用 /etc/apt/apt.conf 的設定不同.

Virtualbox 虛擬主機與實體操作系統間的雙向轉換

https://github.com/mdecourse/cadp2018/issues/16#issuecomment-485101887

Table Foosball 動態系統模擬專案

Table Foosball 動態系統模擬專案

2019 Spring 協同產品設計實習分組專案, 希望利用 Solvespace, Onshape 與 V-rep 建立一個類似



的手足球動態模擬系統, 能讓多使用者利用鍵盤或實體操控桿對打, 使用者與電腦對打, 或透過影像辨識讓電腦程式與程式對打的虛實機電資整合系統.

Table Foosball 相關專利

多年來與 Table Foosball 相關的主要專利如下:

Game Apparatus (1939)

Simulated Hockey Game (1950)

Table soccer or football game structure (1973)

Table soccer or football game structure (1975)

Rod Bearing for Table Soccer  or Fussball Game Structure (1983)

Sectional Rod Bearing for Fussball Game Structure (1991)

Table Soccer or Fussball Game Playing Ball (1991)

Table Soccer Game Bumper Structure (1991)

Table Soccer Playing Figure (1994)

Soccer Table (1994)

Convertible Game Table (1997)

Bracing Structure of Rotary Rod (2000)

Structure of a Soccer Game Table (2001)

Player Structure in a Fooz Ball Game (2002)

Retractable Rotating Rod for Football Table (2002)

Double Sided Soccer Man (2010)

Support Device for Slidable Shafts of Table Soccer Games (2012)

Table FoosBall 尺寸

球桌尺寸可參考:

https://www.gameamigos.net/foosball-table-dimensions/

https://bargames101.com/foosballtabledimensions/

https://en.wikipedia.org/wiki/Table_football#Tables

https://grabcad.com/library/foosball-pool-table-1

https://www.tlnt.com/no-one-accepts-your-offer-because-of-your-foosball-table/

https://www.instructables.com/id/Arduino-Servo-Foosball/

https://www.instructables.com/id/Autonomous-Foosball-Table/

https://create.arduino.cc/projecthub/OSZT/automatic-arduino-goal-counter-for-table-football-soccer-4c4807

感測器與多連桿機構結合, 將得分球送回球場





網際參數可程式化機械設計系統

由於 FreeCAD 自 0.18 版起, 將支援 Python3 執行 API 應用 (https://forum.freecadweb.org/viewtopic.php?f=4&t=35546), 因此未來若能結合 FreeCADWebots, 將有機會建立網際參數可程式化的 Table Foosball 系統 (類似 https://robotbenchmark.net/), 可進一步納入機械設計導向用之影像辨識或 AI 相關系統的開發.

DIY Foosball Table



Friday, April 12, 2019

2019 Spring 期中考週

學員期中報告影片錄製

上課鐘聲響後 20 分鐘內, 各學員必須啟動 ShareX, 在電腦教室錄製無語音, 至多五分鐘的期中報告自評影片, 拍攝過程中, 可利用 PowerPoint 或其他文字編輯器, 引導影片觀看者了解影片中所要呈現的網站、倉儲或特定的歷程內容.

影片內容必須清楚呈現各學員從開學至第八週期間, 與課程內容相關的各項任務執行所完成內容.

影片標題與說明

影片錄製完成後, 請上傳至個人的 Youtube 網站, 並且在影片標題註記「國立虎尾科技大學機械設計工程系 (or 精密機械工程科) 期中報告」並加上課程名稱以及學員學號. 影片說明欄位必須標示與影片內容有關的個人倉儲、網站以及其他相關網際連結.

學員填寫自評表單

上課鐘聲響後 25 - 30 分鐘內, 各學員將在即時網際試算表上填寫期中自評成績.

個人期中報告影片嵌入網頁

第一堂上課結束前, 各學員必須以期中報告作為 H1 頁面標題, 將上述個人期中報告影片, 依照學號順序, 嵌入分組網站(or 個人網站) 頁面中, 若該課程已經透過 Github Classroom 分組, 各學員必須以個人身分註記, 在分組倉儲中進行新增提交推送, 隨後進行改版學員, 則必須設法 git pull 並處理內容衝突或合併後改版.

學員口頭期中報告

自第二堂課起, 各學員依據上述所完成的各項任務內容,  按照學號順序, 進行 2-3 分鐘的口頭報告.


Wednesday, April 10, 2019

GitExtensions

最近使用 ungit 的經驗並不是太好, 即使在硬碟中執行的速度依然不快, 所產生的結果也難令人滿意, 於是想要試試 GitExtensions

https://github.com/gitextensions/gitextensions

官方除了安裝版, 也提供可攜版本 https://github.com/gitextensions/gitextensions/releases, 只是初步啟動時讀取使用者設定的過程, 接連當了幾次, 使用者也可以下載 KMOL 製作的 GitExtensions.7z, 打算先使用一陣子看看.

與 ungit 相同, 當使用 ssh 與 Github 倉儲連線時, 必須使用 OpenSSH, 而非 putty.

GitExtensions 的設定位於 Tools - Settings, 與 KMOL 可攜系統配合的 HOME 設定, 位於 Git - Paths 下, 目前若以不同 HOME 啟動 start.bat, 使用 GitExtensions 前必須先確定 HOME 與 start.bat 中所使用的 HOME 設定一致, 否則 git push 時 OpenSSH 將無法正確讀取與 Github 帳號 public key 對應 HOME 目錄下 .ssh 中的 private key.

Tuesday, April 9, 2019

電腦初學者的網際內容管理

第一步

網路連線設定

了解機械設計系電腦輔助設計室電腦的網路設定, 其中包括 IPv4 網路與 IPv6 網路設定.

正常情況下, 電腦輔助設計室中的 64 台電腦透過 IPv4 協定下的 DHCP 與 NAT 上網, 各電腦以 DHCP client 取得 192.168.1.* 的網路位址, 然後以 NAT 的一組外部 IP 上網, 通常必須設定 Proxy Server 為 http://proxy.kmol.info:3128 後上網會比較順暢, 但若 8 台 Proxy Servers 無法正常運作時, 則取消 Proxy Server 的設定.

瀏覽器代理主機設定

了解如何設定 Google Chrome 與 Firefox 瀏覽器的代理主機設定.

申請 Github 帳號

利用 Gmail 帳號申請 Github 帳號, 申請後利用電子郵箱收信進行確認後, 就可以在 Github 上建立倉儲.

第二步

配置可攜程式環境

取得 Windows 10 64 位元環境下的可攜程式環境 (下載  2019_cdb_w5.7z), 下載後解開目錄, 放入 USB3.0 規格以上的隨身碟或隨身硬碟.

以滑鼠點擊 start.bat 開啟可攜隨身系統, 以 stop.bat 關閉可攜隨身系統, 隨身碟必須在關閉所有應用程式執行下, 才可正常退出.

了解基本的 DOS (Disk Operating System) 指令

C:\> 符號為 DOS 命令列視窗的回應 (Prompt), 表示目前在 C 槽硬碟的 \ 根目錄, 若要切換到 Y 槽, 則在電腦的回應後, 輸入 Y:, 命令列將轉為

Y:\>

若要更換目錄, 則使用 cd, 也就是 change directory 的意思, 例如:

Y:\>cd tmp

表示要從 Y 槽的根目錄更換到 tmp 目錄, 也就是

Y:\tmp>

若要再回到 Y 槽的根目錄, 可以使用 cd ..

表示要從目前所在目錄, 往上跳回一個目錄, 也就是重新回到 Y 槽的根目錄.

另外, 無論目前位於哪一個子目錄, 也可以使用 cd \

直接回到根目錄.

或者從 Y:\> 直接使用

cd \tmp\repo\ssh\wcm2019

直接從 Y 槽的根目錄, 跳進 Y:\tmp\repo\ssh\wcm2019>

此外, 常用的 DOS 指令有:

dir - 列出目前所在目錄的內容

mkdir - 隨後加上要建立目錄的名稱, 可以建立目錄

cls - clear screen, 清除目前的命令列顯示的內容

第三步

建立 Git 倉儲, 並 clone 倉儲至近端工作後, 對遠端倉儲改版

可攜程式系統中已經內建 git, 可以在啟動 start.bat 後, 透過 path 的設定, 直接執行 git 指令.

建立 Git 倉儲, 共分為兩類, 一類是直接在 Github 網際介面下建立倉儲時, 要求建立 README.md 檔案, 之後可以直接在近端, 以 git clone 加上倉儲連線 URL, 將倉儲克隆一份到近端, 並以最新版本作為工作目錄, 使用者改版後, 可以直接透過 git add, commit 與 push 對遠端倉儲改版.

另一類則是故意在 Github 網際介面下建立倉儲時, 不要建立任何檔案, 而是在近端自行利用 git 指令建立倉儲架構, 新增內容後, 以 git remote add 設法在近端倉儲中納入 origin URL 後, 將近端倉儲版本新增提交推送到遠端.

git add

git add 可以用來新增一個檔案, 數個檔案, 或在之前提交後所新增的所有內容.

git add 在 GIT 架構下, 是對所新增或修改的內容拍快照:

git add . adds all modified and new (untracked) files in the current directory and all subdirectories to the staging area (a.k.a. the index), thus preparing them to be included in the next git commit . Any files matching the patterns in the .gitignore file will be ignored by git add

git commit 

git commit 執行之前, 必須使用 git config 建立臨時或永久的身分註記, 因為 GIT 在展開所有改版內容時, 必須明確登錄這些變更的作者與時間.

當使用者採用 git commit -m "改版說明訊息", 此次提交到 .git 目錄下的更動內容, 均會綁定使用者身分與改版所輸入的說明訊息.

git push

git push 在隨後沒有輸入遠端 URL 代號時, 表示要推送到 origin, 若透過 git remote add 設定其他代號與 URL 對應時, git push 加上代號, 就可以將此次的提交內容, 推送到指定的 URL 所在遠端倉儲.

第四步

自行建立靜態內容管理網站

利用 CMSimfly (https://github.com/chiamingyen/cmsimfly) 內容, 建立自己的 Github Pages 網站

第五步

管理網站內容

學習如何使用 CMSimfly, 在網站中加入各種內容

第六步

使用 Flask, bs4 與 lxml 模組

了解 CMSimfly 如何建構, 並且嘗試修改現有功能, 除錯或建立自己的網際內容管理系統

第七步

虛擬主機下的類 Github 網站

如何利用 Fossil SCM, 在 Virtualbox 中的 Ubuntu 18.04-2 (8.5 GB) 建立類似 Github 的系統, 可以放入 CMSimfly 的靜態網頁

第八步

實體主機下的網際內容管理

如何在實體主機上安裝 Ubuntu 18.04 (https://www.ubuntu.com/about/release-cycle), 配置網路連線, 然後架構 uwsgi 環境下的 CMSimfly 動態網站, 或建立 Fossil SCM 用來伺服管理 CMSimfly 下有版次管理的靜態網頁, 或利用 nginx 伺服無版次管理的 CMSimfly 靜態網頁.

Monday, April 8, 2019

V-rep 與 Webots 機器人模擬系統

2013 年 1 月 10 日,  V-rep 宣布開源, 以 GPL3 使用授權釋出, 允許非營利學校免費使用, 商業使用必須付費, 檔案格式未公開.

2018 年 12 月 18 日, Webots 宣布開源 (https://github.com/omichel/webots), 並以 Apache 2 使用授權釋出, 檔案沿用 VRML97 格式, 使用與延伸上幾乎沒有任何限制.

Thursday, April 4, 2019

KMOLab 在傳授甚麼?

KMOL

KMOL 是 Knowledge Management & Optimal utilization Lab, 也就是知識管理與最佳化應用實驗室的簡稱, 代表的標誌為雙峰 Camel, 取與 KMOL 讀音相近, 且駱駝的雙峰可以代表 KMOL 所強調的知識與應用, 或者是概念與知識互動轉換的概念.



KMOL 中的 K, 代表知識, 根據 https://en.wikipedia.org/wiki/C-K_theory 中的說明, 代表使用者所具備的知識, 可用於解決所面臨的問題, 至於 C-K 設計理論中的 C, 則是概念, 可能是該想法源自已經失效的知識, 或者是目前仍無法用於解決問題的想法, 必須進一步研究補強, 使概念成為知識, 方能解題.

KMOL 創於 2008 年, 當時的駱駝雙峰各自代表知識與應用, 而隨著在 2016 年 C-K Design Theory 的導入, 目前的駱駝雙峰分別代表概念與知識, 隨著對於特定主題的研究投入, 可讓先前只具概念的想法, 逐步化為知識而可用來解題, 反之, 若不積極作為, 持續改進, 先前原本以為可以用於解決特定問題的知識, 隨著時空背景的轉換, 可能早就已經成為無法真正用來解題的概念.

有了以上的認知, 應該就比較能夠體會 KMOL 所強調使用的可攜程式環境系統, 為何必須隨著各工具的改版而不斷進行抽換測試的出發點, 因為在全球協同的現況中, 各產品開發成員都必須時時檢查驗證自己所認為具備的知識庫與概念庫, 那些內容是可以用於解題, 而那些則必須在不同的配置更動下, 才能讓概念轉化為知識而派上用場.

KMOL 信念

二十一世紀的科技大學, 在培育具國際觀與在地文化素養, 能適應環境並成功面對挑戰之專業人才. 所謂專業, 即具有專長, 能夠就業之謂. 所謂文化者, 因思考及概念而有之教化. 所謂素養, 即平日的涵養.

KMOL 除了希望培訓具有國際觀與在地文化素養的專業人才外, 特別鼓勵年輕人仔細閱讀下列兩則引言, 其中對於所謂追求卓越與大學生的職志, 有明確的定義:

卓越是一種舉止得宜的習慣
Excellence is an art won by training and habituation. We do not act rightly because we have virtue or excellence, but we rather have those because we have acted rightly. We are what we repeatedly do. Excellence, then, is not an act but a habit.
— Aristotle (384 BC – March 7, 322 BC)
卓越須經由訓練與習慣養成才能獲得。並非具備品德或卓越能讓人舉止得宜,反而是舉止得宜能讓人卓越。經過切身重複實作,才可體會,卓越並非一種作為,而是習慣。
— 亞理士多德 (西元前 384 年 – 西元前 322 年 3 月 7 日)
大學生應有的職志
體魄康強, 精神活潑, 舉止端莊, 人格健全, 便是大學生的風度. 不倦的追求真理, 熱烈的愛護國家, 積極的造福人類, 才是大學生的職志.
— 羅家倫 (1928)

對於機械設計的認知

設計是一種明確與具體的表達, 而且是在仔細思考、多方考量後所完成的表達, 表達具有六種形式, 包括口語、文字、2D、3D、數學與實體表達, 設計的結果可以讓執行者有所依循, 根據指示執行後, 可得預期之結果.

機械則是一種器物, 而且是由固體、流體與軟體元件精巧組合而成, 可互動運作, 達成特定功能之器物.

因此機械設計就是靈活運用六種表達, 仔細說明如何透過固體、流體與軟體元件之互動運作, 而能達成預定結果之明確與具體表達.

網際時代早已降臨

自 1990 年 HTMLWWW 伺服器首度出現在一台 NeXT 電腦上, 就已經揭示一個新世代的開始, 經過近 30 年的發展, 目前的網際環境已經能夠與單機操作系統上的應用程式緊密結合, 許多應用程式的開發, 透過網路與分散式版次管理系統, 幾乎隨時都在持續改進.

身為機械設計工程師, 必須明確了解在網際技術不斷推升的歷程, 過去厚重且無法分割的大型套件, 將逐漸被敏捷可攜的雲端應用所取代, Onshape 的開發團隊, 在 2012 成立時, 便已清楚看到此一趨勢, 使用者只要透過瀏覽器或 App 就能協同進行產品的機械設計與分析.

但是, 一套試圖集大成的雲端套件, 絕無法滿足未來網際時代新產品開發過程中的諸多需求, 必須由每一位機械設計工程師做起, 充分了解網路與電腦的應用範圍, 在既有基礎上, 有能力在網際環境中搭建屬於自己能夠掌控的流程, 開發合用的雲端程式.

KMOL 希望您能聰明表達、日日進步

既然我們認為機械設計是一種表達, 為了讓協同產品開發過程中的表達不至於混亂, 於是導入分散式版次管理的工具, 包括 Git 與 Fossil SCM, 為了能夠善用電腦與網路進行表達, 於是將靜態內容放在 Github Pages 或自行架設的 Nginx 伺服器中, 至於能夠即時更動的動態內容系統則採用雲端 Heroku 或自行架設的 uwsgi 網際環境中.

為了能夠快速讓產品開發者將概念轉化為數位模擬系統, KMOL 採用 Python 建構軟體雛形, 並設法利用 Cython 技術, 以 C++ 的執行速度進行工程分析.

為了讓成員有機會一窺各種開源工具的內部設計, KMOL 在 Windows 10 64 位元環境中以 Msys2 編譯 Solvespace、Fossil SCM、V-rep 以及 Range CAE 套件.

為了讓各學員能夠積極學習不浪費時間, KMOL 鼓勵各學員以 4+1 流程取得碩士.

NX12

NX 12 Help https://docs.plm.automation.siemens.com/tdoc/nx/12/nx_help Python related https://docs.plm.automation.siemens.com/tdoc/nx/...