用于基于事件的机器人控制器异步编程的python工具集
pyRobots的Python项目详细描述
Pyrobots:机器人执行控制工具箱[DOI](https://zenodo.org/badge/983/chili-epfl/pyrobots.svg)(https://zenodo.org/badge/latestdoi/983/chili-epfl/pyrobots)
[![文档状态](https://readthedocs.org/projects/pyrobots/badge/?version=latest)(http://pyrobots.readthedocs.org)
`pyrobots`提供了一组python装饰器,可以轻松地将标准函数
转换为随时可以取消的后台任务,并使控制器
*资源感知*(不,机器人不能同时左右转动)。
一种用于监视特定条件的机制和
异步触发动作。
BR/>它最后提供了一个方便的工具,以统一的方式管理姿势:BR/>(四元数、Euler角和4D矩阵,我看你),并与现有的中间件(ROS、NooQi、AsEBA……)接口。
BR/>‘PyMe机器人’得到了一些启示。从
[urbi](https://github.com/aldebaran/urbi)语言。
从源代码来看)
main features
----
-使用decorator
`@action`将任何python函数转换为后台*action*。
-默认情况下,robot操作是非阻塞的:它们被实例化为futures
(轻量级线程)。
-可以随时通过信号取消操作(发出“actioncancelled”信号
)。
-在操作前使用简单的“@lock(…)”锁定特定资源。
启动时,如果需要,操作将等待资源可用。
-支持*复合资源*(如“Wheels”==`LeftWheel`+`RightWheel`)
-使用“Robot”创建事件。无论何时(<;Condition>;).Do(<;Action>;)`
-姿势都是明确管理的,并且可以轻松地从一个参考帧转换到另一个参考帧(与ros tf(如果可用)。
-对调试和重播实验的广泛日志记录支持。
对特定机器人的支持只需要为这个
机器人(显然,编码您希望机器人执行的操作。
documentation
----
[head to readthedocs](http://pyrobots.readthedocs.org)。目前还比较稀疏。
Minimum Working Example
----
……其中包括创建特定的robot
`` python
>从robots导入time
从robots导入generirobot
从robots导入action,lock
from robots.resources import resource
from robots.signals import actioncancelled
机器人的状态。这里是一个保险杠。
self.state.my_bumper=false
姿势:
使用您喜欢的中间件移动您的机器人
print(“开始向%s移动”%pose)
def stop(self):
使用您喜欢的中间件停止您的机器人
print(“motion stopped”)
def您需要的低级方法(self):
通过
@锁定(轮子)
@动作
定义向前移动(机器人):
“我们以简单的命令式、阻塞的方式编写动作。
”“
Pyrobots将根据需要处理帧转换。
target=[1.0,0.,0.,“base_link”]
try:
robot.send_goal(target)
while(robot.pose.distance(robot.pose.myself(),target)>;0.1):
robot.sleep与time.sleep完全相同,除了它让Pyrobot
信号通过。
robot.sleep(0.5)
print(“动作成功”)
>除了取消的动作:
#日志记录的快捷方式。getlogger(“robots”).setlevel(logging.debug)
robot.debug()
robot.everywhen(“My_Bumper”,值=true)。执行(向前移动)
尝试:
,而true:
时间。睡眠(0.5)
,键盘中断除外:
pass
````
[![文档状态](https://readthedocs.org/projects/pyrobots/badge/?version=latest)(http://pyrobots.readthedocs.org)
`pyrobots`提供了一组python装饰器,可以轻松地将标准函数
转换为随时可以取消的后台任务,并使控制器
*资源感知*(不,机器人不能同时左右转动)。
一种用于监视特定条件的机制和
异步触发动作。
BR/>它最后提供了一个方便的工具,以统一的方式管理姿势:BR/>(四元数、Euler角和4D矩阵,我看你),并与现有的中间件(ROS、NooQi、AsEBA……)接口。
BR/>‘PyMe机器人’得到了一些启示。从
[urbi](https://github.com/aldebaran/urbi)语言。
从源代码来看)
main features
----
-使用decorator
`@action`将任何python函数转换为后台*action*。
-默认情况下,robot操作是非阻塞的:它们被实例化为futures
(轻量级线程)。
-可以随时通过信号取消操作(发出“actioncancelled”信号
)。
-在操作前使用简单的“@lock(…)”锁定特定资源。
启动时,如果需要,操作将等待资源可用。
-支持*复合资源*(如“Wheels”==`LeftWheel`+`RightWheel`)
-使用“Robot”创建事件。无论何时(<;Condition>;).Do(<;Action>;)`
-姿势都是明确管理的,并且可以轻松地从一个参考帧转换到另一个参考帧(与ros tf(如果可用)。
-对调试和重播实验的广泛日志记录支持。
对特定机器人的支持只需要为这个
机器人(显然,编码您希望机器人执行的操作。
documentation
----
[head to readthedocs](http://pyrobots.readthedocs.org)。目前还比较稀疏。
Minimum Working Example
----
……其中包括创建特定的robot
`` python
>从robots导入time
从robots导入generirobot
从robots导入action,lock
from robots.resources import resource
from robots.signals import actioncancelled
机器人的状态。这里是一个保险杠。
self.state.my_bumper=false
姿势:
使用您喜欢的中间件移动您的机器人
print(“开始向%s移动”%pose)
def stop(self):
使用您喜欢的中间件停止您的机器人
print(“motion stopped”)
def您需要的低级方法(self):
通过
@锁定(轮子)
@动作
定义向前移动(机器人):
“我们以简单的命令式、阻塞的方式编写动作。
”“
Pyrobots将根据需要处理帧转换。
target=[1.0,0.,0.,“base_link”]
try:
robot.send_goal(target)
while(robot.pose.distance(robot.pose.myself(),target)>;0.1):
robot.sleep与time.sleep完全相同,除了它让Pyrobot
信号通过。
robot.sleep(0.5)
print(“动作成功”)
>除了取消的动作:
#日志记录的快捷方式。getlogger(“robots”).setlevel(logging.debug)
robot.debug()
robot.everywhen(“My_Bumper”,值=true)。执行(向前移动)
尝试:
,而true:
时间。睡眠(0.5)
,键盘中断除外:
pass
````