[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 체스 봇 + ros_arm_moveit #3 (실습 실패)
+) #2를 끝내고 moveit_commander docs에서 ros_arm에서 사용할 만한 다른 쓸만한 메서드가 있나 찾아봤다.
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
개인적으로 내가 원한 것은 x,y,z,R,P,Y 중 한 개의 인자만 제외하고 IK solution을 구하는 기능이 필요했는데 정확히 이 기능을 제공하는 메서드는 없는 거 같았다.
대신 postion(x,y,z)이나 oreintation(R,P,Y) 중 한쪽만 만족하고 반대쪽은 상관하지 않는 IK solution을 구하는 메서드는 찾았다. 이 메서드 그대로 사용하거나, 이용해서 원래 내가 원하던 기능을 구현하는 쪽으로 활용할 수 있을 것 같다.
186~189p)
+)이 부분은 ros_arm에 end_effector가 없기도 하고 중요도가 크게 높지 않다고 판단해서 코드 분석만 하고 넘어간다.
●예제 코드 11-4의 경우 팔 class(R2ChessboardWrapper)에 pose를 취하는 메서드 외에, 체스판의 rank(세로), file(가로) 값과 높이를 받아 pose(x,y,z)를 계산하는 메서드를 추가한 것이다.
●예제 코드 11-5의 경우 팔 class 외에 손가락 class(R2Hand)를 추가했고, 손가락이 말을 잡는 동작은 IK로 solution을 구한 joint각도들을 사용한 것이 아닌 미리 계산한 상수 값들을 넣어서 2개 동작(쥐기-펴기)으로 제어했다.
190~192p)
●예제 코드 11-6과 11-7은 sdf형식으로 모델링을 하는 코드이다. ros_arm을 만들 때 나는 sdf가 아닌 urdf방식으로 모델링을 했었다. 근데 sdf코드를 읽어보니 똑같은 xml방식을 사용했고 urdf와 내용도 99% 일치했다. 단지 tag name이 조금 다른 정도였다.
(urdf 독학)
C-2345 자세 제어 4족보행 로봇 #13 (ROS URDF, Xacro Turorial)
ROS 기초 강의가 끝나고 가장 먼저 생각한 건 로봇 모델링을 Gazebo에서 구현해 실제로 제작하기 전 테스트하는 방법을 익혀야겠다는 것이었다. 그래서 일단 ROSwiki로 urdf에 대한 공부를 시작했다. h
istein.tistory.com
C-2345 자세 제어 4족보행 로봇 #14 (Joint publish node 제작, URDF Gazebo에 올리기-정리X)
+) 원래 글을 쓸 때 이론 공부> 실습> 복습+글쓰기로 블로그에 글을 올렸는데 이번은 실습과정에서 너무 헤매고 여러 시도를 해서 도저히 깔끔하게 복습을 하는 게 불가능했다. 그래서 우선 정리
istein.tistory.com
C-2345 자세 제어 4족보행 로봇 #15 (URDF Gazebo, 프로젝트 중단)
URDF를 Rviz로 하는 건 되게 쉬웠는데 물리엔진이 적용된 Gazebo에 올릴려고 하니 안되는게 많았다. 때문에 '문제발생 -> 검색 -> 시도 -> 해결'의 과정을 너무 많이 반복했고 또 되게 복잡하게 했다.
istein.tistory.com
(ros_arm urdf 작성)
2021-2 간단한 ROS연습용 로봇팔 제작 #4
[URDF 제작 및 gazebo 업로드 1] +) 갑자기 과제가 엄청 많아져서 3일 정도 일정이 밀렸다. 어차피 시험기간이 생각보다 빨리 시작해서 또 엄청 밀릴 예정이다.... URDF와 ROS를 쓰기 전에 IDE를 깔았다.
istein.tistory.com
●VScode를 이용해서 .sdf확장자로 작성을 하면 자동 완성 기능이 왜인지 활성화되지 않는다. 그래서 나는 우선 파일을 .xml 확장자로 저장해서 작성한 후, 완성하면 다시 .sdf로 바꿔주는 방법을 사용했다.
192~197p) (실패)
●예제 코드 11-8에서 모듈을 import할 때 from A import *을 사용했는데 이는 모듈 A의 모든 함수를 import한다는 뜻이라고 한다. 그냥 import A만 하는 것과 from A import *을 할 때 차이는 함수 사용 시 전자는 'A.함수()' 이런 형태로 사용해야 하지만 후자는 그냥 함수()로 사용하면 된다고 한다. 아래 블로그에 자세히 설명되어 있었다.
https://coding-kindergarten.tistory.com/73
[python 기초] import OO와 from OO import*의 차이
안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알
coding-kindergarten.tistory.com
●예제 코드 11-8은 시도했으나 전혀 작동하지 않았다. 체스 말은커녕 판도 안 생기고 터미널에 어떤 오류도 뜨지 않아서 내가 해결할 수 없었다. service부분도 이론만 알기도 하고 대부분의 코드가 분석을 해봐도 모르는 부분이 너무 많았다..
이후 과정도 체스판이 없어서 읽어보고 기능적인 부분의 이해만 대충 하고 넘어갔다...
일단 이렇게 ch11을 많이 아쉽게 끝냈다. Robonaut2 모델도 없고 책의 체스판 spawn 코드도 잘 작동하지 않아서 제대로 못한 부분이 많다.
다만 중간에 새운 목표인 'ⓐros_arm에 class 사용하기, ⓑplanning의 solution 문제 확인' 은 필요한 만큼은 공부했기에 얻은 부분도 있다고 생각한다.
========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
========================================================================