第四课4、ROS客户端

ROS客户端提供一些列库文件用于用户开发。

ROSCPP客户端(c++客户端)

首先新建一个包

然后catkin_make一下

在新建的包目录下,建立一个消息文件msg

然后需要生成消息foo.h以便以后我们可以调用,我们进入package.xml里面去修改,

然后再回到CMakeLists.txt中

下面编译一下,

下面来写一下代码:

我们以前已经写过了make文件,查看一下

有了这个文件,我们就可以在eclipse中打开这个工程,先执行一下这个文件:

下面打开eclipse

然后file->import,

下面要在src中写一个源文件,叫做move_publisher.cpp

再写一个move_subscriber.cpp

首先要控制turtlesim,他的话题topic是/turtle1/cmd_vel消息类型为geometry_msgs/Twist。

下面编写发布程序

/*  * move_publisher.cpp  *

*  Created on: Jan 16, 2017

*      Author: gary  */

#include<ros/ros.h> //消息的头文件

#include<geometry_msgs/Twist.h>

//一定要加命令行参数,argc指参数个数

//argv为具体的参数

int main(int argc,char **argv)

{

//初始化,move_publisher为节点名称

ros::init(argc,argv,"move_publisher");

//定义一个句柄

ros::NodeHandle n;

//定义一个发布者对象pub,指定需要的类型为geometry_msgs::Twist

//发布的主题为turtle1/cmd_vel,缓冲区大小为1000  ros::Publisher pub=n.advertise<geometry_msgs::Twist>("turtle1/cmd_vel",1000);

//实例化一个消息对象

geometry_msgs::Twist tw;

//并对它进行赋值,分别是角速度赋值

tw.angular.z=2;

tw.angular.x=0;

tw.angular.y=0;

//线速度赋值

tw.linear.x=2;

tw.linear.y=0;

tw.linear.z=0;

//上面消息结构已经定义了,下面发布这个消息

//指定发布频率,允许循环频率当前是10HZ,

ros::Rate rate(10);  //ros::ok()如果按下ctrl+c则它会返回一个false值

while(ros::ok())

{   //指定要发布的消息

pub.publish(tw);

//spin()是指在此处固定等待消息,进入循环

//spin_once()循环一次执行回调函数

ros::spin(); //要改成ros::spinOnce()才能正确运行

}

rate.sleep();

}

下面修改一下CMakeLists.txt,

添加一行

add_executable(move_publisher src/move_publisher.cpp)

以及

target_link_libraries(move_publisher
   ${catkin_LIBRARIES}
 )

保存一下,下面来编译,

catkin_make,编译正确后,运行一下

rosrun turtle_move move_publisher

下面再写一个订阅者:

把刚刚的消息加到订阅者里面来,也把发布者和接收者写到一起,

然后修改CMakeLists.txt

加入以下:

add_executable(move_subscriber src/move_subscriber.cpp)

target_link_libraries(move_publisher
   ${catkin_LIBRARIES}
 )

再进行编译

catkin_make,没有问题,之后运行之,正确。

下面再写一个计时器:

类似于创建一个主题订阅

然后在CMakeLists.txt里面再修改,

添加上

add_executable(timer src/timer.cpp)

target_link_libraries(timer
   ${catkin_LIBRARIES}
 )

然后编译正确,然后运行,结果也是正确的。

时间: 2024-10-12 13:02:12

第四课4、ROS客户端的相关文章

【Web探索之旅】第二部分第四课:数据库

内容简介 1.第二部分第四课:数据库 2.第二部分第五课预告:响应式网站 第二部分第四课:数据库 说到"数据库",顾名思义,是"数据的仓库"的意思. 所以数据库的一大作用就是储存数据咯. 为什么Web领域要有数据库呢? 数据库的英语是Database,简单来说可视为电子化的文件柜(存储电子文件的处所),用户可以对文件中的数据运行新增.截取.更新.删除等操作.它是以一定方式储存在一起.能为多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合. 关系型数据库

《ASP.NET SignalR系列》第四课 SignalR自托管(不用IIS)

