Recentemente passei à fase do pick and place no eezybot arm2, mas pelos vistos vou encalhar nesta fase.
O problema que encontrei é a dificuldade no posicionamento do end effector link on eezybotarm mk2 quando a mesma é efectuada por um script em python.
Não consegui efectuar um único movimento baseado na indicação da pose de destino com a interface do moveit move group em python. O que me deixa desconcertado face ao sucesso em resolver a cinemática inversa e planear trajectorias usando o rviz. Especialmente quando se usa Allow Aproximate IK Solutions activo.
A mensagem habitual é a seguinte:
[ INFO] [1590451846.572774885]: ABORTED: No motion plan found. No execution attempted.
Tentei várias soluções sem qualquer sucesso. Primeiro tentei alterar a tolerancia relativamente ao objectivo com o uso dos seguintes métodos:
move_group.set_goal_tolerance(0.1) move_group.set_goal_position_tolerance(0.01) move_group.set_goal_orientation_tolerance(0.1)
Nestas experiências o que consegui foi explicitar uma tolerancia tão grande que a decisão era nao se mexer porque já estava no sitio.
Como não tive sucesso, numa segunda fase tentei usar outro IK solver. Encontrei boas referencias relativamente ao bio_ik disponivel no seguinte endereço, mas também não tive sucesso.
- https://github.com/TAMS-Group/bio_ik
Nota: O bio_ik solver á semelhança do LMAK também permite a especificação da rotação sobre o eixo z (joint_1) no eezybotarm mk2.
Por último descobri indicações que o seguinte método tinha o mesmo efeito que o Allow Aproximate IK Solutions, activo.
move_group.set_joint_value_target(pose_goal, "eef_link", True)
Mais uma vez não tive qualquer sucesso ao efectuar o posicionamento do braço no script de python.
Neste caso acresce a seguinte mensagem de aviso
[ WARN] [1590451841.449395412]: Returning dirty link transforms
Links
https://answers.ros.org/question/329107/moveit-approximate-ik-solutions/