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系统 用Python或C++实现发布者Publisher
ROS服务端(Server)和客户端(Client)的python编程实现(保姆级教程)
点云发布(pointcloud_publisher)之ROS2案例