"파이브가이즈"의 두 판 사이의 차이

신소재공학과 캡스톤위키
이동: 둘러보기, 검색
(개념설계안)
(개념설계안)
95번째 줄: 95번째 줄:
  
 
[[파일:개념설계안사진1.jpg]]
 
[[파일:개념설계안사진1.jpg]]
 +
 
점자판으로 표시할 구간을 1호선의 독산~평택지제로 지정한다. 이는 일반적인 지하철, 급행, 옆으로 빠지는 역을 모두 점자판을 이용하여 표현할 수 있게 하기 위함이다. 이들 중 점자판 기준으로 가장 이름이 긴 성균관대역을 기준으로 점자판 제작한다.
 
점자판으로 표시할 구간을 1호선의 독산~평택지제로 지정한다. 이는 일반적인 지하철, 급행, 옆으로 빠지는 역을 모두 점자판을 이용하여 표현할 수 있게 하기 위함이다. 이들 중 점자판 기준으로 가장 이름이 긴 성균관대역을 기준으로 점자판 제작한다.
  
100번째 줄: 101번째 줄:
  
 
[[파일:개념설계안사진2.jpg]]
 
[[파일:개념설계안사진2.jpg]]
  미리 지하철역 이름이 점자로 표시된 판을 제작하고, 그 판을 두 개의 원기둥을 이용해서 컨베이어 벨트처럼 펴준다. 한 개의 원기둥을 모터에 연결해서 모터를 이용해 원기둥을 회전시켜준다. 원기둥이 회전할 때 점자판이 돌아간다. 점자판을 박스 안에 넣고 역을 표시해주는 칸을 위해 구멍을 뚫어주고 원하는 역에 해당하는 점자판을 구멍에 위치시킨다. 즉, 한 개의 모터만 조절해서 원하는 역 점자를 구멍에 위치시켜 실시간으로 역을 알려주는 점자판을 만든다. 대략적인 규격은 그림에서 표현한 것과 같다.
+
   
 +
미리 지하철역 이름이 점자로 표시된 판을 제작하고, 그 판을 두 개의 원기둥을 이용해서 컨베이어 벨트처럼 펴준다. 한 개의 원기둥을 모터에 연결해서 모터를 이용해 원기둥을 회전시켜준다. 원기둥이 회전할 때 점자판이 돌아간다. 점자판을 박스 안에 넣고 역을 표시해주는 칸을 위해 구멍을 뚫어주고 원하는 역에 해당하는 점자판을 구멍에 위치시킨다. 즉, 한 개의 모터만 조절해서 원하는 역 점자를 구멍에 위치시켜 실시간으로 역을 알려주는 점자판을 만든다. 대략적인 규격은 그림에서 표현한 것과 같다.
  
 
◇ <지하철역 지정을 위한 UI>
 
◇ <지하철역 지정을 위한 UI>
  
 
[[파일:개념설계안사진3.jpg]]
 
[[파일:개념설계안사진3.jpg]]
 +
 
  그림과 같이 출발역과 도착역을 지정하고 출발 버튼을 누르게 되면 설정이 완료되고 지하철 역들의 이름이 나열되며 프로그램이 실행된다. 지하철 모양의 그림이 현재 지하철의 위치를 나타내고 있고, 이전 역이 파란색으로 표시되며 다음 역이 빨간색으로 표시된다. 다음 역 버튼을 누르면 지하철의 위치가 다음 위치로 바뀌게 되며 이전 역과 다음 역의 표시가 이에 맞게 바뀐다.
 
  그림과 같이 출발역과 도착역을 지정하고 출발 버튼을 누르게 되면 설정이 완료되고 지하철 역들의 이름이 나열되며 프로그램이 실행된다. 지하철 모양의 그림이 현재 지하철의 위치를 나타내고 있고, 이전 역이 파란색으로 표시되며 다음 역이 빨간색으로 표시된다. 다음 역 버튼을 누르면 지하철의 위치가 다음 위치로 바뀌게 되며 이전 역과 다음 역의 표시가 이에 맞게 바뀐다.
 
  이러한 UI를 이용하여 일반 지하철과 급행, 그리고 어디를 향해 가는 지하철인지를 모두 고려하여 역을 지정할 수 있으며 이전 역과 다음 역, 현재 지하철 위치를 표시함으로써 UI사용자(기관사)의 사용의 편의성을 고려하였다.
 
  이러한 UI를 이용하여 일반 지하철과 급행, 그리고 어디를 향해 가는 지하철인지를 모두 고려하여 역을 지정할 수 있으며 이전 역과 다음 역, 현재 지하철 위치를 표시함으로써 UI사용자(기관사)의 사용의 편의성을 고려하였다.
