docs: def get_control_table(self, ids, **kwargs):
          """ Gets the full control table for the specified motors.
  
              ..note:: This function requires the model for each motor to be known. Querring this additional information might add some extra delay.
  
              """
          error_handler = kwargs['error_handler'] if ('error_handler' in kwargs) else self._error_handler
          convert = kwargs['convert'] if ('convert' in kwargs) else self._convert
  
          bl = ('goal position speed load', 'present position speed load')
          controls = [c for c in self._AbstractDxlIO__controls if c.name not in bl]
  
          res = []
  
          for id, model in zip(ids, self.get_model(ids)):
              controls = [c for c in controls if model in c.models]
  
              controls = sorted(controls, key=lambda c: c.address)
  
              address = controls[0].address
              length = controls[-1].address + controls[-1].nb_elem * controls[-1].length
  
              rp = self._protocol.DxlReadDataPacket(id, address, length)
              sp = self._send_packet(rp, error_handler=error_handler)
  
              d = OrderedDict()
              for c in controls:
                  v = dxl_decode_all(sp.parameters[c.address:c.address + c.nb_elem * c.length], c.nb_elem)
                  d[c.name] = c.dxl_to_si(v, model) if convert else v
  
              res.append(d)
  
          return tuple(res)