Servo problem

I tried to control the RAPIRO with my PS3 controller. There seems to be a problem with the left arm of the robot. The right arm w/ the right analog stick works just fine but the left arm with the left analog stick is malfunctioning. It's turning too much even though it can do all other functions (wave/grip) properly.

I'm sure I calibrated it correctly. Could it be how I positioned it or is it a problem with the motors??

posted by kobe_23 on 2014-03-20 05:51

It's positioned correctly. The right arm has a range where it stops turning while the other arm's servo motors keep turning until the analog is released. Could it be a program error or servo?

posted by kobe_23 on 2014-03-20 06:16

I think, Sample script is 120 degrees servo's script.
I modified some parameters. But not perfect. I still do not understand the meaning of 1.66.

9,11c9,11
< LLR = 20 #Left analog stick Left - Right
< LUD = 120 #Left analog stick UP - DOWN
< RLR = 100 #Right analog stick Left - Right
---
> LLR = 70 #Left analog stick Left - Right
> LUD = 180 #Left analog stick UP - DOWN
> RLR = 110 #Right analog stick Left - Right
60c60
< com.write("#PS07A040T001")
---
> com.write("#PS07A070T001")
65c65
< com.write("#PS04A080T001")
---
> com.write("#PS04A110T001")
70c70
< com.write("#PS07A080T001")
---
> com.write("#PS07A110T001")
75c75
< com.write("#PS04A040T001")
---
> com.write("#PS04A070T001")
118c118
< com.write("#PS07A060T001")
---
> com.write("#PS07A090T001")
122c122
< com.write("#PS04A060T001")
---
> com.write("#PS04A090T001")
126c126
< com.write("#PS07A060T001")
---
> com.write("#PS07A090T001")
130c130
< com.write("#PS04A060T001")
---
> com.write("#PS04A090T001")
156,159c156,159
< a_data = (int(a_data/2.13) - 120) * -1
< a_data =int(( a_data - 60) * 1.66 + 20)
< if a_data <= 20:
< a_data = 20
---
> a_data = (int(a_data/1.43) - 180) * -1
> a_data =int(( a_data - 90) * 1.66 + 70)
> if a_data <= 70:
> a_data = 70
165c165
< a_data = int(a_data/2.13)
---
> a_data = int(a_data/1.43)
167,168c167,168
< if a_data >= 120:
< a_data = 120
---
> if a_data >= 180:
> a_data = 180
174c174
< a_data = (int(a_data/2.13) - 120) * -1
---
> a_data = (int(a_data/1.43) - 180) * -1
176,177c176,177
< if a_data >= 100:
< a_data = 100
---
> if a_data >= 110:
> a_data = 110
183,184c183,184
< a_data = (int(a_data/2.13) - 120) * -1
< a_data = (a_data - 60 ) * 2
---
> a_data = (int(a_data/1.43) - 180) * -1
> a_data = (a_data - 90 ) * 2

posted by oga on 2014-03-20 22:31

Hi

Sorry, I had uploaded the old version. It is mistake.
I used 120 degrees servos for the prototype of RAPIRO.
The old version was written for the prototype of RAPIRO.

I have uploaded 180 degrees version now.
http://www.kiluck.co.jp/rapiro/rapiro_ps3_ver0_1.py

Shota

posted by shota.ishiwatari on 2014-04-05 16:54

Read Terms of Service upon submitting. 投稿する前に利用規約をお読みください。