Navigation

    Neuromeka

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    1. Home
    2. HeeJun_Song
    • Profile
    • Following
    • Followers
    • Topics
    • Posts
    • Best
    • Groups

    Hee-Jun Song

    @HeeJun_Song

    0
    Reputation
    13
    Posts
    66
    Profile views
    0
    Followers
    0
    Following
    Joined Last Online
    Email heejun.song@neuromeka.com Age 27

    HeeJun_Song Follow
    administrators

    Posts made by HeeJun_Song

    • RE: 인디아이 접속문제 관련 문의

      안녕하세요, 답변이 늦어 죄송합니다.

       

      우선 해당 에러는 앱과 비전 서버의 버전이 맞지 않는 것으로 보입니다.

      일반적인 경우, 비전 서버에서 송신한 데이터가 앱에서 제공하는 데이터 포맷과 맞지 않을 때 해당 에러가 발생합니다.

       

      해당 문제의 경우 비전 서버에서 제공하는 앱을 설치하여 해결할 수 있습니다.

      앱을 설치하는 방법은 다음과 같습니다.

       

      1. 다운 받으려는 태블릿 PC 등에서 제공되는 웹 브라우저를 켭니다.
      2. 웹 브라우저의 주소에 다음과 같은 포맷으로 입력하여 접속합니다.
        1. http://<Vision Server IP>:8088/main/app    ※비전 서버가 컨트롤박스 안에 있는 경우, <Vision Server IP>를 <Control Box IP>로 입력하셔야 합니다.
        2. ex: http://192.168.0.2:8088/main/app
      3. 위의 경로에 접속하면 자동으로 다운로드가 시작됩니다.

       

      해당 방법을 적용하신 뒤, 다시 한 번 시도해보시기 바랍니다.

       

      마지막으로 사진의 경우, 업로드를 진행할 때 혹시 에러 메시지 같은 것이 있었나요?

      있다면 해당 내용도 알려주시면 감사하겠습니다.

       

      감사합니다.

      posted in IndyEye
      HeeJun_Song
    • RE: indyeye의 기능 문의​

      현재 IndyEye SDK는 따로 제공되고 있지 않습니다.

      하지만, TCP 통신을 통해 검출을 진행하실 수 있으며, 이를 위해 indyeye_client.py 이라는 Python 스크립트를 제공해드리고 있습니다.

      아래는 해당 스크립트를 활용하는 예제입니다.

      1. 모듈 추가

      해당 예제에서는 IndyEye를 통해 로봇을 컨트롤하는 방법을 소개합니다.

      indydcp_client : Indy7의 DCP 연결을 위해 사용됩니다.

      indyeye_client : IndyEye의 검출 명령을 위해 사용됩니다.

      indy_program_maker : 해당 모듈은 로봇의 모션 등을 조금 더 효율적으로 작성하기 위해 사용되지만, 현재의 예제에서는 해당 내용을 제외하였습니다.

       

      2. DCP 연결 테스트

      위의 스크립트를 통해, DCP에 연결하여 로봇에 정상적으로 접근이 가능한지 확인할 수 있습니다.

       

      3. IndyEyeClient 소개

      • CMD_XXX : IndyEye가 실행할 작업 항목
      • TBX_XXX : 검출 이후에 반환 받을 데이터 항목
      • detect() : 영상처리 알고리즘 실행 (IndyEye 안드로이드 앱에서 설정된 그래프를 실행합니다.)
      • detect_by_object_name() : 검출할 물체의 label을 타겟 물체로 하여 영상처리 알고리즘 실행
      • retrieve() : Select 모듈의 retrieve 실행 (detect 이후, 검출된 물체들의 결과값을 retrieve 실행 때마다 순차적으로 반환 받습니다.)
      • get_object_dict() : 그래프 상에 등록된 물체 label들을 모두 dictionary 형태로 반환

       

      4. 그래프 작성 및 Python 코드로 검출 실행

      위와 같이, detect 명령을 통해 물체의 6D Position을 취득할 수 있습니다.

      - 만약 검사 모듈로 Pass/Fail이 반영된 결과가 필요하다면 _run_command를 통해 해당 정보를 얻을 수 있습니다.

       

      5. 물체 인식 후, 로봇 제어 예제

       

      6. retrieve 예제

      그래프 상, Select 모듈의 retrieve 옵션이 ON이라면, 위의 사진과 같이 detect() 함수의 결과 값은 무조건 None이 됩니다.

      해당 결과를 취득하기 위해서는 retrieve()를 실행하여야 하며, detect()가 실행된 시점을 기준으로 retrieve()가 실행될 때마다 각 물체의 위치 정보를 계산하여 반환받을 수 있습니다.

       

       

      이상으로, 답변을 마치도록 하겠습니다.

      감사합니다.

      posted in IndyEye
      HeeJun_Song
    • RE: indyeye의 기능 문의​

      안녕하세요, IndyEye 담당자 송희준입니다.

      먼저 말씀하신 IndyEye 스펙에 대해 추가로 답변 드리도록 하겠습니다.

       

      현재 카메라의 초점은 40cm를 기준으로 맞춰져 있는 상태로 고정되어 있습니다.

      추가 정보에 대해 간략히 나타내면 아래와 같습니다(메일로 송부드렸던 것과 같은 것입니다).

      • FOV: 851.75mm(W) x 631.34mm(H)
      • Focal Length(f): 3.37mm
      • Working Distance(D): 400mm
      • Horizontal Angle of View: 93.637 deg
      • Vertical Angle of View: 76.598 deg
      • Shutter: Global shutte

       

      카메라 이미지 센서와 렌즈에 대한 스펙은 첨부된 파일과 같습니다.

      • UI-3241LE-C-HQ [Download] : 이미지 센서 스펙입니다.
      • FS0305A [Download] : 렌즈 스펙입니다.

       

      두 번째로, 질문해주신 사항에 대해 하나씩 안내드리도록 하겠습니다.

       

      현재, 제공해드리는 IndyEye 비전 시스템에서는 위치인식, 텍스트 및 문자 판독, 제품 분류가 가능합니다.

      결함 감지의 경우, 검출 시편에 따라 결과가 상이하기 때문에 말씀드리기 어려운 점 양해 바랍니다.

      크기 측정의 경우, 현재 추가중인 기능으로, 금년 내에 완료될 것으로 예상됩니다.

      검사 관련 프로세스에 대해 보다 상세한 정보가 필요하시다면 아래의 링크를 참고하여 주시기 바랍니다.

      http://docs.neuromeka.com/2.3....

       

      posted in IndyEye
      HeeJun_Song
    • RE: indy eye client command 관련 문의

      안녕하세요, 인디아이 담당자 송희준입니다.

       

      저번 원격 연결을 통해 지원해드렸던 내용을 다시 간추려서 추가로 답변드리고자 합니다.

       

      먼저, 첫 번째로 문의 주신 내용에 대해서 답변드립니다.

      IndyEye 제품 배송시, 함께 배송되는 Calibration Sheet와 Tool Marker를 검출하시려면 다음과 같이 설정 해주셔야 합니다.

      IndyEye 안드로이드 앱의 검출 탭 구성_

      1. 위의 사진과 같이 Camera - DetectMarker - Select 로 구성된 그래프를 작성합니다.

      2. DetectMarker의 설정 중, 검출을 원하시는 시트를 선택합니다. (sheet / marker 중 택1)

      ---- 이후 ----

      앱의 설정이 완료되었다면, 사용 중이신 python 스크립트에서 indyeye 클라이언트의 detect 함수를 사용하시면 마커의 좌표점을 얻을 수 있습니다.

       

      예제_

      task_pos = dcp_client.get_task_pos()

      marker_pos = indy_eye.detect(1, task_pos, 'Tbo')

      print(marker_pos)

       

      수정 및 추가해주신 질문에 대한 답변은 아래와 같습니다.

       

      indy dcp를 사용하실 경우, IndyEye 안드로이드 앱에서 연결 중인 로봇과 접속을 끊어야 합니다.

      Python 스크립트에서 IndyEye Client를 통해 인디아이 그래프를 작동시키는 경우, 인디아이에서 로봇과 반드시 연결하여야 하는 것은 아닙니다.

      만약 추정한 값이 전혀 엉뚱한 값이 나온다면, detect 함수 호출 시에 인자 값으로 입력한 로봇의 task position과 검출하고자 하시는 class를 정확히 입력하셨는지 확인하여 보시기 바랍니다.

      detect 함수에 인자값으로 사용되는 task_pos의 경우, 로봇의 현재 자세에 대한 position을 전달하여야 하며, 검출시 전달된 로봇의 position을 좌표점 추정에 활용합니다.

      따라서 marker의 pose estimation의 경우, indyeye_client.py의 detect 함수를 통해 추정된 좌표점을 반환받으실 수 있습니다.

       

      마지막으로 말씀주신 cls 인자값의 경우, indyeye_client.py의 get_object_dict 함수에서 반환되는 값을 사용하여야 합니다.

      get_object_dict 함수의 경우, 현재 그래프상에 등록된 타겟 물체의 정보를 python의 dictionary 형태로 반환합니다.

      예를 들어, IndyEye 앱에서 "Camera-DetectMarker-Select"와 같이 구성되어 있을 때, DetectMarker에서 설정한 값이 "sheet"라면 다음과 같이 반환됩니다.

      {"1":"sheet"}

      위의 반환 값에서 "Key" : "Value" 형태의 데이터가 가지는 의미는 다음과 같습니다.

      Key : 타겟의 번호(class)

      Value : 타겟의 이름

      여기서 추출되는 Key 값은 indyeye_client.py의 detect 함수의 cls 인자값으로 사용되며, int 형태로 입력되어야 합니다.

      ex)_

      objs = eye.get_object_dict()

      print(objs)

      # 출력 결과 : {"1":"sheet","2":"label_object1","3":"label_object2"}

      # 검출하고자 하는 타겟 물체 : 캘리브레이션 시트 (1 번)

      sheet_pos = eye.detect(1, task_pos, 'Tbo")

       

      이상으로 답변을 마치도록 하겠습니다.

      감사합니다.

       

       

      - P.S.

      마지막에 추가해주신 그림 2에서 None을 반환하는 이유는 다음의 이유 중 하나일 수 있습니다.

      1. 영상에서 검출 타겟으로 설정된 sheet가 검출될 만큼의 충분한 거리 안으로 들어오지 않았을 경우

        -> 해당 문제의 경우, 초점이 맞지 않는 위치에 시트가 위치할 경우 발생할 수 있습니다.

        -> 시트를 인식할 수 있는 감지 가능 영역까지 시트를 위치시켜 주시면 해결할 수

      2. 검출 탭에서 검출 알고리즘이 제대로 검출 결과 값을 반환하지 못할 경우

        -> 해당 문제는 검출 탭에서 작성하신 그래프에서 DetectMarker와 Select 이후, 다른 알고리즘을 사용하시면서 결과가 덮어씌워진 경우일 수 있습니다.

        -> 알고리즘 구성을 다시 한 번 살펴주시기 바랍니다.

      posted in IndyEye
      HeeJun_Song
    • RE: 캘리브리레이션 이더캣 연결 에러

      안녕하세요, 인디아이 담당자입니다.

       

      해당 문제는 로봇의 케이블과 관련된 문제로 생각됩니다.

       

      빠른 문제 파악을 위해 해당 로봇에 대한 CS 요청을 부탁드리겠습니다.

      해당 요청은 아래의 URL을 통해 문의주실 수 있습니다.

      https://www.neuromeka.com/cs

       

      감사합니다.

      posted in IndyEye
      HeeJun_Song
    • RE: 인디아이 물체좌표축 및 좌표 데이터 통신 질문입니다!!

      @장성진 

      안녕하세요, 인디아이 담당자 송희준입니다.

      답변이 늦어져서 죄송합니다.

       

      질문에 대해 하나씩 답변 드리도록 하겠습니다.

       

      Q1. 물체 자세 인식과정에서 좌표를 생성할 때 베이스 좌표 축에서 물체 좌표축이 어떻게 수치로 나오는지 궁금합니다.

      A1. 물체를 인식하게 되면 다음과 같은 정보로 물체의 좌표를 알 수 있습니다. ex) [x, y, z, u, v, w]

      이는 제가 E-Mail로 송부드리는 indyeye_client.py 스크립트의 detect 함수를 통해 얻으실 수 있으며, 자세한 사용 방법은 이메일에 함께 안내드리도록 하겠습니다.

       

      Q2. 카메라 프레임의 좌표축은 어떻게 설정되는지도 설명해 주시면 감사하겠습니다!

      A2. 카메라 프레임의 좌표축은 카메라 캘리브레이션 이후에 결정되게 됩니다.

      캘리브레이션 과정에서 End Effector의 좌표점과 카메라 영상 평면에 투영되는 캘리브레이션 시트를 이용하여 계산되어 설정됩니다.

       

      Q3. 어플로 파악된 사물의 좌표 데이터를 tcp통신이나 시리얼 통신 등을 이용해 데이터를 전달 할 수 있는지 궁금합니다!

      A3. 어플에서 파악된 사물의 좌표 데이터는 A1.에서 말씀드린 것과 같이 indyeye_client.py 스크립트의 detect명령을 통해 받아오실 수 있습니다.

      해당 스크립트는 tcp 통신을 통해 동작하며, 이외의 통신 방식은 지원되지 않습니다.

       

      Q4. 캘리브레이션 된 베이스 프레임(워크 스페이스)이 총 가로 세로 높이 정보를 어떻게 확인 할 수 있는지 궁금합니다. 또한 새 캘리브레이션 시트를 받아서 수행하게 되면 정보가 바뀌는지도 궁금합니다!

      A4. 캘리브레이션 시트의 정보는 자비어의 /home/nvidia/Projects/indyeye/Local/MarkerParam/ 위치의 marker.yml 파일에 저장되어 있습니다.

      해당 파일은 인디아이 버전 0.2.1부터 5mm 시트의 기준으로 변경되어 적용되었으며, 만약 0.2.0 이하의 버전에서 업데이트를 진행하셨다면 신 버전용 marker.yml 파일을 덮어씌우셔야 합니다.

      하지만 지금 가지고 계신 자비어의 경우, 제가 0.3.0 버전으로 전부 업데이트를 완료하였기 때문에 위 처럼 덮어씌우거나 추가로 진행해야 할 것은 없습니다.

       

      이상으로 답변이 많은 도움이 되었기를 바라며 이만 줄이도록 하겠습니다.

       

      추가로 문의 사항이 있으시다면 바로 질문 부탁드리겠습니다.

      감사합니다.

      posted in IndyEye
      HeeJun_Song
    • RE: indyeye deeplearning

      @장성진 안녕하세요, 답변이 늦어 죄송합니다.

      학습 데이터 추출의 경우, 보내주신 도면 파일을 통해 원격으로 고객님이 가지고 계신 인디아이를 통해 학습 데이터를 추출합니다.

      학습 데이터가 추출된 후에는 폐사의 학습용 서버에서 딥 러닝을 진행하게 되며, 해당 과정을 통해 추출된 weight, h5, config 등의 파일들을 고객님의 인디아이 시스템에 설치하게 됩니다.

      답변 기다려주셔서 감사합니다.

      posted in IndyEye
      HeeJun_Song
    • RE: indyeye Pose 관련 질문

      안녕하세요, 인디아이 담당자 송희준입니다.

      답변이 늦어 죄송합니다.


       

      먼저 1번의 경우, 감지된 영역(이하 마스크라 하겠습니다)에서 FitPlane을 통해 작업 평면상의 좌표점을 구하게 됩니다.

      그런 다음, 등록된 CAD를 통해 회전 각도를 순회하며 CAD의 사영을 2D 영상 마스크에 내립니다.

      사영된 CAD의 마스크와 감지된 마스크를 비교하며 가장 일치율이 높은 자세를 추출합니다.

      해당 내용에 관련하여 자세한 내용은 폐사의 기술적인 내용이므로 말씀드리기 어려운 점 양해 바랍니다.

      이에 관한 논문 등을 참고하실 때 "3D object pose estimation from 2D image"와 같은 키워드 등으로 검색하시면 다양한 방법론을 찾으실 수 있습니다.
       

      2번의 경우, 좌표점을 추정하게 되면 해당 좌표점은 로봇 베이스(참조 좌표계)를 기준으로 추출되게 됩니다.

       

      추가로 궁금한 점이 있으시다면 다시 한 번 문의 부탁드리겠습니다.

      감사합니다.

      posted in IndyEye
      HeeJun_Song
    • RE: indyeye apk 사용관련 질문

      안녕하세요, 인디아이 담당자입니다.

       

      우선 1번의 첫 번째 답변은 이곳(http://forum.neuromeka.com/top...)을 참고하여 주시기 바랍니다.

       

      학습 시킬 때의 원리는, 우선 Indy7에 부착되어 있는 IndyEye 카메라를 통해 학습용 데이터 영상을 100장 정도 촬영합니다.

      이때, Indy7이 티칭된 4개의 시드 시점 사이로 움직이면서 촬영을 진행합니다.

      시편 촬영시, 제공된 3D 설계도면인 STL 파일을 2D 영상에 역투영하여, 사영된 영역을 바이너리 마스크로 지정하게 됩니다.

      이렇게 촬영된 사진과 만들어진 마스크를 Mask R-CNN 모델을 통해 학습을 진행합니다.

       

      Custom에 대한 것은 유선상으로 말씀드린 대로, E-Mail로 첨부하여 드리겠습니다.

       

      2번 답변_

      3D CAD 파일을 추가하기 위해서는 먼저 브라우저를 통해 다음 URL에 접속하셔야 합니다.

      http://<Vision Server IP>:8088/web?active=cad

      해당 페이지에 접속하시면 CAD 탭을 확인하실 수 있습니다.

      이곳에 STL 파일을 업로드하시면 Silhouette2D 모듈에서 CAD를 사용하실 수 있습니다.

       

      자세를 추정한다는 것의 의미는 간단히 말씀드리자면 해당 물체의 3D 좌표계 상의 좌표점 및 회전율을 찾는 것이라고 할 수 있습니다.

      이를 통해, 2D 영상에 투영되어있는 물체의 좌표점을 3D 좌표계 상으로 추정할 수 있습니다.

      이는 Indy7과 같은 로봇을 통해 Pick & Place 등의 작업을 할 때 필요한 과정이며, 같은 카테고리에 있는 FitPlane 모듈 또한 3D 좌표를 계산하는 모듈입니다.

      감사합니다.

      posted in IndyEye
      HeeJun_Song
    • RE: indyeye deeplearning

      안녕하세요, 인디아이 담당자입니다.

       

      먼저 학습을 위한 방법으로 WebUI를 사용하는 방향은 더 이상 지원이 되고 있지 않습니다.

      영어 메뉴얼 부분은 현재 작성 중인 부분이라 반영이 되지 않은 것으로 보입니다.

      학습을 진행하기 위해선 다음과 같은 절차가 필요합니다.

       

      1. 학습 대상 물체의 3D 도면 파일(.stl 파일)을 뉴로메카 인디아이 학습 담당자에게 인계
      2. 해당 물체의 시편을 뉴로메카 담당자에게 배송 혹은 원격 지원을 통한 학습용 데이터 취득 (이는 인디아이 연구용 버전을 가지고 계신 경우, 원격 지원 없이도 인디아이의 학습 탭을 통해 진행하실 수 있습니다.)
      3. 뉴로메카 학습 서버를 통해 학습 진행
      4. 학습된 모델을 고객님의 인디아이에 설치

       
      해당 내용에 대한 요청은 아래의 URL을 통해 접수하여 주시기 바랍니다.

      https://www.neuromeka.com/cs

       

      딥 러닝의 경우, Mask R-CNN의 네트워크와 Fast R-CNN의 네트워크는 구성부터 다르기 때문에, Fast R-CNN을 통해 학습을 진행한 모델은 Mask R-CNN에서 사용될 수 없습니다.

      또한 Mask R-CNN의 경우, Faster R-CNN의 네트워크에서 마스킹을 위한 브랜치 네트워크가 추가된 학습 모델이기 때문에 Faster R-CNN에서 학습된 모델이라고 하더라도 Mask R-CNN에서 Inference를 진행할 수 없습니다.

      만약, Fast R-CNN을 적용한 python 스크립트를 Xavier 내부에서 실행시킨다는 말씀이시라면, TensorFlow로 작성된 스크립트의 경우 별도의 실행이 가능합니다. 하지만 인디아이에서도 DetectObject 모듈을 통해 작업이 동시에 진행될 경우,

      한정된 리소스로 인해 여러 방면에서의 문제점이 발생할 수 있습니다.

       

      마지막으로, indyeye의 카메라를 python으로 컨트롤하실 때, pip3를 통해 pyueye를 설치하셔야 정상적으로 사용이 가능합니다.

      참고 부탁드리겠습니다.

       

      감사합니다.

       

      posted in IndyEye
      HeeJun_Song