aboutsummaryrefslogtreecommitdiffstats
path: root/docs/Code_Overview.md
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-11-17 14:56:15 -0500
committerKevin O'Connor <kevin@koconnor.net>2018-11-17 14:56:46 -0500
commitbb417657145d8a95d26d701d15d93728d17271b6 (patch)
tree4c550e10a8996cd207c51aea59719332bd71708d /docs/Code_Overview.md
parentcd1e669306d2b07ce7f02cd3f3459085d7e76d41 (diff)
downloadkutter-bb417657145d8a95d26d701d15d93728d17271b6.tar.gz
kutter-bb417657145d8a95d26d701d15d93728d17271b6.tar.xz
kutter-bb417657145d8a95d26d701d15d93728d17271b6.zip
docs: Minor update to Code_Overview.md with further kinematics info
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'docs/Code_Overview.md')
-rw-r--r--docs/Code_Overview.md38
1 files changed, 20 insertions, 18 deletions
diff --git a/docs/Code_Overview.md b/docs/Code_Overview.md
index bcf50ab5..3060e0ea 100644
--- a/docs/Code_Overview.md
+++ b/docs/Code_Overview.md
@@ -19,7 +19,8 @@ the generic directory (eg, src/generic/somefile.h).
The **klippy/** directory contains the host software. Most of the host
software is written in Python, however the **klippy/chelper/**
-directory contains some C code helpers. The **klippy/extras/**
+directory contains some C code helpers. The **klippy/kinematics/**
+directory contains the robot kinematics code. The **klippy/extras/**
directory contains the host code extensible "modules".
The **lib/** directory contains external 3rd-party library code that
@@ -159,16 +160,16 @@ provides further information on the mechanics of moves.
* The goal of the kinematics classes is to translate the movement in
cartesian space to movement on each stepper. The kinematics classes
- are in cartesian.py, corexy.py, delta.py, and extruder.py. The
- kinematic class is given a chance to audit the move
- (`ToolHead.move() -> kin.check_move()`) before it goes on the
- look-ahead queue, but once the move arrives in *kin*.move() the
- kinematic class is required to handle the move as specified. Note
- that the extruder is handled in its own kinematic class. Since the
- Move() class specifies the exact movement time and since step pulses
- are sent to the micro-controller with specific timing, stepper
- movements produced by the extruder class will be in sync with head
- movement even though the code is kept separate.
+ are located in the klippy/kinematics/ directory. The kinematic class
+ is given a chance to audit the move (`ToolHead.move() ->
+ kin.check_move()`) before it goes on the look-ahead queue, but once
+ the move arrives in *kin*.move() the kinematic class is required to
+ handle the move as specified. Note that the extruder is handled in
+ its own kinematic class. Since the Move() class specifies the exact
+ movement time and since step pulses are sent to the micro-controller
+ with specific timing, stepper movements produced by the extruder
+ class will be in sync with head movement even though the code is
+ kept separate.
* Klipper uses an
[iterative solver](https://en.wikipedia.org/wiki/Root-finding_algorithm)
@@ -308,9 +309,9 @@ Useful steps:
1. Start by studying the
"[code flow of a move](#code-flow-of-a-move-command)" section and
the [Kinematics document](Kinematics.md).
-2. Review the existing kinematic classes in cartesian.py, corexy.py,
- and delta.py. The kinematic classes are tasked with converting a
- move in cartesian coordinates to the movement on each stepper. One
+2. Review the existing kinematic classes in the klippy/kinematics/
+ directory. The kinematic classes are tasked with converting a move
+ in cartesian coordinates to the movement on each stepper. One
should be able to copy one of these files as a starting point.
3. Implement the C stepper kinematic position functions for each
stepper if they are not already available (see kin_cart.c,
@@ -324,10 +325,11 @@ Useful steps:
coordinates from the current position of each stepper. It does not
need to be efficient as it is typically only called during homing
and probing operations.
-5. Other methods. The `move()`, `home()`, `check_move()`, and other
- methods should also be implemented. These functions are typically
- used to provide kinematic specific checks. However, at the start of
- development one can use boiler-plate code here.
+5. Other methods. Implement the `move()`, `check_move()`, `home()`,
+ `motor_off()`, `set_position()`, and `get_steppers()` methods.
+ These functions are typically used to provide kinematic specific
+ checks. However, at the start of development one can use
+ boiler-plate code here.
6. Implement test cases. Create a g-code file with a series of moves
that can test important cases for the given kinematics. Follow the
[debugging documentation](Debugging.md) to convert this g-code file