в настоящее время я пишу узел операционной системы робота (ros) на python. Я хочу создать цикл while, который, с одной стороны, принимает пользовательский ввод, но может продолжаться, если пользовательский ввод недоступен.
Идея следующего фрагмента заключается в том, что этот python-скрипт всегда предлагает «старт» или «стоп». Другой узел прослушивает, какая строка будет опубликована. Пользователь должен иметь возможность вводить 0 или 1 во время выполнения, чтобы переключить флаг.
Вот мой код на питоне:
def main():
pub = rospy.Publisher('/start_stop', String, queue_size=10)
rospy.init_node('start_stop', anonymous = True);
rate=rospy.Rate(10) # 10hz
pubStr = "Start"
while not rospy.is_shutdown():
try:
input = raw_input()
if input == "0":
pubStr = "Stop"
elif input == "1":
pubStr = "Start"
except:
rospy.sleep(0.1)
rospy.loginfo(pubStr)
pub.publish(pubStr)
rate.sleep()
if __name__ == '__main__':
main();