用于基于事件的机器人控制器异步编程的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

````


欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java无法从spring resttemplate访问sms网关   使用spark上下文方法参数的java并行化集合不正确   java中ReadLock的并发检查副本   java基于属性比较两个列表是否具有相同的元素   字符串Java文本块:缩进前缀中的制表符和空格的混合   java如何将带有@SpringBootApplication的maven模块作为测试范围中的依赖项添加到另一个maven模块   我需要一些关于在Java中使用2个jar文件的帮助   mysql JPA Java Spring Boot执行查找/连接表   java对话框选择具有特定名称的文件   java如何修复Spring工具套件4中的端口8080错误?   Java中的apache poi Excel阅读器   java如何在tomcat访问日志中记录线程上下文值   java有一种方法可以创建类<T>的实例,该类将类作为传递泛型的构造函数中的参数   默认情况下,java GORM onetomany映射执行即时抓取   java不能在安卓中接受全局变量   统计系统的java MongoDB异步驱动程序排名   java如何解析:无法解析插件“org.springframework.ide.eclipse.ui”?   用Java从一副牌中随机抽取5张牌   javaapachecamel动态消费者   java如何克服使用Flood Fill 4算法时的“薄边界”问题?