我想用Python脚本控制四旋翼飞机,并不仅以实时方式,以笔记本电脑的最快速度运行模拟。我已经修改了世界,现在仿真以7-10的实时因子运行。

我的问题是,演完戏后,我希望物理运行一定数量的模拟时间,但是如果我这样做,则睡眠是实时的,这是模拟时间的7到10倍。所以我需要知道Python中的实时因素来划分睡眠时间。有办法吗?

评论

我建议在程序开始时记录机器时间并跟踪仿真时间,然后可以在每次迭代时将它们进行比较

感谢N. Staub,您的解决方案并不完美,但是足够好

#1 楼

@k在ROS中使用时间的正确方法通常是使用ros :: Time抽象和/ clock主题。这样,您可以模拟和实时使用同一程序。您的模拟器程序应该是在/clock上发布的程序。
尝试访问实时因素非常不必要。

评论


$ \ begingroup $
如何使用ros :: Time和/ clock使我的python脚本在5秒钟的模拟时间内进入睡眠状态?
$ \ endgroup $
–kno
18年8月23日在9:30

$ \ begingroup $
wiki.ros.org/rospy/Overview/Time#Sleeping_and_Rates:rospy.sleep(5。)(假设您的模拟器将模拟时间发布在/ clock上)
$ \ endgroup $
– al-dev
18年8月23日在10:28

$ \ begingroup $
但这将使仿真停止5秒钟的仿真时间,而不是我的脚本。我希望我的代码在模拟时间内停止5秒钟。我正在按照本教程进行操作:linkedin.com/pulse/using-openai-gym-ros-ricardo-tellez那里,控制器选择一个动作,将其发送到ROS,取消暂停仿真,休眠一段时间,然后再次暂停ROS。它仅在ROS实时工作时才有效。
$ \ endgroup $
–kno
18年8月24日在7:42



$ \ begingroup $
@k对不起,我感到困惑。您说:“我希望我的代码在模拟时间内停止5秒钟。”正是rospy.sleep(5。)所做的。您能给我们一些示例代码来了解您要实现的目标吗?
$ \ endgroup $
– al-dev
18年8月24日10:00