[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 체스 봇 + ros_arm_moveit #1
+)Ch9~10의 SLAM 부분은 당장 관심 있는 부분이 아니어서 일단 넘어간다.
본래 실습은 Ch11의 체스-봇(pp.172~197)의 내용을 하려고 했으나 실습에서 사용한 robonaut 2 sim을 더 이상 다운로드할 수 없어 부득이하게 기존의 개인 프로젝트에서 만들어둔 ros_arm으로 개인 공부를 진행했다.
2021-2 간단한 ROS연습용 로봇팔 제작 #12 (完)
[launch 파일 구성 및 프로젝트 마무리] ros_arm을 moveit!으로 구동하는 데에 성공했으니 이제 마지막으로 편하게 실행시키기 위해 launch 파일을 만들 차례다. ros_arm 작동에 실행시켜야 하는 것들을 적
istein.tistory.com
+)사용한 패키지가 아예 다르기도 하고 robonaut2와 비교해 ros_arm은 DOF(자유도)가 많이 낮아 따라 할 수 있는 실습에 제한이 많았고 또 구현할 수 있는 움직임도 차이가 컸다.
+)이번 챕터는 그래서 'ⓐmoveit의 추가적인 명령어 공부, ⓑpython class를 활용한 코딩'에 초점을 두고 학습했다.
182~183p)
●예제 코드 11-1이 구현한 EE의 일직선상의 움직임(R2 기준 마임 동작)을 ros_arm으로 구현하고자 했다. 사실 이는 ros_arm 프로젝트 때 코드가 아닌 rviz의 moveit gui를 이용해 구현했었다.
물론 코드로 EE를 특정 postion으로 보내는 코드도 시도했었다. 예제 11-1과 같이 set_pose_target을 이용한 방법이었다. 하지만 실패했었는데 당시에 이유를 'ros_arm의 낮은 dof로 해당 position으로 가능 inverse kinematic solution을 찾을 수 없음'로 생각했었다. (아래 글의 d3_move_target_pose 과정)
2021-2+ Moveit!입문 #5 Moveit!-2
+) 계속 몸이 아프니까 의욕도 없고 일정도 계속 밀린다..... [Moveit! 공부5] 3.10 ●이 부분은 이전 글에서 내가 마지막에 end_effector 부분을 추가해서 업데이트한 것과 완전히 같은 내용이었다. 의도
istein.tistory.com
●이 문제를 해결하기 위해서는(우회법?) 어떤 position을 주었을 때 inverse kinematic 계산을 통해 exact solution을 구하는 것이 아닌, approximate solution을 구하는 명령어를 알아야 했다.
구글링을 통해 set_joint_value_target()이라는 moveit_commander의 메서드를 알게 되었다.
https://groups.google.com/g/moveit-users/c/h75nDpwOKLk/m/1-IytpO_BQAJ
How to programmatically "Allow Approximate IK Solutions"
[ WARN] [1448525776.227503592]: Orientation constraint for link 'arm_wrist_roll_link' is probably incorrect: 0.000000, -0.700000, 0.000000, 0.700000. Assuming identity instead.
groups.google.com
moveit_commander: moveit_commander.move_group.MoveGroupCommander Class Reference
Execution of simple commands for a particular group Definition at line 44 of file move_group.py.
docs.ros.org
사용법도 간단했다. set_joint_value_target(pose, True)를 하면 IK계산을 통해 approximate solution을 구한다.
●이를 이용해 예제 코드 11-1과 비슷한 동작을 하는 코드를 구현했다.
========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
========================================================================