111번째 줄: 114번째 줄:
  
 
[[파일:개념설계안사진4.jpg]]
 
[[파일:개념설계안사진4.jpg]]
  지하철 벽면에 부착만 하면 바로 사용 가능할 수 있도록 무선 모듈(와이파이)을 이용하여 설계한다. 와이파이의 경우 현재 지하철에서 지원하는 와이파이를 이용한다. 전력공급 역시 선 형태로 노트북에서 공급하는 형태가 아닌 휴대용 외부전원을 이용하여 공급하도록 한다.
+
   
 +
지하철 벽면에 부착만 하면 바로 사용 가능할 수 있도록 무선 모듈(와이파이)을 이용하여 설계한다. 와이파이의 경우 현재 지하철에서 지원하는 와이파이를 이용한다. 전력공급 역시 선 형태로 노트북에서 공급하는 형태가 아닌 휴대용 외부전원을 이용하여 공급하도록 한다.
 
  점자판을 표시하는 주요 기기와 모터, 아두이노 보드, 드라이버, 외부전원, 브레드보드을 설치할 수 있는 박스 형태의 기기를 그림과 같이 제작한다. 점자판 기기는 박스의 아래쪽 부분에 배치하고, 나머지 기기들은 박스의 위쪽 부분에 배치한다.
 
  점자판을 표시하는 주요 기기와 모터, 아두이노 보드, 드라이버, 외부전원, 브레드보드을 설치할 수 있는 박스 형태의 기기를 그림과 같이 제작한다. 점자판 기기는 박스의 아래쪽 부분에 배치하고, 나머지 기기들은 박스의 위쪽 부분에 배치한다.
  

2023년 12월 19일 (화) 01:36 판

프로젝트 개요

기술개발 과제

국문 : 시각 장애인을 위한 지하철 내 실시간 점자 안내판

영문 : Real-time Braille Information Board for the Blind in the Subway

과제 팀명

파이브가이즈

지도교수

김현식 교수님

개발기간

2023년 9월 ~ 2023년 12월 (총 4개월)

구성원 소개

서울시립대학교 신소재공학과 20184500** 이*형(팀장)

서울시립대학교 신소재공학과 20184500** 김*호

서울시립대학교 신소재공학과 20184500** 석*창

서울시립대학교 신소재공학과 20184500** 이*서

서울시립대학교 신소재공학과 20184500** 한*창

서론

개발 과제의 개요

개발 과제 요약

본 과제에서는 지하철 내 시각장애인을 위한 실시간 점자 안내판을 제작한다. 제작된 점자 안내판은 모터를 통해 지하철 노선도에 따라 실시간으로 점자판을 표시한다.
지하철 내 벽면에 부착하는 기기이므로 편리하게 이용할 수 있고 비장애인이 보는 노선도처럼 현재 위치까지 파악 가능하므로 시각장애인의 교통상황 파악에 도움이 된다.
현재 지하철 내에는 음성 방송 외에 교통 정보를 안내하는 시스템이 존재하지 않으므로 상기 시스템은 시각장애인 및 교통약자에게 높은 효용가치를 지닌다.

개발 과제의 배경

