天天看點

ros 釋出資訊頻率_ROS學習筆記(五)--釋出者的程式設計實作

ros 釋出資訊頻率_ROS學習筆記(五)--釋出者的程式設計實作

本節代碼來自古月居的“ROS入門21講”

https://www.bilibili.com/video/BV1zt411G7Vn?p=10

ros 釋出資訊頻率_ROS學習筆記(五)--釋出者的程式設計實作

1.先用$catkin_create_pkg指令在~src建立一個功能包,功能包名字後面要跟依賴 例如geometry_msgs

2.在功能封包件夾中的src中添加cpp或py檔案

3.編輯cpp檔案

//包含頭檔案

#include

#include

//節點初始化

ros::init(argc, argv, "velocity_publisher");

// 建立節點句柄

ros::NodeHandle n;

// 建立一個Publisher,釋出名為/turtle1/cmd_vel的topic,消息類型為geometry_msgs::Twist,隊列長度10

ros::Publisher turtle_vel_pub = n.advertise<:twist>("/turtle1/cmd_vel", 10);

// 設定循環的頻率

ros::Rate loop_rate(10);

// 初始化geometry_msgs::Twist類型的消息

geometry_msgs::Twist vel_msg;

vel_msg.linear.x = 0.5;

vel_msg.angular.z = 0.2;

// 釋出消息

turtle_vel_pub.publish(vel_msg);

ROS_INFO("Publish turtle velocity command[%0.2f m/s, %0.2f rad/s]",

vel_msg.linear.x, vel_msg.angular.z);//類似printf函數

loop_rate.sleep();//延時100ms

4.配置釋出者代碼編譯規則

在build下面添加

add_executable(xx src/xx.cpp) //可執行檔案/需要編譯的代碼

target_link_libraries(xx ${catkin_LIBRARIES}) //設定連結庫

5.編譯并運作釋出者

詳情看前一期筆記

運作功能包時 用rosrun +功能包+可執行檔案名

總結:

如何實作一個釋出者:

1、初始化ROS節點

2、向ROS Master注冊節點資訊,也就是建立節點句柄,指定釋出的話題名、消息類型

3、添加消息資料

4、按照一定頻率發消息

記得在CMakeList.txt中添加編譯規則

記得在run功能包之前添加環境變量