- 일정 : 2022-11-11(금) 17:00 ~ 2022-11-12(토) 10:00
- 장소 : 성균관대학교 산학협력관 러닝팩토리 (85133호)
- 인원 : 약 30명 내외 (4인 1팀 구성)
- 내용 : 4인 1팀이 되어 주어진 map 상에서 자율주행 및 주차, 정지선 알고리즘 구현
Windows 환경에서도 다음의 링크를 참고하여 편하게 개발할 수 있습니다. Docker 환경 설치하기
- Ubuntu 18.04 멀티부팅 설치
https://jimnong.tistory.com/676
- ROS 설치 (상단의 "melodic" 클릭 후 진행)
http://wiki.ros.org/Installation/Ubuntu
-
Dependencies 설치
sudo apt-get install ros-melodic-tf2-geometry-msgs ros-melodic-ackermann-msgs ros-melodic-joy ros-melodic-map-server
-
ROS용 워크스페이스 생성
mkdir catkin_ws && cd catkin_ws mkdir src && cd src
-
레포지토리 복제
git clone https://github.com/jhforstudy/HEVEN_Hackathon.git
-
패키지 빌드
cd ~/catkin_ws catkin_make source devel/setup.bash
- 아래 명령어를 실행하여, "Already up to date." 라는 문구가 떠야 최신 버전임
cd ~/catkin_ws/src/HEVEN_Hackathon/ git pull
-
시뮬레이터 실행
roslaunch racecar_simulator simulate.launch map_number:=1
-
자율주행 main node 실행
rosrun racecar_simulator main.py
-
수동 조작 노드 실행 (시뮬레이터 실행 후)
rosrun racecar_simulator teleop_keyboard.py
-
Brain.py에서 다음과 같이 호출하여 사용할 수 있음
lidar_data = self.db.lidar_data pose_data = self.db.pose_data traffic_light = self.db.traffic_light remaining_time = self.db.traffic_remaining_time park_x_1 = self.parking_x_1 park_y_1 = self.parking_y_1 park_yaw_1 = self.parking_yaw_1
-
LiDAR
변수명 : self.db.lidar_data 형태 : list[360] 값 설명 : 차량 후방을 기준으로 반시계방향으로 측정된 값
- GPS + IMU (현재 차량의 global position)
변수명 : self.db.pose_data 형태 : list[3] 값 설명 : [map frame으로부터 차량의 x좌표, map frame으로부터 차량의 y좌표, x축 방향 기준 yaw 각도 (degree)]
-
신호등 정보
변수명 : self.db.traffic_light 형태 : "STOP", "LEFT", "RIGHT", "GO" 값 설명 : 정지 시 "STOP" 이후 도로 정보에 따라 "LEFT", "RIGHT" (Map 2) "GO" (Map 3)
-
신호등 남은 시간
변수명 : self.db.traffic_remaining_time 형태 : float 값 설명 : 신호등 정보가 "STOP"일 때 남은 시간 (5.0 sec ~ 0.0 sec)
-
주차 공간의 위치
변수명 : self.parking_x_1, self.parking_y_1, self.parking_yaw_1, self.parking_x_2, self.parking_y_2, self.parking_yaw_2 형태 : float 값 설명 : 해당하는 주차 공간의 x, y 좌표 및 방향 (degree)
-
self.map_number
변수를 통해 현재 맵의 번호를 획득할 수 있음. (1, 2, 3) -
개발 시에는 원하는 맵의 번호를 직접 할당하여 테스트하면 되고, 코드 제출 시 삭제할 것.
-
실행해야 할 맵에 따라
Map1.sh
,Map2.sh
,Map3.sh
을 더블 클릭하고,
Execute in terminal 클릭
-
시뮬레이터 기능
① 충돌 횟수, 경과 시간 측정
② 충돌 횟수, 경과 시간, 차량 위치 초기화
③ 시뮬레이터 화면
좌클릭 - 화면 회전
우클릭 - 화면 확대
스크롤 클릭 - 화면 이동
④ 시점 설정
기본은 2D view이며 Orbit(rviz) 으로 변경 시 3D view 가능
Joystick.sh
을 더블 클릭하고,
Execute in terminal 클릭
아래의 문구와 함께 조이스틱이 실행됨
열린 터미널을 클릭한 후,
좌/우 화살표 - 차량 조향각 왼쪽/오른쪽 증가
상/하 화살표 - 차량 속도 높임/낮춤
스페이스 바 - 차량 정지
탭 키 - 조향각 초기화
주의 : Brain.sh 와 따로 사용할 것
-
대회 진행 시, 신호등 방향과 주차 공간을 랜덤하게 선택하여 진행할 예정 (모든 팀이 동일한 방향으로)
-
parameter_list.py
의 윗 부분을 수정하면 Map의 정보를 변경하여 테스트할 수 있음.
from visualization_msgs.msg import Marker, MarkerArray
# (Map 2) You can change the direction of traffic
TRAFFIC_DIR = "LEFT" # "LEFT", "RIGHT"
# (Map 3) You can change the position of parking lot
PARK_NUM_1 = 3 # 1, 2, 3, 4
PARK_NUM_2 = 5 # 5, 6, 7, 8
...
- 변경사항 저장 후,
Map1.sh
,Map2.sh
,Map3.sh
를 다시 실행할 것!
-
Brain.py
의 main 함수에서angle
,speed
를 결정하여 return하면 그에 맞게 차량이 움직임 -
angle
,speed
는 다음과 같이 결정하면 됨
angle = 0 # 20(LEFT) ~ -20(RIGHT), degree
speed = 1 # 0 ~ 4, m/s