ros订阅话题python_ROS:话题编程订阅者Subscriber的简单
实现
1.(1)编写⼀个C++话题订阅者
/**
* 该例程将订阅/turtle1/po话题,消息类型turtlesim::Po
*/
#include #include "turtlesim/Po.h"
// 接收到订阅的消息后,会进⼊消息回调函数
void poCallback(const turtlesim::Po::ConstPtr& msg)
{
// 将接收到的消息打印出来
ROS_INFO("Turtle po: x:%0.6f, y:%0.6f", msg->x, msg->y);
}
春节简介英语
int main(int argc, char **argv)
{
// 初始化ROS节点
ros::init(argc, argv, "po_subscriber");
// 创建节点句柄
ros::NodeHandle n;
// 创建⼀个Subscriber,订阅名为/turtle1/po的topic,注册回调函数poCallback
ros::Subscriber po_sub = n.subscribe("/turtle1/po", 10, poCallback);
花里胡哨的意思// 循环等待回调函数
ros::spin();
return 0;
}
暗恋桃花源电影(2)编写⼀个Python话题订阅者
#!/usr/bin/env python
# -*- coding: utf-8 -*-
乔佩娟# 该例程将订阅/turtle1/po话题,消息类型turtlesim::Po
import rospy
from turtlesim.msg import Po
def poCallback(msg):
rospy.loginfo("Turtle po: x:%0.6f, y:%0.6f", msg.x, msg.y)
def po_subscriber():
# ROS节点初始化
rospy.init_node('po_subscriber', anonymous=True)
# 创建⼀个Subscriber,订阅名为/turtle1/po的topic,注册回调函数poCallback张梦竹
利润管理rospy.Subscriber("/turtle1/po", Po, poCallback)
# 循环等待回调函数
rospy.spin()
if __name__ == '__main__':
po_subscriber()
总结:
1.初始化ROS节点测试工作
2.订阅需要的话题
3.循环等待消息,接收消息后进⼊回调函数
4.在回调函数完成消息处理设备铭牌
2.配置订阅者代码编译规则(c++)
打开包⽬录下的:
设置需要编译的代码和⽣成可执⾏⽂件 add_executable(po_subcriber src/po_subcriber.cpp)设置链接库 target_link_libraries(po_subcriber ${catkin_LIBRARIES})
3.编译并运⾏发布者