2020年9月26日 星期六

教學方法分享

下載並安裝wacom driver 


https://drive.google.com/drive/folders/1fXPbY3cqNh8vPpvjJj2LdIFp2uv-_L6Z?usp=sharing


安裝Pointofix 可以寫字在螢幕上


預設是德文, 中文化方法==> 將 pointofix_translation.ini 複製到 C:\Program Files (x86)\Pointofix
即可. 







試著熟悉數位筆的使用感覺, 同時熟悉幾個常用的快速鍵,會讓你的講課流暢度不會因為數位筆的關係,而不斷停頓




更多 Pointofix 使用說明 https://briian.com/6545/



ScreenShot 分享 

若在螢幕上用Pointofix 所寫的內容很多很重要,那麼也可以按下F7 擷最畫面存成.PNG檔, 順便幫同學做個筆記. 之後再利用HFS或google drive 分享給同學.


在google drive 建立一個目錄來分享檔案, 分享的網址可以建立短網址 (https://reurl.cc/main/tw) 
, 此網址於課程的第一堂課就可以給同學, 後續若有新增其他檔案, 同學也都可以在同一個地方下載或者想回家練習仍可以再次下載. 





此分享目錄最好也能有結構的分類



|--code
|-- doucment
|-- scrrenshot
        |-- scrrenshot_20200908
|       |-- scrrenshot_20200915










使用PowerPoint的快速鍵


一定要記住 PowerPoint 在播放投影片的快速鍵. 可以增加講課的流暢度. 
可以試著按F8 ,,可以直接切換成畫筆模式, 且不斷F8 還可以更換筆的顏色


老師的用心是決定課程品質的關鍵! 我們也得換位思考, 若我們是坐在底下的學生. 我們

一定也會期待這門課能獲得什麼, 而不是坐在那裡浪費生命

2020年9月18日 星期五

好用的SSH Client : MobaXterm


 MobaXterm 為一個SSH Client, 可以用來連入我們Linux 的伺服器

    新增SSH Session: 

       Remote Host: 虛擬主機的外部IP

使用MobaXterm的三大好處
  • 你可以用SFTP的視窗操作, 就可以直接上傳或下載遠端Linux主機的檔案,

  • 你可以遠端開啓,編輯Linux主機的檔案, 如果你不熟vi或nano這類UNIX文字編輯器,這可以讓你使用你所習慣的windows編輯器, 如Notepad++等.



  • 由於MobaTerm 內含X Server,所以你可以在遠端執行具有一個GUI 視窗的程式 (X Client), 而視窗畫面會出現在我們本機的windows上. (有興趣可以去google 一下 X Window, X11 protocol) 


  

     Note: 預設MobaXterm 使用SSH, 會啓動X11 Forwarding. 可以讓GUI 視窗仿佛要顯示在local端,然而實際上是走SSH 通道將畫面Forwarding 到windows系統這邊來.


Virtual Box 建置Linux主機


STEP 0:  Prepare Your VirtualBox Environment

下載VirtualBox 軟體: https://www.virtualbox.org/wiki/Downloads

下載 Ubuntu Image (取得一個已經包含完整系統的虛擬應用裝置檔案ova檔)

*ova 為VirtualBox使用的開放虛擬機器格式OVF (Open Virtualization Format)


STEP 2. Importing an Existing Virtual Machine into VirtualBox
 

啓動 VirtualBox , 並在 [File->Import Appliance]


選擇xxxx.ova檔, 載入後, 之後此VM系統及運作中在檔案系統所產生的檔案, 預設是放在
C:\Users\<user>\VirtualBox VMs\LinuxVMImages\xxxx下, 此即為Machine Folder 的位置。 若要變更預設Machine Folder位置, 則在Import Appliance時要點選
Expert Mode, 則可以在Import Appliance時, 變更Machine Folder的預設位置.



匯入需要一些時間....wait ..wait ..




STEP 3. Start Virtual Machine

接著點選剛匯入的VM, [Start] 

啓動時也許會跳出錯誤訊息, 大多數是因為VM內的網卡硬體裝置可能和你的機器不同, 所以只要重新選擇成你機器的網卡, 就可以正常啓動!


  

以使用者帳號 ubuntu (password: ubuntu) 登入, 大功告成.





其他

1.) Virtualbox Guest Additions


