天天看点

【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的编程使用