本節代碼來自古月居的“ROS入門21講”
https://www.bilibili.com/video/BV1zt411G7Vn?p=10
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功能包之前添加環境變量