NAO团队任务——阻塞和非阻塞调用

本文介绍了NAO机器人在连接和任务执行中的阻塞与非阻塞调用概念。通过实际任务,展示了如何让虚拟NAO机器人移动并同步执行语音任务。同时,文中提醒了在编程过程中应注意的错误处理和连接问题。
摘要由CSDN通过智能技术生成

机器人连接

示例:

from naoqi import ALProxy
motion = ALProxy('ALMotion', '127.0.0.1', 9559)

上述代码中,ALProxy类用于创建模块的代理对象。ALMotion是运动模块,‘127.0.0.1’, 9559分别为IP和端口号。
虚拟机器人的默认IP和端口号为’127.0.0.1’, 9559。
若是实体机器人,可以在choregrahe中查看:在这里插入图片描述
连接→连接至,就会出现窗口:在这里插入图片描述
选择固定IP地址连接时,端口号默认9559

同时,也可以选择固定端口号连接,端口号查询方法:
编辑→首选项→虚拟机器人
在这里插入图片描述
这里,端口号就是52552。

阻塞和非阻塞调用

NAOqi的方法从调用时间上看大体可以分为两类,如读传感器状态getData()方法(属于ALMemory模块)可以很快完成,而让机器人移动到某个位置的move()方法(属于ALMotion模块)要执行很长时间。在move()方法调用过程中,机器人可能还需要做其他的事,如用“眼睛”看,或者“说话”,因此,在调用move()方法时,还需要同时调用其他方法。NAOqi提供了如下两种调用方式。
(1)阻塞调用。阻塞调用是指调用结果返回之前,调用者回进入阻塞状态等待。只有在得到结果之后才会返回。也就是说,在顺序结构的程序中,只有在前一个调用结束后才能执行下一条语句。
所有的阻塞调用都可以引发异常,应该使用try-catch结构捕获异常。调用可以有返回值。
对于NAOqi任何阻塞调用方法,如果使用Proxy的post对象进行调用,将在并行线程中创建任务,这样可以同时执行后面的语句。

注:等于把阻塞调用变成了非阻塞调用。

(2)非阻塞调用。指在不能立刻得到结果之前,该方法不会阻塞当前线程,而会立刻返回。这样就可以继续执行下面的语句。

任务解析

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值