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이 짧을수록 모션을 취하는 속도가 빨라집니다. 만약
movetime
이None
이라면, 속도는 이전 설정값으로 유지됩니다.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) – 모션 파일 경로입니다. 입력하지 않으면 기본 모션 파일을 사용합니다.