python实现nao机器人手臂动作控制

这些天依然在看nao公司文档的东西,把读过的代码顺手敲了出来。代码依然很简单,但是为什么我要写博客呢?这其中有很大的原因在于,代码是死的,可是读着读着就感觉代码活了,而且,每次读都会有不同的感受。咱就直接看正题吧。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

#-*-encoding:UTF-8-*-

import sys

import motion

import almath

from naoqi import ALProxy

  

def StiffnessOn(proxy):

    #we use the body name to signify the collection of all jionts

    pName="Body"

    pStiffnessLists=1.0

    pTimeLists=1.0

    proxy.stiffnessInterpolation(pName,pStiffnessLists,pTimeLists)

  

def main(robotIP):

    ''' example showing a path of two position

    '''

    try:

      motionProxy=ALProxy("ALMotion",robotIP,9559)

    except Exception ,e:

        print"could not create a proxy to almotion"

        print str(e)

  

    try:

      postureProxy=ALProxy("ALRobotPosture",robotIP,9559)

    except Exception ,e:

        print"could not create a proxy to alRobotPosture"

        print str(e)

    #set the nao stiffness on

    StiffnessOn(motionProxy)

  

    #set the nao to standinit

    postureProxy.goToPosture("StandInit",0.5)

  

    effector="LArm"

    space=motion.FRAME_ROBOT

    # AXIS_MASK_VEL=7

    axisMask=almath.AXIS_MASK_VEL

    isAbsolute=False

    #since we are in relative, the current position is zero

    currentPos=[0.0,0.0,0.0,0.0,0.0,0.0]

    #define the changes in relative to the current position

    dx=0.03      #translation axis x

    dy=0.03      #translation axis y

    dz=0.00      #translation axis z

    dwx=0.00     #rotation axis x

    dwy=0.00     #rotation axis x

    dwz=0.00     #rotation axis x

  

    targetPos=[dx,dy,dz,dwx,dwy,dwz]

  

    #go to the target and back again

    path=[targetPos,currentPos]

    times=[2.0,4.0]#seconds

    motionProxy.positionInterpolation(effector,space,path,axisMask,times,isAbsolute)

  

if __name__=="__main()__":

    robotIP="127.0.0.1"

    if len(sys.argv)<=1:

      print "use default :127.0.0.1"

    else:

      robotIP=sys.argv[1]      

main(robotIP)

接下来是另一个:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

#-*-encoding:UTF-8-*-

''' Cartesian control :arm trajectory example'''

  

import sys

import motion

import almath

from naoqi import ALProxy

def StiffnessOn(proxy):

    pName="Body"

    pStiffnessLists=1.0

    pTimeLists=1.0

    proxy.stiffnessInterpolation(pName,pStiffnessLists,pTimeLists)

  

  

def main(robotIP):

    '''showing a hand ellipoid

    '''

    try:

      motionProxy=ALProxy("ALProxy",robotIP,9559)

    except Exception,e:

      print"could not create a proxy "

      print"error was ",e

  

    try:

      postureProxy=ALProxy("ALRobotProxy",robotIP,9559)

    except Exception ,e:

      print"could not create a proxy"

      print "error was",e

  

    #send nao in stiffness on

    setStiffnessOn(motionProxy)

    #send nao to pose init

    postureProxy.goToPosture("StandInit",0.5)

  

    effector="LArm"

    space=motion.FRAME_ROBOT

    path=[

        [0.0,-0.05,+0.00,0.0,0.0,0.0],    #pose1

        [0.0,+0.00,+0.04,0.0,0.0,0.0],    #pose2

        [0.0,+0.04,+0.00,0.0,0.0,0.0],    #pose3

        [0.0,+0.00,-0.02,0.0,0.0,0.0],    #pose4

        [0.0,-0.05,+0.00,0.0,0.0,0.0],    #pose5

        [0.0,+0.00,+0.00,0.0,0.0,0.0]

        ]                #pose6

    axisMask=7

    times=[0.5,1.0,2.0,3.0,4.0,4.5]       #seconds

     

    isAbsolute=False

    motionProxy.positionInterpolation(effector,space,path,axisMask,times,isAbsolute)

     

if __name__=="__main__":

    robotIP="127.0.0.1"

    if len(sys.argv)<=1:

        print "usage local ip "

    else:

        robotIP=sys.argv[1]

    main(robotIP)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值