ROS筆記(六)

Chien-lin.Tseng
My learning note
Published in
6 min readJul 5, 2019

2019年7月6日(六)

一、有關小烏龜畫直線、旋轉的教學 (難!!)
(目標是用小烏龜畫出三角形)

直線、旋轉程式的網站

二、烏龜畫直線 (就是上面網站的教學)

(1) 先做一些準備:先建立一個 package

cd ~/catkin_ws/src
catkin_create_pkg turtle_go geometry_msgs rospy
// 我把這個package的名字取作turtle_go
// geometry_msgs rospy是依賴項目
// geometry_msgs和消息有關
// rospy 和 python有關(這個程式是用python寫的)

然後 catkin_make 一下:

// 在 catkin_ws
catkin_make

這時候,我們的 turtle_go package裡面應該會有個src資料夾,我們接下來會在這個src資料夾內放置程式碼。

(2) 建立move.py

在 catkin_ws/src/turtle_go/src的位置下(就是那個src資料夾),建立move.py,並貼上以下程式:

並記得,要chmod

chmod +x move.py

(3) 分析程式

The geometry_msgs contains the variable type Twist that will be used.

我們可以確定一下/turtle1/cmd_vel 話題用的是什麼消息:

rostopic info /turtle1/cmd_vel
-----------------------------------------------
Type: geometry_msgs/Twist
Publishers:
* /robot_cleaner (http://daniel-Aspire-F5-573G:34581/)
Subscribers:
* /turtlesim (http://daniel-Aspire-F5-573G:40607/)
// 可以知道,/turtle1/cmd_vel 是使用Twist消息。

看一下 geometry_msgs/Twist消息的說明:

rosmsg show geometry_msgs/Twist
----------------------------------------------------
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z

我們可以知道:
The Twist message is composed by 3 linear components and 3 angular components. (重要!)

第七行的這段程式:

rospy.init_node('robot_cleaner', anonymous=True)// anonymous=True 是為了確保節點名字不會相同(它會在robot_cleaner後面加上亂碼,使他的名字獨一無二)

(4) 執行程式

roscore
rosrun turtlesim turtlesim_node

重點:

rosrun turtle_go move.py

就能跑了。

看一下rqt_graph:

robot_cleaner節點後面真的被加上了亂數。

(5) 有關 roslaunch的測試 (我自己測測看的)

在 turtle_go 底下 創一個 launch資料夾:

roscd turtle_go
mkdir launch

進入launch 資料夾,創一個 turtle_draw.launch
程式如下:

pkg是我package的名稱。

type是打上 move.py (檔名),這裡我試了一陣子。不是打robot_cleaner。
(重要!!!!)

name是 我自己取的節點名稱,這裡我取作 here_turtle。

(6) 承(5),執行程式

roscore
rosrun turtlesim turtlesim_node

roslaunch turtle_go turtle_draw.launch

可以跑了~

看一下rqt_graph:

節點名稱已經改的和name一樣了。

三、烏龜旋轉

(1) 直接參考教學:

四、python 操作指令

(1) 目前:

chmod +x total.py
rosrun turtle_go total.py

五、烏龜走四邊形

(1) 建立 total.py (建立在 /catkin/src/turtle_go/src)

程式功能:可以使烏龜走一個正方形。

程式:

(2) 執行 total.py

chmod +x total.py
roscore
rosrun turtlesim turtlesim_node
rosrun turtle_go total.py

結束~

--

--