윤우성(Woosung Yun), 정우진(Jung Woojin), 김민서(Minseo Kim)
Robot sw : 윤우성(Woosung Yun)
Robot hw : 김민서(Minseo Kim)
Robot map : 정우진(Jung Woojin)
이 프로젝트는 ROS와 Gazebo 시뮬레이터를 이용하여 모바일 로봇을 제어하는 방법을 배우고, 로봇을 자율주행하도록 프로그래밍하는 것을 목표로 합니다.
이 프로젝트를 실행하기 위해서는 다음 소프트웨어가 필요합니다.
- ROS (Robot Operating System) : 로봇 소프트웨어를 개발하기 위한 프레임워크입니다.
- Gazebo : 로봇 시뮬레이터로, 가상 환경에서 로봇을 시뮬레이션할 수 있습니다.
- darknet_ros : ROS에서 사용할 수 있는 YOLO (You Only Look Once) 딥러닝 기반 객체 검출 라이브러리입니다. 이를 통해 카메라로부터 입력받은 영상에서 물체를 인식할 수 있습니다.
ROS 설치 방법은 **ROS 공식 사이트**에서 확인할 수 있습니다.
Gazebo 설치 방법은 **Gazebo 공식 사이트**에서 확인할 수 있습니다.
터미널에서 다음 명령어를 실행하여 프로젝트를 다운로드합니다.
$ git clone https://github.com/ggh-png/mobile_robot_Simulation.git
catkin_make
명령어를 이용하여 빌드합니다.
$ cd mobile_robot_Simulation
$ catkin_make
다음 명령어를 실행하여 Gazebo 시뮬레이터를 실행합니다.
$ roslaunch mobile_robot_simulation gazebo.launch
teleop_twist_keyboard
패키지를 이용하여 로봇을 제어할 수 있습니다. 다음 명령어를 실행합니다.
rubyCopy code
$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py
제어 방법은 다음과 같습니다.
- 위쪽 화살표 : 전진
- 아래쪽 화살표 : 후진
- 왼쪽 화살표 : 좌회전
- 오른쪽 화살표 : 우회전
- 스페이스바 : 정지
로봇을 자율주행하도록 만들기 위해서는 다음과 같은 노드를 실행해야 합니다.
ru
$ roslaunch mobile_robot_simulation amcl_demo.launch
위 명령어를 실행하면 로봇이 자율주행을 시작합니다. 로봇은 map
파일을 이용하여 자신의 위치를 파악하고, move_base
노드를 이용하여 목표 지점까지 이동 합니다.
맵 파일 변경 로봇의 자율주행에 사용될 맵 파일을 변경하려면 다음과 같이 합니다.
- 새로운 맵 파일을 준비합니다. 새로운 맵 파일은 pgm 또는 yaml 형식이어야 하며, mobile_robot_simulation/maps 디렉토리에 저장합니다.
- mobile_robot_simulation/amcl_demo.launch 파일을 수정합니다. 다음과 같이 맵 파일 경로를 수정합니다.
<arg name="map_file" default="$(find mobile_robot_simulation)/maps/새로운_맵_파일.pgm"/>
로봇 목표 지점 변경 로봇의 자율주행 목표 지점을 변경하려면 다음과 같이 합니다.
- mobile_robot_simulation/config/move_base_params.yaml 파일을 수정합니다. 다음과 같이 목표 지점을 수정합니다.
yamlCopy code
- {x: 목표_x좌표, y: 목표_y좌표, z: 0.0, yaw: 0.0}
- 로봇을 다시 시작합니다.
참고 자료
- ROS 공식 사이트 : http://wiki.ros.org
- Gazebo 공식 사이트 : http://gazebosim.org
- teleop_twist_keyboard 패키지 : https://github.com/ros-teleop/teleop_twist_keyboard
URDF for GAZEBO