coriolis() and Robot.copy().rne() fail for URDF/ETS robots: copied links keep their original parent
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 25/100
Piste de recherche
Start with Robot.copy() and Robot.__deepcopy__, then Robot.rne where self.links.index(joint.parent) fails, and trace how coriolis reaches nofriction(). Check linked PR #732 first, since it already targets this fix. Done means each copied link's parent and children point to copied links, and copy().rne(q, qd, qdd) matches the original robot's result.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
robot.coriolis(q, qd) raises ValueError: Link(...) is not in list for every URDF-based Robot I tried: UR5, KinovaGen3, LBR, and a two-link URDF with full inertials. DH robots are unaffected.
coriolis calls nofriction(), which calls copy(). The same error occurs for robot.copy().rne(q, qd, qdd) directly, while rne on the original robot works. Cause: after copy() each link's parent (and the joint's parent) still refers to the original robot's link object, so self.links.index(joint.parent) in Robot.rne (group_of_link_idx.get(...)) fails.
Repro (any URDF with dynamics):
import numpy as np
from roboticstoolbox.models.URDF.URDFRobot import URDFRobot
r = URDFRobot("/path/to/two_links_robot.urdf") # two revolute joints, with <inertial> elements
q, qd = np.array([0.3, -0.5]), np.array([0.1, 0.2])
r.rne(q, qd, np.zeros(2)) # OK
r.copy().rne(q, qd, np.zeros(2)) # ValueError: Link(...) is not in list
r.coriolis(q, qd) # ValueError: Link(...) is not in list
Notes
- #722 lists
coriolis->ValueErrorunder "models with no dynamic parameters". That attribution is wrong: this is the error, and it happens on models that do have dynamics. - Same family as #705: state that does not survive
copy(). - Workaround:
C(q, qd) qd = rne(q, qd, 0) - gravload(q) + friction(qd). Checked againstcoriolison the DH Puma 560 (max difference 4e-15), and against a Christoffel-symbol calculation from the mass matrix on the URDF robot.
Fix: have Robot.__deepcopy__ remap each link's parent (and children) onto the copied links, and add a regression test that copy() then rne equals the original.
Found while answering Adineh94's question in discussion #158.
- Langage dominant
- C++
- Étoiles
- 3.6k
- Forks
- 649
- Merge moyen
- 22 h 49 min
- PR mergées (30 j)
- 146
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de petercorke/robotics-toolbox-python
-
plt.pause(0) waits for ever: PoseGraph.plot_scan(pause=0) and Vehicle animation may hangPeut-être pris @huxiaoyi-ovo l’a pris il y a 7 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
petercorke/robotics-toolbox-python#876 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
petercorke/robotics-toolbox-python#709 ·
Les mainteneurs répondent en général sous 1 jour
-
Isaac Sim backendOuverteenhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
petercorke/robotics-toolbox-python#903 · 2 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Backend registry: single name → constructor dispatchPeut-être pris @petercorke l’a pris il y a 7 jours. Ouverteenhancement
petercorke/robotics-toolbox-python#902 · 3 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Speed up the coverage job (about 25 minutes since coverage became real)Peut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertetech-debt
Difficulté 4/5 1-2 jours Accessibilité débutants 55/100
petercorke/robotics-toolbox-python#898 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de petercorke/robotics-toolbox-python
Issues similaires
-
Issue-Bug Needs-Triage
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
microsoft/winget-cli#6645 ·
Les mainteneurs répondent en général sous 2 jours
-
cleanup help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
ESPresense/ESPresense#2602 ·
Les mainteneurs répondent en général sous 1 jour
-
devex good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
artifact:simulation-scenario domain:physics good first issue help wanted role:validation testing
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 3 jours