2023년 현재, 시각 장애인의 지하철 이용은 여전히 많은 어려움이 있는 것으로 나타나고 있습니다. [윤지영 외. “시각장애인 및 저시력자를 위한 버스 도착 안내 어플리케이션”, 한국HCI학회, 856-861. 2018]에 의하면 시각장애인이 이용하는 교통수단을 살펴보면 장애인 콜밴의 이용률이 가장 높으며(31%)  다음으로 지하철/전철(28%)인 것으로 나타납니다. 시각장애인이 대중교통을 이용하기에 불편한 이유는 교통안내가 부족한 점과 거주지에서 버스 정류소 또는 지하철역까지 이동이 어려운 점이 동일하게 17%로 높게 나타납니다. 이 밖에도 지하철역의 편의시설이 충분히 갖춰져 있지 않은 경우가 많습니다. 점자블록이 제대로 설치되어 있지 않거나, 점자 표지판이 표기되어 있지 않아 시각 장애인이 이동하기 어렵습니다. 또한, 지하철 안내방송이 너무 빠르거나, 소음이 심해 시각 장애인이 알아듣기 어렵습니다.
하지만, 최근 들어 시각 장애인을 위한 지하철 이용 편의 개선을 위한 노력이 이어지고 있습니다. 서울교통공사는 지하철역마다 음성유도기를 설치하고, 또 타지하철 앱을 통해 실시간 위치 안내를 제공하고 있습니다. 또한, 카카오맵은 승강장 연단 정보를 음성으로 안내하는 기능을 제공하고 있습니다. 국내에는 NAVIWALK-STICK이 RFID를 적용하여 시각장애인의 보행 및 위치정보를 제공하는 기술로 개발되었으며 RF 지팡이, RF IC TAG, TTS 단말기로 구성되어 있습니다.
이러한 노력에도 불구하고, 시각 장애인이 지하철을 이용하기 위해서는 여전히 많은 개선이 필요합니다. 그 예로, 지하철 내 목적지 및 플랫폼 정보는 시각 장애인에게 음성 안내로만 이뤄지고 소리가 작거나 안내 되지 않는 경우도 있습니다. 철도차량의 소음권고기준 및 검사방법 등에 관한 규정에서는 권고 주행소음 기준 최대 92dB(데시벨)로 규정하고 있습니다. 소음이 심하면 90~100dB 이상으로 시끄러워지기도 하며, 이는 국가소음정보시스템에서 언급하는 난청 증상 발현 구간으로 안내 방송이 들리지 않을 가능성이 충분합니다.
따라서 본 과제를 통해 지하철 내에서도 시각 장애인에게 목적지 및 플랫폼 정보를 원활하게 전달하겠습니다.

개발 과제의 목표 및 내용

◇목표
이동권은 모든 사회에서 평등하게 보장되어야 하는 권리입니다. 특히, 교통 수단을 통한 이동은 모든 시민에게 근본적인 권리이며, 장애인들 또한 이 권리를 무제한으로 행사할 수 있어야 합니다. 이에 따라, 장애인들의 이동권을 보장하고 사회 통합을 촉진하기 위한 기술적인 개선이 필요합니다.
본 과제는 이러한 요구에 부응하기 위해 시행하고자 하는 것으로, 지하철 노선 정보를 지하철 내에 설치하는 장치에 점자로 표현하여 시각에 제약이 있는 사용자들이 정확하고 안전하게 현재 위치와 내릴 역을 파악할 수 있도록 교통정보를 안내합니다. 궁극적으로 이러한 안내를 통해 시각 장애인의 이동권을 보장하고 더 나아가 지하철 외의 교통수단에서도 목적지를 촉각 정보로 제공하는 것을 목표로 합니다.
◇내용
지하철 문 옆 노약자석 방향에 해당기기를 부착하여 시각장애인이 실시간으로 지하철 노선을 알 수 있게 하는 장치입니다.
지하철 자체적으로 실시간으로 전광판에 신호를 주어 정보를 표시하고 있다. 우리도 이를 이용하여 신호를 받으면 점자로 해당 지하철역을 나타내는 점자로 바뀌어서 시각장애인이 편하게 해당 역의 정보를 알 수 있게 합니다.
고무 패드에 각각의 역에 해당하는 점자들을 기입한 뒤에 모터를 이용하여 해당 역의 점자 부분이 노출될 수 있도록 회전시켜서 시각 장애인이 정보를 알 수 있게 합니다. 
아래의 그림은 대략적인 모식도입니다. 
자세한 구동방식은 다음과 같습니다.
1) 현재 지하철 차량이 향하는 목적지가 변경되었다는 정보를 획득합니다.
2) 정보 획득 시, 위의 모터가 작동하며 컨베이어 벨트가 돌아갑니다.
3) 사용자에게 노출되는 점자의 내용이 변경되며 목적지에 대한 정보를 표시합니다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

내용

  • 특허조사 및 특허 전략 분석

내용

  • 기술 로드맵

내용

시장상황에 대한 분석

  • 경쟁제품 조사 비교

내용

  • 마케팅 전략 제시

내용

개발과제의 기대효과

기술적 기대효과

내용

경제적, 사회적 기대 및 파급효과

내용

기술개발 일정 및 추진체계

개발 일정

내용

구성원 및 추진체계

내용

설계

설계사양

