機器人操作系統ROS學習實戰篇之------讓小烏龜畫矩形


繼續研究ROS,今天的主題是編寫節點讓小烏龜畫簡單的幾何圖形。

主要參考這位老兄的博客https://blog.csdn.net/IMBA_09/article/details/84950696

1:進入工作空間

1 cd catkin_ws/src                            #進入工作空間
2 catkin_create_pkg my_turtle_package rospy roscpp         #新建my_turtle_package

2:節點代碼

1 cd my_turtle_package/src/    
2 touch draw_rectangle.cpp

在打開的新文件中代碼如下:

 1 #include <ros/ros.h>
 2 #include <geometry_msgs/Twist.h>
 3 #define PI 3.14159265358979323846
 4  
 5 int main(int argc, char **argv){
 6   ros::init(argc, argv, "draw_rectangle");   //"draw_rectangle"必須是nodename
 7   std::string topic = "/turtle1/cmd_vel"; //topic name
 8   ros::NodeHandle n;
 9   ros::Publisher cmdVelPub = n.advertise<geometry_msgs::Twist>(topic, 1);
10   //第一個參數也可以寫成"/turtle1/cmd_vel"這樣的topic name
11   //第二個參數是發布的緩沖區大小,<geometry_msgs::Twist>是消息類型
12   ros::Rate loopRate(2);
13   //與Rate::sleep();配合指定自循環頻率
14   ROS_INFO("draw_retangle start...");//輸出顯示信息
15   geometry_msgs::Twist speed; // 控制信號載體 Twist message
16 //聲明一個geometry_msgs::Twist 類型的對象speed,並將速度的值賦值到這個對象里面
17   int count = 0;
18   while (ros::ok()){
19     speed.linear.x = 1; // 設置線速度為1m/s,正為前進,負為后退
20     speed.linear.y = 0;
21     speed.linear.z = 0;
22     speed.angular.x = 0;
23     speed.angular.y = 0;
24     speed.angular.z = 0; 
25     count++;
26     while(count == 5)
27     {
28         count=0;
29         speed.angular.z = PI; //轉90°
30     }
31     cmdVelPub.publish(speed); // 將剛才設置的指令發送給機器人
32     ros::spinOnce();//調用此函數給其他回調函數得以執行
33     loopRate.sleep();//按loopRate(2)設置的2HZ將程序掛起
34   }
35  
36   return 0;
37 }

在terminal中繼續輸入下面的命令:

1 cd ~/catkin_ws/src/my_turtle_package
2 gedit CMakeLists.txt

用gedit打開CMakeLists.txt文件,然后找到##Declare a C++ executable,在這一行的前面或者后面添加如下內容:

1 add_executable(draw_rectangle src/draw_rectangle.cpp)
2 target_link_libraries(draw_rectangle ${catkin_LIBRARIES})

添加完以上內容后我們保存並退出CMakeLists.txt文件。然后在terminal中繼續輸入如下命令進行編譯:

1 cd ~/catkin_ws/
2 catkin_make

一切順利的話就會編譯成功,接下來就可以讓小烏龜來畫矩形了。

3:啟動節點

打開第一個terminal終端,啟動ros

1 roscore

打開第二個terminal終端,啟動rosnode

rosrun turtlesim turtlesim_node

 

打開第三個terminal終端,啟動my_turtle_package節點

1 cd  ~/catkin_ws/
2 source devel/setup.bash 
3 rosrun my_turtle_package draw_rectangle

 此時我們可以看到小烏龜已經在畫矩形了,如果按下Ctr+C退出節點,小烏龜也停止了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM