ROS筆記(六)
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/TwistPublishers:
* /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
結束~