3d reconstruction
도커 파일
FROM leontius/ubuntu-desktop-lxde-vnc:ros
# Switch to ROOT
USER root
RUN mkdir -p /root/Desktop && \
cd /root/Desktop && \
wget https://github.com/FusionEye/3d-reconstruction/archive/master.zip && \
unzip master.zip && \
rm master.zip
RUN pip2 install opencv-python==3.4.3.18 -i https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip2 install Pillow==5.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
Map
1. Map의 종류
1.1 Occupancy Grid Map(OGM)
일반적으로 많이 사용
- 2차원 격자 지도
- 0~255의 값으로 표현 = 점유 확률 값(1은 점유, 0은 비 점유)
- ROS msg nav_msgs/OccupancyGrid로 발행
- 발행시 점유 확률값(0~1)을 점유도(0~100)으로 변경
- 100은 이동 불가(Occupied Area), 0은 이동 가능(Free Area), -1은 미지 영역(unknown area)
- *.pgm 형태로 지도 저장 (Portable graymap format)
- *.yaml형태로 정보 저장
- image : 지도의 파일명
- resolution : 해상도 = meter/pixel (eg, 0.05 = 각 픽셀은 5cm)
- origin : 원점에서의 x,y,yaw (eg. 지도 왼쪽 아래 = -10m, -10m, yaw)
- negate : 흑백 반전
– resolution: Resolution of the map, meters / pixel – origin: The 2-D pose of the lower-left pixel in the map as (x, y, yaw) – occupied thresh: Pixels with occupancy probability greater than this threshold are considered completely occupied. – free thresh: Pixels with occupancy probability less than this threshold are considered completely free.
1.2 ooo
2. Map 생성 방법
- Scan(sensor_msgs/LaserScan) : 거리값
- tf(tf/tfMessage) : 자세(위치+방향)정보
- map(nav_msgs/OccupancyGrid)
3. Map 처리 과정
3.1 Sensor_node
- LDS센서 실행 거리 정보 수집
- scan정보를 전달
3.2 turtlebot3_teleop
- 키보드를 통해 값 수신 (이동 정보)
- turtlebot3_core에 이동속도, 회전 속도등 명령어 전달
3.3 turtle3_core
- 로봇 이동
- 자신의 위치 계측/측정한 정보인 odom정보 전송
- odom전송시 3단계 순서로 각 상대 좌표를 tf형태로 퍼블리시
3.4 turtlebot3_slam_gmapping
- 지도 작성
- scan 정보 이용 : 거리 정보
- tf 정보 이용 : 거리정보를 측정한 센서 위치 정보
3.5 map_saver
- .pgm / .yaml 파일 생성
- 추후 map_server 노드에 위해서 topic형태로 퍼블리쉬된다.
4. costmap
점유격자지도의 정보를 기반으로 장애물영역, 충돌예상 영역, 이동 가능영역계산하는것을 costmap이라고 부름
네비게이션 종류에 따라 분류
- global_costmap :
- local_costmap :
표현 방식 : 0~255까지의 값으로 표현
- 000: 로봇이 이동 자유 공간
- 001~127 : 충돌 가능성 낮은 영역
- 128-252 : 충돌 가능성 높은 영역
- 253~254 : 충돌 영역
- 255 : 이동 불가능한 영역