본문 바로가기
[Intel] 엣지 AI SW 아카데미/펌웨어 프로그래밍 75hour

[Intel] 엣지 AI SW 아카데미 38일차 (부산상공회의소 인력개발원)

by 0x01 2023. 12. 19.

 

일정: 2023.12.19(화)

 

수업 내용: 

 

 - Robot Operating System (ROS)

 - ROS 개발환경 구축

 - Autonomous Driving

 

목표: 

로봇 소프트웨어 플랫폼
(하드웨어 추상화, 하위디바이스 제어, 로보틱스 센싱, 인식, 위치추정, 지도 작성 , 내비게이션 등) 중심의 기술과
로봇 소프트웨어 플랫 폼(ROS)이 가져올 미래 가치와 기술 선점을 위한 교육을 바탕으로
다양한 영상과 라이다 기반의 로봇 자율주행 기술 교육을 통해 학생들의 첨단 기술습득을 목표로 함.

 


1. Camera Imaging Calibration
Camera image calibration is not required in Gazebo Simulation.

ⓐ Remote PC에서 새 터미널 열기
$ roscore

ⓑ Remote PC에서 새 터미널 열기
$ ssh ubuntu@192.168.0.25  Remote PC에서 TurtleBot3 Burger(Raspberry pi)을 원격접속
pw : turtlebot 입력

~$ roslaunch turtlebot3_autorace_camera raspberry_pi_camera_publish.launch

ⓒ Remote PC에서 새 터미널 열기
TurtleBot3 Burger를 경기장에 내려놓음
$ rqt_image_view

ⓓ Remote PC에서 새 터미널 열기
$ rosrun rqt_reconfigure rqt_reconfigure

ⓔ Remote PC에서
rqt_image_view 를 보면서, rqt_reconfigure의 camera image calibration 진행
 calibration에서 가장 중요한 것은 조도 값(외부 조명 조도)

ⓕ Remote PC에서
rqt_reconfigure의 camera image calibration 값을 camera.yaml 에 저장
 경로 catkin_ws / src / turtlebot3_autorace_2020 / turtlebot3_autorace_traffic_light /
turtlebot3_autorace_traffic_light_camera / calibration / camera_calibration

ⓖ Remote PC에서
: rqt_image_view 터미널 CTL +C 로 종료 후 닫기. rqt_image_view 화면 닫기. rqt_reconfigure 화면 닫기. camera.yaml 닫기
$ rqt_image_view
다시 열어서 camera.yaml에 의해 변경된 image 보정된 영상 확인하기

: yellow , white가 서로 잘 구분되도록 영상 보정 확인

 


2. Intrinsic Camera Calibration
Intrinsic Camera Calibration is not required in Gazebo simulation.

ⓐ Remote PC에서 새 터미널 열기
$ roscore

ⓑ Remote PC에서 새 터미널 열기
$ ssh ubuntu@192.168.0.25  Remote PC에서 TurtleBot3 Burger(Raspberry pi)을 원격접속
pw : turtlebot 입력
~$ roslaunch turtlebot3_autorace_camera raspberry_pi_camera_publish.launch

ⓒ Remote PC에서 새 터미널 열기
TurtleBot3 Burger(책상 끝에) 앞에 checkerboard(가로방향) 내려놓음
$ roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch mode:=calibration

: A4 출력하여, Intrinsic Camera Calibration 사용
 Calibration 진행 시, checkerboard는 흔들리지 않도록
(팔랑거리지 않도록 고정하는 것이 중요)

ⓔ Intrinsic Camera Calibration 진행
: 카메라를 기준으로 왼쪽/오른쪽/위/아래로 checkerboard를 움직이기
: 카메라를 기준으로 앞/뒤로 움직이기, checkerboard를 상하, 좌우 비스듬히 기울이기
 조건들이 채워질수록 X, Y, Size, Skew의 BAR 점점 채워지며 녹색으로 바뀜

ⓕ click Calibration 
: Calibration 누르고 1분 기다리기  SAVE 활성화 됨

ⓖ TMP 폴더에 calibrationdata.tar.gz 생성됨

ⓗ ost.yaml 파일 열기(double click)
: 카메라 이름을 narrow_stereo에서 camera 변경하기  저장하기

ⓘ tmp 폴더의
ost.yaml을 CTL + C(복사), CTL+V(붙여 놓기)

ⓙ tmp 폴더에서 생성한 camerav2_320x240_30fps.yaml 을 복사(CTL + C)하여
아래 경로에 붙여 넣기(CTL + V) – Replace
 경로 catkin_ws / src / turtlebot3_autorace_2020 / turtlebot3_autorace_camera / calibration / intrinsic_calibration 
 위 경로에는 이미 camerav2_320x240_30fps.yaml 있으며, 이를 새로 업데이트 한다는 의미(덮어 쓰기)
 Intrinsic Calibration Data인 camerav2_320x240_30fps.yaml 를 덮어 씀(업데이트)

 

 

