ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

发布者publisher的编程实现

2021-09-08 16:03:47  阅读:259  来源: 互联网

标签:publisher catkin msgs 编程 发布者 msg velocity vel ros


首先肯定是创建功能包:

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,catkin,msgs,编程,发布者,msg,velocity,vel,ros
来源: https://blog.csdn.net/jzh686/article/details/120180851

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有