The past couple of the weeks were removing the hacks that were put together for the presentation last month. Some things I have added and plan to add to RoCo, particularly in context of integration with scenic. This includes exporting the RoCo output to a format compatible with webots, in a general modular way

Defining WBO hierarchy properly

  • Tires were not oriented properly - removed Normal field from WBO
  • The GPS and Compass were flying away , so the hierarchy had to be changed
    Robot {
    children [
    GPS {
      translation # use this to orient it
      rotation    # use this to orient it
      children [
        Shape {
          # define here the geometry/appearance of the GPS
        }
      ]
      physics Physics {
        # define here the mass of the GPS
      }
    }
    ]
    ...
    }

Standardizing Scenic-webots orientation and naming wrt RoCo output

Orientation of a robot is determined by the assignment of the root face. And this needs to be done while defining the builder files. The builder files needs to be run again if that is changed.

The moment is is imported into webots (before scenic applies rotation). Scenic follows the convention of the ground being the x-z plane, instead of the x-y plane Screenshot%20from%202022-02-25%2010-27-58

After scenic applies its rotation Screenshot%20from%202022-02-25%2010-28-45

Viewing the STL file

Screenshot%20from%202022-02-25%2010-30-42

  • Done by assigning correct root face, and applying a global rotation that can also now be passed as a parameter from makeOuput
  • The builder file for each robot also needs to be called by an outer "wrapper" builder (like the paperbotbuilder) so the name of the robot is at the root of name for all the components and WBO builder captures that as the root of the wbo node tree
  • Other work includes integrating these changes with scenic for the creative project and integrating with other teams like Pehuen's planning team https://git.uclalemur.com/mehtank/creative

Tasks in progress/planned

  • [TODO] Generalize the WBO node tree generator to able to output different robot morphologies in the wbo format
  • [TODO] HingeJoint axis is currently hard-coded, needs to be more general - along the x-z plane for tires and any other vector (more likely to be y) for general hinges in the robot body. This needs to be inferred from the orientation of the servo/hinge wrt to the body and the assignment of the root face of the robot.
  • [TODO] Define a data-structure/class for devices for the WBO output
  • [TODO] Standardize naming and assigning root face for each robot body defined roco builder files
  • [TODO] Pipeline is failing since i added a JSON output for parameters for the controller in webots, that test needs to be fixed
  • [TODO] Documenting every feature and modifications to existing features to make it easier for people who have never used roco to be able to do so
  • [TODO] Export controller along with webots output, based on robot morphology

Next Post Previous Post