我如何把2个立方体变成第三个立方体在网络机器人?



我正在尝试模拟一个组装工厂。其中,几个机器人收集必要的部件(物体A &B)把它们放在组装台上。Once A &B都在组装表上,我想要一个事件来触发转换A &这个事件可以是自动的,也可以通过键盘输入触发。对象A &B应该消失,对象C应该在一个特定的坐标生成。

我目前有接地&搬运物体的手臂机器人B到装配台上,但我现在只有这些了。地面机器人是远程控制的(Webot的Khepera 1 TCP/IP模型),所以时间总是不同的。

我的主要问题:我如何删除对象A &B和刷出对象C基于一个事件在模拟?

附带问题:当两个对象A &B在桌子上吗?

要实现这一点,最好的方法可能是使用监视模拟的Supervisor控制器。它将跟踪对象A和B的位置,并根据它们的X、Y、Z坐标确定它们是否在桌子上。要了解如何跟踪对象的位置,您可以遵循本教程。

那么,你有两种可能性,第一种更现实,第二种更容易实现,执行速度更快。

  1. 当对象A和B彼此足够接近和/或发生某些事件时,您可以让管理进程删除对象A和B。要删除它们,您应该首先使用wb_superor_node_get_root获取场景的根节点,使用wb_superor_node_get_field获取其子字段,然后使用wb_superor_field_remove_mf从根节点的子节点列表中删除A和B节点。然后,您必须在A和b的位置插入C对象。要实现这一点,您应该使用wb_superor_field_import_mf_node_from_string并传递一个包含节点C描述的字符串(可以是PROTO)。

  2. 与其删除和插入对象A、B和C,不如移动它们更简单、更有效。移动对象非常简单,并在本教程中进行了解释。从一开始,你的场景应该包括物体A, B和C,但C应该最初非常远(如几公里远),所以它不会被看到。当你需要将A和B变成C时,只需将A和B移到很远的地方,使它们不再可见,并将C移到A和B的先前位置