Skip to content

Module drivers core

Stefan deBruyn edited this page Oct 22, 2018 · 12 revisions

Module drivers/core

Maintainers

Slack Github
Stefan @stefandebruyn @stefandebruyn
Tianshu @thetianshuhuang @thetianshuhuang

Related Issues

Usage

robot module

Contains the lowest-level robot class.

  • RobotFrame - A threaded encapsulation of subsystem states and an instruction sequence associated with them. Implementations should override loop

robotcore module

core.robotcore contains abstract representations of robot subsystems intended to provide a common interface for both simulated and actual robots.

  • Subsystem - Parent of all subsystems. Holds a unique name by which to identify the system
  • Motor - Parent of all motor types. Holds a robotmotion.MotionState and the timestamp of the last update
  • StepperMotor - Type of Motor that can be updated with a position x and a timestamp t. Velocity, acceleration, and jerk are then calculated by approximating the slopes of dx/dt, d2x/dt2, and d3x/dt3.
  • BinaryActuator - An actuator with a binary state, such as a servo claw
  • AnalogActuator - An actuator with a bounded state, such as a linear slide

robotmotion module

core.robotmotion contains things relating to motion planning and profiling. Like robotcore, this module is built to be common ground for the simulator and the robot.

  • MotionProfile - Represents a motion profile fitted to some MotionConstraints and a pair of MotionStates. Target states at specific points in time within the profile can be fetched with state_at(float)
  • MotionConstraints - The maximum velocity, acceleration, and jerk magnitudes allowed for a particular profile
  • MotionState - An instantaneous kinematic state in 1D space; <pos, vel, accel, jerk, time>

profiling module

Contains the actual motion profile generation algorithms.

  • make_trap - Generates a trapezoidal (three-segment, acceleration-limited) profile
  • make_scurve - Generates an S-curve (seven-segment, jerk-limited) profile

The profiling algorithms have some drawbacks. See the notes at the top of drivers/core/profiling.py.

Clone this wiki locally