Playback of recorded moves not smooth

HI All! I’m trying out the Record, Save, and Play Moves on a Poppy Creature notebook.
It records fine but the playback is rather jerky. Is this normal? Or should default playback be smooth?
Using an Odroid XU4.

I am getting a warning on initialising PoppyHumanoid()
WARNING:pypot.dynamixel:DxlError on port /dev/ttyACM1
WARNING:pypot.dynamixel:DxlError on port /dev/ttyACM1
though the servos seem to control OK otherwise.

Happy New Year!

I should just clarify, the recording and playback based on the Poppy-ergo notebook example works really well.
The timing and pathway of the movement is fine, just that it has a little jitter, like small steps in the motion.
Just wondering if this is what others experience.
it makes the poppy humanoid shake a little when it moves, otherwise it is really good.

cheers!

Happy New Year @john ! Sorry for the delay but most of us were in holidays and trying to stay away from a computer :smile:

It’s hard to tell you if what you observe is normal or not. If you could upload a video somewhere that would really help!

The recorded movements are always a little bit different from their reproduction. We don’t have a proper zero gravity mode and thus the dynamic of the robot changes depending on if you are holding its arm or not for instance.
If you try to record motion with important acceleration, the motors will not be able to correctly reproduce movements and it may also be problematic.

If it’s really a problem of jerky moves it could be some issues with delay in the communication. Have you check if the return_delay_time registers have been set to zero when initialising your motors?

What kind of servo motor do you use ? I have the same issue with AX-12 (it seems to be an issue do to motor)

Thanks Pierre, Hope you had a good break.
I’ve uploaded a video to youtube of poppy performing the idle loop. You can see the action is not entirely smooth. The motions i record are somewhat similar, a little jittery.
The return_delay_time is set to 0 for all motors.(in dynamixel wizard)

@Thot, I’m using the motors for the poppy Humanoid, so AX12A in head, and MX28AT and MX64AT for the rest. They seem to all exhibit the slightly jerky movement.
I’m also using Odroid UX4 currently with ubuntu 15.04, but can try 14.04 as well.

It is not normal. Have you timeouts in Python logs ?
Are you using one or two USB2AX ?
Can you move your motors softly when there are in compliant mode (or swicth off) ?

I wasn’t getting timeouts when recording or playing , however i am just now because i have a broken wire to hip servo. This broken wire happened after the problem was already occurring.
I’m using two USB2AX
The motors are all smooth except chest x which I think might have overheated once. I may have to eventually exchange it but it is still working, though a little more stiff than the others.
I’ll fix the wire and try again. maybe it was a little loose before?

Hello John, have you found the solution? I have the same problem with my poppy humanoid and as you said it makes a little jittery. First I executed the same code that we can find in the Poppy Documentation but my start line doesn’t works it marks an error. So I tried with the Raspberry Pi 2 by this way I can execute my code unless the robot have an strange motion.

Hi Chibimoon,

Sorry for the delay.
No, I haven’t found a solution yet.
I fixed my broken wire and tried both recording a movement and generating movement using sine wave.
both were a bit jerky, and surprisingly, the recorded movement was a little better than the sine driven.
The degree of jerkiness doesn’t seem consistent though, sometimes better sometimes worse.
I’ll have to experiment a bit more.
I’m also finishing a second poppy humanoid so will see if that is the same.

cheers

1 Like

Hi @john don’t worry. I wonder if you use goal_position or goto_position. Because in the last weeks I was programming with both and I noticed a biggest difference in the motion when we use goto_position or goal_position.

Hey Thot I’m also using MX-28AT and the Odroid XU4 but when I tried to connect a single motor for test it the Python terminal returns an error pointing that the model number (for MX-28AT is 30) is not in the dicttionary of model numbers. Would you tell me please how you connected your robot? I’m using the Python terminal wich is given by the web interface and I’m using dynamixel primitives .

Did you test motor by motor o just connected the whole Robot? and wich Baudrate did you use?

I know , maybe they are so many questions but your creature is the most similar to mine; Thank you so much dude. Greetings

If you use MX-28AT, the code to use in the json configuration file is MX-28. the “AT” are only for hardware and communication protocol.
Take care about pypot.Robot class, it does not work with only one motor. I advise you to do the same with two motors with the code MX-28.

Thanks Thot, I’ll try what you suggest. Again, thank you a lot.
Greetings Thot :grinning:

Excuse me Thot, when I creat a PoppyTorso instance i get the error:

OSError: Could not initalize robot: No suitable port found for ids [33, 34, 35, 36, 37, 41, 42, 43, 44, 51, 52, 53, 54]. These ids are missing [] !

Have you faced this error before?

Yes that means that your motors are not well connected.
When you power on your Poppy torso, all the LED of all MX-28 motors shall blink once. If only one motor does not blink, you have a wire issue.
If all motors are well powered, it means there is a signal issue. Switch all the motors off and test the continuity between back neck and extremity of the arms + head
If all is OK, check the USB connection of the dongle. It is very fragile.
How old is your robot ?

My robot has around 3 months, I already solve the problem of the lacking ids, changigng all motors to work with protocol v. but now I have another one, I can move the AX-12A motors, moreover when a Itry to move or read the position of MX-28AT motors I get these ones are not sending anything back, I mean the instruction packet is sended but any motor is responding.

I thought it was a hardware problem but with Robo+ 2.0 I can move and read every motor I connect using the same USB2AX Dongle I use to connect my Poppy Torso.

I was checking the protocols, tables and python scripts for Torso motors and I noted that the registers are not the same for mx-28 as for mx-28at.
I will post an image with both tables in order to show this.

Did you use the python scripts of the project? or doyou think could be something related with the timeout of the Odroid? Did you connect directly to PC or to an electronic card like a Rasph or an Odroid?

Thank you for your advises and support Thot.
Greetings :slight_smile:

Excuse me Thot an additional question Wich version of Poppy Humanoid are you using?

My Poppy Humanoid is now three years old. I use the V1.0 version (with ODROID U3)
The firmware of my MX-28AT motors are the one from factory (I do not update them)
What is the version of your firmware ?

Unfortunately I updated the notors to 2.0 Is there any way to recover the original firmware?