3. Extrinsic Camera Calibration
Open a new terminal on Remote PC and launch Gazeb

ⓐ Remote PC에서 새 터미널 열기
$ roscore

ⓑ Remote PC에서 새 터미널 열기
$ ssh ubuntu@192.168.0.25  Remote PC에서 TurtleBot3 Burger(Raspberry pi)을 원격접속
pw : turtlebot 입력
~$ roslaunch turtlebot3_autorace_camera raspberry_pi_camera_publish.launch

ⓒ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch mode:=action

실제 경기장
: Turtlebot의 왼쪽 Yellow, 오른쪽 white
: calibration에서는 관계없음

ⓓ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_camera extrinsic_camera_calibration.launch mode:=calibration

ⓕ Remote PC에서 새 터미널 열기
$ rqt

rqt 실행 후, image viewer 선택 후 화면

실험 환경에 따라, 
Camera imaging calibration
적용 결과가 다르게 나타남
[주의]
White, yellow lane 인식하는
자율주행 알고리즘

ⓖ 외부 조도를 차단하고, 카메라 부착 부위를 조금씩 조정하여 projected view (Bird’s eye view)가 중앙에 위치하도록 수정

ⓗ rqt image viewer의 topic 변경
/camera/image_extrinsic_calib/compressed → /camera/image_projected_compensated 

ⓘ Remote PC에서 새 터미널 열기
$ rosrun rqt_reconfigure rqt_reconfigure

둘째 image_projection : extrinsic calibration(camera를 통한 lane 검출을 위한 area 설정)

→ 매개변수 반영하기
경로 catkin_ws / src / turtlebot3_autorace_2020 / turtlebot3_autorace_camera / calibration / extrinsic_calibration 의
projection.yaml 에 반영하기

 

 

 

 

3. Lane Detection
Lane detection package that runs on the Remote PC receives camera images either from TurtleBot3 or Gazebo simulation to detect driving lanes and to drive the Turtlebot3 along them.
The following instructions describe how to use and calibrate the lane detection feature via rqt.

Place the TurtleBot3 inbetween yellow and white lanes.

NOTE: The lane detection filters yellow on the left side while filters white on the right side. Be sure that the yellow lane is on the left side of the robot.

ⓐ Remote PC에서 새 터미널 열기
$ roscore

ⓑ Remote PC에서 새 터미널 열기
$ ssh ubuntu@192.168.0.25  Remote PC에서 TurtleBot3 Burger(Raspberry pi)을 원격접속
pw : turtlebot 입력
~$ roslaunch turtlebot3_autorace_camera raspberry_pi_camera_publish.launch

ⓒ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch mode:=action

ⓓ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_camera extrinsic_camera_calibration.launch mode:=action

ⓕ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_detect detect_lane.launch mode:=calibration

Remote PC에서 새 터미널 열기
$ rqt

ⓖ Remote PC에서 새 터미널 열기
$ rosrun rqt_reconfigure rqt_reconfigure

ⓘ 매개변수 반영(저장)하기
Yellow 방향에만 명확하게 white lane 방향에만 명확하게
다른 이름(lane_new_temp)으로 저장 후
변경 값을 lane.yaml 반영위해 tmep로 저장

→ 경로
catkin_ws / src / turtlebot3_autorace_2020 / turtlebot3_autorace_detect / param / lane

 매개변수 반영하기
lane.yaml 수정 후 저장
lane.yaml

→ 경로
catkin_ws / src / turtlebot3_autorace_2020 / turtlebot3_autorace_detect / param / lane

 

plugins > visualization > Image view 3번 반복


4. Lane Detect Action

ⓐ Remote PC에서 새 터미널 열기
$ roscore

ⓑ 새 터미널 열기
$ ssh ubuntu@192.168.0.25  Remote PC에서 TurtleBot3 Burger(Raspberry pi)을 원격접속
pw : turtlebot 입력
~$ roslaunch turtlebot3_autorace_camera raspberry_pi_camera_publish.launch

ⓒ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_camera intrinsic_camera_calibration.launch mode:=action

ⓓ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_camera extrinsic_camera_calibration.launch mode:=action

ⓕ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_detect detect_lane.launch mode:=action

Ⓖ Remote PC에서 새 터미널 열기
$ roslaunch turtlebot3_autorace_driving turtlebot3_autorace_control_lane.launch

ⓑ 새 터미널 열기
$ ssh ubuntu@192.168.0.25 
~$ roslaunch turtlebot3_bringup turtlebot3_robot.launch