為了方便Host OS( Winodws) 和 Guest OS (Ubuntu) 方便交換資訊, 如 copy & paste 或拖拉交換檔案, 可以安裝Guest Additions , 先卸載 VBox_GAs_6.1.14.ISO (以光碟機型式出現), 再重新掛載

先Eject 此光碟


, 再掛載



 點選桌面上的光碟 (VBOX_GAS_6.1.14)  [Run], 則會開始安裝
 


2.) Shared Folder

可以讓Host OS( Winodws)  分享資料匣給Guest OS (Ubuntu), 則Host可以和Guest共用此資料匣來交換檔案. Host 啓動Shared Folder 並勾選自動mount , 則Guest OS (Ubuntu) 會mount 此 資料匣在 /media路徑下, 或者開啓檔案管理員 (nautilus) 也看到此共用的資料匣。


3.) 在windows使用SSH Client登入Ubuntu


在Ubuntu 下 , 開啓 terminal 執行 ifconfig 可以看到Ubuntu IP,  接著在windows 啓動SSH Client (如MobaXterm) 連入。接著用 SSH 的SFTP 功能, 如同FTP一樣, 可以很方便的讓Host 和 Guest 交換檔案。  ==> 更多關於Mobaxterm的使用















2020年9月7日 星期一

win10安裝 Anaconda +Tensorflow2.0

Win10 安裝 Anaconda + Python 3.7+ Tensorflow2.x
==================== 

1. ) 先安裝Anaconda 3.x    



2.) 接著開啓 [Anaconda Prompt] 執行下列指令

#新增conda虛擬環境

conda create -n tf2.0 python=3.7

#啓用虛擬環境並安裝TF2.0 (穏定版本)

conda activate tf2.0

pip install tensorflow==2.0.0-beta1

pip uninstall numpy

pip install numpy==1.16.2


#安裝其他套件

conda install jupyter

pip install matplotlib



#進入python 互動環境並檢查python版本

python

import tensorflow as tf

tf.__version__






#移除conda虛擬環境

conda env remove --name tf2.0

=======其他=============

# 將tensorflow 2.0 更新到目前最新版本(非stable 版本, 如果有必要的話才更新)
pip install tf-nightly --upgrade

# 安裝 tensorflowGPU 版本

pip install tensorflow-gpu==2.0.0b1

2020年9月3日 星期四

使用Google Compute Engine 建置Linux環境

 

申請Google Compute Engine 90天試用


利用 gmail 帳戶, 在Google Compute Engine (GCE) 快速獲得免費的LINUX主機
申請時雖然會需要輸入信用卡號.但90天內使用是不用錢的 ~

1.) 建置虛擬主機

 
新增一個 VM 執行個體



主要是選擇作業系統, 


這裡我們選擇了Linux Ubuntu 18.04 的版本






基本上其他的設定都預設就可以了, 在最下方, 按下 [建立] 就這樣清鬆地建立一台LINUX 主機了. 接下來就是遠端登入使用這台主機了.

2.) 使用SSH 登入GCE的Linux Ubuntu 

使用SSH登入, 只允許使用RSA認證的方式登入。我們可以使用puttygen.exe 來產生成對的RSA public key & private key


3.) 在GCE/[中繼資料] [安全殼層金鑰] 新增一組RSA Public key

  這裡的金鑰及值, 都是從puttygen.exe  貼上來的





2020年9月2日 星期三

Python Open GL及RL 套件安裝


進行下列軟體安裝  ( 底下安裝指令在Ubuntu 18.04的測試過,皆可順利安裝)

