Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Root Articulation Body Choice

Discussion in 'Robotics' started by MetroRobots, Feb 3, 2022.

  1. MetroRobots

    MetroRobots

    Joined:
    Jan 11, 2022
    Posts:
    8
    tl; dr: Why is the root articulation body loaded on a child link, and not the URDF base link?

    I'm coming to this project from the ROS World, and less familiar with how Unity works.

    I've imported a URDF of a mobile robot into Unity, and the root link is base_link, but the root articulation body is attached to the child of base_link. This leads to the weird situation where base_link's transform does not move, but the child link does.
     
  2. vidurVij-Unity

    vidurVij-Unity

    Unity Technologies

    Joined:
    Feb 26, 2020
    Posts:
    8
    So this due to peculiarity in how the URDF importer imports the robot. With Articulation Bodies both the link and joint data is encapsulated by the Articulation Body. When importing the robot, the Articulation Body is affixed to the gameObject(link) whose inertial properties Articulation body represents. The same articulation body represents a joint between the body it is affixed to and its parent.
    Talking about the root body, you will notice that in most robot definitions, the first link generally represents robot's origin fixed in the world space and with no inertial parameters. For example in turtleBot3 URDF definition "base_footprint" represents that fixed link in the world and "base_link" is the first actual link of the robot. We don't add Articulation Body to links without any inertial parameters.
     
    Last edited: Feb 25, 2022
  3. MetroRobots

    MetroRobots

    Joined:
    Jan 11, 2022
    Posts:
    8
    I disagree with your interpretation of the URDF. base_link represents the "true" origin of the robot, and base_footprint is that same frame projected onto the ground. The frame that is fixed in space is odom, as seen in the turtlebot nav configuration here