发布者publisher的编程实现

2021/9/8 17:06:13

本文主要是介绍发布者publisher的编程实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

首先肯定是创建功能包:

1.先把上一讲所做的test.pkg删除。

2.创建learning_topic(在src的目录下创建)

catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim

3.在learning_topic下的src里面敲代码:

/***********************************************************************
Copyright 2020 GuYueHome (www.guyuehome.com).
***********************************************************************/

/**
 * 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist
 */
 
#include <ros/ros.h>
#include <geometry_msgs/Twist.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())
	{
	    // 初始化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("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]", 
				vel_msg.linear.x, vel_msg.angular.z);

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

	return 0;
}

步骤是:

4.然后就需要开始编译.txt文件: 

打开txt文件。

把下面的代码放到install的上面

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

5.可以开始做编译工作了

在catkin目录下:

catkin_make(开始编译)

source devel/setup.bash(设置环境变量) 为了避免每次都输入此代码串,可以提前设置,在主文件夹下Ctrl+h显示隐藏文件.bahsrc,打开后在最后一排输入

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

打开终端

roscode

在打开海龟仿真器

rosrun turtlesim turtlesim_node

运行功能包:

rosrun learning_topic velocity.....tab键补齐



这篇关于发布者publisher的编程实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程