airo-ugent / airo-ugent/airo-mono

`PositionManipulator` support for using a different base/world frame to express TCP poses.

Aberta
#119 2 comentários 1 reação 0 responsáveis Ver no GitHub
enhancement robots
Linguagem predominante
Python
Estrelas
32
Forks
8
Merge médio
8min
PRs com merge (30d)
4

Descrição

**Describe the feature you'd like**
I would like the `PositionManipulator` class to have an optional constructor argument: `arm_base_in_world` (`X_W_B`). This would then internally be used by the class to transform all given TCP poses (expressed in `world`) to the frame the control box of the robot expects.

**Use cases**
For anyone not working in the base frame defined by the UR control box, this would save the effort of multiplying each `X_W_TCP` by `np.linalg.inv(X_W_B)` before calling e.g. `move_to_tcp_pose(X_W_TCP)`.

When using ROS-industrial compliant URDFs, you almost immediately run into this issue, because the URDFs define +X to be the direction the robot points towards with all-zero joints, while for the control box (and the stickers we've put on the bases) that is the -X direction. See the screenshot below for the difference.

![image](https://github.com/airo-ugent/airo-mono/assets/23340946/6ffac758-a7c2-4b8a-87bd-d3161418e78e)

Also, if we get a different brand robot in the future, we can easily reuse TCP poses by changing only the `X_W_B` in the constructors.

**Possible implementation**
We could add this functionality in a backward-compatible way by setting the default value of `robot_base_in_world` to `np.identity(4)`. Additionally we could add a similar helper functions as the `DualArmPositionManipulator` called `.transform_pose_to_arm_base()`.

We should probably also adapt the `DualArmPositionManipulator` class/constructor, because after this change, conversion from world to arm base is handled by each arm individually.

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

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