假设我有以下内容:
action_client.cancel_all_goals()
print(action_client.get_status() != 'ACTIVE')
上述保证每次都打印True
吗?
换句话说,SimpleActionClient.cancel_all_goals()
在返回之前取消所有目标,还是仅发送指令
取消目标而不等待真正的目标?
答案 0 :(得分:0)
action_client.cancel_all_goals()
只需发送取消目标的指示,而无需等待。
由于该方法的文档不是很有用,您需要查看action_client.h或action_client.py以了解最新情况。
代码显示,要取消所有目标,只会发布一条简单的消息(self.pub_cancel.publish(cancel_msg)
或self.pub_cancel.publish(cancel_msg)
)。这意味着调用是异步的,不会阻塞。
这意味着您的代码
action_client.cancel_all_goals()
print(action_client.get_status() != 'ACTIVE')
通常会打印False
,但无法保证,因为:
PREEMPTED
,ABORTED
,......之前cancel_all_goals
和get_status
的调用之间取消