Skip to content

Robot version organization and planned breadth of support #105

@BrettHemes-3M

Description

@BrettHemes-3M

@gavanderhoorn

I feel there is some room for improvement regarding robot support package organization. ...but looking at Kuka's taxonomy I realized how many variants there actually are. I assume that the current procedure is to add support on a per-case/request basis but am wondering if we shouldn't plan organizationally now before moving things out of the experimental repo... at the very least we should adopt a strategy and stick with it (currently we are using two, AGILUS family-based and then all of the rest...).

Kuka has a brochure with (all?) of their current offerings with their organizational scheme here. From what I can deduce Kuka's organization is as follows:

  1. High-level "size"
    • e.g., small, low/med/high payload, palletizing, linear
  2. Type
    • This is the family name (e.g., AGILUS, CYBERTECH, etc.) along with some variant and/or max payload designations
  3. Rated Payload
    • The payload in kg of the robot version
    • Note that there is some overlap here... for example, the KR 600 FORTEC type contains the KR 420, 510, and 600 payloads and the KR 500 FORTEC type contains the KR 340, 420, and 500 payloads.
  4. Reach
  • The reach in mm of the robot version

I am not sure the above makes the most sense and was thinking about using the family name (if it exists) and then breaking out the versions in the meshes folder. One solution could be like the following where I have used the LBR iiwa and AGILUS families as examples:

  • lbr_iiwa
    • launch
      • load_lbr_iiwa_14_r820.launch
      • load_lbr_iiwa_7_r800.launch
    • meshes
      • iiwa_common
      • r800
      • r820
  • kr_16
  • kr_20
  • kr_30
  • kr_60
  • kr_agilus
    • launch
      • load_kr10r1100sixx.launch
      • load_kr10r900sixx.launch
      • load_kr6r700sixx.launch
      • load_kr6r900sixx.launch
    • meshes
      • agilus_common
      • r1100
      • r700
      • r900
  • kr_cybertech
  • kr_quantec
  • kr_fortec

Benefits:

  1. Mesh reuse to avoid large repo size
  2. Less top-level folders (vs one-per-offering)

Some issues:

  1. Knowing what geometries are shared
    Ideally what we would gain most is a hierarchical sorting of meshes that promotes sharing within families... but knowing if a particular geometry belongs in the "common" folder or in a reach-specific folder version is not straightforward and requires good Kuka family knowledge
  2. Deep folder structure and issues with payload/reach splits.
    • Do we split based on reach or payload?
      • It seems for the AGILUS series the payloads have no effect and the geometry difference are purely reach-based). Maybe this is the reason for the overlapping family breakdowns mentioned above (e.g., KR 400 FORTEC vs KR 600 FORTEC)? Not sure...
    • Does the common folder hold all file common to any two (or more) versions?
    • ...
  3. Maintenance
    • Future changes result in having to change all respective launch files (this could be error-prone)

I like the AGILUS repo folder approach but is this worth it to do across the whole repo? Ultimately I think we should pick a single strategy (i.e., flat OR family-based hierarchy) before moving out of experimental but am not sure about the best way to go. Ideas are welcome :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions