古月居 ROS 21 讲

3 发布者Publisher的编程实现

1)功能包的创建:
$ cd ~/catkin_ws/src
$ catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim

2)创建发布者代码(cpp)
如何实现一个发布者:

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

/*** 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist*/
//头文件
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>int main(int argc, char **argv)
{// ROS节点初始化,节点名字:velocity_publisherros::init(argc, argv, "velocity_publisher");// 创建节点句柄,管理ros相关的API资源ros::NodeHandle n;// 创建一个Publisher,发布速度指令,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度10 ,将要发布的数据放到队列里面,在根据实际发送能力再进行发送(类似于缓存,保证保存的10个数据是最新数据)。ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);// 设置while循环的频率(loop_rate)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;//角速度// 发布消息// 发布//ROS底层一系列通讯机制将数据压入队列,队列通过底层以太网ROStopic的TCP的通讯机制发出数据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);// 按照循环频率延时,根据while循环设置的10hz=100msloop_rate.sleep();}return 0;
}

3)编译代码

• 设置需要编译的代码和生成的可执行文件;
• 设置链接库;


插入到CMakeLists.txt

add_executable含义:
描述将which程序文件编译成which可执行文件
src/velocity_publisher.cpp编译成velocity_publisher

target_link_libraries含义:
描述将可执行文件将ROS相关的库做链接

$ cd ~/catkin_ws
$ catkin_make
$ source devel/setup.bash //执行之前一定要设置环境变量
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun learning_topic velocity_publisher

设置环境变量
ctrl+h打开 .bashrc
最后一行加入
source /home/ubuntu/catkin_ws/devel/setup.bash

小龟龟

古月居 ROS 21 讲3相关推荐

  1. 古月居 ROS 21 讲5

    古月居 ROS 21 讲 5.话题消息的订阅与使用 1)完成数据接口的定义:在learning topic中创建msg,打开终端设置 string name uint8 sex uint8 age u ...

  2. 古月居 ROS 21 讲1

    古月居 ROS 21 讲 1.ROS命令行工具的使用 以小海龟为例 打开三个终端,分别输入 roscore rosrun turtlesim turtlesim_node (二次输入tab) rosr ...

  3. 【古月居ROS 21讲】精简理清 - 速刷古月居ROS21讲 ROS概念全过程

    速刷古月居ROS21讲概念全过程 ROS的概念:对应第七讲 通讯机制 节点 (Node)-- 执行单元 节点管理器(ROS Master) 话题和消息 话题(Topic) -- 异步通信机制 消息(M ...

  4. 古月居 ROS 入门21讲--PA16 参数的使用与编程方法

    古月居 ROS 入门21讲--PA16 参数的使用与编程方法 1.参数模型 2.创建功能包 cd ~/catkin_ws/src catkin_create_pkg learning_paramete ...

  5. 古月居 ROS 入门21讲--PA18 tf坐标系广播与监听的编程实现笔记

    古月居 ROS 入门21讲--PA18 tf坐标系广播与监听的编程实现 1.创建功能包 cd ~/catkin_ws/src catkin_create_pkg learning_tf roscpp ...

  6. 古月居 ROS 入门21讲--PA17 ROS中坐标系管理系统笔记

    古月居 ROS 入门21讲--PA17 ROS中坐标系管理系统笔记 1.TF 功能包功能 ∙ \bullet ∙ 五秒钟之前,机器人头部坐标系相当于全局坐标系的关系是怎样的? ∙ \bullet ∙机 ...

  7. 古月居ROS入门21讲学习笔记P9

    古月居ROS入门21讲学习笔记P9 工作空间(workspace) 创建工作空间 创建功能包 实操 创建工作空间 创建功能包 老师在B站的原视频 链接: [古月居]古月·ROS入门21讲 | 一学就会 ...

  8. 古月居ROS入门21讲——9.创建工作空间与功能包

    1.工作空间 工作空间(workspace)直观的形容就是一个仓库,里面装载着ROS的各种项目工程,便于系统组织管理调用. src/: 源代码包 build/: 编译生成的中间文件 devel/: 开 ...

  9. 古月居 ROS入门21讲 第十二讲 话题消息的定义与使用

    古月居 ROS入门21讲 第十二讲 话题消息的定义与使用 Person.msg string name uint8 sex uint8 ageuint8 unknown=0 uint8 male=1 ...

  10. 古月居ROS入门21讲笔记

    ROS入门21讲笔记--古月居 1 C++&Python极简基础 1.1 安装编译/解析器 1.2 for循环 1.3 while循环 1.4 面向对象 2. ROS基础 2.1 ROS概念 ...

最新文章

  1. 《代码敲不队》第八次团队作业:Alpha冲刺 第二天
  2. Dockerizing a Node.js web app
  3. CCCatmullRomBy和CCPointArray
  4. Java 9:欢迎来到Module World
  5. R︱Rstudio 1.0版本尝鲜(R notebook、下载链接、sparkR、代码时间测试profile)
  6. python 列表有没有顺序_python的list有顺序吗
  7. idea关于mybatis去除黄色背景色与绿色背景
  8. 阶段3 2.Spring_10.Spring中事务控制_2 作业-基于注解的AOP实现事务控制及问题分析_上...
  9. 两段检验系统生成的identityHashCode是否重复的代码
  10. 基于genius框架的智能代理(intelligence agent)项目实战
  11. R 语言 | 计算可达矩阵
  12. python获取图片曲线数据_从图片中提取曲线坐标数据
  13. 常见的SSL证书错误代码及解决方法
  14. doxygen 教程 linux,使用Doxygen生成全中文的chm、pdf帮助文档的方法
  15. C++OpenCV矩形的角点检测与坐标提取,基于fast特征点
  16. 数据标注软件 【labelimg】
  17. 再挤牙膏 2018年英特尔八代酷睿处理器你仍会失望
  18. 打开viewer.jnlp文件
  19. Qt QSS之QSlider滑动条美化
  20. “2013大数据全球技术峰会”,我在现场(4月26日)!

热门文章

  1. 基于GAN的无线通信与网络应用设计----通信信号的特征提取
  2. Spring Security 4.X xml配置,草稿记录
  3. 【宽创案例】用友数字企业体验馆—企业展厅设计
  4. 寒哥带你深入了解下Swift中的Value Type
  5. 从福岛核事故看核能利用对海洋的影响
  6. 试一试Tyrant地牢生成算法
  7. 科大讯飞2012年实习生招聘信息[2012-04-05]
  8. csdn博客推荐系统实战-6关键词提取-TF-IDF,TEXTRANK
  9. 不错的免责声明,当义愤填膺又碍于河蟹Society的时候用得到
  10. 163源码网整站打包-NZ源码交易平台xunijiaoyi系统