Started:COLLADA

From OpenRAVE

Jump to: navigation, search

Contents

Proposal and Requirements

COLLADA files should handle geometry, physical properties, and kinematics. Custom OpenRAVE tags can be added to the COLLADA format to specify robot specific attributes like:

  • manipulators and grippers: base and end effector links, ik solvers,

joints used, gripper closing direction, etc

  • add adjacency information for self-collision detection to help prune possibilities. For example, store a list of all possible pairs of robot links that can potentially collide.
    • The adjacency information is not just the neighboring links. It is also meant to prune any collisions between two links that *cannot* possibly happen if the robot maintains its joint limits. This information depends not only on the kinematics of the robot, but also on the geometry of every link. Also for triplets of joints j1, j2, j3 that intersect at a common axis, you would want to add (j1,j2),(j2,j3),(j1,j3).
  • for each joint, a measure of how much a joint's movement impacts the robot (base joints have more impact than end effector joints). this information should be used by all planners to evaluate importance of joints. Calculating this accurately might require an offline process.

Sensors

  • need a good agreed upon format for specifying sensors and their parameters
  • types, location within robot, openrave plugins to use, etc.

Calibration vs Static Data

One thing that separates a base description of the robot from the real robot that will be used in labs is calibration:

  • where each sensor is with respect to the robot (6D pose)
  • intrinsic parameters for each sensor
  • joint offsets for encoder calibration
  • controller parameters like PID gains for dynamic properties of motors
  • possibly even link lengths depending on how much you trust the manufacturer

All these parameters will change per robot, and it won't be a good idea asking every person to go and modify their one robot file. Instead we should have a different calibration file that the main collada file always references. It should be setup in such a way that the calibration file becomes optional.

Controllers

Specifying controller parameters in the collada file falls somewhere in between calibration parameters and parameters that will never change and should be in the main robot file. In my opinion it is very hard to find static parameters especially when considering controllers in simulation along with real world controllers. Also, there's as many control algorithms out there as planners, and I wouldn't feel comfortable specifying planning algorithms and parameters inside a robot file.

Extra Notes

  • Robots usually have grippers, robot arms, and robot bases in separate files, then we have one file

that references all of them and specifies the links to merge together (ie, we do not complicate things by creating dummy joints). Find a standard way to do this in COLLADA through referencing.

Format

  • articulated_system tag is equivalent to OpenRAVE robot
    • if child is a motion tag, get accelerations and velocity limits from it
  • kinematics tag is equivalent to KinBody
  • Should respect the visual_scene and physical_scene tags.
    • If physical_scene tag present but not visual_scene tag, fill in the visual data with physical
    • If visual_scene tag present and but not physical_scene, add objects to viewer only (or ignore), they have no meaning in openrave world.
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <COLLADA xmlns="http://www.collada.org/2008/03/COLLADASchema" version="1.5.0">
  3. <!-- ... -->
  4. <library_joints id="libjoints">
  5. <joint id="joint_1" name="Revolute">
  6. <revolute sid="axis0">
  7. <axis>-1 -0 -0</axis>
  8. <limits>
  9. <min>-90</min>
  10. <max>90</max>
  11. </limits>
  12. </revolute>
  13. <!-- This extra node contains information directed to OpenRAVE.
  14. Note that this node can be included in a <joint_reference> node for referencing. -->
  15. <extra type="Sensor">
  16. <technique profile="OpenRAVE">
  17. <AttachedSensor name="MyFirstLaser">
  18. <translation>0 0.2 0.4</translation>
  19. <rotationaxis>1 0 0 45</rotationaxis>
  20. <sensor type="BaseLaser2D" args="">
  21. <minangle>-135</minangle>
  22. <maxangle>135</maxangle>
  23. <resolution>0.35</resolution>
  24. <maxrange>5</maxrange>
  25. </sensor>
  26. </AttachedSensor>
  27. </technique>
  28. </extra>
  29. <test/>
  30. </joint>
  31. </library_joints>
  32. <library_physics_model>
  33. <physics_model>
  34. <!-- Definition of reduced rigid body -->
  35. </physics_model>
  36. </library_physics_model>
  37. <library_geometries>
  38. <geometry>
  39. <!-- Definition of mesh -->
  40. </geometry>
  41. </library_geometries>
  42. <!-- ... -->
  43. </COLLADA>
Personal tools