Skip to main content

A Python Robot Control Framework for quickly prototyping control algorithms for different robot embodiments.

Project description

pyrcf

WORK IN PROGRESS. NOT READY FOR USE.

A Python Robot Control Framework for quickly prototyping control algorithms for different robot embodiments.

Primarily, this library provides an implementation of a typical control loop (via a MinimalCtrlLoop (extended from SimpleManagedCtrlLoop) class), and defines interfaces for the components in a control loop that can be used directly in these control loop implementations. It also provides utility and debugging tools that will be useful for developing controllers and planners for different robots. This package also provides implementations of basic controllers and planners.

In the long run, this package will also provide implementations of popular motion planners and controllers from literature and using existing libraries.

Continuous Integration Status

Ci Codecov GitHub issues GitHub pull-requests merged

License Python Pixi Badge

PyRCF Philosophy

PyRCF follows the principle of a single thread control loop where components are communicating with each other strictly using pre-defined message types, and run sequentially.

A generic control loop

LOOP:
  # Read latest robot state
  robot_state = ROBOT_INTERFACE->read_robot_state()

  # Update robot state with estimations (when all states are not directly measurable)
  robot_state = STATE_ESTIMATOR->update_robot_state_estimates(robot_state)

  # Generate global plan (high-level task objective or target)
  global_plan = GLOBAL_PLANNER->generate_global_plan()

  # Generate local plan based on state and global plan
  local_plan = LOCAL_PLANNER->generate_local_plan(robot_state, global_plan)

  # Generate control command based on state and local plan
  cmd = CONTROLLER->compute_commands(robot_state, local_plan)

  # Send command to robot
  ROBOT_INTERFACE->write_robot_command(cmd)

  # Maintain loop frequency (naive implementation)
  SLEEP(period)

END LOOP

This package provides interfaces to define custom components (such as controller, robot interface, global planner, local planner, etc) that can be run in a control loop, as well as provides an implementation of a control loop class which can execute these components in the required order at the specified rate. Implementations of simple forms of all components are available in this package, including simulated interfaces for many robot embodiments.

Custom controllers and planners can be implemented and quickly tested on existing robot interfaces or on custom robot interfaces (which can be easily defined).

More complex algorithms for control and planning will be provided by this package over time.

Tutorials and more details about concepts will be provided soon in the tutorials folder.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrcf-0.0.1.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

pyrcf-0.0.1-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file pyrcf-0.0.1.tar.gz.

File metadata

  • Download URL: pyrcf-0.0.1.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for pyrcf-0.0.1.tar.gz
Algorithm Hash digest
SHA256 7ec06e4a59470507a05e2a5629343801add8d671d698aaf34e90dd55fd75a87c
MD5 8125c80b10846ed50d146e4bf940fdbc
BLAKE2b-256 55956eea1985542e59beca151462b27ecbf7c6697559da5a70553ce39c985489

See more details on using hashes here.

File details

Details for the file pyrcf-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: pyrcf-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for pyrcf-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 829181f43f64417d4848c08d18edbd21f0f70a49e5b654fc0ad22f392d2ba50a
MD5 61846cea93b29a7a62c2a6461c83b1f6
BLAKE2b-256 fdff1512f28aae7b93f2f00b7d7722f9e0a81e219ef407393e8e544e8df6a05f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page