본문 바로가기

공부/ROS

[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 체스 봇 + ros_arm_moveit #2

반응형

183~185p) 

●예제 코드 11-2를 ros_arm으로 제작하면서는 'ⓐros_arm에 class 사용하기, ⓑplanning의 solution 문제'를 중심적으로 공부해했다.

 

 

코드 구성 자체는 교재의 코드를 기반으로 하되, 왼팔/오른팔의 첫 번째 인자를 exact sol/approximate sol을 구할지를 선택하도록 했다.

 

 

기본 코드 자체가 이전과 달리 class를 사용해서 기본적으로 어떤 느낌으로 class를 rospy에서 사용하면 되는지도 배웠다.

 

ros_arm_cli.py

●L28, 30, 36에서 터미널에 입력한 argument를 받아서 바로 노드에서 정의한 메서드 처리하는 부분은 sys라이브러리를 사용한 거 같아 이 부분을 한번 찾아봤는데 이해가 쉽지 않았다. 일단은 하나의 세트로 알고 외워서 나중에 비슷한 기능의 노드를 만들 때 사용하면 될 거 같다.

 

 

●ⓑ는 앞선 글에선 'ros_arm의 낮은 DOF 떄문'이라고 결론을 냈었는데, 이를 감안해도 실제로 가능한 pose에 대해서 exact pose로 하면 no solution이 나왔다. 그래서 새로 시도해 본 것이(가능성은 낮지만) 충분한 계산 시간과 trial이 주어지지 않았을 거라는 생각 아래에 계산 시간과 trial를 늘려주었다. 이 부분이 L14 ~ L15이다.

 

예상은 했지만 이는 문제가 아니었다. 똑같이 no solution이 나왔다.

 

 

+)이상하다. 이후 몇 번 더 테스트를 하니 같은 조건에서도 no solution이 나왔던 게 solution이 나오기도 하고, 그 반대도 되는 경우가 발생한다. 도저히 exact sol이 가능하고 불가능하고의 변수를 모르겠다....

 

 

●아래는 다음의 과정을 해 본 영상이다. 

(+분명 첫번째 녹화에서 ⓑ과정이 성공(원래 예상은 실패이다)하는 결과가 나왔는데 같은 값으로 두 번째 녹화를 시작하니 ⓑ과정이 갑자기 실패한다.... 왜 이러는지 이유를 모르겠다.)

 

1. rviz_moveit을 이용해 ros_arm이 명백하게 가능한 pose를 찾고 이 때의 pose를 ros_arm_get_pose.py(2번째 터미널)로 얻는다.

 

2.ros_arm을 다시 원래 pose로 만든 후 ros_arm_cli.py(3번째 터미널)의 Exact pose 옵션으로 ros_arm을 움직이도록 시도한다.

 

3.ros_arm을 다시 원래 pose로 만든 후 ros_arm_cli.py approximate 옵션으로 ros_arm을 움직이도록 시도한다.

 

 

첫번째 녹화

 

두번째 녹화

 

일단 이번 챕터는 이 문제가 메인이 아니고 moveit을 다뤄보는 것에 초점이 있으므로 이번에는 이 정도 시도만 하고 넘어간다. 하지만 추후 ros_arm을 발전시키거나 다른 manipulator를 다룰 때에는 이 문제를 해결해야 할 거 같다.

 

 

 

========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
========================================================================

반응형