본문 바로가기

우분투, ROS/실습

URDF 예제-가상공간에 로봇 만들기 #3

 

예제 링크: https://with-rl.tistory.com/entry/URDF%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EA%B0%84%EB%8B%A8%ED%95%9C-%EB%A1%9C%EB%B4%87-%EB%A7%8C%EB%93%A4%EA%B8%B0-3?pidx=6

 

cd ~/Workspace/ros_ws
colcon build --symlink-install
source install/setup.bash
ros2 launch urdf_tutorial robot_2.launch.py

 

위 세줄은 ROS 처음 시작할 때 치고 시작한다. 각 코드 별 의미


1. cd ~/Workspace/ros_ws

  • 의미:
    사용자의 홈 디렉터리(~) 아래에 있는 Workspace/ros_ws 폴더로 디렉터리를 이동합니다.
  • 목적:
    ROS 2 작업공간(Workspace) 안에서 빌드나 실행 명령을 수행하기 위해 위치를 이동합니다.

2. colcon build --symlink-install

  • 의미:
    현재 디렉터리(ros_ws)를 기준으로 colcon 빌드 시스템을 사용해 패키지들을 빌드합니다.
  • 옵션:
    • --symlink-install: 설치 결과물을 복사(copy)하지 않고 심볼릭 링크(symlink)로 연결합니다.
  • 목적:
    코드 수정 시 빌드할 때마다 복사를 하지 않고도 바로 수정 내용이 반영되게 하기 위함입니다. 개발 편의성을 높입니다.

3. source install/setup.bash

  • 의미:
    빌드된 패키지들이 등록된 경로(install/setup.bash)를 셸 환경에 적용합니다.
  • 목적:
    ROS 2 패키지나 노드를 실행할 때, 시스템이 해당 빌드 결과를 인식할 수 있도록 설정합니다.
  • 쉽게 말하면:
    "방금 빌드한 걸 터미널에 알려주는 것"입니다.

4. ros2 launch urdf_tutorial robot_2.launch.py

  • 의미:
    urdf_tutorial 패키지 안에 있는 robot_2.launch.py 런치 파일을 실행합니다.
  • 목적:
    여러 ROS 2 노드나 설정들을 한 번에 시작합니다.
  • 추가:
    robot_2.launch.py 파일 안에는 보통 로봇 모델(URDF)을 불러오고 시뮬레이션 환경이나 RViz를 띄우는 설정이 포함되어 있을 수 있습니다.

요약하면:

 

워크스페이스 이동 → 빌드 → 환경설정 적용 → 로봇 런칭
하는 과정입니다.

 

 

 

 

- cp src/urdf_tutorial/urdf/robot_2.xacro src/urdf_tutorial/urdf/robot_3.xacro

뜻: robot_3.xacro 파일에 robot_2를 복사한다.

 

 


문제 발생

1. 어제까지 잘 작동되던 코드가 작동이 안되고 내용이 꽉꽉 담긴 파일이 내부가 비어있다나 어쩐다나

 

해결방법: 아래 코드를 macros.xacro 파일 코드 제일 첫 줄에 적어놨었다. 이 코드가 무엇을 의미하는지 알려고... 이걸 지우면 됐다!!

<!--관성 모먼트 코드-->

 

 

 

- 핵심 오류

xml.parsers.expat.ExpatError: XML or text declaration not at start of entity: line 3, column 0

 

이 말은:

XML 선언부 (예: <?xml version="1.0"?>)가
파일 제일 처음에 있어야 하는데,
현재 파일 맨 앞에 공백, 빈 줄, 또는 다른 글자가 있다는 뜻입니다.

 

2. 주석 관련

.xacro파일은 <!--~~-->로 주석 달고 py 파일은 #~~로 주석 달기

안그러면 오류 뜸

 

 

3. 아래 코드똑같이 따라했는데 작동이 안됨

$ colcon build --symlink-install
$ ros2 launch urdf_test sim.launch.py

urdf_test는 내가 만들어본 적 없는 폴더이다 urdf_tutorial로 변경하기

 


 

Gazebo 사용가능한 Plugin 확인 링크 ex) 키보드로 운전하기 등

https://classic.gazebosim.org/tutorials?tut=ros_gzplugins

 

 

ROS 실행하고 Gazebo를 실행하고 Spawn(rviz에서 제작한 모델-블로그 #2 맨 마지막 그림)

 

rqt_graph - ROS에서 돌아가고 있는 TOPIC확인 가능

 

 

sim.launch.py 코드의 역할
- ROS를 실행하고 Gazebo를 실행하고 Spawn 하는 과정이 조금은 복잡하여 이 과정을 하나의 Script로 만들어서 한꺼번에 실행하도록 함

 

 

 

 

[최종적으로 예제 끝까지 마치면 나오는 결과물]