팀 프로젝트

C-2345 자세 제어 4족보행 로봇 #13 (ROS URDF, Xacro Turorial)

InculPark 2021. 9. 6. 23:19
반응형

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 다듬기

 

를 해 볼 예정이다.

 

 

 

 

===============================================================================

정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.

틀린 내용이 있을 수 있습니다.

틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다.   : )

===============================================================================

반응형