See also
Control | Stiffness, Joint, Locomotion, Cartesian, Whole body. |
Reflexes | Self-collision avoidance, External-collision avoidance, Fall manager, Smart Stiffness Diagnosis effect, Push Recovery. |
Idle | Idle. |
Tools | General tools, Motion task. |
The ALMotion module provides methods which facilitate making the robot move.
It contains four major groups of methods for controlling the:
The ALMotion module implements also some “reflexes” such as Self-collision avoidance, External-collision avoidance, Fall manager, Smart Stiffness and Diagnosis effect.
Advanced users may need to deactivate all or part of the reflexes. For further details see: Deactivation of the safety reflexes.
The module also provides tools to define the robot behavior when no user command is sent. See Idle.
This module gives also access to useful information about the robot hardware, such as the number of joints, their name, limits, the available sensors and so on. See General tools.
ALMotion runs at 50Hz (cycle of 20ms).
In ALMotion, every time you call an API to request a motion, a “motion task” is created to handle the job. See Motion task to learn how to manage these tasks.
Performance
ALMotion is a core module. As it manages some reflexes and updates the model every cycle, the module consumes a constant CPU. This consumption could increase during special tasks like walk.
The table below gives you some hints of ALMotion CPU consumption.
Task \ Processor | Atom (NAO V4) |
---|---|
update Model | 3% |
walking | 10.8% |
We have tried hard to maintain a unique Motion API for both NAO and Pepper.
However, some adaptations were necessary:
Group | Main adaptations | For further details, see ... |
---|---|---|
Stiffness | Manual Stiffness control is forbidden for Pepper‘s lower part. | Stiffness control |
Locomotion control | Specific stability constraints on the leg. Locomotion methods are prohibited if power hatch is open. |
Locomotion control |
Cartesian control | Most of the methods are unusable. | Cartesian control |
Whole Body control | Do not use any Whole Body control methods. | Whole Body control |
Safety reflexes | A specific safety reflex is dedicated. | Push Recovery |
Frontal security distance is correlated with speed. | External-collision avoidance | |
Hardware issues trigger specific Pepper only - Rest reflexes. | Diagnosis effect |
Essential information to deal with ALMotion:
The X axis is positive toward the robot’s front, the Y from right to left and the Z is vertical.
The ALMotion module uses the SI - International System of Units (meters, second, radian...).
Depending on the method chosen, ALMotion requires to name joints, group of joints or a body part.
called ... | are used by ... | |
---|---|---|
Body parts | Effectors | Cartesian control and Whole Body control |
Joint names can be called individually or by groups | Chains | Stiffness control, Joint control, General tools and Motion task. |
For further details, see:
If you are familiar with the ALMotion definition and you want to go further creating advanced behavior in C++ like a new reflex, a better object tracker or use at the same time DCM module and ALMotion, see: Motion - advanced.
Each reflex can be temporarily deactivated, using the relevant setNameOfReflexEnabled method.
However, deactivation of very critical reflexes will not be effective unless the owner of the robot has previously given his consent.
The list below specify whether the reflex deactivation require or not owner consent:
Method | User consent required | |
---|---|---|
NAO | Pepper | |
ALMotionProxy::setCollisionProtectionEnabled() | No | No |
ALMotionProxy::setDiagnosisEffectEnabled() | No | No |
ALMotionProxy::setSmartStiffnessEnabled() | No | No |
ALMotionProxy::setExternalCollisionProtectionEnabled() | No | Yes, Arms excepted |
ALMotionProxy::setFallManagerEnabled() | Yes | Yes |
ALMotionProxy::setPushRecoveryEnabled() | NA | Yes |
For further details about owner consent, see: Consent for the deactivation of safety reflexes.