若沒有Linux 環境怎麼辦? ==> 請參考使用Google Compute Engine 建置Linux環境

得先確認 python版本須為3.6以後 (事實上, Ubuntu 18.04 所安裝的Python己經是3.6以後的版本), 

執行  python3 -V  會顯示python的版本 ==> Python 3.6.9
 



開始安裝套件

[Install pip3]
sudo apt-get install python3-pip


[Install PyOpenGL]
sudo apt-get install -y python-opengl

[Install RL SDK]
sudo pip3 install pybullet
sudo pip3 install gym

 執行 Hello PyBullet World 範例


可用SFTP 將測試檔案test.py 上傳Ubuntu 主機或直接在主機上新增程式

新增一個純文字檔案, 將下列代碼複製貼上, 並存為test.py 


執行python3 test.py , 終端機上會出現底下畫面



會開啓Open GL所顯示的3D畫面視窗, 恭喜你環境建置成功啦


[References]

https://github.com/bulletphysics/bullet3/releases
https://gym.openai.com/docs/#installation





2020年8月9日 星期日

DYNAMIXEL Motor: R+ Manager 2.0

 選擇 DYNAMIXEL X 系列(因為我們是XL430-W250 servo)

會自動選擇COM PORT (FTDI USB-Serial)
 Baudrate : 57600 bps (出廠預設)
開始掃描, 成功掃描到 XL430-250 motor
可以用工具針對 XL430-250 moto 內部的EEPROM 及RAM 內容做讀取及修改

先在 [Torque Enable] 設成off ,然後在Goal Position 這一格設定轉動的step或解度,
即可以看到馬達的轉動









2020年7月27日 星期一

DYNAMIXEL Motor(XL430-W250 servo) 控制

DYNAMIXEL Motor 


Dynamixel智能馬達是模組化形式,採用菊鏈多串接方式。這讓用戶可以輕鬆地更改和添加馬達關節,以獲得所需的扭力和自由度。

DYNAMIXEL Motor 有的是使用TTL,有的是使用RS485的訊號來做控制

而XL430-W250 則是使用TTL訊號來做控制

控制器 <----------TTL-------------> DYNAMIXEL Motor (XL430-W250 )

 TTL 共有3個Pin 
Data ---- 5V
VDD ---12V
GND 


所謂TTL 訊號控制可以看成是UART的半雙工模式,即出去(TX)和進來(RX) 都是走同一個TTL 的Data訊號

 UART TX -----------------------> TTL Data

 UART RX <----------------------- TTL Data



原廠的控制器如 OpenCM9.04, OpenCR, CM-150 and CM-200 等..





2.) 若要使用PC來控制 XL430-W250, PC端可以透過U2D2來達成

PC  <------UART over USB------ > U2D2  <-----TTL---->  XL430-W250,


PC可使用U2D2 來控制DYNAMIXEL 





U2D2 Power Hub Board 電源集線板| 採智科技股份有限公司


關於U2D2


U2D2 is a small size USB communication converter that enables to control and operate DYNAMIXEL with PC.


PortsDescription
4Pin UARTConvert USB and UART
3Pin TTL LevelConnect to DYNAMIXEL with 3Pin TTL Level Communication
4Pin RS-485Connect to DYNAMIXEL with 4Pin RS-485 Communication
Status LEDDisplay status of Power supply, TxD(Data write) and RxD(Data Read)
Micro-B USBConnect to the PC with USB cable

關於 Dynamixel XL430-W250 Servo 


XL430-W250 servo 規格:

(TurtleBot3 Burger 漢堡款用之馬達)

