Hi Nick,
I was looking into iTasc code for the ways to integrate new dynamics solver. I looked at the current implementation of scene, wdls_solver and other itasc components and
have some questions.
1) In Scene and Solver there are Wq and Wy weighing matrices. How are their values chosen?
As I know Wy is a diagonal matrix containing values related to subtask priorities? and Wq comes from pr2robot but what about their values?
are they all user defined?
2) is control around ydot taking place in Solver? why not ConstraintController? That is what it is done is wdls_solver, or?
3) What is the purpose of Priority struct? Does it contain subtask specific A, Wy, ydot? These are then calculated in calculateA of the Scene for each loop/subtask generating vector of As,Wys ydots for
each VKC? There are two such structs one solver side and one scene side, but they differ a little. Are priorities updated according to p = I - AA_pseudoinverse?
4) Did I understand this correctly that the solver takes these As, Wys and ydots based on their priorities and generates a set of qDots for the robot (so sequentially satisfying each subtask depending on the number of degrees allocated for each of them?)
Thanks in advance.
Sincerely,
Azamat
questions on itasc code
On 02/06/2012 09:36 AM, Azamat Shakhimardanov wrote:
> Hi Nick,
>
> I was looking into iTasc code for the ways to integrate new dynamics solver. I looked at the current implementation of scene, wdls_solver and other itasc components and
> have some questions.
>
>
> 1) In Scene and Solver there are Wq and Wy weighing matrices. How are their values chosen?
> As I know Wy is a diagonal matrix containing values related to subtask priorities? and Wq comes from pr2robot but what about their values?
> are they all user defined?
in most cases they are defined as properties of the tasks/robots/objects respectively
there are used to ponderate the tasks or to use give a DOF of a robot a penalty
but it is not necessary a diagonal matrix, it would make sense to give the weight matrix as Wq for example (that will change with the state of the robot), to minimize
kinetic energy (this will change with the state of the robot)
>
> 2) is control around ydot taking place in Solver? why not ConstraintController? That is what it is done is wdls_solver, or?
control is done in the constraint-controller:
the solver does nothing more than ydot => qdot desired transformation (task/output space to joint space), taking into account weights and priorities
>
> 3) What is the purpose of Priority struct? Does it contain subtask specific A, Wy, ydot? These are then calculated in calculateA of the Scene for each loop/subtask generating vector of As,Wys ydots for
> each VKC? There are two such structs one solver side and one scene side, but they differ a little. Are priorities updated according to p = I - AA_pseudoinverse?
tasks (I use tasks and a composite task as a combination of tasks, instead of subtasks and task) get a priority, the tasks are grouped per priority
the null space of the 1st priority is used for complying with the 2nd priority, the null space of the 2nd is used for the 3th...
have a look at following papers for more info on prioritization:
Int. Fed. Aut. Control, Kyoto, Japan, 1981, pp. XIV:78–83.
Y. Nakamura, H. Hanafusa, and T. Yoshikawa, “Task-priority based
redundancy control of robot manipulators,” Int. J. Robotics Research,
vol. 6, no. 2, pp. 3–15, 1987.
P. Baerlocher and R. Boulic, “Task-priority formulations for the
kinematic control of highly redundant articulated structures,” in Proc.
Intelligent Robots and Systems. Innovations in Theory, IEEE IROS’98,
ser. Practice and Applications (Cat. No.98CH36190), 1998, pp. 323–
329.
>
> 4) Did I understand this correctly that the solver takes these As, Wys and ydots based on their priorities and generates a set of qDots for the robot (so sequentially satisfying each subtask depending on the number of degrees allocated for each of them?)
so it is not sequentially for each subtask
>
> Thanks in advance.
> Sincerely,
> Azamat