[Moveit! 공부2]
2.4~2.4.1 Gazebo, ROS_control
●gazebo에 urdf를 불러오는 방법 : spawn_model node를 사용
$ rosrun gazebo_ros spawn_model -file MYROBOT.urdf -urdf -x 0 -y 0 -z 0 -model MYROBOT
터미널에 명령으로 불러올 경우
1. roslaunch로 gazebo가 실행된 상태여야 함(그냥 ros를 거치지 않고 gazebo를 실행시키면 안 됨)
2. 아래 명령어를 통해 사용법, 옵션 도움말 확인 가능
$ rosrun gazebo_ros spawn_model -h
3. -urdf : urdf파일로 gazebo에 모델을 불러옴, -sdf면 sdf형식을 불러오는 듯
●위의 node를 launch파일로 실행할 경우
<launch>
<include file="$(find gazebo_ros)/launch/empty_world.launch"/>
<arg name="model" default="$(find ros_arm)/urdf/ros_arm.urdf.xacro"/>
<param name="robot_description" command="$(find xacro)/xacro --inorder $(arg model)"/>
<node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-param robot_description -urdf -model MYROBOT"/>
</launch>
launch파일을 구성할 경우
1. 강의 글에는 gazebo 실행 부분이 빠져있어서 <include file~~/>부분으로 추가해줌
2. urdf에 link의 <inertial> tag가 꼭 있어야 하고 값이 있어야 함
3. urdf에 <gazebo> tag로 gazebo 플러그인 추가
4. joint를 움직일 거면 urdf에 <transmission> tag가 있어야 함
2.4.2 물성치(inertial) 구하기
●그동안은 inertial값을 windows의 inventor에서 link 제작 --> iproperties로 값 확인 --> 사진 or 메모 --> 우분투로 다시 시작 --> urdf에 메모한 값 적용으로 귀찮은 과정을 거쳤는데 그럴 필요가 없었다.
●온라인에서 onshape로 확인할 수도 있고, Meshlab을 리눅스에 설치해서 확인할 수도 있다.
2.4.3 Gazebo에 불러오기
●일단 시키는 대로 했는데 처음으로 안 되는 부분이 나왔다.
이전에 quadruped 할 때도 비슷한 문제를 겪었던 거 같은데 미묘하게 다른 거 같다.
URDF상에서는 전혀 문제가 없고 rviz상에서도 문제없이 작동하는 데 gazebo에서만 자꾸 문제가 발생한다.
●문제의 요지는 joint type이 revolute로 된 부분만 정상적으로 link가 붙어있지 않고 그냥 바닥에 떨어져 있다는 것이다.
type을 fixed로 바꿔 실행하면 정상적인 형태로 나온다..
●개인적인 추측으로는(정말 그냥 느낌) ros_control과 transmission 쪽에서 고쳐야 할 거 같은데 생각나는 방법을 다 해봐도 해결이 안 됐다..
일단은 2.5 ros_control까지 진행하고 그래도 안된다면 오로카에 질문을 올려봐야겠다.
+)
위의 문제를 해결 안 하고 다음 장으로 넘어갈 수가 없어서 하루 반 동안 urdf랑 launch파일을 계속 계속 검토했다.
구글링 하니까 joint의 parent나 child의 inertial이 없을 때 발생하는 문제라고 해서 계속 오타나 뭐가 빠진 게 있나 찾아보고 수정했지만 도저히 안됐다.
그러다 혹시나 해서 0.0으로 되어있던 <inertial>의 <inertia>에 임의의 값을 넣었더니 갑자기 urdf가 정상적으로 나왔다.
(이전에 quadruped 할 때는 이 부분이 비워져 있어도 됐던 거로 기억해서 일단 비워뒀었다)
방법을 알고 있는 것을 몇 시간 동안 빙빙 돌아 찾았다고 생각하니 많이 허무했다...
그래도 찾았으니 다행이다..
========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
========================================================================
'개인 프로젝트' 카테고리의 다른 글
2021-2 간단한 ROS연습용 로봇팔 제작 #6 (0) | 2021.12.29 |
---|---|
2021-2+ Moveit!입문 #3 ros_control (0) | 2021.12.28 |
2021-2+ Moveit!입문 #1 tf2 (0) | 2021.12.23 |
2021-2 간단한 ROS연습용 로봇팔 제작 #5 (0) | 2021.12.17 |
2021-2 간단한 ROS연습용 로봇팔 제작 #4 (0) | 2021.12.17 |