ROS学习笔记(8)进一步深入了解ROS第二步

发布时间:2024年01月03日

0.前提

????????在上一讲中我提到过该系列是基于宾夕法尼亚大学工程学院的ROS公开课,系列文章将来源于公开课中的课后习题。该系列可以很好的帮助大家更加深入的了解ROS的一些概念。(有效面对HR的提问。)

1. (C++)What is a nodehandle object? Can we have more than one nodehandle objects in a single node?(节点句柄是什么?能有多个节点句柄在一个节点中吗?)

1.What is a nodehandle object?(节点句柄是什么?)

回答:ros::NodeHandle有两个用途——1.提供roscpp程序中内部节点的启动和关闭;2.提供了额外的命名空间解析层,让编写组件更方便(换个说法就是节点句柄就像是节点上的门把手,节点就是那个门)。

2.Can we have more than one nodehandle objects in a single node?(能有多个节点句柄在一个节点中吗?)

回答:顺着上边的回答,我们将节点理解成一个门,节点句柄理解为门把手,那我们就能很快的知道一个门上可以有多个门把手。

3.答案来源

本题答案来源于官方文档:roscpp/Overview/NodeHandles - ROS中文Wiki

2. (Python) Is there a nodehandle object in python? What is the significance of rospy.init node()?(在rospy中有节点句柄吗?rospy.init node()有什么作用?)

1.Is there a nodehandle object in python?(在rospy中有节点句柄吗?)

回答:没有。在rospy中并不需要创建节点句柄。

2.What is the significance of rospy.init node()?(rospy.init node()有什么作用?)

回答:rospy.init node()是用于初始化ROS节点,在rospy中只能有一个节点,所以rospy.init node()也只能调用一次。

3.答案来源

本题答案来源于官方文档:rospy/概述/初始化和关闭 - ROS Wiki

3. (C++)What is ros::spinOnce()? How is it different from ros::spin()?(什么是ros::spinOnce()?ros::spinOnce()和ros::spin()间有什么区别?)

1.What is ros::spinOnce()?(什么是ros::spinOnce()?)

回答:ROS消息的回调函数。

2.How is it different from ros::Spin()?(ros::spinOnce()和ros::spin()间有什么区别?)

回答:ros::spinOnce()进行信息回调后可以执行后续程序;ros::spin()进行信息回调后不会执行后续程序。

3.答案来源

本题答案来源于官方文档:roscpp/概述/回调和旋转 - ROS Wiki

4. (C++)What is ros::rate()? (ros::rate()是什么?)

回答:循环速率函数,控制消息循环速率的。

本题答案来源于官方文档:roscpp/Overview/Time - ROS中文

5. (Python) How do you control callbacks in python for the subscribers? Do you need spin() or spinonce() in python?(在rospy当中如何回调订阅者的消息?是用spin()还是用spinOnce()?)

回答:在rospy当中不存在rospy::spinOnce(),所以只能用ros::spin()

本题答案我在官方文档当中并未找到相关解释。但我在官方代码中得到如下解释:

# spin() simply keeps python from exiting until this node is stopped

rospy::spin()在rospy程序停止前都不会停止。

文章来源:https://blog.csdn.net/weixin_75067193/article/details/135356898
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。