제품의 요구사항

내용

설계 사양

내용

개념설계안

◇ <구간설정 및 가장 긴 역 이름>

개념설계안사진1.jpg

점자판으로 표시할 구간을 1호선의 독산~평택지제로 지정한다. 이는 일반적인 지하철, 급행, 옆으로 빠지는 역을 모두 점자판을 이용하여 표현할 수 있게 하기 위함이다. 이들 중 점자판 기준으로 가장 이름이 긴 성균관대역을 기준으로 점자판 제작한다.

◇ <컨베이어 벨트 원리를 참고한 점자판>

개념설계안사진2.jpg

미리 지하철역 이름이 점자로 표시된 판을 제작하고, 그 판을 두 개의 원기둥을 이용해서 컨베이어 벨트처럼 펴준다. 한 개의 원기둥을 모터에 연결해서 모터를 이용해 원기둥을 회전시켜준다. 원기둥이 회전할 때 점자판이 돌아간다. 점자판을 박스 안에 넣고 역을 표시해주는 칸을 위해 구멍을 뚫어주고 원하는 역에 해당하는 점자판을 구멍에 위치시킨다. 즉, 한 개의 모터만 조절해서 원하는 역 점자를 구멍에 위치시켜 실시간으로 역을 알려주는 점자판을 만든다. 대략적인 규격은 그림에서 표현한 것과 같다.

◇ <지하철역 지정을 위한 UI>

개념설계안사진3.jpg

그림과 같이 출발역과 도착역을 지정하고 출발 버튼을 누르게 되면 설정이 완료되고 지하철 역들의 이름이 나열되며 프로그램이 실행된다. 지하철 모양의 그림이 현재 지하철의 위치를 나타내고 있고, 이전 역이 파란색으로 표시되며 다음 역이 빨간색으로 표시된다. 다음 역 버튼을 누르면 지하철의 위치가 다음 위치로 바뀌게 되며 이전 역과 다음 역의 표시가 이에 맞게 바뀐다.
이러한 UI를 이용하여 일반 지하철과 급행, 그리고 어디를 향해 가는 지하철인지를 모두 고려하여 역을 지정할 수 있으며 이전 역과 다음 역, 현재 지하철 위치를 표시함으로써 UI사용자(기관사)의 사용의 편의성을 고려하였다.

◇ <무선 모듈 및 최종 제품 설계>

개념설계안사진4.jpg

지하철 벽면에 부착만 하면 바로 사용 가능할 수 있도록 무선 모듈(와이파이)을 이용하여 설계한다. 와이파이의 경우 현재 지하철에서 지원하는 와이파이를 이용한다. 전력공급 역시 선 형태로 노트북에서 공급하는 형태가 아닌 휴대용 외부전원을 이용하여 공급하도록 한다.

점자판을 표시하는 주요 기기와 모터, 아두이노 보드, 드라이버, 외부전원, 브레드보드을 설치할 수 있는 박스 형태의 기기를 그림과 같이 제작한다. 점자판 기기는 박스의 아래쪽 부분에 배치하고, 나머지 기기들은 박스의 위쪽 부분에 배치한다.

이론적 계산 및 시뮬레이션

[Python 코드]

 python 코드의 핵심 요소는 역 표시 알고리즘, 역 이동 알고리즘, Wi-Fi를 통한 아두이노와의 통신이다.
 

1) 역 표시 알고리즘 def gogo():

   global station,station_num, next_station, now_station
   
   # 초기화
   station_num = 1
   for widget in frame_up.winfo_children():
       widget.destroy()
   # Station 목록 생성
   str_station = cbx_str.get()
   end_station = cbx_end.get()
   # 조건에 따라 역 목록 불러오기
   if end_index > -1 and str_index > -1: # 일반노선에 대해    
       # 다른라인: 충청 출발 경기북부 도착
       if str_station in station_3 and  end_station in station_1:
           station = station_3[station_3.index(str_station)::-1] 
           + list(reversed(station_1[end_index:]))
       
       # 다른 라인: 경기 출발 충청 도착
       elif str_station in station_1 and end_station in station_3: 
           station = station_1[str_index:] 
           + station_3[:station_3.index(end_station)] 
           + [station_3[station_3.index(end_station)]]
                         
       else: # OG station 내에서 이어져 있는 라인 (같은 라인, 인천~경기 북부 라인)
           if end_index < str_index: # 상행
               station = OG_station[str_index:end_index:-1] + [OG_station[end_index]]
           else: # 하행
               station = OG_station[str_index:end_index] + [OG_station[end_index]]

