温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python - Google Cloud Robotics communication
google-cloud-platform google-cloud-robotics python robotics

python - Google Cloud Robotics通讯

发布于 2020-05-27 10:31:24

我目前正在从事有关机器人技术的项目,我们正在使用Google Cloud Robotics Core,并且我了解与机器人(ROS 2)进行通信的最佳方法是使用声明性API。

我已经阅读了本教程,但我想了解更多信息。我向机器人发送订单的方式到底如何?

“创建代表订单的自定义资源定义(CRD)。通过创建自定义资源从云发送订单。在机器人上创建一个控制器,该控制器查看订单并执行订单”

如果我需要发送诸如“ init”,“ stop”,“ update your code”之类的命令,它可以工作吗?

谢谢你的帮助!

查看更多

提问者
Alejandro Chavez
被浏览
35
Rodrigo Queiro 2020-03-11 00:42

“更新代码”就是一个很好的例子。也许“ init”是不必要的,因为机器人可以在启动之前自动查找订单之前进行初始化。同样,您可以取消或删除任何现有订单,而无需创建“停止”订单,并且当机器人没有有效订单时,机器人将停止。

API的详细信息将在很大程度上取决于您的用例。理想情况下,订单将是独立的,因此即使中途失去网络连接,接收订单的机器人也可以执行订单。例如,我想改编本教程中的示例以反映您的建议:

apiVersion: example.com/v1
kind: Order
metadata:
  name: my-move-order
spec:
  moveItem:
    from: manufacturing
    to: logistics
    destinationAfterMove: waitingArea

要么

apiVersion: example.com/v1
kind: Order
metadata:
  name: my-update-order
spec:
  installUpdate:
    url: https://myproject.com/updates/2020-03-10.tar.gz

对于真实示例,您可以查看ewm-cloud-robotics项目:

我觉得应该警告一下:如果您具有良好的网络连接性,则声明性API可能会过大,在这种情况下,您可能更喜欢使用VPN和ROS2 actionlib。另外,如果您认为API对于metacontroller而言过于复杂,并且您想使用Python或Go以外的编程语言,则应考虑将订单存储在Redis或MySQL之类的数据库中,而不要使用Kubernetes apiserver(最后我检查过,除Python或Go之外,其他语言都没有很好的客户端支持。