[ROS] 카메라를 활용한 차선 인식 (OpenCV 사용)

happy_quokka·2023년 11월 8일
0

ROS

목록 보기
25/25

my_cam

  1. my_cam 패키지 만들기
$ cd xycar_ws/src/
$ catkin_create_pkg my_cam rospy std_msgs

  1. launch 폴더 만들기
$ cd my_cam/
$ mkdir launch

  1. src 폴더에 edge_cam.py 파일 만들기

  2. edge_cam.py에 실행 권한 주기

  3. launch 폴더에 edge_cam.launch 파일 만들기

  4. 터미널에서 roslaunch 실행

$ roslaunch edge_cam.launch

카메라 토픽 받아오기(ex_codes의 rosbag_ex)

  • 폴더 위치 : xycar/src/ex_codes/rosbag_ex
  1. 터미널 1
$ roscore
  1. 터미널 2 : 카메라 영상 받을 준비
$ rosbag record -o cam_topic /usb_cam/image_raw

  • 3번을 실행시키고 끝나면 종료시킨다.
  • 이런에러가 뜬다면 roscore를 실행시킨다
    [registerPublisher] Failed to contact master at [localhost:11311]. Retrying...
  1. 터미널 3 : 모든 토픽 중에 카메라 영상만 가져오기
$ rosbag play full_topic.bag
  1. 폴더에 .bag 파일이 생긴다
  • cam_topic.bag으로 이름 변경
  1. rosbag 확인
$ rosbag info cam_topic.bag

  1. bag 파일에서 동영상 만들기
  • 터미널 1 : 터미널 2가 끝나면 ctrl+c 로 정지
$ rosrun image_view video_recorder image:='/usb_cam/image_raw' _filename='track2.avi' _fps:=30

  • 터미널2
$ rosbag play cam_topic.bag

edge_cam.py 실행

  • 해당 폴더로 위치 옮겨와서 실행
  1. 터미널 1
$ python edge_cam.py
  1. 터미널 2
$ rosbag play cam_topic.bag

명도차 기반 차선 인식(line_drive 패키지)

  1. line drive 패키지 만들기
$ catkin_create_pkg line_drive rospy tf geometry_msg rviz xacro

  1. src 폴더에 line_fine.py 파일 만들기
  2. 권한 설정
  1. track1.avi 영상 옮기기 + line_fine.py 파일에 경로 수정

  2. cmakelists.txt에서 opencv 라이브러리 연결 (아래 내용 추가)

find_package(OpenCV REQUIRED HINTS ${CMAKE_SOURCE_DIR}/thirdparty/OpenCV/install/lib/cmake/opencv4)

include_directories(
# include
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
)


link_libraries(
  ${OpenCV_LIBS}
)
  1. 실행
$ python line_find.py

0개의 댓글