pjcopsim <<
Previous Next >> Webots Doc
Copsim Doc
網際 CoppeliaSim 技術手冊管理系統
Web-based CoppeliaSim manual management system
專題動機
從 https://github.com/CoppeliaRobotics/helpFiles 可以取得 CoppeliaSim 套件各版次的最新技術手冊資料, 在 github Pages 進行配置後, 可建立 https://mde.tw/copsimdoc/ 網站, 若使用者希望能夠針對各版本靈活運用這份技術資料, 並隨著各種功能的研究與運用流程, 配合加入客製化案例與延伸說明時, 就必須設法透過網際內容管理的模式進行修改.
相關技術探討
https://github.com/cyberbotics/webots 的技術手冊採用 Markdown 格式編寫, 透過 https://github.com/showdownjs/showdown 即時轉為 html, 由於文檔內容以 Github 倉儲管理, 因此即時轉檔加上倉儲內容的版次發布功能, 可以直接在 Github Pages 網站擷取各套件版次對應的技術手冊內容.
至於 CoppeliaSim 在 https://github.com/CoppeliaRobotics/helpFiles 倉儲中並未揭露其技術手冊編輯與管理流程, 但從其使用 iframe 配置技術手冊的網頁架構, 且採用 Google 搜尋進行內容關鍵字查詢的情況來看, 應該是採用 html 檔案編輯工具進行內容維護後, 再提交推送至 https://github.com/CoppeliaRobotics/helpFiles 倉儲.
研究方法
從現有技術面而言, https://github.com/cyberbotics/webots 利用 Markdown 轉 html 的方式, 最易於管理網頁資料, 但 https://github.com/CoppeliaRobotics/helpFiles 並無原始 Markdown 資料, 因此若希望採用 Webots 的技術手冊管理流程, 勢必要先將 html 轉為 Markdown 進行編輯配置後, 再轉回易於管理與配置的網站系統. 過程中最大的問題是 Markdown 對於圖檔縮放所提供的彈性, 較 html 低, 一般為了頁面效果, 會混用 Markdown 與 html 標註 (例如: Pelican 網誌系統), 此舉將增加文檔編輯過程中解決衝突時的難度.
針對目前 https://github.com/CoppeliaRobotics/helpFiles 網站檔案皆為 html 的情況, 直接採用網際 html 編輯系統與 Github Pages 進行管理, 應該是最可行的方案.
研究流程
假如要將 https://github.com/CoppeliaRobotics/helpFiles 納入 cmsimde 網際內容管理系統的架構進行配置, 首先必須取得其 https://mde.tw/copsimdoc/ 網頁左側的 html 階次. 也就是從 wb_tree.html 檔案中, 根據各 htm 檔案引用時 div 標註中的 id 進行階次判斷:
首先, 可以利用 bs4 取得 wb_tree.html 中各 div 標註的 id 數列:
from bs4 import BeautifulSoup
with open("wb_tree.html") as f:
data = f.read()
soup = BeautifulSoup(data, 'html.parser')
#finding the div with the id
ids = [tag['id'] for tag in soup.select('div[id]')]
print(ids)
第二種方法, 也可以取出各 div 標註的 id 內容:
from bs4 import BeautifulSoup
with open("wb_tree.html") as f:
data = f.read()
soup = BeautifulSoup(data, 'html.parser')
for ID in soup.find_all('div', id=True):
print(ID.get('id'))
接著必須取得各 div 標註中 anchor 標註的超文件 text 資料, 也就是 https://mde.tw/copsimdoc/ 網頁左側, 各連結的字串, 分別對應到 href 連結的 .htm 檔案名稱:
from bs4 import BeautifulSoup
with open("wb_tree.html") as f:
data = f.read()
soup = BeautifulSoup(data, 'html.parser')
# get anchor under div, and print text
for a in soup.select('div a[href]'):
print (a.text)
接下來, 為了同時列出各 div 標註的 id 與其中對應的 href 連結 .htm 檔案名稱, 使用 zip() 進行迴圈處理:
from bs4 import BeautifulSoup
with open("wb_tree.html") as f:
data = f.read()
soup = BeautifulSoup(data, 'html.parser')
count = 0
for i in zip(soup.find_all('div', id=True), soup.select('div a[href]')):
count += 1
print(i[0].get('id'), i[1].text)
print("total html:" + str(count))
# 主要 .htm 檔案有 57 個
從上一個程式的執行, 可以發現列在 https://mde.tw/copsimdoc/ 網頁左側的 .htm 網頁有 57 個, 且 div id 採用 folder.x.x.x 的格式進行設定, folder.x 可以對應到 cmsimde 的 H1 頁面, folder.x.x 則對應 H2 頁面, 而 folder.x.x.x 則對應到 H3 頁面.
其他專題流程, 根據上述程式的測試, 已知可以利用 cmsimde 將 https://github.com/CoppeliaRobotics/helpFiles 倉儲中的標題 .htm 轉入 config/content.htm 檔案後, 直接利用動態網頁進行編輯管理, 但原始 CoppeliaSim 網頁中的圖檔與相對 href 連結則必須設法轉為 cmsimde 動態網頁的格式.
一旦 CoppeliaSim 納入 cmsimde 網際內容管理系統後, 參與協同管理者, 就可以利用動態網頁處理衝突後, 轉為靜態網頁進行 Github Pages 的靜態網頁配置, 並利用關鍵字搜尋, Pelican 與 Reveal 的網誌及簡報進行與 CoppeliaSim 有關的功能與案例介紹, 其中包含各版次延伸程式的編譯與後續應用研究.
上述專題研究可以分為:
part1: CoppeliaSim 技術手冊網際內容管理系統配置 (技術類別: Python 與 Flask 網際程式應用, Leo Editor 作為 IDE)
part2: CoppeliaSim 系統與延伸模組編譯 (技術類別: Msys2/C++/Lua/Python Programming 應用, Leo Editor 作為 IDE)
part3: CoppeliaSim 應用案例研究 (技術類別: NX12, NX2206, Solvespace, Onshape, CoppeliaSim, Lua, Python, Leo Editor 作為 IDE, 基本 MCAD 或 Reinforcement Learning 延伸應用)
CoppeliaSim 場景利用 Arudino script 執行虛擬控制: https://bitbucket.org/afaina/horosim.git
HoRoSim (Holistic Robotic Simulator) allows you to simulate physical devices controlled by Arduino code. The user defines standard electronic circuits that are employed in the Arduino code (see Hardware Setup function) and a robot simulator, CoppeliaSim, simulates the physics of the device. Thus, HoRoSim simulates Arduino code with a physics engine and based on the electronic circuits defined. You can use the Arduino IDE to compile the code and run it, see instructions bellow.
The simulator has been described in this article, which has been published on the 13th International Conference on 2021 Robotics in Education conference. Cite:
Faiña A. (2022) HoRoSim, a Holistic Robot Simulator: Arduino Code, Electronic Circuits and Physics. In: Merdan M., Lepuschitz W., Koppensteiner G., Balogh R., Obdržálek D. (eds) Robotics in Education. RiE 2021. Advances in Intelligent Systems and Computing, vol 1359. Springer, Cham. https://doi.org/10.1007/978-3-030-82544-7_24
應用案例:
Application of deep reinforcement learning for control problems.pdf
利用 uStepper STL 零件做為參考, 自行在 NX12 與 NX2027 中進行零組件設計組立後, 轉入 CoppeliaSim 建立 uStepper.ttm, 以及後續應用.
https://github.com/uStepper/uStepper-RobotArm-Rev3
uStepper Robotic Arm STL files
ustepperArmKinematics.pdf
ustepper_Instructions.pdf
References: https://www.stlfinder.com/3dmodels/ustepper/
過程中需要利用 Python GUI 建立控制套件, 可利用 https://beeware.org/ (https://github.com/beeware)製作.
pjcopsim <<
Previous Next >> Webots Doc