Move recording and playing¶
To keep the
move module as simple as possible, you can only define
Move as a predefined frequency and you can not define keyframes whenever you want. This could be added if it seems like it would be useful.
You can use the
move module to:
- record moves,
- play moves,
- save/load them on the disk.
MovePlayer are defined as subclass of
LoopPrimitive and can thus be used as such. For instance, if you want to record a 50Hz move on all the motor of an ergo-robot you can simply use the following code:
import time import pypot.robot from pypot.primitive.move import MoveRecorder, Move, MovePlayer ergo = pypot.robot.from_config(...) move_recorder = MoveRecorder(ergo, 50, ergo.motors) ergo.compliant = True move_recorder.start() time.sleep(5) move_recorder.stop()
This move can then be saved on disk:
with open('my_nice_move.move', 'w') as f: move_recorder.move.save(f)
And loaded and replayed:
with open('my_nice_move.move') as f: m = Move.load(f) ergo.compliant = False move_player = MovePlayer(ergo, m) move_player.start()
It is important to note that you should be sure that you primitive actually runs at the same speed that the move has been recorded. If the player can not run as fast as the framerate of the recorded
Move, it will be played slowly resulting in a slower version of your move.