A computer-implemented method comprising: operating, by one or more processors, an object recognition client to facilitate object recognition for a robot; receiving, by the object recognition client, sensor data indicative of multiple observed objects (352A to 352D) in an environment; providing, by the object recognition client, to each of a plurality of targeted object recognition modules (146 1 to 146 i) hosted remotely from the one or more processors, data indicative of the observed objects; receiving, by the object recognition client, from one or more of the plurality of targeted object recognition modules, a plurality of inferences about object types and/or poses of the multiple observed objects; characterized in that the method further comprises: identifying a graph of nodes, wherein each node represents one of the inferences, wherein at least a subset of nodes of the graph are connected to each other by one or more edges, and wherein each edge which connects two nodes indicates that, taking the inferred poses and/or object types represented by the two connected nodes to be true, the objects to which the inferences represented by the two connected nodes are directed would not simultaneously occupy the same physical space; and determining, by the object recognition client, information about one or more of the multiple observed objects based on the graph of nodes, wherein the determining comprises: identifying a maximum clique of connected nodes in the graph; and determining object types and/or poses of the multiple observed objects based on inferences represented by the maximum clique of connected nodes. operating, by one or more processors, an object recognition client to facilitate object recognition for a robot; receiving, by the object recognition client, sensor data indicative of multiple observed objects (352A to 352D) in an environment; providing, by the object recognition client, to each of a plurality of targeted object recognition modules (146 1 to 146 i) hosted remotely from the one or more processors, data indicative of the observed objects; receiving, by the object recognition client, from one or more of the plurality of targeted object recognition modules, a plurality of inferences about object types and/or poses of the multiple observed objects; identifying a graph of nodes, wherein each node represents one of the inferences, wherein at least a subset of nodes of the graph are connected to each other by one or more edges, and wherein each edge which connects two nodes indicates that, taking the inferred poses and/or object types represented by the two connected nodes to be true, the objects to which the inferences represented by the two connected nodes are directed would not simultaneously occupy the same physical space; and determining, by the object recognition client, information about one or more of the multiple observed objects based on the graph of nodes, wherein the determining comprises: identifying a maximum clique of connected nodes in the graph; and determining object types and/or poses of the multiple observed objects based on inferences represented by the maximum clique of connected nodes. identifying a maximum clique of connected nodes in the graph; and determining object types and/or poses of the multiple observed objects based on inferences represented by the maximum clique of connected nodes.