1. hector_mapping CMakeLists.txt check
~/simulation/ros_catkin_ws/src/hector_slam/hector_mapping
위 경로로 이동하면 CMakeLists.txt 파일을 확인할 수 있다.
파일 안의 내용 중에 다음과 같은 부분을 확인한다.
1
2
3
4
5
6
7
8
9
10
|
## Declare a cpp executable
add_executable(hector_mapping
src/HectorDebugInfoProvider.h
src/HectorDrawings.h
src/HectorMappingRos.h
src/HectorMappingRos.cpp
src/main.cpp
src/PoseInfoContainer.cpp
src/PoseInfoContainer.h
)
| cs |
위 부분이 의미하는 바는 hector_mapping 노드가 실행될 때,
나열된 파일들을 이용해서 실행된다는 것이다.
그러므로 hector_mapping 노드의 실행과정을 이해하기 위해서는
위의 7개의 파일에 대해 이해할 필요성이 있다.
2. Code API check
http://wiki.ros.org/hector_mapping
위 링크에 들어가면 "Code API" 라는 메뉴를 확인할 수 있다.
해당 메뉴를 클릭하면 다음 사이트에 들어갈 수 있다.
http://docs.ros.org/kinetic/api/hector_mapping/html/index.html
위 사이트의 메뉴에서 Files를 선택하면 hector_mapping이 가지고 있는 많은 파일들을 확인할 수 있다.
여기서 1번에서 확인한 7개 파일 중 하나인 main.cpp 파일을 선택해본다.
그러면 최상위에 main.cpp가 존재하는 dependency graph를 확인할 수 있다.
main.cpp는 크게 ros/ros.h 파일과 HectorMappingRos.h 파일로 나뉘는데,
우리의 목적은 hector_slam을 이해하는 것이지 ros의 내부 소스를 이해하는 것이 아니므로
HectorMappingRos.h 쪽의 graph를 확인하도록 한다.
좀 더 깔끔하게 보기 위해 graph 자체에서 HectorMappingRos.h 박스를 클릭한다.
HectorMappingRos.h 에서는 최상위 층 바로 아래로 ros.h, tf, sensor_msgs, std_msgs, laser_geometry, nav_msgs, boost 와 같은 ros에서 기본적으로 제공하는 패키지와 메시지가 있고,
slam_main/HectorSlamProcessor.h, PoseInfoContainer.h 와 같은 hector_slam 과 관련된 패키지가 있다. PoseInfoContainer.h 는 차후에 확인하도록 하고 먼저 slam_main/HectorSlamProcessor.h 을 선택한다.
이제는 좀 더 심플한 graph를 확인할 수 있다.
이제부터는 최하위 계층의 소스부터 위로 올라오면서 분석하도록 한다.
댓글 없음:
댓글 쓰기