接着上一篇:<ASP.NET SignalR系列>第三课 SignalR的支持平台 一.概述 SignalR常常依托于ASP.NET应用程序运行于IIS中,但它还可以自我托管(比如作为console winform.Windows service).只要我们使用self-host库就可以了. 该库向所有的SignalR 2库一样,构建于OWIN (Open Web Interface for .NET).OWIN定义了一个在.NET web 服务端和web 应用程序的抽象. OWIN解耦了从服

OpenGL教程翻译 第十四课 相机控制(一)

OpenGL教程翻译 第十四课 相机控制(一) 原文地址:http://ogldev.atspace.co.uk/(源码请从原文主页下载) Background 在之前的教程中我们学习了如何在三维场景中的任何地方放置相机.那么我们下一步就应该学着去控制这个相机.相机可以向任何方向自由移动.我们可以用鼠标和键盘控制相机--鼠标控制视口方向,键盘控制我们的位置.这些都和第一人称视角相似.这一章我们主要来学习鼠标和键盘的控制. 我们仍然使用上下左右四个方向键.记住,我们的相机的变换取决于位置.targ

Asp.Net Web API 2第四课——HttpClient消息处理器

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 Asp.Net Web API 导航   Asp.Net Web API第一课:入门http://www.cnblogs.com/aehyok/p/3432158.html Asp.Net Web API第二课:CRUD操作http://www

第四课 文件系统(下)

====================第四课 文件系统(下)==================== 一.sync/fsync/fdatasync------------------------ 1. 大多数磁盘I/O都通过缓冲进行, 写入文件其实只是写入缓冲区,直到缓冲区满, 才将其排入写队列. 2. 延迟写降低了写操作的次数,提高了写操作的效率, 但可能导致磁盘文件与缓冲区数据不同步. 3. sync/fsync/fdatasync用于强制磁盘文件与缓冲区同步. 4. sync将所有被修改

【连载】创业能力培训第四课总结

创业能力培训第四课总结 以一个故事开头: 老师问:3加4等于多少? 学生答:3加4等于8 老师说了3句话: 1.很好! 2.离答案很接近了哦! 3.还有没有人有别的答案? 表扬,保持其积极性. 具备什么样的条件才能创业 一.明确的创业动机和目标 1.人无我有 2.人有我优 3.人优我特 二.熟悉所要创业的领域(行业.市场.客户等) 三.一定的创业资源(部分即可) 四.一定的知识技能 五.拥有创业精神 创业3要素: 1.机会 2.资源 3.团队 团队: 1.才能互补 2.责任共担 3.共同的创业目

微积分重点 第一课至第四课

1.微积分是关于两个函数间关系的学问 例如, 距离与速度的关系  f(t)  --- df/dt 高度与斜率的关系  y(x)  ---- dy/dx 函数1--->函数2:   求斜率 函数2--->函数1:   求面积,乘以自变量 两条曲线不同,但是包含了相同的信息 函数2表示了函数1在某一瞬间的变化率 2.导数的总览和计算 三个重要的基本函数:幂函数 三角函数 指数函数 求导过程: Δy/Δx 无限逼近取极限 就得到了 dy/dx sinx 在零点处斜率逼近1, 在pi/2处斜率为零,

Linux云自动化运维第四课

Linux云自动化运维第四课 一.vim 1.vim光标移动 1)在命令模式下 :数字  ###移动到指定的行 G  ###文件最后一行 gg  ###文件第一行 2)在插入模式下 i  ###光标所在位置插入 I  ###光标所在行行首 a  ###光标所在字符的下一个位置 A  ###光标所在行行尾 o  ###光标所在行下一行 O  ###光标所在行上一行 s  ###删除光标所在字符插入 S  ###删除光标所在行插入 2.vim的退出模式 :q  ###当用vim打开文件但没有对字符作

【Cocos游戏实战】功夫小子第四课之功夫小子之设置功能和图籍场景的实现

转载请注明出处:http://blog.csdn.net/suool/article/details/46553463 本节课的视频教程地址是: 第四课在此 如果本教程有帮助到您,希望您能点击进去观看一下,而且现在注册成为极客学院的会员,验证手机号码和邮箱号码会赠送三天的会员时间,手机端首次也可以领取五天的会员时间哦(即使是购买年会员目前也仅仅是年费260),成为极客学院学习会员可以无限制的下载和观看所有的学院网站的视频,谢谢您的支持! 第三课我们学习了过渡场景和主开始菜单的分析和实现.这节课我