ROS

[ROS] 2. WS 생성과 GAZEBO

Jawy 2024. 9. 24. 18:35

참고한 강의 : https://www.youtube.com/playlist?list=PLieE0qnqO2kSYIxWAN6UvaMe_op2p2_Pw

 

Robot_Operating_System_ROS

 

www.youtube.com


catkin

  • ROS에서 사용하는 build 시스템이다.
  • cross-platform이기 때문에 OS 환경에 구애 받지 않고 사용할 수 있다.
  • ROS Application은 여러 package들로 구성되고, 각각의 packagesource file을 담고 있다.
  • catkin은 package를 build해준다.
  • 그런 작업을 할 catkin workspace를 생성해준다.
$ cd ~/
$ mkdir -p catkin_ws/src
# -p 를 붙여줌으로써 src 디렉토리까지 한번에 생성
$ cd catkin_ws/src

$ catkin_init_workspace
# ws 생성해주는 명령어

$ cd ../
$ cma 
# 앞서 단축키로 지정해두었던 'catkin_make' 명령어

$ sds
# make하고 나면 세트로 source도 해주어야 한다.
  • 그 결과 ws 안에는 build, devel 디렉토리가 추가로 생성되었을 것이다.

cma, sds는 ws 디렉토리 상에서 실행해야 한다! 하위 디렉토리에서 실행하면 안됨.


강의 자료로 공유해주신 Git file로 GAZEBO 실습

  • ROS 설치 시 desktop-full 옵션으로 설치했다면 GAZEBO가 설치되어있을 것
  • 우선 ws 안의 src 디렉토리에 git clone 명령어를 통해 파일을 받아온다.
$ cd ~/catkin_ws/src

$ git clone https://github.com/Road-Balance/gcamp_ros_basic.git
$ cd ..
# cma와 sds는 ws가 현재 working directory일 때 해야함!

$ cma
$ sds

  • 해당 git 파일에는 GAZEBO가 이미 알고 있는 기본 model들 뿐만 아니라 custom model들도 포함하고 있으므로 GAZEBO에게 새로운 모델들의 위치를 알려줘야 한다.
  • 해당 파일의 이름은 gui.ini이며 역시 gedit으로 수정해줄 수 있다.
  • model paths에 추가된 model의 디렉토리를 절대경로로 입력해주면 된다. (pwd 명령어로 알 수 있음)
  • 여러 경로들을 나열하면 되고, 각 경로들 사이는 : 로 구분한다.
$ cd ~/catkin_ws

$ gedit ~/.gazebo/gui.ini
# [model_paths] 부분에 /home/<user_name>/catkin_ws/src/gcamp_ros_basic/GazeboFiles/models 붙여넣기

$ sb #앞서 지정해준 저장 단축키
$ cma
$ sds

Launch 후 GAZEBO World 둘러보기

$ roslaunch gcamp_gazebo gazebo_world.launch
  • GAZEBO World 내에서는 기본적으로 중력 등 물리 법칙이 적용된 상태이다.
  • 마우스와 angle 키 등을 이용하여 카메라 시점을 조정할 수 있다.
  • 물체를 조정하고 싶다면 왼쪽 위 translation mode, rotation mode 등으로 모드 변경을 해주면 된다.
  • 물체 삭제는 물체를 선택한 상태에서 'del'
  • 왼쪽 상단 'Edit' 옵션의 'Reset Model Poses', 'Reset World' 등도 요긴하게 사용할 듯함.

간단한 원격 조종(Teleoperation) 실습

$ sudo apt-get install ros-noetic-teleop-twist-keyboard # 패키지 설치

# 새 터미널에서
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
  • 실행 후 나오는 설명을 통해 GAZEBO 내의 물체를 원격 조종할 수 있음.
  • 단, 터미널들 중 rosrun 코드를 실행시킨 터미널이 선택된 상태여야 한다.

'ROS' 카테고리의 다른 글

[ROS] 3. roscore, rosmaster, rosnode  (0) 2024.10.08
[ROS] 1. 시작하기  (1) 2024.09.23
[ROS] 0. 기초적인 LINUX 문법  (0) 2024.09.23