– MCU 單晶片: ST Cortex-M3 (STM32F103C8 @ 72Mhz, 32Bit)
– 位置感測器: Contactless absolute encoder (12Bit, 360°)
– 馬達: Cored Motor
– 傳輸速度: 9,600 bps – 4.5 M bps
– 控制演算法: PID 控制
– 解析度: 0.088° (=360°/4,096)
– 操作模式:
• 速度控制
• 位置控制(0-360°)
• 延伸位置控制(多圈旋轉)
• PWM 控制(電壓控制)
– 重量: 57.2g
– 尺寸(W x D x H): 28.5 x 34 x 46.5 mm
– 齒輪比: 258.5 : 1
– 靜止轉距:
• 1.0N.m(9.0V, 1.0A)
• 1.4N.m(11.1V, 1.3A)
• 1.5N.m(12.0V, 1.4A)
– 無負載速度:
• 47 rpm(9.0V)
• 57 rpm(11.1V)
• 61 rpm(12.0V)
– 操作溫度: -5 ~ +72℃
– 工作電壓: 6.5V – 12.0V (建議 11.1V)
– 待機電流: 52 mA
– 指令訊號: Digital Packet
– 通訊介面:
• Half Duplex Asynchronous Serial Communication (8bit,1stop, No Parity)

– 連結(實體層):
TTL Level Multidrop Bus (3-pin 串接式連結)
– 可用編號: 253 ID (0-252), 可串接
– 訊號回授: 位置, 速度, 負載, 即時 Tick, 軌跡, 溫度, 輸入電壓等
– 材質: 工程塑材
– 數據如有變更,請以原廠規格為準

出廠設定:

– ID = 1
– Baud Rate: 57,600bps (請依需要, 自行變更 ID 及 Baud Rate)
The Control Table is a structure of data implemented in the device. Users can read a specific Data to get status of the device with Read Instruction Packets, and modify Data as well to control the device with WRITE Instruction Packets.
Control Table 內容有記錄在EEPROM區域及RAM區域
改寫EEPROM區域的值會一直記錄著, 而RAM區域馬達重置後值會回到初始值
修改EEPROM值, 要先將Torque Enable (位置64)設為0,才能修改

Control Table of EEPROM Area

AddressSize
(Byte)
Data NameAccessDefault
Value
RangeUnit
02Model NumberR1,060--
24Model InformationR---
61Firmware VersionR---
71IDRW10 ~ 253-
81Baud RateRW10 ~ 7-
91Return Delay TimeRW2500 ~ 2542 [μsec]
101Drive ModeRW00 ~ 1-
111Operating ModeRW30 ~ 16-
121Secondary(Shadow) IDRW2550 ~ 252-
131Protocol TypeRW21 ~ 2-
204Homing OffsetRW0-1,044,479 ~
1,044,479
1 [pulse]
244Moving ThresholdRW100 ~ 1,0230.229 [rev/min]
311Temperature LimitRW720 ~ 1001 [°C]
322Max Voltage LimitRW14060 ~ 1400.1 [V]
342Min Voltage LimitRW6060 ~ 1400.1 [V]
362PWM LimitRW8850 ~ 8850.113 [%]
444Velocity LimitRW2650 ~ 1,0230.229 [rev/min]
484Max Position LimitRW4,0950 ~ 4,0951 [pulse]
524Min Position LimitRW00 ~ 4,0951 [pulse]
631ShutdownRW52--

Control Table of RAM Area

