ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Myo로 OpenManipulator 동작시키기 성공!!!
    ROS일기 2021. 10. 28. 22:03
    728x90
    반응형

    구동영상

     

    최대한 단순하게 코드를 작성하였다.

    myo_raw/myo_ori 토픽에서 생성되는 데이터를 봤을 때, (https://needs-searcher.tistory.com/196?category=885778참고)

    먼저 로봇컨트롤러에서 모든 모터각 =  0으로 초기자세를 잡은 뒤 myo에서 생성되는 roll, pitch, yaw값을 그대로 모터각으로 전달하면 쉽게 구현할 수 있겠다고 생각하였다. 하지만 센서장착 후 팔을 정면으로 뻗었을 때, 장착할 때마다 roll, pitch, yaw값이 조금씩 다르다는 단점이 있다. (대부분의 경우 정면으로 팔을 뻗었을 때 roll = pitch = yaw = 0가 된다.)

     

    그래서

    1. teleop노드를 실행했을 때, 즉시 로봇이 초기자세(모든 모터각 = 0)를 잡게 하고

    2. myo에서 생성되는 데이터(roll, pitch, yaw)를 계속해서 로봇의 모터각(base, shoulder, elbow motor)으로 전달

    ** 주의 : 팔을 크게 왼쪽에서 오른쪽으로 이동했을 때 roll값은 약 -1 rad에서 +1 rad으로 바뀌는 것을 보았을 때, 이 값을 그대로 모터에 전달하면 로봇이 매우 빠르게 움직여 위험할 수 있다. myo에서 생성되는 rad값에 0.45를 곱해주면 적정한 속도로 로봇팔을 추종시킬 수 있다.

    3. myo에 내장된 손동작인식값을 가져와 주먹을 쥐었을 때 그리퍼가 닫히고, 폈을 때 그리퍼가 열리도록 코드작성

    을 구현하였다.


    코드를 작성하는 과정에서 필요했던 것은

    1. myo에서 생성되는, 내가 가져와 쓰고 싶은 데이터가 어느 토픽으로 pub되는가

    2. 해당 데이터의 interface(데이터형식)는 어떻게 되는가

    1과 2는 https://needs-searcher.tistory.com/192?category=885778 를 참고하여 rqt 혹은 터미널창에서 확인할 수 있다.

     

    3. 해당 데이터형식을 가져와 쓸 수 있도록 header파일에 #include 선언

    예)

    #include <sensor_msgs/JointState.h>

    #include <std_msgs/String.h>

    #include <geometry_msgs/Vector3.h>

     

    4. cpp본문에서

    1) subscriber 노드 생성 : 토픽을 받아올 창구를 만든다.

    2) 콜백함수 작성 : 창구에서 받아올 데이터를 Class의 멤버변수로 저장한다.

    3) 모터각으로 전달하는 역할의 메소드(멤버함수) 작성 : 받아온 데이터가 저장된 멤버변수를 호출하여 모터로 전달.

    ** subscriber노드와 멤버변수, 멤버함수는 모두 헤더파일의 클래스에서 선언되어야 한다. 이 때, 멤버변수는 private접근지정자에 위치시켜 메소드에서만 안전하게 다뤄질 수 있도록 하고 메소드는 메인함수에서 실행을 위해 public접근지정자에 위치시킨다.

    4) main함수에서 메소드 호출하여 실행되도록 한다.

     

    5. 헤더파일에서

    1) cpp본문에서 사용되는 subcriber노드, 멤버변수, 메소드들을 모두 선언한다. 4-3)에 유의하여 적절한 접근지정자에 위치시킨다.

    2) 필요한 데이터인터페이스 헤더를 추가시킨다.

     
    728x90
    반응형

    댓글 1

    • robotis 2022.02.17 16:25

      안녕하세요, 로보티즈 표성우 매니저입니다.

      자사 제품을 활용하여 촬영해 주신 영상을 재밌게 보았습니다^^

      저희 제품 활용 사례 영상에 촬영하신 영상을 추가하고 싶은데,
      이와 관련해서 이야기 나눌 수 있는 담당자분의 연락처를 알려주시면 연락드리도록 하겠습니다.

      제 연락처는 070-8671-2629(swpyo@robotis.com) 입니다.

      감사합니다^^

Designed by Tistory.