代码拉取完成,页面将自动刷新
提供检测建图是否完成的方法。
这种方法检测rospy的时间的改变。如果时间不再变化则说明建图已经完成。在end.py中提供了一种简单的方法来判断。当建图完成时,该文件会打印出end
并退出。
在该python文件中,主要使用rospy.get_time()
来获取时间。同个两个时间变量prev
和cur
来判断时间是否发生改变。通过time.sleep
来减缓检测频率。开始的time.sleep()
则是提供时间间隔,避免刚开始时的两个时间判断prev
和cur
相同。
主要函数为:
def listener():
rospy.init_node('listener', anonymous = True)
prev = rospy.get_time()
time.sleep(1)
while not rospy.is_shutdown():
print(str(prev)+': RUNNING')
try:
cur = rospy.get_time()
except(tf.LoopupException, tf.ConnectivityException, tf.ExtrapolationException):
continue
if prev == cur:
print('end')
sys.exit(0)
prev = cur
time.sleep(2)
roscore
这种方法是一种替代方法,并非直接检测建图是否完成,而是检测roscore
是否在线。可以在建图完成后通过关闭roscore
来完成指令的传输。(编译环境基于python)
以下方法均可以获得Master的信息,信息类似于以下list
格式:
[1,'',5763]
如果报错,则说明连接不到Master。当关闭roscore
后,会出现socket.error
:
socket.error: [Error 111] Connection refused
rospy
来检测import rospy
try:
rospy.get_master().getPid()
print('正在运行')
except:
print('已关闭')
import os
import xmlrpclib
try:
xmlrpclib.ServerProxy(os.environ['ROS_MASTER_URI']).getPid('/your_name')
print('正在运行')
except:
print('已关闭')
ROS 0.10
来检测:from roslib.masterapi import Master
try:
Master('/yourname').getPid()
print('正在运行')
except:
print('已关闭')
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。