Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Enhancement: SE3 constructor should accept an (N, 4, 4) ndarray as N poses

Aberta
#236 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
66/100
Tipo de issue
Funcionalidade
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
numpy, python

Direção de pesquisa

Start by reading the SE3 constructor and its existing tests for single matrices and lists of matrices. Run those tests, then add coverage for stacked (N, 4, 4) arrays and unsupported shapes, including the check=False behavior. Done means stacked arrays produce N poses like SE3(list(arr)), while unsupported shapes raise a useful error.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Summary

SE3 can be built from a single 4x4 array, from a list of 4x4 arrays (its own internal representation for a sequence of poses), or from other SE3 objects, but not from a stacked (N, 4, 4) ndarray. That is the natural way to hold a pose sequence in NumPy-based code (for example the output of np.stack, or a trajectory loaded from a file), and it is the form that a number of Robotics Toolbox for Python (RTB) functions accept for pose trajectories.

Reproduction

import numpy as np
from spatialmath import SE3

A = SE3.Rx(0.3).A
arr = np.array([A, A, A])        # shape (3, 4, 4)

SE3(arr)
# ValueError: bad argument to constructor

s = SE3(arr, check=False)
len(s), s.A.shape
# (1, (3, 4, 4))   <- silently a malformed object: length 1, but .A is (3, 4, 4)

len(SE3([A, A, A]))              # 3, a list of matrices works

Tested with spatialmath-python 1.1.18.

Why it matters

  • With the default check=True the error message does not say what is accepted.
  • With check=False the constructor silently returns a malformed object. In RTB this turned a user's (N, 4, 4) trajectory into an object that failed deep inside an IK solver with ValueError: operands could not be broadcast together with shapes (3,4) (3,), far from the cause.

Suggested behaviour

  1. Accept an ndarray with ndim == 3 and shape[1:] == (4, 4) as a sequence of N poses, equivalent to SE3(list(arr)).
  2. For other unsupported shapes, raise an error that says which forms are accepted. Ideally this validation of the array shape (not the matrix contents) would also happen with check=False, which would skip only the expensive checks that the matrices are valid SE(3).

This is an enhancement request, not a regression. RTB works around it by converting the array to a list of matrices before calling the constructor, so there is no urgency.

Linguagem predominante
Python
Estrelas
643
Forks
102
Merge médio
11min
PRs com merge (30d)
1

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

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de rai-opensource/spatialmath-python

Todas as issues de rai-opensource/spatialmath-python

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.