# 이후 급행, 특급에 따른 역 불러오기 코드

   now_station = station[0]
   if next_station != "":
       parameter = OG_station.index(next_station) - OG_station.index(now_station)
       sock.sendall(f"{parameter}\n".encode())
   next_station = station[1]
   parameter = OG_station.index(now_station) - OG_station.index(next_station)
   sock.sendall(f"{parameter}\n".encode())
 GUI에서 선택한 지하철의 출발역과 도착역 정보를 받으면, 해당된 역 list를 바탕으로 GUI에 역 리스트를 표시한다. 이 과정에서 기존에 진행 중이던 역이 있을 시 모터를 현재 출발역으로 돌리고, 역의 표시와 동시에 지하철 출발로 인식하여 이동을 진행한다.

2) 역 이동 알고리즘 def drive():

   global station, station_num, next_station, now_station
   i = station_num
   if i == len(station) - 1:
       return
   if i != len(station)-1: #끝까지 다 안했다면
       globals()[f"label_{i}"].config(font=start_font) # (구)다음역 -> (현) 지금역
       globals()[f"label_{i+1}"].config(font=arrive_font) # (구)다다음역 -> (현) 다음역
       globals()[f"label_{i}"].config(fg = "#5a64f6") # (구)다음역 -> (현) 지금역
       globals()[f"label_{i+1}"].config(fg = "#ff4d4d") # (구)다다음역 -> (현) 다음역
       globals()[f"arrow_{i+1}"].config(text="🚇")
       globals()[f"arrow_{i+1}"].config(font=subway_font)
       
       globals()[f"arrow_{i}"].config(text="➡")
       globals()[f"arrow_{i}"].config(font=arrow_font)
       
       globals()[f"label_{i-1}"].config(font=button_font) # (구)현재역 -> (현) 이전역
       globals()[f"label_{i-1}"].config(fg = "black") # (구)현재역 -> (현) 이전역
       now_station = station[i]
       next_station = station[i+1]
       parameter = OG_station.index(now_station) - OG_station.index(next_station) 
       sock.sendall(f"{parameter}\n".encode())
   station_num += 1
 GUI의 "다음 역" 버튼을 누르면 GUI에 표시된 Label의 색을 바꾸고 지하철 아이콘을 이동 시켜 다음 역, 현재 역, 지하철 위치를 표시한다. 또한 현재역과 다음역의 OG_station(=점자판에서의 역 순서 위치) index를 찾아 이동할 step을 아두이노로 전달한다.

3) Wi-Fi를 통한 아두이노와의 통신

esp8266_ip = "192.168.145.70" esp8266_port = 80 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((esp8266_ip, esp8266_port))

 socket 라이브러리를 통해 Wi-Fi와 통신한다. 이때 연결할 IP의 설정은 아두이노를 통해 확인한다. 데이터의 전달은 역 이동, 표시 알고리즘에서 있던

sock.sendall(f"{parameter}\n".encode())를 통해서 전달한다.

[Arduino 코드]

 Wi-Fi 연결과 모터 구동을 위한 코드에 대해 각 부분 별로 나눠서 다음과 같이 설명을 할 수 있습니다.

1) 라이브러리 및 상수 선언

  1. include <ESP8266WiFi.h>
  2. include <AccelStepper.h>

// Wi-Fi 구동 상수 설정 const char *ssid = "AndroidHotspot4506"; const char *password = "qwerty123456"; const int serverPort = 80;

// 스텝모터 구동 상수 설정 const int en = D2; // Enable 핀 const int step = D3; // Step 핀 const int dir = D4; // Direction 핀

AccelStepper stepper(AccelStepper::DRIVER, step, dir);

 ESP8266와 AccelStepper 라이브러리를 사용하기 위한 헤더 파일을 포함하고, Wi-Fi 연결 및 서보 모터 제어를 위한 변수 및 상수를 선언합니다.

2) setup 함수 설정 WiFiServer server(serverPort);

