ROS 機器人控制 - 1

筆記製作中
目前我也還在學習 ROS 中,之後慢慢有成過再放上來
學習目標
筆記的學習目標
- 直接在 terminal 用 rostopic pub -1 /turtle1/cmd_vel 和 rostopic pub -r 10 /turtle1/cmd_vel 的方式控制烏龜
- 用 pid 控制 twist 隨機 a 點到 b 點
- 用 rviz 上的 2D Nav Goal 給出點位 做判斷有沒有超出範圍 a 點到 b 點
- 接續 2. 的 code 新增一功能 寫一個暫停的 server (std_srv::Bool)
- 接續 3. 然後寫另一個 code 當按空白鍵的時候可以用 client call 3. 創立的 server 暫停小烏龜前進
- spin spinOnce c++ python 形式 都寫寫看 並看 rostopic hz 看看有哪些差異
後續想好要用 python 或 c++ 寫一種就好 - 寫一個 roslaunch 一次啟動 2 個 node
- 把 geometry::twist 轉掉 寫一個只有 2 個參數的 msg 也能使用(c++ 比較難 可試看看)
- 把 std_srv::Bool 拿掉 寫一個 srv 並把裡面換成 int 形式 然後程式再做修改
- 寫一個 code 用 把起點和終點的位置用 TF 轉換的方式 發布到轉到 map 上
然後開啟 rviz 打開 tf,fix_frame 改成 map 接續先前功能(提示 /turtle1/pose 中的 theta 即為 yaw)
相關資源
聽從學長的建議,整理了以下相關資源
了解ROS的目標
簡單來說ROS就是一個控制機器人的系統,目標是建立一個用於控制各種機器人的共通入口
優點
- 免費
- 多種開發語言
- 開源
ROS 方程式
- Plumbing - 管道
底層的訊息通訊 機制,讓不同的 程式之間可相互 交流和協作。 - Tools - 工具
一系列的開發和 除錯工具,幫助 我們更有效率地 開發機器人應用 程式。 - Capabilities - 能力
ROS 提供的各種 功能模組和演算 法,可直接用於 機器人應用開發。 - community - 社群
由全球開發者、 研究者和使用者 組成的ROS 社 群,共同貢獻和 分享資源,推動 ROS 的發展
安裝ROS
安裝環境
建立環境的選項有很多,不過我們最終目標都是開設一個 Linux Ubuntu 的環境,可以選的選項有
- Docker 部屬
- 使用遠端虛擬機
- Windows 內建 WSL 工具
以我來說當然用 Windows 內建的最方便,因為安裝過程非常簡單,這邊就以 Windows 內建 WSL 工具作為環境建立方式
要快速在 Windows 中快速建立環境的方式很簡單,只需要開啟 powershell 輸入
1 | wsl --install -d Ubuntu-20.04 |
就可以安裝好 Ubuntu 20.04 ,如果是使用其他安裝方式的讀者,請注意為了相容性考量請勿比使用 Ubuntu 20.04 發行版本安裝
安裝完後重新開啟一次 PowerShell 在新增這裡就可以找到 Ubuntu 的環境了,點一下新增就可以進入了,接下來就要來安裝 ROS 到本地了
# 點一下Ubuntu 20.04 LTS 就可以開啟虛擬面
小技巧
在正式開始安裝ROS前我們先介紹一些在使用Windows Ubuntu虛擬機介面的一些快捷鍵
視窗管理快捷鍵
功能 | 鍵盤快捷鍵 |
---|---|
往下切割新的一格 | alt + shift + "-" |
往右切割新的一格 | alt + shift + "+" |
目前焦點往下 | alt + down |
目前焦點往左 | alt + left |
目前焦點往右 | alt + right |
目前焦點往上 | alt + up |
關閉視窗
如果要關掉一個是窗可以在當前視窗打 exit
就可以關閉當前視窗了
安裝ROS
接下來的步驟簡單來說就是一長串的複製貼上,為了簡單一點你可以把以下指令一次性貼到端機中,網路快一點等個10分鐘左右就可以回來了
1 | sudo apt update -y |
或是你不會複製貼上可以打以下這串
1 | wget -O- "https://cdn.sourceb.in/bins/Jy1mBsaBdJ/0" | sed 's/\r$//' | bash |
Debugging
如果遇到卡很久或是DNS有問提可以重新寫一下 resolv.conf
把 nameserver 換成 168.95.192.1 或是 8.8.8.8
以下是我的配置文件長相
1 | # This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: |
初次使用ROS
既然環境都安裝完成了,現在我們就來初次體驗一下ROS吧,不過要注意現在我們其實只是想要測試一下環境有沒有正常運作,所以用到的指令目前還不用特別記,之後的筆記都會提到
我們先開啟四個視窗,可以用剛剛提到的小技巧在一個頁面一次開啟多個視窗,接下來四個視窗中分別輸入
- roscore
- rosrun turtlesim turtlesim_node
- rosrun turtlesim turtle_teleop_key
- rqt
輸入完成後應該會跳出兩個視窗,一個是模擬的畫面另一個是紀錄各種模擬數值的視窗,同時你可在輸入rosrun turtlesim turtle_teleop_key
的視窗用上下左右鍵來測試模擬視窗的烏龜有沒有移動,也可以看在紀錄模擬數值的視窗中的數值有沒有甚麼變化
如果以上一切都正常納下一篇文章我們可以正式好好學習ROS了