Week6

Week #6 #

Final deliverables #

Project overview #

Our project is a Python-based control library for interacting with physical cart-pole mechanism. The library abstracts the complexity of serial communication and device management into a simple, user-friendly API.

The library supports both real hardware control, making it suitable for algorithm development and testing.

This solution targets robotics students, engineers and researchers working with physical lab devices, helping them simplify the process of cart-pole control and experimentation.

Features #

  • Control library (innocontrol) for CartPole hardware interaction.
  • Device connection management:
    • connect()
    • disconnect()
  • Joint state retrieval:
    • get_joint_state() — returns positions and velocities.
  • Force control:
    • set_joint_efforts() — sends effort/force commands to motors.
  • Experiment control:
    • start_experimnet()
    • stop_experiment()
  • Public API documentation (via GitHub Pages).

Tech stack #

  • Python 3.10+
  • Serial communication via pyserial
  • Sphinx (for API documentation)
  • Docker (optional, for packaging)
  • Markdown / GitHub Pages (documentation hosting)
  • ESP 32 dev board (main computaton of Controll Box)
  • C/C++ for ESP32

Setup instructions #

  1. By clonning repository: Clone repository:
git clone https://github.com/iu-capstone-project-2025/total_control.git
cd total_control

Install dependencies:

pip install -r requirements.txt

Or by pip:

pip install innocontrol
  1. Connect cartpole via USB

  2. Example usage:


from inno_control.devices import CartPole

cart = CartPole('<your /dev port>')
cart.connect()
cart.start_experimnet()

state = cart.get_joint_state()
cart.set_joint_efforts(100)

cart.stop_experiment()
cart.disconnect()
  1. Access API documentation:

https://iu-capstone-project-2025.github.io/total_control/

Presentation draft #

https://docs.google.com/presentation/d/1-JeMrnjwtoxeAh8rwuWfYGbkSolINBjYeGRhfkOGHkk/edit?usp=sharing

Weekly commitments #

Individual contribution of each participant #

Artyom - dosc API and refactor

Evgenii - Hardware design and refactoring

Anastasia - Presentation and RL research

Petr - Write report and RL

Marat - Control system and RL

Plan for Next Week #

  • Final project presentation.

  • Release library and documentation.

  • Fix bugs and prepare presentation programms

Confirmation of the code’s operability #

We confirm that the code in the main branch:

  • In working condition.
  • Run via docker-compose (or another alternative described in the README.md).