borglab / GTDynamics

Full kinodynamics constraints for arbitrary robot configurations with factor graphs.
BSD 2-Clause "Simplified" License
39 stars 10 forks source link

NAO URDF #253

Closed varunagrawal closed 2 years ago

varunagrawal commented 3 years ago

Add customized version of NAO robot. Customization is to remove collisions between joint and link names so that the URDF can be correctly parsed.

@nrakoski3 to visualize the robot, you can checkout this branch and then run this:

import gtdynamics as gtd
import roboplot  # Be sure to install package with `pip install -U roboplot`

robot = gtd.CreateRobotFromFile(gtd.URDF_PATH + "/nao.urdf")
roboplot.plot_robot(robot, "base_link")
varunagrawal commented 3 years ago

For your viewing pleasure.

nao_plot

dellaert commented 2 years ago

@nrakoski3 please review, @varunagrawal made this for you…

varunagrawal commented 2 years ago

@nrakoski3 what version of SDFormat are you using?

varunagrawal commented 2 years ago

PoseRelativeToGraph is an object from SDFormat so my guess is you're using a version of SDFormat below v10.

dellaert commented 2 years ago

@nrakoski3 try it with docker image?

nrakoski3 commented 2 years ago

PoseRelativeToGraph is an object from SDFormat so my guess is you're using a version of SDFormat below v10.

Hi Varun, I am using the current GT Dynamics Docker Image on master to run the code in a container. It has SDFormat10 installed. Please try running the code using that image to replicate my error.

Thank you, Natalie Rakoski

varunagrawal commented 2 years ago

Yup I did that yesterday, and it works for me. :(

varunagrawal commented 2 years ago

Hey @nrakoski3, I emailed you a few weeks ago. Do you have time to figure this out soon?

varunagrawal commented 2 years ago

ping @nrakoski3

varunagrawal commented 2 years ago

Thanks for the quick review Gerry! Yeah I don't think I have updated roboplot for the latest API change so thanks for pointing that out.

Also, plot_robot takes a keyword parameter show, so you can just do roboplot.plot_robot(robot, "base_link", show=True). The idea was that you could plot multiple things but only show on the last one, without the need to import matplotlib. :smile: