본문 바로가기
Ros 공부

Manipulator_H →Manipulator_P

by 바위폭주 2023. 3. 12.
반응형

나는 처음에 H를 사용하려고 H에 맞는 패키지들을 설치해주었다.

$ cd ~/catkin_ws/src/
$ git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ git clone https://github.com/ROBOTIS-GIT/ROBOTIS-Framework.git
$ git clone https://github.com/ROBOTIS-GIT/ROBOTIS-Framework-msgs.git
$ git clone https://github.com/ROBOTIS-GIT/ROBOTIS-MANIPULATOR-H.git
$ git clone https://github.com/ROBOTIS-GIT/ROBOTIS-Math.git
$ cd ~/catkin_ws && catkin_make

H 패키지에서의 control manager를 통해 다이나믹셀이 연결된 것 까지 확인을 했고, 다이나믹셀 위자드에서도 다이나믹셀이 연결되는 것을 확인하였다.

하지만 gui나 teleop 키보드로 manipulator를 움직이려고 했지만 움직이지 않았다.

그 이유는 로보티즈에서 더이상 H에 대한 패키지들을 지원하지 않았기 때문이다.

그래서 지금 지원하는 Manipulator_P에 대한 패키지들을 다운받았다.

$ cd ~/catkin_ws/src/
$ git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ git clone https://github.com/ROBOTIS-GIT/dynamixel-workbench.git
$ git clone https://github.com/ROBOTIS-GIT/dynamixel-workbench-msgs.git
$ git clone https://github.com/ROBOTIS-GIT/open_manipulator_p.git
$ git clone https://github.com/ROBOTIS-GIT/open_manipulator_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/open_manipulator_p_simulations.git
$ git clone https://github.com/ROBOTIS-GIT/robotis_manipulator.git
$ cd ~/catkin_ws && catkin_make

그리고 H에 사용하는 다이나믹셀은

Joint 1,2 → H54-200-S500-R

Joint 3,4 → H54-100-S500-R

Joint 5,6 → H42-20-S300-R이다.

이것을 P패키지에서 사용하기 위해 다이나믹셀 복구를 통해 펌웨어를 진행하였다.

(복구를 하려면 다이나믹셀을 한 개만 연결하고 진행해야 된다. 나는 Manipulator를 다 분해하고 하나씩 연결했는데 멍청한 짓이었다. 분해를 하지 않고도 연결할 수 있다…)

펌웨어를 업데이트 한 후 다이나믹셀 ID(1~6)와 Baud Rate을 1Mbps로 맞추었다.

$ roslaunch open_manipulator_p_controller open_manipulator_p_controller.launch
$ roslaunch open_manipulator_p_control_gui open_manipulator_p_control_gui.launch

먼저 controller를 키고 Manipulator를 제어하기 위해 gui를 실행한다.

그럼 이런 화면이 나오는데 여기서 Init pose를 누르면 모든 조인트의 각이 0도로 지정이 되고,

Home pose를 누르면 Joint2 -45도 Joint3 22.5도 Joint 5 22.5도의 자세가 되는데

여기서 모든 Joint들의 각도가 정확히 절반만 움직이는 문제가 있었다.

그리고 애초에 Init pose에서 Joint3이 0도로 가지 않고 45도로 가는 문제 또한 있었다.

그래서 다이나믹셀 위자드에서 Joint3의 다이나믹셀 Homing Offset에 -45도를 주어 0도의 영점을 맞추어주었다. 여기서 Homing Offset은 Present Position = 실제위치 + Homing Offset이므로 현재의 위치를 맞추는 곳에 사용된다.

 

일단 위의 문제를 해결하지 못하고 Moveit을 시도해봤다.

Moveit 실행 결과이다.

현재 Manipulator의 위치를 정확히 읽어오지 못하는 문제가 발생하였다.

아무래도 앞에서 Home Pose를 제대로 읽어오지 못하는 문제가 있기 때문에 생긴 문제인 것 같다.

$ roslaunch open_manipulator_p_controller open_manipulator_p_controller.launch

그런데 컨트롤러를 실행하였더니 위의 사진처럼 다이나믹셀 Model Name이 나왔다.

아무래도 펌웨어 업데이트를 하면서 다이나믹셀이 업데이트가 된 것 같다.

Joint 1,2 → H54-200-S500-R

Joint 3,4 → H54-100-S500-R

Joint 5,6 → H42-20-S300-R

위의 다이나믹셀이 기존의 다이나믹셀인데, 이것이 펌웨어 업데이트를 하면서

앞에 PRO와 뒤에 -A 버전으로 업데이트가 되었다.

그래서 모터의 스펙을 살펴보면

위 R(A) 아래 R모델의 스펙이다.

여기서 Resolution을 살펴보면 정확히 R(A)모델이 R의 모델보다 (H보다 P가)2배 높은 것을

확인할 수 있다.

아마도 여기서 문제가 발생한 것 같다.

 

dynamixel_item.h 파일로 이동.

item.h 파일에 각종 모터들이 정의된 것을 확인할 수 있다.

그리고 밑에 내려보면

최소 zero 최대 라디안 값이 ModelInfo에 들어가 있다.

그래서 dynamixel_item.cpp 파일에 들어갔다.

코드를 살펴보니 원래 주석처리되어 있는부분으로 적혀있었다.

(-250961 ~ 250961) , (-151875 ~ 151875)

위에서 모터 스펙을 살펴봤을 때 R(A) (P) 모델의

resolution은 -501923 ~ 501923, -303750 ~ 303750이다.

이 부분을 변경해주고 다시 실행하니 잘 작동이 되었다.

Manipulator의 자세를 잘 받아오는 것을 확인할 수 있다.

반응형

'Ros 공부' 카테고리의 다른 글

MongoDB install  (0) 2023.03.14
OpenManipulator-X  (0) 2023.03.12
turtlebot3 burger slam & navigation (urdf에 카메라 추가하기) (2)  (0) 2023.03.11
slam-cartographer  (0) 2023.03.11
LDS-02 사용하기  (0) 2023.03.11