void setup() {

 Serial.begin(115200);  
 WiFi.begin(ssid, password);   // 와이파이 연결
 pinMode(LED_BUILTIN, OUTPUT); // 우노 보드 내장 LED 설정
 while (WiFi.status() != WL_CONNECTED) { // 와이파이 미연결 시, 연결 중일 때
   digitalWrite(LED_BUILTIN, HIGH); // 우노 보드 LED 점멸
   delay(250);
   digitalWrite(LED_BUILTIN, LOW);
   delay(250);
 }
 Serial.println("Connected to WiFi");
 Serial.println(WiFi.localIP());
 server.begin();
 // 각 핀을 출력 모드로 설정
 pinMode(en, OUTPUT);
 digitalWrite(en, LOW); 
 stepper.setMaxSpeed(1000);  // 최대 속도 설정 (스텝/초)
 stepper.setAcceleration(500);  // 가속도 설정 (스텝/초^2)
 stepper.moveTo(0);  // 초기 위치 설정

}

 setup 함수에서는 시리얼 통신을 시작하고, LED 핀을 출력으로 설정하며, Wi-Fi에 연결하고 서버를 시작한다. 이때 Wi-Fi 연결 완료 상태를 확인하기 위해 LED를 점멸한다. Wi-Fi 연결 완료 시 로컬 IP를 출력하고 서버를 시작한다. 또한, 스텝 모터를 제어하기 위한 핀 및 가속도, 최대 속도 등의 초기 설정을 수행한다.

2) loop 함수 설정 void loop() {

 WiFiClient client = server.available();
 if (client) {
   Serial.println("Client connected"); // 클라이언트 연결 확인
   // Read the data from the client
   while (client.connected()) {
     if (client.available()) { // 파이썬에서 클라이언트로 보낸 신호 확인
       delay(1000);        
       int step_count = client.parseInt(); // 클라이언트에서 보낸 신호 정수로 받기
       Serial.println(step_count);
       if (step_count != 0) {
         // 모터를 지정된 스텝 수만큼 이동
         stepper.moveTo(stepper.currentPosition() + (step_count * 100));
         // 이동이 완료될 때까지 대기
         while (stepper.isRunning()) {
           stepper.run();
         }
       }
     }
   } 
 }

}

 loop 함수에서는 클라이언트의 연결을 확인하고, 클라이언트로부터 수신된 데이터를 읽어들여 스텝 모터를 제어한다. 클라이언트가 연결되면 데이터를 읽어들이고, 클라이언트로부터 수신된 데이터를 처리하여 스텝 모터를 움직인다. 클라이언트로부터 전달된 스텝 수를 읽어들여, 스텝 모터를 해당 스텝 수만큼 이동하도록 설정하고 이동이 완료될 때까지 대기한다.




[점자 1칸의 Step 수 calibration]

이론적 계산 사진.jpg

1step당 angle θ= step angle * microstep = 1.8° * 1/4 = 0.45° 1step당 움직이는 길이 l = 2πr*θ/360 = 2*3.14*20*0.45/360 = 0.157mm 벨트의 전체 길이 = 590mm 역 한 칸을 이동하기 위한 step = 전체 길이 / 역 개수 / l = 590 / 24 / 0.157 = 157 step

기기의 오차를 감안하였을 때 이론적 값을 토대로 실제로 기기를 구동해보며 step을 조절하였고, 한 칸을 이동하기 위한 step수로 147 step을 얻었다.

상세설계 내용

상세설계사진1.jpg 상세설계사진2.jpg 상세설계사진3.jpg 상세설계사진4.jpg

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

내용

섬네일을 만드는 중 오류 발생: convert: Image width exceeds user limit in IHDR `/var/www/capstone/mse/images/4/4a/1.png' @ warning/png.c/MagickPNGWarningHandler/1672.
convert: Image height exceeds user limit in IHDR `/var/www/capstone/mse/images/4/4a/1.png' @ warning/png.c/MagickPNGWarningHandler/1672.
convert: Invalid IHDR data `/var/www/capstone/mse/images/4/4a/1.png' @ error/png.c/MagickPNGErrorHandler/1646.
convert: corrupt image `/var/www/capstone/mse/images/4/4a/1.png' @ error/png.c/ReadPNGImage/4095.
convert: no images defined `/tmp/transform_ab3b75895f24.png' @ error/convert.c/ConvertImageCommand/3210.

Error code: 1
기기의 사진
지하철 부착 사진

포스터

내용

섬네일을 만드는 중 오류 발생: 12.5 MP 이상의 파일 용량
포스터

관련사업비 내역서

내용

완료작품의 평가

내용

향후계획

내용

특허 출원 내용

내용