#control-systems #control #multi-agent #distributed #distributed-systems

bin+lib distributed_control

Create, analyze and simulate multi-agent, distributed control systems

10 releases (4 breaking)

0.5.1 Mar 27, 2024
0.5.0 Mar 26, 2024
0.4.0 Feb 25, 2024
0.3.3 Feb 16, 2024
0.1.1 Feb 2, 2024

#200 in Robotics

MIT/Apache

81KB
1.5K SLoC

distributed_control

Model, analyze and simulate multi-agent, distributed dynamic systems.

Overview

A multi-agent system is one where there is more than one "agent" interacting with the environment. While an agent often is a distinct entity, e.g., autonomous vehicle, robot, etc., an agent may also be any portion of a system, e.g., a sensor in a sensor network. A distributed system is one in which each agent only receives communication (either direct data transfer via, e.g., bluetooth, or sensing via, e.g., LIDAR) from a subset of the other agents, usually modeled by a communication graph.

The dynamics of the agents in a distributed multi-agent system can be either homogeneous, in which case each agent has identical dynamics, or heterogeneous. Heterogeneous systems can either have dynamics of equal dimension (both state and input dimensions), where the dynamics differ, but the state and inputs of each system are the same (including the same "meaning" assigned to each state or input entry) or can have dynamics that differ in state and input dimensions as well.

This library focuses on linear, time-invariant (LTI) dynamics, although it provides the tools to extend beyond this, including to non-linear and time-varying dynamics.

Dependencies

This library depends on the ndarray-linalg crate, which in turn depends on an LAPACK library being installed. ndarray-linalg exposes several options for choice of backend. To get going quickly, you can select the ndarray-linalg/intel-mkl feature when compiling/running/etc. It is strongly recommended, however, that you determine which backend best suites your needs and situation and specify that one instead.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Any contributions via the submission of pull requests, filing issues, or other methods are welcome and encouraged!

Dependencies

~65MB
~833K SLoC