- This is not the regular motion editor project. This is a work in progress with the hope of adding time factor to the motion execution of the base code.
- Right now UTAustinVilla base code uses a PID controller to send incremental joint values to the server but it doesn't consider time in computation of increment values.
- The custom skill
SKILL_MOTION_EDITOR
is defined and integrated to UTAustinVilla skill execution mechanism. - Method
UpdateKeyframeSequenceEntry
is almost adapted to the new skill execution.
- The UI font of the motion editor is set as
Fira Mono
- The UI window size is shrinked so that it will be easier to work with.
- The skill execution mechanism is being modified such that single keyframe can be executed as well as executing all of the keyframes in order. But this part is still incomplete and not working.!!!!
- It is still a work in progress. Some serious core dump errors have been solved. but there are still some issues about executing the last keyframe!!!!
- I have changed coefficient
d
of the PID controller invoid BodyModel::initialiseEffectors()
. I have set it to zero so that it won't have any effect on the incremental joint values sent torcssserver3d
. - In
KeyFrame::KeyFrame()
I have settoWaitTime
andtoWaitTargets
totrue
.
- I have defined a coefficient named waitTimeCoeff in KeyFrame class. This coefficient is multiplied to KeyFrame::waitTime variable so that the user can set realistic values for the keyframe time variable. But currently this doesn't work well with UTAustinVilla base code; i.e. UTAustinVilla kick.skl file is not executed correctly due to the division of (targetAngle-CurrentAngle) by waitCycles in Effector::updateError method.
- I have made some changes on computation of waitCycles. Previously, waitCycles could have very small values. This may cause instability in robot servos. So I added a minimum value of 0.2 to waitCycles. This way waitCycles will never be less than 0.2 and it will never cause servo vibration.
- By the way, after fixing the issue mentioned above, I was able to perform a 7 meter kick (without optimization). The kick is completely handmade.
- I have made some changes to save/open motion file procedure. Now the time of each keyframe will be saved in milliseconds just like the format used by RoboNewbie team.
- I have added the getup capability to the motion editor such that the user can command the robot to get up whenever desired. To do this I use a if(bGetup && checkingfall()) condition. So when bGetup flag is false, checkingfall is not called and the robot won't getup.
- I have made some changes in selectSkill method in order to avoid the robot shocking motion when monitor is reset. But the change didn't solve the problem completely.
- I have added Auto Fal Recovery button to the motion editor. If this check box is checked, then the robot will get up automatically in case it falls. But if it is not checked, the user must command the robot to get up manually.
- I have set toWaitTargets to false so that the motion editor behavior will be consistent with the base code.
- I have improved jerky player placement when 'Reset Monitor' button is pressed.
- Player position in the motion editor is not the same as the one in UTAustinVilla base code.
- checkingfall needs to be disabled during kick execution.
- Not executing last keyframe of the skill is fixed. To fix this the condition if(skills[skill]->done( bodyModel, worldModel) || bodyModel->useOmniWalk()) in naobehavior.cc is modified so that the skill execution mechanism is not reset after executing SKILL_MOTION_EDITOR.
- Delete keyframe event handler is changed. Now after deleteing the selected keyframe, always the default keyframe for execution will be the first keyframe.
- The body type variable (agentBodyType) used by motion editor is linked with the body type variable used by UTAustinVilla code. This way I managed to add toe functionality for agent type 4.
- Thanks to my good friend Daruish Hasanpoor, I finally managed to get the motion editor menu items working on the target machines with no Qt IDE installed. To do this,
- Since the head joints are usually controlled manually in the agent program (at least in UTAustinVilla code), editing head joints are disabled in the motion editor.