An open API service indexing awesome lists of open source software.

https://github.com/dadananjesha/lifreader

LIFReader provides a streamlined way to understand and work with AGV systems. Whether you're an integrator, system designer, or researcher, LIFReader offers a valuable toolkit for navigating the world of automated vehicle layouts.
https://github.com/dadananjesha/lifreader

docker layout-interchange-format lif lifreader open-source published pypi-package robots vda5050 vdma

Last synced: 2 months ago
JSON representation

LIFReader provides a streamlined way to understand and work with AGV systems. Whether you're an integrator, system designer, or researcher, LIFReader offers a valuable toolkit for navigating the world of automated vehicle layouts.

Awesome Lists containing this project

README

          

# πŸš€ LIFReader: Visualize and Understand AGV Layouts πŸ—ΊοΈ

[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python Version](https://img.shields.io/badge/Python-3.7+-blue.svg)](https://www.python.org/downloads/)
[![Dependencies](https://img.shields.io/badge/Dependencies-Up%20to%20date-brightgreen)](https://requires.io/github/your-username/LIFReader/requirements/?branch=main)
[![Code Style](https://img.shields.io/badge/code%20style-pep8-orange.svg)](https://www.python.org/dev/peps/pep-0008/)

## ✨ Overview

LIFReader is a powerful Python tool designed to **parse, visualize, and analyze AGV (Automated Guided Vehicle) layouts** defined in the Layout Interchange Format (LIF). Imagine effortlessly transforming complex AGV track layouts into clear, insightful visualizations – that's what LIFReader empowers you to do!

Inspired by the VDA 5050 standard, LIFReader provides a streamlined way to understand and work with AGV systems. Whether you're an integrator, system designer, or researcher, LIFReader offers a valuable toolkit for navigating the world of automated vehicle layouts.

## 🌟 Key Features

* **Effortless LIF Parsing**: Seamlessly converts LIF files into a structured graph representation.
* **Stunning Visualizations**: Transforms AGV layouts into easily understandable visual maps using Matplotlib.
* **Fully Configurable**: Customize visualization settings (colors, nodes sizes, labels) via a simple `config.json` file.
* **Logging Support**: Track script activity with comprehensive logging for debugging and analysis.
* **Lightweight and Modular**: Easy to integrate into existing projects and workflows.

## πŸ› οΈ Installation

Get LIFReader up and running in a few simple steps:

1. **Clone the repository:**

```
git clone https://github.com/your-username/LIFReader.git
cd LIFReader
```

2. **Install the dependencies:**

```
pip install networkx matplotlib pydantic
```

## πŸš€ Quick Start

Ready to visualize your AGV layout? Follow these steps:

1. **Configure `config.json`**:

* Update the `lif_file` path in `config.json` to point to your LIF file.
* Customize graph appearance in the `graph_settings` section.

2. **Run the script:**

```
python main.py
```

✨ Voila! ✨ You'll see a Matplotlib window displaying your AGV layout. An image file is created by the script to the file path you provided in the filepaths section.

## βš™οΈ Configuration

The `config.json` file puts you in control! Here's a breakdown of the key settings:

* **`file_paths`**: Specify file locations.
* `lif_file`: Path to your LIF JSON file.
* `output_graph`: (Optional) Path to save the visualization as a PNG image.
* **`graph_settings`**: Customize the look and feel of the graph.
* `node_size`: Size of nodes.
* `node_color`: Color of nodes.
* `with_labels`: Show/hide node labels.
* `edge_color`: Color of edges.
* `edge_width`: Width of edges.
* `edge_alpha`: Edge transparency.
* `edge_style`: Edge line style ("solid", "dashed", etc.).
* `edge_connectionstyle`: Edge curvature ("-" for straight lines).
* **`logging`**: Configure logging behavior.
* `log_level`: Set the logging level ("INFO", "DEBUG", "WARNING", "ERROR").
* `log_file`: Specify the log file path.
* **`command_line_args`**: Enable or disable features.
* `lif`: Enable LIF parsing.
* `visualize`: Enable graph visualization.

## πŸ—οΈ Project Structure

LIFReader is thoughtfully organized for clarity and maintainability:

```
LIFReader/
β”œβ”€β”€ lif_reader/
β”‚ β”œβ”€β”€ init.py
β”‚ β”œβ”€β”€ json_reader.py
β”‚ β”œβ”€β”€ graph/
β”‚ β”‚ β”œβ”€β”€ init.py
β”‚ β”‚ β”œβ”€β”€ graph_renderer.py
β”‚ β”‚ β”œβ”€β”€ lif_graph.py
β”‚ β”œβ”€β”€ models/
β”‚ β”‚ β”œβ”€β”€ init.py
β”‚ β”‚ β”œβ”€β”€ action.py
β”‚ β”‚ β”œβ”€β”€ action_parameter.py
β”‚ β”‚ β”œβ”€β”€ control_point.py
β”‚ β”‚ β”œβ”€β”€ edge.py
β”‚ β”‚ β”œβ”€β”€ layout.py
β”‚ β”‚ β”œβ”€β”€ lif.py
β”‚ β”‚ β”œβ”€β”€ load_restriction.py
β”‚ β”‚ β”œβ”€β”€ meta_information.py
β”‚ β”‚ β”œβ”€β”€ node.py
β”‚ β”‚ β”œβ”€β”€ station.py
β”‚ β”‚ β”œβ”€β”€ trajectory.py
β”‚ β”‚ β”œβ”€β”€ vehicle_type_edge_property.py
β”‚ β”‚ β”œβ”€β”€ vehicle_type_node_property.py
β”‚ β”œβ”€β”€ utils/
β”‚ β”‚ β”œβ”€β”€ init.py
β”‚ β”‚ β”œβ”€β”€ config_loader.py
β”œβ”€β”€ files/
β”‚ β”œβ”€β”€ example2.json
β”œβ”€β”€ logs/
β”‚ β”œβ”€β”€ lif_reader.log
β”œβ”€β”€ config.json
β”œβ”€β”€ main.py
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ setup.py
β”œβ”€β”€ LICENSE
└── README.md

```

## 🎯 Contributing

LIFReader thrives on community contributions! Whether you have bug fixes, new features, or documentation improvements, we welcome your input.

1. Fork the repository.
2. Create a feature branch (`git checkout -b feature/your-feature`).
3. Commit your changes (`git commit -am 'Add some feature'`).
4. Push to the branch (`git push origin feature/your-feature`).
5. Create a new Pull Request.

## πŸ“œ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## πŸ™ Acknowledgements

* This project was created according to VDMA.
* Thanks to the open-source community for providing valuable libraries and resources.

## ⭐️ Support & Call-to-Action

If you find this project useful, please consider:
- **Starring** the repository ⭐️
- **Forking** the project to contribute enhancements
- **Following** for updates on future improvements

Your engagement helps increase visibility and encourages further collaboration!

---

Happy coding! πŸš€βœ¨