trinterp() returns invalid rotations in transform matrix
Mantenedores costumam responder em até 1 dia
Avaliação
Esta issue ainda não foi avaliada.
Descrição
the trinterp() method does not make sure quaternions are valid before converting them to transforms. It calls qslerp which can sometimes generate invalid quaternions.
Repro:
from spatialmath import SE3
se3_1 = SE3()
se3_1.t = np.array([0.5705748101710814, 0.29623210833184527, 0.10764106509086407])
se3_1.R = np.array([[ 0.2852875203191073 , 0.9581330588259315 ,
-0.024332536551692617],
[ 0.9582072394229962 , -0.28568756930438033 ,
-0.014882844564011068],
[-0.021211248608609852, -0.019069722856395098,
-0.9995931315303468 ]])
assert SE3.isvalid(se3_1.A)
se3_2 = SE3()
se3_2.t = np.array([0.5150284150005691 , 0.25796537207802533, 0.1558725490743694])
se3_2.R = np.array([[ 0.42058255728234184 , 0.9064420651629983 ,
-0.038380919906699236 ],
[ 0.9070822373513454 , -0.4209501599465646 ,
-0.0016665901233428627],
[-0.01766712176680449 , -0.0341137119645545 ,
-0.9992617912561634 ]])
assert SE3.isvalid(se3_2.A)
path_se3 = se3_1.interp(end=se3_2, s=15, shortest=False)
print(path_se3[2])
-> 1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
print(path_se3[3])
-> 0.3149 0.9487 -0.0275 0.5587
0.9489 -0.3153 -0.01222 0.288
-0.02027 -0.02225 -0.9995 0.118
0 0 0 1
The interp() method returns an SE3 object that holds the SE3 transformation matrices created from the interpolation: https://github.com/bdaiinstitute/spatialmath-python/blob/4c68fa923bc90047a0d79a2eab5c5a84b6cee7b7/spatialmath/baseposematrix.py#L449-L455.
However, there is a validity check in the SE3 object that will turn any invalid transforms into identity matrices.
A possible solution is to modify the trinterp() method to turn all quaternions into unit quaternions before converting them into rotation matrices: https://github.com/bdaiinstitute/spatialmath-python/blob/4c68fa923bc90047a0d79a2eab5c5a84b6cee7b7/spatialmath/base/transforms3d.py#L1697-L1700.
I am not sure if this is the only location in the spatialmath codebase that would benefit from this change.
- Linguagem predominante
- Python
- Estrelas
- 642
- Forks
- 102
- Merge médio
- 59min
- PRs com merge (30d)
- 2
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de rai-opensource/spatialmath-python
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
rai-opensource/spatialmath-python#32 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 72/100
rai-opensource/spatialmath-python#231 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 50/100
rai-opensource/spatialmath-python#177 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 42/100
rai-opensource/spatialmath-python#171 ·
Mantenedores costumam responder em até 1 dia
-
Type-check spatialmathTalvez livre de novo @jbarnett-bdai assumiu há 704 dias e não há nenhum pull request aberto. Aberta
rai-opensource/spatialmath-python#143 · 8 comentários · 1 responsável ·
Mantenedores costumam responder em até 1 dia
Todas as issues de rai-opensource/spatialmath-python
Issues semelhantes
-
adr
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
kristofdegrave/homeassistant-smart-charging#1607 ·
Mantenedores costumam responder em até 1 dia
-
namespace operations
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
EclipseFdn/open-vsx.org#13665 ·
Mantenedores costumam responder em até 1 dia
-
doc good first issue help wanted
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
collective/icalendar#1865 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
canonical/opentelemetry-collector-operator#409 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
mozilla/addons-release-tests#1243 ·
Mantenedores costumam responder em até 1 dia