Page 1 of 2 12 LastLast
Results 1 to 10 of 13

Thread: Hexapod in vertical surfaces

  1. Hexapod in vertical surfaces

    I have a Phantom Ax hexapod Mark III and I am doing a project in which the robot need to walk vertically, I have solved the problem to fix to a surface. The problem is when the robot is going to move a coxa, there is a momentary time in which the servo lost the power and it falls, for that is not moving forward. Can somebody help me? best regards.

  2. #2
    Join Date
    Dec 2012
    Los Angeles, CA
    Rep Power

    Re: Hexapod in vertical surfaces

    Are you sure it isn't an overload due to trying to support all that weight? Dynamixels shutdown if it exceededs its torque limit.

  3. #3

    Re: Hexapod in vertical surfaces

    I agree with Kevin... Also maybe power issue?

    When you try to move it, do any of the servo LEDS light up?

    Wonder if you might be able to do some query of the servo for error conditions? If you are using individual writes to the servos, than the status packet (assuming you have not disabled them), will have a status code, which includes information like torque error or overheat error... But if your code (like the Phoenix code base), is using SyncWrite to output all of the servos positions in one packet, than you would need to query the servos or the like to get this information.

  4. Re: Hexapod in vertical surfaces

    Thank you for your quick response,
    First of all, the code I'm using is the example code that comes in the guide, I think it's not the Phoneix.
    I labeled the servos with the Dynamanager application, there is no error information coming in.
    How can I see the errors or torque information?
    Best regards.

  5. #5

    Re: Hexapod in vertical surfaces

    Which guide? Could you post a link or the like, so I have an idea of which code you are using...

    Are you working off this page?

    If so again there are links to the Phoenix code here (Personally wish they would go to my Phantom_Phoenix project instead of the Phoenix in Parts project...

    Or are you going to the PyPose type code... It has been a long time since I looked at the pypose code... So not sure what way they do it.

    How to get the error information, depends on which library and how you do the code...

    That is if the code individually sets the goal position for each servo, than likely these set commands will generate a response packet.

    The information is in the different manuals for the Servos... That is the list of registers of the AX servo is shown in:

    The actual format of the packets (protocol 1) is shown in:

    The response packet, shown in the 2nd link, is typically sent back from the servo whenever you do something like set a register or registers. One of the fields in the response is an error byte, which has information like overheat...
    How to retrieve depends on the code being run. That is many places that set a register throw away the response packet... Others might save the error value into some global variable, which you can query...

  6. Re: Hexapod in vertical surfaces

    The code that I am using is .
    I am going to try to look for the errors fllowing your links.


  7. #7

    Re: Hexapod in vertical surfaces

    Ok that Is some of the original Nuke code base...

    The code all flows to using the bioloid library to do the step interpolation... It looks like it has not been touched up on Github since Andrew added it 5 years ago...

    So my guess is you are running this on Arduino 1.0.6? With probably the hardware and library in the github arbotix library?

    Then the moves funnel down to:

    If you look at the writePose function, it is doing one broadcast SyncWrite message to update the position of all of the servos. This is also what I normally do (I have my own version of libraries). But if you look at the links above, you will notice that you do not receive back a response packet on broadcast messages.

    If I remember correctly these are the only messages sent during the walking, the code will loop in interpolateStep function ( for each part of when it tries to move the servos from one position to the next (Each calculated position).

    That is if you look at your main loop function of your sketch, you will see that it checks for any new messages from the commander, it then checks to see if it is currently interpolating (if no, calculate new positions and start that move)... But the more interesting part is the last line that does the call to interpolateStep.

    Now how to get the state of the servos? You might get away with adding in a servo value just before or after the call interpolateStep... Maybe setup to rotate through each of the coxa servos... Could for example check the current voltage on that servo...
    If my old copy of their code is correct they don't have any table of servo ids, but instead hard code the IK one leg at a time... So I am just
    showing for RF_COXA...
        uint8_t current_voltage = ax12GetRegister(RF_COXA, AX_PRESENT_VOLTAGE, 1);
        uint8_t error_code = ax12GetLastError();
    In here you might check the current voltage, if it is too low, you know there may be an issue. When the getRegister completes it stores any error code byte in to a variable that the get last error function returns...

    You may also or instead may want to look at the temperature of the servo: AX_PRESENT_TEMPERATURE

    As these two registers are consecutive, you might read both One read starting at VOLTAGE, for 2 bytes. It will return the registers into 16 byte value assuming that the first byte is LOW value and 2nd byte is HIGH value (like goal positions...) so you can the byte values from the return value...

    But again, if this is a metal MK3 with probably the large battery... I again am with Kevin, I doubt that the AX12 (or AX18) servos have enough torque to be able to lift the hexapod up vertically.
    Last edited by KurtEck; 04-12-2018 at 09:46 AM.

  8. Re: Hexapod in vertical surfaces

    I have seen that when the robot stay some time walking, the led of the servos blink and the robot fall down. I have checked it with thermography and the servo heat a little. I don't know if it's normal behavior.

  9. #9

    Re: Hexapod in vertical surfaces

    Again it sounds like thermal shutdown... Luckily with AX servos I think most of the time the servos are not damaged... But I believe that may not always be the case with some other higher priced versions.

    As I mentioned, I am surprised it works at all. Would be interesting to see picture/video.

    Also before you get errors, you might also again look at the AX_PRESET_TEMPERATURE of the servos and see what they say they are hitting.

    Not sure how much it would help, but I remember seeing some threads, where people did some different things to cool some servos. This included things like tying to add a heatsink or adding a fan... But of course each thing you add, adds weight, which also makes it harder.

    Also don't know what form of walking gait you are using. Maybe some are better than others to help minimize the stress on the coxas. That is maybe having most if not all legs on ground before it moves the coxas as to hopefully distribute the load.

  10. #10
    Join Date
    Dec 2012
    Los Angeles, CA
    Rep Power

    Re: Hexapod in vertical surfaces

    I believe the problem is on a vertical surface ALL the weight is on the coxa's including the legs themselves. Where on horizontal that load is supported by multiple servos.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 1
    Last Post: 04-10-2016, 01:34 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts