Input data : mesh data(.stl) path : /파일위치/data
Output data_ : pointcloud data (.ply) path : /파일위치/data/ply
한점에서 구면까지 잇는 선분을 생성하고 선분과 모델링 데이터의 교점 중 첫번째 교점만을 pointcloud 데이터로 수집하였다.
구면의 반지름은 모델링을 구성하고있는 pointcloud 데이터 중 설정한 센서 위치로 부터 가장 먼 point의 거리를 반지름으로 설정하였다. pycaster Library에 내장되어있는 fromSTL 기능으로 통해 모델링파일(.stl)을 읽고, castRay 기능으로 두 점 사이의 모델링파일의 교점을 검출하였다. castRay는 검출순서대로 list type의 결과값이 리턴되어 첫번째 값(가장 먼저 검출)만을 사용하여 pointcloud로 변환하였다.
pycaster docs : https://pypi.org/project/pycaster/
pycaster project link : https://bitbucket.org/somada141/pycaster/src/master/
구면 전체를 사용하지 않고, 센서위치에서 원점을 바라보는 방향의 반구면을 사용 구면의 반지름을 계산할때 동적계획법(Dynamic programming)을 사용하여 빠른속도로 최대 반지름을 계산
더욱 빠른 연산을 위한 개선
위 그래프로와 같이 라이다 포인트 검출 갯수에 비례하여 계산 소요시간이 증가하였다.
반구면 전체가 물체를 통과하지 않으므로 일정 효율을 넘지 못한다.
_V0 pycaster python3 작동확인
_V1 평행한 두 면을 이루는 각 점들을 잇는 선분과 모델링 파일의 교점 검출
_V2 실제 Lidar는 면이 아닌 점에서 빛이 출발, 때문에 면에 포함된 점들과 면 밖의 한 점을 잇는 선분을 이용하여 교점검출
_V3 실제 Lidar는 빛은 평면에 일정한 간격이 아닌 구면에 일정한 각도로 빛이 방출되므로 구면을 이루는 점들과 센서위치의 한 점을 잇는 선분을 이용하여 교점을 검출
_V4 매번 시점을 변경하지않고, 원형으로 시점을 자동변경하는 기능을 추가