RobotFootprintIntegrator
클래스 이 코드의 목적은 로봇이 이동한 경로를 자유 공간으로 인식하고, 3D 맵에서 그 공간을 TSDF로 표현하여, 이후 다른 로봇이나 시스템이 해당 공간을 자유 공간으로 인식할 수 있도록 하는 것입니다. 이를 통해 로봇의 움직임을 실시간으로 반영한 환경 인식 및 경로 계획이 가능해집니다.
RobotFootprintIntegrator
생성자이 생성자는 config
객체를 받아서 해당 설정을 사용해 클래스의 인스턴스를 초기화합니다. 로봇의 발자국을 나타내는 Bounding Box가 bbox_min
과 bbox_max
를 사용해 설정됩니다.
RobotFootprintIntegrator::RobotFootprintIntegrator(const Config& config)
: config(config), bbox(config.bbox_min, config.bbox_max) {}
bbox
: 로봇의 바운딩 박스는 로봇이 차지하는 공간을 정의하며, 이후 로봇이 이동한 공간을 자유 공간으로 마킹할 때 사용됩니다.addFreespaceFootprint
함수getAffectedBlocks
함수를 사용하여 로봇의 위치와 바운딩 박스 내부에 해당하는 TSDF 블록들을 찾습니다.voxel.distance = map.config.truncation_distance
: 해당 보셀의 거리 값을 자유 공간에 맞게 설정합니다.voxel.weight = config.tsdf_weight
: 자유 공간을 반영한 TSDF 값에 가중치를 부여합니다.declare_config
함수이 함수는 RobotFootprintIntegrator
클래스의 설정(Config)을 정의하고 초기화하는 역할을 합니다. 이 설정 값들은 로봇의 발자국을 처리하는 데 필요한 매개변수들로 구성되어 있습니다.
bbox_min
: 로봇의 최소 바운딩 박스(Bounding Box) 좌표.bbox_max
: 로봇의 최대 바운딩 박스 좌표.tsdf_weight
: TSDF 업데이트 시 사용할 가중치.getAffectedBlocks
함수inflated.dimensions
: 바운딩 박스를 TSDF 블록의 크기만큼 확장합니다. 이는 블록의 대각선 길이를 기준으로 계산됩니다.max_steps
: 로봇이 이동할 수 있는 최대 범위에 따라 TSDF 블록의 개수를 결정하고, 이를 기반으로 로봇의 바운딩 박스가 차지하는 공간에 해당하는 블록들을 추출합니다.