Kumanスマートロボットキット
Simple Wiki Based Contents Management System
関心分野 >> Kumanスマートロボットキット

Kumanスマートロボットキット

最近、RaspberryPiを使ったロボットキットが安くなっていたので、Kumanロボットカーを買ってみた。
このロボットは、RaspberryPi 3B用との記載があったが、余っていたRaspberryPi 2で組み立て&ソフトウェアの作成を行ってみた。
ソフトウェアのリポジトリは、こちら

Joystickを使う

Joystickを情報を取るために、pygame を使ってみる。pygameを使うと、LinuxでもWindowsでも動作可能だった。
#! /usr/bin/env python
# -*- coding: utf-8 -*-

from __future__ import print_function
import pygame
from pygame.locals import *

#
#
def setup_joystick():
  pygame.joystick.init()
  try:
    j = pygame.joystick.Joystick(0) # create a joystick instance
    j.init() # init instance
    print( 'Joystick name: ' , j.get_name() )
    print( 'Num of buttons : ' , str(j.get_numbuttons()) )
    print( 'Num of sticks  : ' , str(j.get_numaxes()) )
    return j

  except pygame.error:
    print( 'Joystick not found.' )
    return None
    

#
# main function
def main(joy):
  loop_flag=True

  pygame.init()

  while loop_flag:
    pygame.time.wait(10)

    for e in pygame.event.get():
      if e.type == pygame.locals.JOYAXISMOTION: # Analogue Stick
        v=joy.get_axis(1) * 200
        lv = rv = -v
#        if abs(v) < 50 : rv=lv=0
#        elif abs(v) < 150 : rv=lv= -75*np.sign(v)
#        else : rv=lv= -150*np.sign(v)

        tsp=joy.get_axis(3) 
        if tsp < 0 :
          if rv > 0:
            rv += tsp*abs(rv)*2
          elif rv <0:
            rv -= tsp*abs(rv)*2
        if tsp > 0 :
          if lv > 0:
            lv -= tsp*abs(lv)*2
          elif lv <0:
            lv += tsp*abs(lv)*2

        print ( int(lv), int(rv) )


      elif e.type == pygame.locals.JOYHATMOTION: # cross key 
        hatval=joy.get_hat(0)
        if hatval == (0,0):
          pygame.time.set_timer(e.type, 0)
        else:
          pygame.time.set_timer(e.type, 60)
        print(hatval)
        

      elif e.type == pygame.locals.JOYBUTTONDOWN: # push a button
        print( str(e.button)+' down' )
        
      elif e.type == pygame.locals.JOYBUTTONUP: # release a button
        print( str(e.button)+' up' )
        if e.button == 0: loop_flag=False

      else:
        print( e )

if __name__ == '__main__':
  j=setup_joystick()
  if j :
    main(j)


資料