C-2345 자세 제어 4족보행 로봇 #13 (ROS URDF, Xacro Turorial)
ROS 기초 강의가 끝나고 가장 먼저 생각한 건 로봇 모델링을 Gazebo에서 구현해 실제로 제작하기 전 테스트하는 방법을 익혀야겠다는 것이었다.
그래서 일단 ROSwiki로 urdf에 대한 공부를 시작했다.
http://wiki.ros.org/urdf/Tutorials
urdf/Tutorials - ROS Wiki
Prerequisite Learning URDF Step by Step Building a Visual Robot Model with URDF from ScratchLearn how to build a visual model of a robot that you can view in Rviz Building a Movable Robot Model with URDFLearn how to define movable joints in URDF Adding Phy
wiki.ros.org
우선은 '2. Learning URDF Step by Step'의 4개 step을 해봤다. (5step은 나중에)
각 step의 keyword와 배운 것을 간략하게 적어보면 아래와 같다.
Step1 : Building a Visual Robot Model with URDF from Scratch
-URDF로 Link 작성하기
-Origin 이해하기
+) Origin을 이해하는 데에서 좀 많이 애먹었다. 결론을 말하면 origin은 원점이 아닌 parent와 연결된 joint가 기준이다.
-Material tag, 색 입히기
-mesh파일 넣기(stl, dae)
-URDF에서 사용하는 각도는 deg가 아닌 rad단위이다. (ex 3.14= 180deg) ★
-리눅스에서 경로/파일을 지정할 때 $(find 디렉토리명)을 넣으면 그 현재 디렉토리에 있지 않아도 찾아서 처리한다.
ex) $roslaunch urdf_tutorial display.launch model:='$(find urdf_tutorial)/urdf/01-myfirst.urdf'
└working dir이 urdf_toturial이 아니라도 이렇게 하면 urdf_tutorial을 찾은 후 roslaunch를 실행한다.
Step2 : Building a Movable Robot Model with URDF
-URDF로 joint 작성하기
-URDF에서의 Joint종류
-Joint_state_publisher와 robot_state_publisher의 역할과 msgs
-URDF에서 사용하는 각도는 deg가 아닌 rad단위이다. (ex 3.14 = 180deg) ★
+)중요해서 다시 한번
-joint_state_pub → robot_state_pub : sensor_msgs/Jointstate (각도, 속도, 힘(토크))
-robot_state_pub → Rviz : Geometrtmsgs/TransformStamped (tf 공부 필요)
Step3 : Adding Physical and Collision Properties to a URDF Model
-visual tag와 collision tag의 차이
-inertia 작성요령
-기타 적용가능한 physical properties : Friction, Stiffness, Damping coefficient (when links contact with one another)
-복잡한 모델의 inertia는 해당 3d tool에서 inertia값을 property로 제공해줌
+)나는 inventor를 메인으로 쓰는데 inventor의 경우 모델링을 한 후 iproperties 메뉴에서 재료와 질량을 지정해주면 inertia값을 계산해준다.
Step4 : Using Xacro to clean Up a URDF File
-Xacro(xml+macro)사용법
-Xacro로 상수 지정, 수식 사용, 매크로를 사용할 수 있다.
-launch파일에서 urdf가 아닌 xacro를 실행할 경우 launch파일에 특정 코드를 상단에 추가해야 한다.
-xacro에서 상수, 수식을 사용할 때는 항상 ${ } 안에 있어야 한다.
-xacro파일은 .xacro 확장자로 저장한다.
-아래 명령어를 통해 1차적으로 xacro파일이 작 작성됐는지 확인할 수 있다. 잘 작성되었으면 terminal에 해당 파일을 urdf로 풀어낸 코드가 뜬다.
$rosrun xacro xacro 파일명.xacro
-아래 명령어를 통해 xacro를 urdf로 변환하고 그 urdf를 검사할 수 있다. 정상적으로 작성되었다면 terminal에 올바른 트리가 뜬다.
$rosrun xacro xacro 파일명.xacro > 파일명2.urdf
$check_urdf 파일명2.urdf
-Xacro 참고 블로그
https://mrlacquer.tistory.com/7
[ROS] UR3 xacro file을 이용한 양팔 로봇 만들기
안녕하세요. MrLacquer입니다. 이번 포스팅에서는 지난번에 다루었던 Universal Robot 사의 UR3를 활용해서 양팔 로봇의 urdf를 만들고, rviz에서 확인하는 방법에 대해서 다뤄보겠습니다. 일단, UR3라는 녀
mrlacquer.tistory.com
-How to check xacro syntax
https://answers.ros.org/question/9208/how-to-check-xacro-syntax-like-check_urdf/
How to check xacro syntax like check_urdf? - ROS Answers: Open Source Q&A Forum
How to check xacro syntax like check_urdf? edit Hello! I would like to do a command line syntax check of an Xacro robot model similar to the one used for non-xacro files which is: $ rosrun urdf check_urdf model.urdf I know I can generate a temporary URDF f
answers.ros.org
xml기반이라 문법이 생소할 뿐 막 이해가 어렵거나 잘 안 되는 부분은 아직까지는 없어서 바로 4족 보행 로봇의 urdf를 xacro로 만들어 봤다.
간단하게 link들은 전부 사각형에 collision은 넣지 않고 visual tag만 채웠다.
joint도 일단은 전부 continuous로 했다.
Rviz에 정상적으로 올라왔고 joint_state_publisher로도 잘 움직였다.
이번 URDF 실습은 여기까지만 했고 이다음에는
1. joint_state_publisher가 아닌 직접 각도를 publish 하는 node 만들어보기
2. Gazebo에 올릴 수 있도록 link, joint 다듬기
를 해 볼 예정이다.
===============================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
===============================================================================