[데브코스 자율주행 TIL] DAY37 (11/09) 🚗🛣

happy_quokka·2023년 11월 9일
0
post-thumbnail

2023.11.09 DAY37

드디어 오프라인 실습이었다!!!! 강남이라 멀긴하지만... 오프라인이 훨씬 재밌다ㅎㅎ 오늘 자이카를 구동시켜보지는 못하였지만 그래도 내일은 구동시켜 볼 수 있을 것 같다!!(그랬으면 좋겠다) 오늘은... 기존에 작성한 코드를 빌드 성공하는 것이 가장 큰 목표였다!!! 에러가 너무 많아서 시간을 많이 썼지만 결과적으로는 빌드를 성공했다~~!! 너무 행복ㅎㅎ 그리고 자이카의 카메라를 실행시켜 이미지로 확인하는 부분까지 진행했다.

자이카를 너무 오랜만에 해서 처음에는 많이 버벅거렸다. 그리고 ROS를 너무 오랜만에 해서 빌드, 실행, 토픽 확인하는 방법도 잘 기억이 안났다. 강의자료나 예전에 정리해 놓은 것을 보면서 기억을 되살렸다.

내일은 불러온 이미지를 기존에 구현해놓은 이미지 처리 방법을 적용하여 확인하는 부분까지하면 좋을 것 같다. 추가로 주말 동안 차선인식을 위해 현재 코스를 자이카 카메라로 촬영하여 영상을 획득하면 좋을 것 같다.


🚗 실습 과정 및 어려웠던 점

ROS 빌드하기

cannot find -linclude 에러

  • cannot find -l<LIBRARY> 에러
  • 컴파일 과정에서 라이브러리 링크에 필요한 라이브러리들이 없어서 발생하는 오류
  • CMakeLists.txt에서 target_link_libraries 부분에 include(hpp 파일이 있는 폴더)를 넣으면 안되는데 넣어서 생긴 문제였다.
  • 추측해보건데 include 폴더는 directory에 넣어야하는 것이지 라이브러리가 아니기 때문에 라이브러리를 링크한는 부분에 넣으면 오류가 생기는 것 같다.
//오류
target_link_libraries(${PROJECT_NAME} PRIVAT
		include
        ${catkin_LIBRARIES}
        ${OpenCV_LIBRARIES}
)

//해결
target_link_libraries(${PROJECT_NAME} PRIVATE
        ${catkin_LIBRARIES}
        ${OpenCV_LIBRARIES}
)

CMakeLists.txt 순서

  • CMakeLists를 잘못 작성한건지 계속 hpp가 없다는 에러가 발생했다.
  • 내부의 CMake 순서를 바꾸니까 정상적으로 작동되었다!
  • 이유는 모르겠지만 add_library를 한 후 find_package(opencv)를 하니 되었다 (이게 맞나...?)

undefined reference to symbol '_ZN3ros10SubscriberD1Ev' 오류

  • 링커가 라이브러리를 찾지 못해서 발생하는 에러
  • 최상단의 CMakeLists.txt에도 안에서 사용되는 OpenCV와 catkin을 설정해줘야한다.
  • 기존에는 이를 사용하는 폴더의 CMakeLists.txt에만 작성하면될거라고 생각하였는데 최상단에서도 이를 알고있어야하기 때문에 작성을 해야하는 것 같다.
  • 사실 아직 왜 두번이나 반복해서 써야하는지 모르겠..다...
target_include_directories(${PROJECT_NAME} PUBLIC
        ${catkin_INCLUDE_DIRS}
        ${OpenCV_INCLUDE_DIRS}
)

target_link_libraries(${PROJECT_NAME} PRIVATE
  LaneDetection
  ${catkin_LIBRARIES}
  ${OpenCV_LIBRARIES}
)

Subscribe의 image_callbak

  • image_callback은 non-static 멤버 함수이기 때문에 콜백 함수로 사용하려면 해당 함수에 속한 객체의 포인터를 같이 넘겨주어야한다.
  • this를 통해 현재 객체에 속한 함수라는 것을 넘겨준다.
subscriber_ = node_handler_.subscribe("/usb_cam/image_raw/", 1, &LaneManager::image_callback, this);

roslaunch에서 node의 type

  • ERROR: cannot launch node of type 에러 발생
  • node의 type에 .cpp 파일을 제목을 작성하였는데 그게 아니라 cmakelists에서 만든 exe 파일의 이름을 넣어줘야했다!!!

📆 내일 할일

  • 기존의 프로젝트에서 imshow 해서 카메라 토픽 잘 받아오는지 확인하기
  • 이진화, 에지 검출, 직선 검출이 잘 진행되는지 imshow로 확인하기
  • 넘겨준 토픽으로 모터 구동이 되는지 확인하기

0개의 댓글