天天看點

【ROS入門21講】釋出者Publisher的程式設計使用【ROS入門21講】釋出者Publisher的程式設計使用

【ROS入門21講】釋出者Publisher的程式設計使用

本文章是針對bilibili古月居up的【ROS入門21講】所作的筆記,筆記從第8講開始,主要記錄一些關鍵内容友善查閱。

視訊連接配接:【ROS入門21講】

課件及源碼:

連結: https://pan.baidu.com/s/1UUGTN1DI-2eCeRc80OUKcg?pwd=e23b

提取碼: e23b

————————————————

【ROS入門21講】釋出者Publisher的程式設計使用【ROS入門21講】釋出者Publisher的程式設計使用

ROS Master首先對Publisher與Shubscriber進行注冊;

Publisher通過Topic話題與與Subscriber進行通訊;

Message用于指定通信資料的類型;

以小海龜為例

我在這裡與視訊不同,使用的vscode + ros。

1、初始化工作空間,這裡就不細講了,具體請我的另一篇部落格:【ROS】VSCODE + ROS 配置方法(總結了多篇)。

2、建立功能包

roscpp rospy std_msgs geometry_msgs turtlesim

3、建立釋出者代碼(C++):

#include "ros/ros.h"
#include  "geometry_msgs/Twist.h"

int main(int argc,char **argv)
{
	// 1
    ros::init(argc,argv,"velocity_publisher");
    ros::NodeHandle n;
	// 2
    ros::Publisher pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);
    ros::Rate r(10);
    int count = 0;
    while (ros::ok())
    {
        geometry_msgs::Twist vel_msg;
        vel_msg.linear.x = 0.5;
        vel_msg.angular.z = 0.2;

        pub.publish(vel_msg);
        ROS_INFO("command[%0.2f m/s,%0.2f rad/s]",vel_msg.linear.x,vel_msg.angular.z);
        r.sleep();
    }
    return 0;
}
           

注意:

1、“velocity_publisher”,必須是這個;

2、"/turtle1/cmd_vel",必須是這個;

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

添加到CMakeLists.txt中

add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
           

配置号task.json檔案後,ctrl + shfit +b編譯出可執行檔案

5、vscode運作publisher

所有指令都是通過ctrl + shfit + p完成,代替了終端。

  • 執行ctrl + shfit + p,輸入ROS:Start啟動ROSMaster。
  • 執行ctrl + shfit + p,輸入ROS:Run a executable,然後輸入turtlesim,然後輸入turtlsim_node。目的啟動小海龜節點。
  • 執行ctrl + shfit + p,輸入ROS:Run a executable,然後輸入編譯出的可執行檔案。
  • 就可以在終端看到小海龜畫圈了。
    【ROS入門21講】釋出者Publisher的程式設計使用【ROS入門21講】釋出者Publisher的程式設計使用