AddressSize
(Byte)
Data NameAccessDefault
Value
RangeUnit
641Torque EnableRW00 ~ 1-
651LEDRW00 ~ 1-
681Status Return LevelRW20 ~ 2-
691Registered InstructionR00 ~ 1-
701Hardware Error StatusR0--
762Velocity I GainRW1,0000 ~ 16,383-
782Velocity P GainRW1000 ~ 16,383-
802Position D GainRW4,0000 ~ 16,383-
822Position I GainRW00 ~ 16,383-
842Position P GainRW6400 ~ 16,383-
882Feedforward 2nd GainRW00 ~ 16,383-
902Feedforward 1st GainRW00 ~ 16,383-
981Bus WatchdogRW01 ~ 12720 [msec]
1002Goal PWMRW--PWM Limit(36) ~
PWM Limit(36)
-
1044Goal VelocityRW--Velocity Limit(44) ~
Velocity Limit(44)
0.229 [rev/min]
1084Profile AccelerationRW00 ~ 32,767
0 ~ 32,737
214.577 [rev/min2]
1 [ms]
1124Profile VelocityRW00 ~ 32,7670.229 [rev/min]
1164Goal PositionRW-Min Position Limit(52) ~
Max Position Limit(48)
1 [pulse]
1202Realtime TickR-0 ~ 32,7671 [msec]
1221MovingR00 ~ 1-
1231Moving StatusR0--
1242Present PWMR---
1262Present LoadR--1,000 ~ 1,0000.1 [%]
1284Present VelocityR--0.229 [rev/min]
1324Present PositionR--1 [pulse]
1364Velocity TrajectoryR--0.229 [rev/min]
1404Position TrajectoryR--1 [pulse]
1442Present Input VoltageR--0.1 [V]
1461Present TemperatureR--1 [°C]
1682Indirect Address 1RW22464 ~ 661-
1702Indirect Address 2RW22564 ~ 661-
1722Indirect Address 3RW22664 ~ 661-
--
2182Indirect Address 26RW24964 ~ 661-
2202Indirect Address 27RW25064 ~ 661-
2222Indirect Address 28RW25164 ~ 661-
2241Indirect Data 1RW00 ~ 255-
2251Indirect Data 2RW00 ~ 255-
2261Indirect Data 3RW00 ~ 255-
--
2491Indirect Data 26RW00 ~ 255-
2501Indirect Data 27RW00 ~ 255-
2511Indirect Data 28RW00 ~ 255-
5782Indirect Address 29RW63464 ~ 661-
5802Indirect Address 30RW63564 ~ 661-
5822Indirect Address 31RW63664 ~ 661-
--
6282Indirect Address 54RW65964 ~ 661-
6302Indirect Address 55RW66064 ~ 661-
6322Indirect Address 56RW66164 ~ 661-
6341Indirect Data 29RW00 ~ 255-
6351Indirect Data 30RW00 ~ 255-
6361Indirect Data 31RW00 ~ 255-
--
6591Indirect Data 54RW00 ~ 255-
6601Indirect Data 55RW00 ~ 255-
6611Indirect Data 56RW00 ~ 255

如何使用


可以下載 R+ Manager 2.0 進行測試 (baudrate : 57600) 先使用工具操作
參考如下說明 



控制協定

PC或控制器 <-----------Protocol 2.0------------> DYNAMIXEL Motor

兩邊之間的通訊協定 DYNAMIXEL Protocol 2.0

DYNAMIXEL SDK

DYNAMIXEL SDK supports various programming languages such as C, C++, C#, MATLAB, LabVIEW, Python and Java in order to help developing DYNAMIXEL control software. DYNAMIXEL SDK provides a bundle of functions/methods that can be used for operating DYNAMIXEL with protocols in the form of digital packet. DYNAMIXEL SDK is free to download from GitHub.




step1 下載DYNAMIXEL SDK
git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git

step 2 在rapsberry pi上安裝 DYNAMIXEL library libdxl_sbc_c.so
cd ~/DynamixelSDK/c/build/linux_sbc
make
sudo make install


step 3: 執行範例程式
~/DynamixelSDK/c/example/protocol2.0/read_write/linux_sbc
make 
./read_write


Note: 原始碼都要經過修改以配合使用的馬達型號

// Available Dynamixel model on this example : All models using Protocol 2.0
// This example is designed for using a Dynamixel PRO 54-200, and an USB2DYNAMIXEL.
// To use another Dynamixel model, such as X series, see their details in E-anual(emanual.robotis.com) and edit below "#define"d variables yourself.
// Be sure that Dynamixel PRO properties are already set as %% ID : 1 / Baudnum : 1 (Baudrate : 57600)