ros话题通信 《订阅信息》打印乌龟的运动信息, c++代码及详细操作步骤

实现的步骤

1.运行乌龟节点。
2.动行键盘控制节点。
3.运行编写的订阅乌龟位姿消息的节点。

编写订阅乌龟位置消息节点的流程

rostopic lsit

你将看到当前活跃的话题列表如下,我们需要的是 /turtle1/pose

/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

rostopic info /turtle1/pose

可以看到该话题的类型:rosmsg info turtlesim/Pose,发布者,订阅者。

rosmsg info turtlesim/Pose

以下是该类型的信息结构。

float32 x
float32 y
float32 theta
float32 linear_velocity
float32 angular_velocity

创建订阅消息的包

 catkin_create_pkg pakage_02 roscpp rospy std_msgs geometry_msgs turtlesim

在pakage_02/src中创建c++文件。代码如下。

#include "ros/ros.h"
#include "turtlesim/Pose.h"
void doPose(const turtlesim::Pose::ConstPtr &pose)
{
    ROS_INFO("POSITION:POINT:(%.2f,%.2f)WHERE(%.2f%),lv:%.2f av:%.2f",pose->x,pose->y,pose->theta,pose->linear_velocity,pose->angular_velocity);
}
int main(int argc,char*argv[])
{
    ros::init(argc,argv,"submsg");
    ros::NodeHandle nh;
    ros::Subscriber sub = nh.subscribe("/turtle1/pose",100,doPose);
    ros::spin();
    return 0;
}

最后在CmakeLists.txt中修改编译配置如下。

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

编下代码

catkin_make

启动rosmaster

roscore

启动乌龟

rosrun turtlesim turtlesim_node

启动乌龟键盘控制

rosrun turtlesim turtle_teleop_key

启动我们写的程序

rosrun pakage_02  sub_control_msg

用键盘控制乌龟动作时,你写节点可以订阅消息输出了。
运行时的结果展示!
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZUSTAND

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值