筆記製作中

目前我也還在學習 ROS 中,之後慢慢有成過再放上來

學習目標

筆記的學習目標

  1. 直接在 terminal 用 rostopic pub -1 /turtle1/cmd_vel 和 rostopic pub -r 10 /turtle1/cmd_vel 的方式控制烏龜
  2. 用 pid 控制 twist 隨機 a 點到 b 點
  3. 用 rviz 上的 2D Nav Goal 給出點位 做判斷有沒有超出範圍 a 點到 b 點
  4. 接續 2. 的 code 新增一功能 寫一個暫停的 server (std_srv::Bool)
  5. 接續 3. 然後寫另一個 code 當按空白鍵的時候可以用 client call 3. 創立的 server 暫停小烏龜前進
  6. spin spinOnce c++ python 形式 都寫寫看 並看 rostopic hz 看看有哪些差異
    後續想好要用 python 或 c++ 寫一種就好
  7. 寫一個 roslaunch 一次啟動 2 個 node
  8. 把 geometry::twist 轉掉 寫一個只有 2 個參數的 msg 也能使用(c++ 比較難 可試看看)
  9. 把 std_srv::Bool 拿掉 寫一個 srv 並把裡面換成 int 形式 然後程式再做修改
  10. 寫一個 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 輸入

powershell
1wsl --install -d Ubuntu-20.04

就可以安裝好 Ubuntu 20.04 ,如果是使用其他安裝方式的讀者,請注意為了相容性考量請勿比使用 Ubuntu 20.04 發行版本安裝

安裝完後重新開啟一次 PowerShell 在新增這裡就可以找到 Ubuntu 的環境了,點一下新增就可以進入了,接下來就要來安裝 ROS 到本地了

how to open env
how to open env
點一下Ubuntu 20.04 LTS 就可以開啟虛擬面

小技巧

在正式開始安裝ROS前我們先介紹一些在使用Windows Ubuntu虛擬機介面的一些快捷鍵

視窗管理快捷鍵

功能 鍵盤快捷鍵
往下切割新的一格 alt + shift + "-"
往右切割新的一格 alt + shift + "+"
目前焦點往下 alt + down
目前焦點往左 alt + left
目前焦點往右 alt + right
目前焦點往上 alt + up

關閉視窗

如果要關掉一個是窗可以在當前視窗打 exit 就可以關閉當前視窗了

安裝ROS

接下來的步驟簡單來說就是一長串的複製貼上,為了簡單一點你可以把以下指令一次性貼到端機中,網路快一點等個10分鐘左右就可以回來了

Plain Text
1sudo apt update -y
2sudo apt upgrade -y
3cd ~/ && mkdir ROS_Setup
4cd ROS_Setup
5wget "https://cdn.sourceb.in/bins/bLPkJb6xck/0" -O install_ros_noetic.sh
6sudo apt install dos2unix && dos2unix -k -o install_ros_noetic.sh
7chmod 755 ./install_ros_noetic.sh
8bash ./install_ros_noetic.sh
9cd ~/
10sudo apt-get install -y ros-noetic-joy ros-noetic-teleop-twist-joy ros-noetic-teleop-twist-keyboard ros-noetic-laser-proc ros-noetic-rgbd-launch ros-noetic-rosserial-arduino ros-noetic-rosserial-python ros-noetic-rosserial-client ros-noetic-rosserial-msgs ros-noetic-amcl ros-noetic-map-server ros-noetic-move-base ros-noetic-urdf ros-noetic-xacro ros-noetic-compressed-image-transport ros-noetic-rqt* ros-noetic-rviz ros-noetic-gmapping ros-noetic-navigation ros-noetic-interactive-markers

或是你不會複製貼上可以打以下這串

Plain Text
1wget -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

以下是我的配置文件長相

YAML
1# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
2[network]
3generateResolvConf = false
4
5# Setting
6# nameserver 10.255.255.254
7nameserver 168.95.192.1
8nameserver 8.8.8.8

初次使用ROS

既然環境都安裝完成了,現在我們就來初次體驗一下ROS吧,不過要注意現在我們其實只是想要測試一下環境有沒有正常運作,所以用到的指令目前還不用特別記,之後的筆記都會提到

我們先開啟四個視窗,可以用剛剛提到的小技巧在一個頁面一次開啟多個視窗,接下來四個視窗中分別輸入

  • roscore
  • rosrun turtlesim turtlesim_node
  • rosrun turtlesim turtle_teleop_key
  • rqt

輸入完成後應該會跳出兩個視窗,一個是模擬的畫面另一個是紀錄各種模擬數值的視窗,同時你可在輸入rosrun turtlesim turtle_teleop_key的視窗用上下左右鍵來測試模擬視窗的烏龜有沒有移動,也可以看在紀錄模擬數值的視窗中的數值有沒有甚麼變化

如果以上一切都正常納下一篇文章我們可以正式好好學習ROS了