ROS发布者Publisher的编程实现

Posted 等不到星光等时光呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ROS发布者Publisher的编程实现相关的知识,希望对你有一定的参考价值。

话题类型

在这里插入图片描述
在这之前需要把工作空间创建号好,没有创建的可以参考如下文章。
ROS创建工作空间
我们这里使用的就是使用该文章创建的工作空间。

下面进入正题

创建功能包:

在src目录下,创建功能包。

在这里插入图片描述

catkin_create_pkg learning_topic std_msgs roscpp rospy geometry_msgs turtlesim

在这里插入图片描述

代码的编写

在功能包中的src文件夹下,创建velocity_publisher.cpp,编写代码:

实现方法:

初始化ROS节点;
向ROS Master注册节点信息,包括发布者的话题名和话题中的消息类型;
创建消息数据;
按照一定频率循环发布消息;

//该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist

#include <geometry_msgs/Twist.h>
#include <ros/ros.h>

int main(int argc, char **argv)
{
        //ROS节点初始化,引号中的为节点的名字
        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<geometry_msgs::Twist>("/turtle1/cmd_vel",10);

        //设置循环的频率
        ros::Rate loop_rate(10);

        int count = 0;

        while(ros::ok())
        {
                //初始化gemetry_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("Pubsiher turtle velocity command[%0.2f m/s,%0.2f ran/s]",vel_msg.linear.x,vel_msg.angular.z);

                //按照循环频率延时
                loop_rate.sleep();
        }

        return 0;
}

在这里插入图片描述
之后打开src/learning_topic下的CMakeList.txt文件
在这里插入图片描述

在该文件中加入如下俩句

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

在这里插入图片描述

在这里插入图片描述

编译并运行

在这里插入图片描述
在carkin_ws 目录下输入:

catkin_make

在这里插入图片描述
出现如图所示说明编译成功。

之后进行环境变量的设置

可以输入:

source devel/setup.bash

在这里插入图片描述
进行环境变量的设置,但是每次要使用是就需要环境变量的设置,这样很麻烦,也容易忘记,所以我们配置一下,让其自动设置。方法如下:

首先,打开文件夹,按下“Crtl+H”后,会显示隐藏文件,之后打开.bashrc
在这里插入图片描述
加入一句:

source /home/ypf/catkin_ws/devel/setup.bash

那个ypf是用户名。
在这里插入图片描述
保存退出即可。

验证发布是否成功

在这里插入图片描述

一次输入如上图的三句话,小海龟就会沿着圆圈运动。
在这里插入图片描述

以上是关于ROS发布者Publisher的编程实现的主要内容,如果未能解决你的问题,请参考以下文章

ROS订阅者Subscriber的编程实现

ROS系统 用Python或C++实现发布者Publisher

ROS服务端(Server)和客户端(Client)的python编程实现(保姆级教程)

点云发布(pointcloud_publisher)之ROS2案例

点云发布(pointcloud_publisher)之ROS2案例

ROS编程基础发布者节点的创建和运行