IndyDCP로 Indy7 움직임 관련해서 문의 드립니다.



  • 현재 Indy7을 통해 팔레타이징을 하는 프로젝트를 진행중인데 Conty 의 인터페이스를 통해 이동할수 있는 지점을

    프로그램 메이커를 통해 task 무브를 하면 갈수 없는것이 문제입니다.

    conty에서 task 이동으로 y축 - 방향으로 누르면 분명 이동되는 좌표인데

    같은 시작 위치에서 task_move_by([0, -x, 0, 0, 0 0]) 이런 식으로 이동하면 이동 할 수가 없습니다. 

    1.어떻게 하면 이문제를 해결할 수 있을까요?

    저희가 지금 길이 입력을 받으면 그 길이에 맞춰서 좌표가 생성되고 그 좌표값에 팔레타이징하는 것을 목표로 하고 있습니다.

    2. 목표값으로 이동하기위해 프로그램 메이커 task_move_to,by를 사용하고 있는데 정확한 위치값으로 이동할 수 있는 다른 함수와 프로그램이 있나면 알려주실수 있나요?

    마지막으로 IST-MPLM-N 그리퍼를 이용중인데 올려주신 동영상을 참고 하면서 세팅하는 도중 엔드툴 커맨드에서 홀드 - 릴리즈 부분 에서 동영상과는 다르게 종류 선택(?)하는 창이 존재하지 않고 그냥 end tool 커맨드 켜짐/꺼짐 밖에 존재하지 않습니다.

     3. 홈페이지에 보면 indy7은 두가지를 다 지원한다고 되있는데 따로 설정할 필요가 없는 건가요?. 



  • 안녕하세요. 

    뉴로메카입니다.

    1번에 대해서는 작성한 코드를 올려주셔야 확인이 가능 할것 같습니다. 

    indy program maker를 사용하여 코딩한 경우 다음과 같은 형태가 됩니다.   

    from indy_utils import indydcp_client as client
    from indy_utils.indy_program_maker import JsonProgramComponent
    import json
    prog = JsonProgramComponent(policy=1, resume_time=2)  # Init. prgoram
    prog.add_task_move_to([0.48, 0.13, 0.42, -0.03, -180.0, 37.04])
    prog.add_task_move_by([0, 0, -0.05, 0, 0, 0])
    prog_json = prog.program_done()    # Program end
    indy.set_and_start_json_program(prog_json) # Execute program
    

    위 명령어의 경우 

    [0.48, 0.13, 0.42, -0.03, -180.0, 37.04]
    

    위치로 이동 한 후 -z 축 방향으로 50 mm 하강하게 됩니다. 

    indy program maker를 사용하지 않고 indy dcp 명령어를 직접 사용하는 경우 

    indy.task_move_to([0.48, 0.13, 0.42, -0.03, -180.0, 37.04])
    
    indy.task_move_by([0, 0, -0.05, 0, 0, 0])

    과 같은 형태로 사용할 수 있습니다. 

    program maker 를 사용하지 않은 Indy DCP 명령어의 경우, 모션을 실행한 후 모션 종료를 기다리지 않고 

    바로 다음 줄의 모션을 실행하기 때문에 연속해서 사용할 경우 모션에 실패하는 경우가 있습니다. 

    3. 사용하고 계신 로봇의 버전이 낮은것으로 추측됩니다. 

    conty 실행 후 Option - Application information 을 터치하면  사용하고 계신 소프트웨어의 정보를 확인할 수 있습니다. 

    확인후 버전을 알려주시면 업데이트를 도와드릴 수 있습니다. 



  • 1. 코드 (설정 부분 생략)

    ------------------------------------------------------------------------------------------------------------------------

    #box 크기 [m] 입력
        width2 = input("input box's width[cm] : ")
        width = int(width2) / 100
        print("  >>  box's width = ", width2, "[cm]\n")
        print(width)
        depth = 0.08
        height = 0.02

        work_waiting_point_j = [2.05, -19.19, -42.73, 0.14, -117.94, 0]

        place_point1 = [0, 0, -0.2, 0, 0, 0]
        place_point2 = [0, -width, 0, 0, 0, 0]
      

        num = 2
        error = 0
        while error == 0:

            prog = JsonProgramComponent(policy=0, resume_time=2)  # Init. prgoram

            #prog.add_joint_move_to(place_waiting_point_j, vel=vel, blend=blend_joint)

            if num == 1:
                prog.add_joint_move_to(place_waiting_point_j, vel=vel, blend=blend_joint)
                prog.add_task_move_by(place_point1, vel=vel, blend=blend_task)
            if num == 2:
                prog.add_joint_move_to(place_waiting_point_j, vel=vel, blend=blend_joint)
                prog.add_task_move_by(place_point2, vel=vel, blend=blend_task)

     ----------------------------------------------------------------------------------------------------------------------------

    지금 저희가 pc에서 가로길이를 입력 받으면 저희가 원하는 사이클 대로 적재하는것을 목표로 하고 있습니다.

    if num==1: 인 경우는 무리 없이 작동합니다.

    그런데 elif num==2: 인 경우 조인트 무브로 place_waiting_point 까지 간후 저희가 입력한 가로 길이만큼 -y축 방향으로 이동하는 것인데 여기서 이동하지 못하고 동작 에러가 발생합니다.

    이동하는 범위가 너무 큰 것이 문제가 인가 싶어서 값을 줄여서 해도 똑같은 문제가 발생하고()정확히는 1cm 이상을 입력했을때 오류가 납니다.)

    가장 의문인 점은 conty로 조인트 무브로 place_waiting_point 이동한후 conty에 내장된 task move를 통해 -y 축으로 움직이는 것은 아주 여유롭게 이동이 됩니다. (20~30cm 가량까지 이동 되는것 같습니다)

    이걸로 보면 로봇의 이동 반경의 제한이 걸린것은 문제가 아닌것 같은데, 왜 코드를 통해 돌릴때 제한이 걸리는 것인지 이유가 궁금합니다. 해결할 수 있는 방법 (대체 이동 함수 or 다른 프로그램)이 있다면 제시 해주시면 감사합겠습니다.

     (코드 원본이 있는 구글 드라이브를 첨부합니다. 필요하시면 참고하시면 될거 같습니다.)

    https://drive.google.com/drive/folders/1cpNH3PkZFKlBzwd9zu6k2q01WjynO7oh

    .

    그리고 궁금한 점은 task이동으로 이동할 좌표를 가상으로 이동한 후 그때의 joint 이동 좌표를 알 수 있는 방법이 있을까요?

    이게 궁금한 이유는 똑같은 위치로 이동한다고 해도 joint 무브로는 갈수 있는 위치를 task 무브로 이동하려고 하면 오류가 발생하는 경우가 빈번했기 때문입니다.

    .

    3. conty 소프트웨어 버전은 2.3.1[2019.12.4] 입니다.

    .

    4. 혹시 indy7이나 conty의 사용 메뉴얼 pdf 파일을 구할 수있는 곳이 있을까요?

    기능적인 부분의 세부적인 설명을 알아보고 싶습니다.



  • This post is deleted!


  • 1. 혹시 어떠한 에러메세지를 발생시키는지 알 수 있을까요?

    보유하고 있는 로봇으로 place_waiting_point_j 위치로 이동한 뒤 확인해 보면 -y 방향 task move가 정상적으로 작동했습니다.

    (IndyDCP 사용)

    2. 말씀하신 기능은 역운동학 문제를 풀어보는것으로 해결할 수있습니다. 

    해당 기능은 다음 릴리즈 (차주 예정)에 추가 될 예정입니다. 

    3. 현재 최신 버전 소프트웨어는 2.4.0 입니다. 

    하지만 2.에서 말씀드렸듯이 차주에 2.4.1 을 예정하고있습니다. 

    릴리즈 후에 업데이트를 도와드려도 괜찮을까요?

    4. 이메일 주소를 남겨주시면 보내드리겠습니다. 



  • 1. 저희가 보내준 코드로 작동이 잘 된다는 말씀이신가요?

    저희는 6cm ~2cm 입력했을때는 오류가 나고 1cm일때는 오류가 나오지 않았습니다.

    (다시해보니 1cm 를 입력했을때도 오류가 나네요.)

    드라이브에 num == 2구동만 코드에 넣은후 6 [cm]을 입력했을때 구동영상과 에러사진을 올려놓았습니다.

    ( 혹시나 싶어 place_waiting_point_j로 이동한후 x축 방향으로 task_move_by를 실행하였는데 똑같이 에러가 발생했습니다.

    z축 방향 task_move는 정상적으로 작동하네요)


    .

    2. 3. 릴리즈 된 후 업데이트 도와주셔도 될것같습니다.

    .

    4. roat127@naver.com 

    으로 보내주시면 감사하겠습니다.



  • 1. 해당 에러는 task move를 사용해서 발생한 에러가 아닌, 

    충돌감지 세팅이 잘못되어 발생하는 문제입니다.  

    Conty - Option - Collision Detection탭의 충돌감지 레벨을 5로 설정 한 뒤  모션을 실행해 주시기 바랍니다. 

    5로 설정한 후에도 동일한 문제가 발생할 경우, 다시 문의 주시기 바랍니다. 

    저희 엔지니어가 원격으로 세팅을 도와드리겠습니다. 

    2. roat127@naver.com 로 메일 보내드렸습니다.



  • 1. 


    알려주신대로 세팅후에도 동일한 문제가 발생합니다.

    .

    2. 메일 받았습니다. 감사합니다.



  • 1. 아래의 URL을 통해 문의 및 연락처를 남겨주시면 담당자가 연락드리겠습니다. 

    https://www.neuromeka.com/cs

    문의주실때 에러의 내용인 

    ' 외부 토크로 충돌 감지 발생' 이 모션중에 반복해서 나타나는 현상이라고 접수해 주시기 바랍니다. 



  • 2.4.1 업데이트가 완료되어서 안내 드립니다. 

    업데이트에 필요한 conty app 은 이메일로 보내드렸습니다. 

    업데이트 방법은 아래 링크를 참조해주시기 바랍니다. 

    http://forum.neuromeka.com/topic/54/indy-7-sw-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8-%EA%B4%80%EB%A0%A8-%EB%AC%B8%EC%9D%98-%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4

    2.4.1 업데이트 후, docs에서 최신 indydcp 코드를 다운로드 해 주시기 바랍니다. 

    업데이트가 완료된 후 task position에 해당하는 joint position을 알기 위해 위 명령어를 사용할 수 있습니다. 

    indy.get_inv_kin(task_pos = [0.5, -0.2, 0.3, 180, -10, 180], init_q = [0, -20, -90, 0, -60, 0])

    감사합니다. 


Log in to reply