or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
RaspberryPi 4B + ubuntu18.04 + PIGPIO + ROS 輸出 servo motor pwm control signal
使用Raspberry 4B + ubuntu、2023/07/06最後更新
準備硬體設備:
1、 Raspberry 4B 開發板一塊
Image Not Showing
Possible Reasons

2、 可由5V驅動的Servo Motor 一顆 (DS3235SG 3Pin為GND、VDD、SIGNAL)
3、 鍵盤(接Raspberry 4B 開發板 USB port)
4、 可透過RPI4B連接網路的環境
4、 邏輯分析儀一臺(非必要,可用來確認輸出波行是否正確)
5、 WindowsPC一臺(非必要,可接邏輯分析儀監控輸出波型)
應用:攔截網的觸發
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →準備軟體:
假設已擁有裝好ubuntu18.04與ROS(Melodic Morenia版)的RaspberryPi 4B開發板,並可透過RPI4B連上網路。無須準備其他軟體。
大致分為以下五步驟:
1、在ubuntu18.04中安裝PIGPIO。
2、在ROS中創建名為cap的專案(工作區)。
3、修改CMakeLists.txt檔案使ROS的C Compiler可連結PIGPIO函式庫。
4、使用catkin_make指令編譯.c檔,產生.exe檔案,下指令執行(sudo -./xxxx.exe)。
5、透過邏輯分析儀監控指定的GPIO輸出PULSE是否正確(非必要)。
P.S. PIGPIO函式庫中已有servo pwm pulse的相關範例與函式,可快速上手使用。
1、在ubuntu18.04中安裝PIGPIO。
在ubuntu server 18.04命令列中透過以下指令下載與安裝PIGPIO
測試時是在 /home/user 位置執行下載、解壓縮並安裝
https://abyz.me.uk/rpi/pigpio/index.html PIGPIO官方網站。說明PIGPIO在RPI4B上的腳位編號(Pin Define) (RPI4B參考Type3)
(0)前兩行是在重新安裝PIGPIO時,要先把舊版的GPIO資料夾與壓縮檔刪除
(1)若是第一次安裝,則只需輸入以下五條指令
安裝Python相關工具
下載pigpio最新版本
解壓縮
進入解壓縮的資料夾
安裝pigpio
(2)安裝後進行測試
關閉所有正在執行中的pigpio node(注意指令中pigpiod結尾的"d"不要忘記打)
沒先執行這行會報錯 pigpio Can't lock /var/run/pigpio.pid
check C I/F
start daemon
check C I/F to daemon
check Python I/F to daemon
check pigs I/F to daemon
check pipe I/F to daemon
================================================================
安裝PIGPIO之參考網頁
https://abyz.me.uk/rpi/pigpio/index.html PIGPIO官方網站。PIGPIO在不同硬體上的腳位編號(Pin Define)
https://abyz.me.uk/rpi/pigpio/ PIGPIO官方網站 (卡巴斯基會觸發警告)
https://abyz.me.uk/rpi/pigpio/ PIGPIO官方網站 下載與安裝
https://blog.csdn.net/weixin_41756645/article/details/125417549
================================================================
2、在ROS中創建名為cap的專案(工作區)。
在/home/user路徑下創建名為"cap"的工作資料夾
進入剛才創建的cap資料夾
在工作區中創建一個src資料夾用來放置package資料夾與程式檔案
進入剛才創建的src資料夾,創建一個名為catch_net的Package
在Package的資料夾中再創建一個src資料夾用來放置要執行的Node(程式檔案)
創建名為servo_trig.c的Node並將要執行的動作寫進.c檔案
================================================================
https://ithelp.ithome.com.tw/articles/10202723
https://ithelp.ithome.com.tw/articles/10203126
================================================================
3、修改CMakeLists.txt檔使ROS的C Compiler連結PIGPIO函式庫。
返回上一層,開啟CMakeLists.txt檔準備修改
-lpigpio:pigpio library。連結pigpio函式庫。
-lrt:Realtime Extensions library。
4、catkin_make編譯.c檔,產生.exe,執行(sudo -./xxxx.exe)。
回到cap專案資料夾(工作區)並使用編譯器將.c檔編譯成.exe
進入檔資料夾執行編譯後產生的.exe檔
P.S.
第二行
sudo ./servo_trig.exe
後面可以接數字,
代表要求輸出PWM的GPIO腳位編號,
若不輸入任何數字則默認用GPIO 4腳位(pin7)輸出。
一般來說要依據Servo控制pin所接的位置來決定要用哪個腳位輸出。
例如輸入
sudo ./servo_trig.exe 4 22
代表要求GPIO 4(pin7)與GPIO 22(pin15)兩個腳位同時輸出PWM訊號。
Raspberry 4b GPIO Pinout可以在官方網站查詢
https://pinout.xyz/
================================================================
================================================================
5、透過邏輯分析儀監控指定的GPIO輸出PULSE是否正確(非必要)。
================================================================


範例:使用邏輯分析儀檢查以下資訊
pigpio第4pin輸出的pwm訊號是否為50Hz,波寬1100us(1.1ms)/1900us(1.9ms)?
================================================================
P.S.1
以下測試用程式碼以50Hz控制頻率(PWM週期20ms),每隔400ms切換1100us/1900us pwm pulse width驅動servo轉動。
P.S.2
以下內容是從官方Servo Pulse Generator範例文件Servo_demo.c修改而來。
P.S.3
以下內容是Shaw(紹瑋)最後實際寫進ROS的Pytron程式碼,用來控制Servo轉動固定角度,觸發攔截網發射。