ROS实操入门系列(二)小乌龟操控原理及代码控制小乌龟走圆形路线(Topic干货警告!!!) |
您所在的位置:网站首页 › 有趣的程序代码及结果 › ROS实操入门系列(二)小乌龟操控原理及代码控制小乌龟走圆形路线(Topic干货警告!!!) |
ROS实操入门系列(二) 小乌龟操控原理及代码控制小乌龟走圆形路线
Topic通讯概念Publisher实现Subscriber实现小乌龟介绍调试工具操控小乌龟代码操控小乌龟https://www.lanqiao.cn/courses/2947,提供准备好的云主机ros环境,进行实操,课程包括了 Topic 通讯, Service 通讯,ROS 自定义消息,URDF可视化,TF坐标转换等技术要点。每个技术点都会结合例子先把原理讲解清楚,为了达到学以致用的目的,我们会再进行知识拓展,针对每个技术点实现对应的生动有趣的需求,保证学完后会有很大的收获。
Topic通讯概念
ros整个框架下,我们开发大量的节点,节点间需要有数据的交互,数据该如何交互,这个是ROS要解决的问题,也是核心问题。多个Node节点都需要到ROS Master进行注册。每个Node完成自己的功能逻辑。有的时候Node和Node间需要有数据的传递,这个时候ROS提供了Topic通讯机制。 Node间进行通讯,其中发送消息的一方,ROS将其定义为 Publisher(发布者) ,将接收消息的一方定义为 Subscriber(订阅者) 。考虑到消息需要广泛传播,ROS没有将其设计为点对点的单一传递,而是由 Publisher 将信息发布到 Topic(主题) 中,想要获得消息的任何一方都可以到这个 Topic 中去取数据。 创建发布者:publisher = rospy.Publisher(topic_name, String, queue_size=1000) 第一个参数为topic名称,第二个参数为发 布的消息类型,第三个参数为tipic中消息队列最多的数量。(ros编码环境参考上一章) 通过rostopic工具进行调试发布者 (也可以通过rqt_topic进行调试) 查看所有的主题 rostopic list 打印主题所发布的信息 rostopic echo /my_topic创建订阅者: rospy.Subscriber(topic_name, String, topic_callback), topic_callback实现订阅回调 调试订阅者 查询主题所需要的数据类型 rostopic type /my_topic 打印出 std_msgs/String 模拟发布数据 rostopic pub topic名称 topic数据类型 topic数据 参数 rostopic pub /my_topic std_msgs/String hello_aaa -r 1运行上面的Subscriber代码,打印出主题订阅到的信息 同时运行Subscriber和Publisher,完成进行数据的发布和订阅 rosrun hello_topic publisher.py rosrun hello_topic subscriber.py启动小乌龟模拟器节点 rosrun turtlesim turtlesim_node启动小乌龟键盘输入节点 ,启动完成后,可以通过键盘输入操控小乌龟移动。键盘操控时,光标一定要在命令行上。 rosrun turtlesim turtle_teleop_key小乌龟操控原理 (1) 小乌龟启动过程中,我们启动了两个节点:turtlesim_node和turtle_teleop_key 。可以通过命令查看当前的启动的节点: rosnode list(2) 通过rosnode命令可以查看小乌龟节点 /turtlesim节点的详情 rosnode info /turtlesim ---------------------------------------------- rosnode info命令可以查看当前节点的一些信息 Publications:此节点上定义的发布者 Subscriptions:此节点上定义的订阅者 Services:此节点上定义的服务 进程id,占用的网络端口 Connections: 此节点和其他节点间的连接信息
(5) 可视化工具查询节点关系(rqt_graph工具提供了可视化的工具方便我们查看这种节点间的关系) rosrun rqt_graph rqt_graph ---------------------------------------- 图像显示:/teleop_turtle通过主题/turtle1/cmd_vel给/turtlesim进行数据传递。 /teleop_turtle为具备Publisher功能的节点。 /turtlesim为具备Subscriber功能的节点。 /turtle1/cmd_vel为publisher和subscriber通讯的主题。![]() ![]() ![]() ![]() 至此小乌龟操控就到这里了,有问题请多指正。互相学习、共同努力,期待我的下一篇文章 https://www.lanqiao.cn/courses/2947,提供准备好的云主机ros环境,进行实操,课程包括了 Topic 通讯, Service 通讯,ROS 自定义消息,URDF可视化,TF坐标转换等技术要点。每个技术点都会结合例子先把原理讲解清楚,为了达到学以致用的目的,我们会再进行知识拓展,针对每个技术点实现对应的生动有趣的需求,保证学完后会有很大的收获。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |