
El aprendizaje profundo ha tenido un éxito notable en la percepción robótica, pero su naturaleza centrada en los datos sufre cuando se trata de generalizar a entornos en constante cambio. Por el contrario, la optimización basada en la física se generaliza mejor, pero no funciona tan bien en tareas complicadas debido a la falta de información semántica de alto nivel y la dependencia de la sintonización paramétrica manual. Para aprovechar estos dos mundos complementarios, presentamos Pypose: una biblioteca basada en Pytorch orientada a la robótica que combina modelos perceptivos profundos con técnicas de optimización basadas en física . Nuestro objetivo de diseño para Pypose es hacerlo fácil de usar , eficiente e interpretable con una arquitectura ordenada y bien organizada. Usando una interfaz de estilo imperativo , se puede integrar fácilmente en aplicaciones robóticas del mundo real .
SO3 , SE3 , Sim3 , RxSO3so3 , se3 , sim3 , rxso3 LTI , LTV , NLSEKF , UKF , PFEPnPLQRIMUPreintegratorGaussNewtonLevenbergMarquardt¿Quieres más características? Cree un problema aquí para solicitar nuevas funciones.

La eficiencia y la comparación de memoria de las operaciones de grupo de mentiras por lotes (tomamos el rendimiento de Teseo como 1 ×).
Más información sobre la comparación de eficiencia va a nuestro documento para Pypose.
pip install pyposeEn Ubuntu, macOS o Windows, instale Pytorch, luego ejecute:
pip install -r requirements/runtime.txtgit clone https://github.com/pypose/pypose.git
cd pypose && python setup.py developpytestAsegúrese de que la instalación anterior sea correcta.
Ir a contribuir.md
> >> import torch , pypose as pp
> >> # A random so(3) LieTensor
>> > r = pp . randn_so3 ( 2 , requires_grad = True )
so3Type LieTensor :
tensor ([[ 0.1606 , 0.0232 , - 1.5516 ],
[ - 0.0807 , - 0.7184 , - 0.1102 ]], requires_grad = True )
> >> R = r . Exp () # Equivalent to: R = pp.Exp(r)
SO3Type LieTensor :
tensor ([[ 0.0724 , 0.0104 , - 0.6995 , 0.7109 ],
[ - 0.0395 , - 0.3513 , - 0.0539 , 0.9339 ]], grad_fn = < AliasBackward0 > )
>> > p = R @ torch . randn ( 3 ) # Rotate random point
tensor ([[ 0.8045 , - 0.8555 , 0.5260 ],
[ 0.3502 , 0.8337 , 0.9154 ]], grad_fn = < ViewBackward0 > )
>> > p . sum (). backward () # Compute gradient
>> > r . grad # Print gradient
tensor ([[ - 0.7920 , - 0.9510 , 1.7110 ],
[ - 0.2659 , 0.5709 , - 0.3855 ]])scheduler , cada una de las cuales puede funcionar de forma independiente. > >> from torch import nn
> >> import torch , pypose as pp
> >> from pypose . optim import LM
> >> from pypose . optim . strategy import Constant
> >> from pypose . optim . scheduler import StopOnPlateau
> >> class InvNet ( nn . Module ):
def __init__ ( self , * dim ):
super (). __init__ ()
init = pp . randn_SE3 ( * dim )
self . pose = pp . Parameter ( init )
def forward ( self , input ):
error = ( self . pose @ input ). Log ()
return error . tensor ()
> >> device = torch . device ( "cuda" )
> >> input = pp . randn_SE3 ( 2 , 2 , device = device )
> >> invnet = InvNet ( 2 , 2 ). to ( device )
> >> strategy = Constant ( damping = 1e-4 )
> >> optimizer = LM ( invnet , strategy = strategy )
> >> scheduler = StopOnPlateau ( optimizer , steps = 10 , patience = 3 , decreasing = 1e-3 , verbose = True )
> >> # 1st option, full optimization
>> > scheduler . optimize ( input = input )
> >> # 2nd option, step optimization
>> > while scheduler . continual ():
loss = optimizer . step ( input )
scheduler . step ( loss )
> >> # Note: remove one of the above options for usage!Para más uso, consulte la documentación. Para obtener más aplicaciones, ver ejemplos.
Si usa Pypose, cita el papel a continuación. También puede descargarlo aquí.
@inproceedings { wang2023pypose ,
title = { {PyPose}: A Library for Robot Learning with Physics-based Optimization } ,
author = { Wang, Chen and Gao, Dasong and Xu, Kuan and Geng, Junyi and Hu, Yaoyu and Qiu, Yuheng and Li, Bowen and Yang, Fan and Moon, Brady and Pandey, Abhinav and Aryan and Xu, Jiahe and Wu, Tianhao and He, Haonan and Huang, Daning and Ren, Zhongqiang and Zhao, Shibo and Fu, Taimeng and Reddy, Pranay and Lin, Xiao and Wang, Wenshan and Shi, Jingnan and Talak, Rajat and Cao, Kun and Du, Yi and Wang, Han and Yu, Huai and Wang, Shanzhao and Chen, Siyu and Kashyap, Ananth and Bandaru, Rohan and Dantu, Karthik and Wu, Jiajun and Xie, Lihua and Carlone, Luca and Hutter, Marco and Scherer, Sebastian } ,
booktitle = { IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) } ,
year = { 2023 }
}Más documentos que describen Pypose:
@inproceedings { zhan2023pypose ,
title = { {PyPose} v0.6: The Imperative Programming Interface for Robotics } ,
author = { Zitong Zhan and Xiangfu Li and Qihang Li and Haonan He and Abhinav Pandey and Haitao Xiao and Yangmengfei Xu and Xiangyu Chen and Kuan Xu and Kun Cao and Zhipeng Zhao and Zihan Wang and Huan Xu and Zihang Fang and Yutian Chen and Wentao Wang and Xu Fang and Yi Du and Tianhao Wu and Xiao Lin and Yuheng Qiu and Fan Yang and Jingnan Shi and Shaoshu Su and Yiren Lu and Taimeng Fu and Karthik Dantu and Jiajun Wu and Lihua Xie and Marco Hutter and Luca Carlone and Sebastian Scherer and Daning Huang and Yaoyu Hu and Junyi Geng and Chen Wang } ,
year = { 2023 } ,
booktitle = { IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) Workshop } ,
}