Releases: jtebert/gridsim
Releases · jtebert/gridsim
Gridsim v0.4
See all changes in the documentation Changelog (with links to relevant methods and classes).
Added
- You can now set the contents of a
Messageby key, without needing to create a new message. - When creating a
ConfigParser, you can now choose to show warnings when getting a value that isn't in the config file - If a data directory (in the path for a
Loggerfilename) does not exist, it will be created. - New method
Logger.log_system_info()allows you to easily save information about the system on which the experiments are being run. - Paths for both
Loggerand.ImageEnvironment(used viaWorldsupport using~to indicate home directory
Changed
- Trying to have a
Robotsample outside of the arena now returnsNone. Previously, this threw a lower-level error about an image index being out of range. - Decrease
Worldtag opacity - Formatting: Changed to 100-character line limit (from 80).
- [Under the hood] Renamed
WorldEnvironmenttoImageEnvironment
Fixed
- Previously, if you tried to
Robot.sample()a negative position in theWorld, it would loop the index around and give you the value of a position on the other side of the environment. Now, this is considered out of bounds and returnsNone. - Improve performance for drawing large number of tags in the world (by converting coordinates to integers).
- Trying to use the
Viewerwithout an environment image in the World would cause a crash. Now it doesn't. - Return type and documentation for
Robot.sample()now matches that of the environment (returns None if sampling outside boundaries). - Fix broken
utils.get_version()function. - Time in
Loggeris now stored as an integer (since it's ticks). Previously, it was a float.
Gridsim v0.3
TL;DR: You can now tag locations in the world, and there's a more intuitive API for messages.
See all changes in the documentation Changelog (with links to relevant methods and classes).
Added
- Grid cells in the World can now be tagged with a color by the
World.tag()method. (The color tag is only used by theViewerwhen it draws theWorld.) - The Robot's
Robot.sample()method now includes an option to tag the sampled location in theWorldwith a color. Messagenow has "truthiness": null messages areFalseand non-null messages areTrue.- Messages contents can be accessed by key with the
Message.get()method, as well as still being able to retrieve the entire message dictionary contents. - Created this changelog
Changed
Message.tx_id()has been renamed to the (more informative)Message.sender.Robot.init()isn't run until the robot is placed in the World. This allows robots to have access to World information (like the arena size) in theinit()method.- [Under the hood]
World's environments are abstracted to have empty and non-empty types, which cleans up code to get rid of reliance on checking for environments beingNone. - [Under the hood] Reduce reliance on cheating and accessing private variables and methods (underscore-prefixed methods/variables)
Removed
Message.is_null()has been removed. Instead, directly use the boolean conversion described above.
Fixed
- Order of commands run on the robot resulted in incorrect movements (robot-specific
Robot.move(), then Robot controller/loop function, then collision/environment-aware_moveoperation to move the robots which was using a different move command) - Remove mypy/flake8 from requirements, since they're for local development/linting.
Gridsim v0.2.1
This isn't even an update to the code; this is me figuring out how to manage/integrate releases on GitHub, PyPi, Read The Docs, and Travis CI.
Gridsim v0.2
This adds the ability to add images as background in a World, for display and sensing.
It also provides more complete documentation.
Gridsim 0.1.3
This is the first pre-release of my grid-based simulator.
It lacks any Robot sensing but allows full control of the Robots, as well as configuration and logging -- with a viewer.