motion

서보 모터를 제어하고, 모션을 생성합니다.

Class: Motion

class openpibo.motion.Motion[소스]

Bases: object

Functions: set_motor() set_motors() set_speed() set_speeds() set_acceleration() set_accelerations() get_motion() set_motion_raw() set_motion() set_mymotion() stop()

파이보의 움직임을 제어합니다.

example:

from openpibo.motion import Motion

motion = Motion()
# 아래의 모든 예제 이전에 위 코드를 먼저 사용합니다.
set_motor(n, pos)[소스]

모터 1개를 특정 위치로 이동합니다.

example:

motion.set_motor(2, 30)
매개 변수
  • n (int) –

    모터 번호

    0~9의 숫자가 들어갑니다. 해당 번호의 위치는 상단의 모터 번호당 위치 를 참고해주세요.

  • pos (int) –

    모터 각도

    -80~80의 숫자가 들어갑니다. 자세한 범위는 상단의 모터 제한 각도 를 참고해주세요.

set_motors(positions, movetime=None)[소스]

전체 모터를 특정 위치로 이동합니다.

movetime이 짧을수록 모션을 취하는 속도가 빨라집니다. 만약 movetimeNone 이라면, 속도는 이전 설정값으로 유지됩니다.

example:

motion.set_motors([0, 0, -80, 0, 0, 0, 0, 0, 80, 0])
매개 변수
  • positions (list) – 0-9번 모터 각도 배열

  • movetime (int) –

    모터 이동 시간(ms)

    50ms 단위, 모터가 정해진 위치까지 이동하는 시간

    (모터 컨트롤러와의 overhead문제로 정밀하지는 않음)

set_speed(n, speed)[소스]

모터 1개의 속도를 설정합니다.

example:

motion.set_speed(3, 255)
매개 변수
  • n (int) – 모터 번호

  • speed (int) –

    모터 속도

    0~255 사이 값입니다. 숫자가 클수록 속도가 빨라집니다.

set_speeds(speeds)[소스]

전체 모터의 속도를 설정합니다.

example:

motion.set_speeds([20, 50, 40, 20, 20, 10, 20, 50, 40, 20])
매개 변수

speeds (list) –

0-9번 모터 속도 배열

배열 안의 각 가속도는 0~255 사이 정수입니다.

set_acceleration(n, accel)[소스]

모터 1개의 가속도를 설정합니다.

가속도를 설정하게 되면, 속도가 0에서 시작하여 설정된 속도까지 점점 빨라집니다. 그리고 점점 느려지다가 종료 지점에서 속도가 0이 됩니다.

example:

motion.set_acceleration(3, 5)
매개 변수
  • n (int) – 모터 번호

  • accel (int) –

    모터 속도

    0~255 사이 값입니다. 숫자가 클수록 가속도가 커집니다.

set_accelerations(accels)[소스]

전체 모터의 가속도를 설정합니다.

example:

motion.set_accelerations([5, 5, 5, 5, 10, 10, 5, 5, 5, 5])
매개 변수

accels (list) –

0-9번 모터 가속도 배열

배열 안의 각 가속도는 0~255 사이 정수입니다.

get_motion(name=None, path=None)[소스]

모션 프로파일을 조회합니다.

name 매개변수가 None 이면, 해당 모션 프로파일에 저장되어있는 모든 moiton 이름을 출력하고, None 이 아니면, 해당 이름의 모션에 대한 데이터를 출력합니다.

example:

motion.get_motion('forward1')
매개 변수
  • name (str) –

    동작 이름

    profile에 저장되어있는 동작의 이름입니다.

  • path (str) –

    사용할 모션 파일 경로

    모션 파일 경로입니다. 입력하지 않으면 기본 모션 파일을 사용합니다.

반환

  • name == None 인 경우:

    # motion.get_motion()
    # motion.get_motion(path='/home/pi/mymotion.json')
    
    ['stop', 'stop_body', 'sleep', 'lookup', 'left', 'left_half',
    'right', 'right_half', 'forward1', 'forward2', ...]
    
  • name != None 인 경우:

    # motion.get_motion('stop')
    # motion.get_motion('stop', path='/home/pi/mymotion.json')
    
    {
      'comment': 'stop',
      'init_def': 1,
      'init': [0, 0, -70, -25, 0, 0, 0, 0, 70, 25]
    }
    

set_motion_raw(exe, cycle=1)[소스]

모션 프로파일의 동작을 실행합니다.

example:

motion.set_motion_raw(
  {'init_def': 1, 'init': [0, 0, -70, -25, 0, 0, 0, 0, 70, 25]},
  1
)
매개 변수
  • exe (str) –

    특정 동작을 위한 각 모터의 움직임이 기록된 데이터 입니다.

    다음과 같은 양식을 따릅니다:

    {
      "init_def": 1
      "init":[0,0,-70,-25,0,0,0,0,70,25],
      "pos":[
        {"d":[999,999,999,999, 30,999,999,999,999,999],"seq":500},
        {"d":[999,999,999,999,-30,999,999,999,999,999],"seq":2000},
        ...
      ]
    }
    
    • init_def 는 초기동작의 유무입니다.

    • init 은 동작을 시작하기 전의 준비동작입니다.

    • pos 는 연속된 동작이 담긴 list 입니다. seq 시간(ms)에 d 의 동작이 완료됨을 의미합니다.

  • cycle (int) – 동작을 몇 번 반복할지 결정합니다.

set_motion(name, cycle=1, path=None)[소스]

path 파일에 저장된 모션 프로파일의 모션을 실행합니다. path 를 설정하지 않으면, 기본 모션 프로파일이 적용됩니다.

example:

motion.set_motion('dance1')
#motion.set_motion('dance1', path='/home/pi/mymotion.json')
매개 변수
  • name (str) –

    동작 이름

    모션 프로파일에 저장되어있는 동작의 이름입니다.

  • cycle (int) – 동작 반복 횟수

  • path (str) – 모션 파일 경로입니다. 입력하지 않으면 기본 모션 파일을 사용합니다.

set_mymotion(name, cycle=1)[소스]

/home/pi/mymotion.json 파일에 저장된 모션 프로파일의 모션을 실행합니다.

example:

motion.set_mymotion('test')
매개 변수
  • name (str) –

    동작 이름

    모션 프로파일에 저장되어있는 동작의 이름입니다.

  • cycle (int) – 동작 반복 횟수

stop()[소스]

수행 중인 동작을 정지합니다.

example:

# 동작을 수행 중일 때,
motion.stop()