|
1 | | -# Kilosim: Kilobot Simulator |
| 1 | +#  Kilosim: Kilobot Simulator |
2 | 2 |
|
3 | 3 | [](https://travis-ci.com/jtebert/kilosim) |
| 4 | +[](https://github.com/jtebert/kilosim/issues) |
| 5 | +[](https://github.com/jtebert/kilosim/releases) |
4 | 6 |
|
5 | 7 | This is maintained on GitHub in the [kilosim repository](https://github.com/jtebert/kilosim). You can [submit any issues or questions here](https://github.com/jtebert/kilosim/issues). |
6 | 8 |
|
7 | | -[__Full Documentation__](https://jtebert.github.io/kilosim/index.html) |
| 9 | +[**Full Documentation**](https://jtebert.github.io/kilosim/index.html) |
8 | 10 |
|
9 | 11 | --- |
10 | 12 |
|
11 | | -Kilosim is designed to be a fast, lightweight, pseudo-physical* simulator for Kilobots. Notable benefits include: |
| 13 | +Kilosim is a fast, lightweight, pseudo-physical* C++ simulator for Kilobot robots. Notable benefits include: |
12 | 14 |
|
13 | 15 | - Pseudo-physical model means fast simulation for high-throughput |
14 | | -- Directly use code written for Kilobots, using the same Kilolib API |
15 | | -- Included Logger to easily to save experiment parameters in log continuous state data |
| 16 | +- Easily re-use code written for Kilobots, using the same Kilolib API |
16 | 17 | - Includes support for ambient light sensing |
17 | | -- Cross-platform Viewer for debugging and recording simulations |
18 | | -- [In progress] Parallelized with OpenMP (run a 100-minute, 800 robot simulation in about 10 seconds) |
19 | | -- Easy configuration with JSON files to run multiple and varied experiments |
| 18 | +- Included `Logger` to easily to save experiment parameters in log continuous state data |
| 19 | +- Cross-platform `Viewer` for debugging and recording simulations |
| 20 | +- Easy configuration with JSON files to run multiple trials and varied experiments |
| 21 | +- *[In progress]* Parallelization with OpenMP |
20 | 22 |
|
21 | | -*\* Pseudo-physical means that it is spatial and handles issues like collisions in a functional but hand-wavy manner. We make no attempt to accurately model true physical interactions. If you want to see what this means, run an example simulation with the Viewer.* |
| 23 | +\* *Pseudo-physical means that it is spatial and handles issues like collisions in a functional but hand-wavy manner. We make no attempt to accurately model true physical interactions. If you want to see what this means, run an example simulation with the Viewer.* |
| 24 | + |
| 25 | +Note that this project is currently in a pre-release state and may still contain bugs, incomplete documentation, and missing features. If you have issues using the code, contact the developers or [open an issue](https://github.com/jtebert/kilosim/issues/new). |
22 | 26 |
|
23 | 27 | ## Installing and Using |
24 | 28 |
|
| 29 | +**NOTE:** At this time, we only support Kilosim on Linux. Other operating systems will be supported by a full release. |
| 30 | + |
| 31 | +You can either [clone the repository from GitHub](https://github.com/jtebert/kilosim) or [download the latest release](https://github.com/jtebert/kilosim/releases). |
| 32 | + |
25 | 33 | ### Dependencies |
26 | 34 |
|
27 | 35 | [HDF5](https://portal.hdfgroup.org/display/HDF5/HDF5), [SFML](https://www.sfml-dev.org/index.php), and [OpenMP](https://www.openmp.org/). Install on Ubuntu-like systems with: `sudo apt install libsfml-dev libhdf5-dev libomp-dev` |
@@ -49,22 +57,46 @@ Run the executable generated by `make exec` |
49 | 57 |
|
50 | 58 | ./bin/kilosim |
51 | 59 |
|
52 | | -### Build Documentation |
| 60 | +### Using static library |
53 | 61 |
|
54 | | -Build the HTML documentation: (Requires Doxygen to be installed.) |
| 62 | +**TODO:** Write tutorial on linking to static library |
55 | 63 |
|
56 | | - doxygen |
57 | | - |
58 | | -This will automatically use the settings in `Doxyfile` and save the results to `docs/`. (The latest full documentation is automatically generated and published [here](https://jtebert.github.io/kilosim/index.html).) |
59 | 64 |
|
60 | 65 | ## Configuration and Parameters |
61 | 66 |
|
62 | 67 | Configuration files are defined as JSON files and can be loaded with a ConfigParser. The contents of flat JSON files can be automatically saved with your data using the Logger. (Support for saving JSON objects and arrays to HDF5 may be added in the future if someone needs/wants it.) |
63 | 68 |
|
64 | 69 | There are no fixed requirements for the contents of the configuration files; it's an un-opinionated convenience tool for importing and using whatever (atomic) parameters you want. |
65 | 70 |
|
| 71 | +## Support |
| 72 | + |
| 73 | +If you are having issues installing or using the simulator, [open an issue](https://github.com/jtebert/kilosim/issues/new) or [email Julia](mailto:julia@juliaebert.com). |
| 74 | + |
| 75 | +### Known Issues |
| 76 | + |
| 77 | +- Fails with GCC 8 (We suspect this is a GCC bug; see [issue #23](https://github.com/jtebert/kilosim/issues/23).) **Workaround:** Change your GCC version. |
| 78 | +- Viewer does not work over SSH |
| 79 | + |
| 80 | +## Contributing |
| 81 | + |
| 82 | +We welcome contributions to the repository. To find things we're currently looking for help with, [check out the open issues](https://github.com/jtebert/kilosim/issues?utf8=✓&q=is%3Aissue+is%3Aopen+). |
| 83 | + |
| 84 | +If you discover a bug or have an idea, for an improvement, [open an issue](https://github.com/jtebert/kilosim/issues/new). |
| 85 | + |
| 86 | +If you add something you think would be useful to others, submit a pull request. All code should be [fully documented](http://www.doxygen.nl/manual/docblocks.html). You can check your documentation by [building the documentation locally](#build-documentation) Code reviews will be required for all pull requests, but we currently do not perform unit testing. |
| 87 | + |
| 88 | +See a [full list of the contributors and their contributions here](CONTRIBUTORS.md). |
| 89 | + |
| 90 | +### Build Documentation |
| 91 | + |
| 92 | +Build the HTML documentation: (Requires Doxygen to be installed.) |
| 93 | + |
| 94 | + doxygen |
| 95 | + |
| 96 | +This will automatically use the settings in `Doxyfile` and save the results to `docs/`. (The latest full documentation is automatically generated and published [here](https://jtebert.github.io/kilosim/index.html).) |
| 97 | + |
66 | 98 | ## License |
67 | 99 |
|
68 | | -**TBD** |
| 100 | +This software is released under the [MIT License](LICENSE). |
69 | 101 |
|
70 | | -This shouldn't be publicly used or shared until a license has been set for this software. |
| 102 | +If you use this software for a publication, please cite it. |
0 commit comments