Page 1 of 3 123 LastLast
Results 1 to 10 of 21

Thread: MX/AX servo arm - trouble connecting via ArbotiX

  1. #1

    MX/AX servo arm - trouble connecting via ArbotiX

    Hello all!

    I have been browsing around internet in hopes of finding some solution to my issue and came across this forum. Maybe someone will be able to point me in the right direction.

    I am a first year student doing a summer project at a robotics lab. Part of my project is to try and connect a custom build robotic arm manipulator via ArbotiX and, eventually, MoveIt. I came in with no knowledge in robotics, so it's been a bit challenging at times.

    The custom arm I was given was built by a group of upper year students, and it consist of 7 servos: 2 MX64, 3 AX12, and 2 AX18, interconnected similarly to Arbotix Pincher Arm, and an ArbotiX controller is used to control them.
    The controller had a pre-set program of several poses on it, which I have deleted and uploaded ROS sketch from Arduino. Now the ranges of the servos are unpredictable when I try to move them via ArbotiX GUI. It should be ~300 for AX servos (with no offsets), and 360 degrees for MX servos (multi-turn activated according to group that designed the arm). But when I connected to ArbotiX GUI and tested ranges by changing them in the yaml file, I discovered that MX servos are doing barely a quarter or their range, and ignore anything specified beyond that, and the AX servos have very strange offsets (i.e. their neutral, or zero, positions are not as described in the manual).
    I checked each servo separately with DynaManager. They work as expected, they are centred, and everything is good. I connect via ArbotiX GUI again - and all the ranges are messed up.

    I figured it is not an issue of the controller, since everything works well when I connect to PC via controller and use DynaManager. Must be something about ArbotiX package. I checked the code, and it looks like all of it is specific to AX servos. Can this be causing the trouble? Has anyone experienced anything similar?

    At my lab, unfortunately, people have not worked with this, and cannot help me.

  2. #2

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    Hi and welcome,

    You might want to take a look at the AX and MX manuals as these servos have different ranges of values for their values.

    If you take a look at the AX servo manual: http://support.robotis.com/en/techsu...x_actuator.htm and you look at the goal position, you will see that it has a valid range of 0-1023 units which covers 300 degrees. The other 60 degrees are not addressable.

    If you look at the MX-64 manual: http://support.robotis.com/en/produc...ries/mx-64.htm
    You will see that it has a valid range of 0-4095 and it covers the whole 360 degrees.

    Good luck

  3. #3

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    Hi KurtEck,

    Thank you for your response. I did look at the manuals, that was actually the first thing I did once I realized the ranges were off. I retested the ranges with DynaManager to ensure that this is not a hardware issue and the servos have not been compromised.

    That is exactly the issue, the servos in this arm do not follow the ranges listed in their respective manuals when I manipulate them using ArbotiX GUI, and I cannot seem to find a reason why that would be the case. When they are connected via controller to the PC, I get the full and appropriate range for each separate servo.

    The only idea I had was that maybe the problem is that all servos are different in this custom made arm, and all commercially made arms like PhantomX pincher have same kind of servos, and that maybe ArbotiX package is not written to handle that. Has anyone else tried to connect an arm with mixed servos via ArbotiX GUI?

  4. #4
    Join Date
    May 2016
    Location
    USA
    Posts
    145
    Images
    12
    Rep Power
    14

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    Unfortunately I know nothing of this "Arbotix GUI" you mention, but like Kurt said, you need to look at the manual.

    Write a simple program to read the values of the control table and print them out. I think this should be everyone's Step 1 with these ... write simple programs to read and write values.

    And of course you need to understand what you want the values to be, then set them.

    The range of motion is limited by CW Angle Limit and CCW Angle Limit. So... turn off torque, position the servos at their end points (physical limits of arm) in each direction, read the Present Position value, then set that value as the appropriate CW ro CCW Angle Limit.

  5. #5

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    Can you give us a little more information on the "Arbotix Gui" you're using? I'm guessing you're using some of the old ROS 'turtlebot arm' stuff, but I'm not sure. Any info on downloaded packages, system environment, etc would be helpful.

    My guess would be that the program was only set to handle AX servos, and has some sort of hard limiter of the top AX position (1023). In the MX servo this translates to about a quarter turn.

    You said the MX servos are specified to be in multi-turn mode, which could also cause problems depending on offset/ resolution divider, but I'm guessing that this would not be the case if the DYNAmanager is moving the servos correctly. Do you know why the designers are using multi-turn mode? I'm guessing multiple revolutions of the base, or they need to cross the zero point (unless you're using some kind of gearing system, in which case the software is going to have ha hard time)

    Either way since AX servos don't support multi-turn, any existing pincher based software isn't going to natively take advantage of multi-turn mode.

  6. #6

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    As Kyle mentioned,

    would need lots more info, like configuration of the arm, what software are you running? What hardware/OS, Ros version, which ROs software... Have you tried monitoring some of the ROS nodes?

    Note: I have not used the ROS stuff here so may not be able to tell you very much. Also I have not done much of anything with MX servos.

    It has also been awhile since I have played with an ARM. Do have the Trossen one based on AX servos. It probably would not help you much, but my sketch for this is up on github...

    Again good luck

  7. #7

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    Thanks everyone for your replies! I will try to give you know as much information as I know.

    First off, I'm on Ubuntu 14.04, ROS indigo. I used the following instructions to get to the ArbotiX GUI:

    http://www.iroboapp.org/index.php?ti...ncher_with_ROS

    Since, my knowledge of robotics was about zero when I came in in May, I used whatever resources I could get on the web.

    I first connected the standard AX12 servo PhantomX pincher arm that can be purchased from Trossen:

    http://www.trossenrobotics.com/p/Pha...Robot-Arm.aspx

    I had no trouble running it from the ArbotiX GUI and later, from MoveIt, using this package:

    https://github.com/rst-tu-dortmund/phantomx_rst

    I even changed up the code to make it do whatever I wanted, and everything worked as expected.

    I was then given the custom arm I am having so much trouble with. So about this arm. It has 6DOF, and its configuration is as follows:

    1. AX12 servo - rotation in the z-axis (shoulder pan). This servo rotates from 0 to 300 deg, but is offset by about 180 deg CW (compared to trossen manual for this servo).

    2. MX64 servo with a two gear system (arm-shoulder-lift) - smaller input gear/larger output gear - this as I understand was done to increase torque, as the main goal for building this arm for this group of students was to have it lift around 500 grams of weight or more if possible at full extension. According to their report it lifts 550 grams. So this is why they needed multiturn for this MX servo, I suppose. But I don't know why they set it for both MX servos.
    This servo reads from 0 to 180 deg and makes about a quarter of a turn in those 180 deg. If I input any other values in the yaml, it ignores them.

    Then goes the first link.

    3. MX64 servo (elbow lift). This servo responds to values of -150 through 150 in the yaml, and makes about a 180 deg turn in CW.

    Then goes link 2.

    4. AX18 servo (elbow pan?) Responds to values from 0 to 300, but is offset by around 120 deg CCW (compared to what is shown in the manual).

    5. AX18 servo (wrist-lift). Hooray, works as expected, does ~300 turn, responsive to range from -150 to 150, centred properly.

    Then, link 3.

    6. AX12 servo (wrist pan) Responsive to range from 0 to 150, offset by about 180 deg CCW.

    7. AX12 servo (gripper). This one seems to work well.

    The arm connects to PC with ArbotiX-m controller. I uploaded ROS sketch (the latest version I found on the web) on the controller via Arduino IDE. I assigned the names to each joint to the best of my understanding, as that was not really provided in the report.

    I think I covered everything I know, but let me know if you guys want to know anything else, and I will try to find the info.

    The ultimate goal is to have this arm connected via MoveIt.

    Also, I found this package, which seems to take care of different servos, but I don't know yet how to use it (my ROS skills are not the sharpest, so I will need to learn more of that I suppose):

    https://github.com/arebgun/dynamixel_motor


    Thanks,
    Anna

  8. #8

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    Warning again: I am no ROS expert. I have played some with ROS with KevinO's ROS hexapod code base but... Also I shy away from Python...

    But wondering about what you have in your arm.launch file: The default from the project you mentioned shows:
    Code:
    port: /dev/ttyUSB1
    read_rate: 15
    write_rate: 25
    joints: {
        arm_shoulder_pan_joint: {id: 1, neutral: 205, max_angle: 180, min_angle: -60, max_speed: 90},
        arm_shoulder_lift_joint: {id: 2, max_angle: 150, min_angle: -150, max_speed: 90},
        arm_elbow_flex_joint: {id: 3, max_angle: 150, min_angle: -150, max_speed: 90},
        arm_wrist_flex_joint: {id: 4, max_angle: 100, min_angle: -100, max_speed: 90},
        gripper_joint: {id: 5, max_speed: 90},
    }
    controllers: {
        arm_controller: {type: follow_controller, joints: [arm_shoulder_pan_joint, arm_shoulder_lift_joint, arm_elbow_flex_joint, arm_wrist_flex_joint], action_name: arm_controller/follow_joint_trajectory, onboard: False }
    }
    I believe this code uses the package arbotix_python to control the servos. So looking at:
    http://wiki.ros.org/arbotix_python

    It looks like they suggest configuring through yaml file, but I believe they show some configuration stuff to configure for different types of servos.
    Code:
    dynamixels/<servo>/neutral (int, default: 512) 
    
    • Neutral position for servo.
    ~dynamixels/<servo>/ticks (int, default: 1024)
    • Number of ticks, for EX-106s, you would pass in 4096, other servos likely won't need this altered.
    Believe these need to be set for MX type of servos...

    As for multi-turn support, I don't have any idea of this package supports it or not.

    Good luck

  9. #9

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    Yes, I edited the yaml file so it corresponds to the arm configuration. Here is what I have:

    port: /dev/ttyUSB0
    read_rate: 15
    write_rate: 25
    joints: {
    arm_shoulder_rotation_joint: {id: 1, neutral: 150, max_angle: 300, min_angle: 0, max_speed: 15},
    arm_shoulder_lift_joint: {id: 2, max_angle: 180, min_angle: 0, max_speed: 15},
    arm_elbow_flex_joint: {id: 3, max_angle: 150, min_angle: -150, max_speed: 25},
    arm_elbow_rotation_joint: {id: 4, neutral: 150, max_angle: 300, min_angle: 0, max_speed: 15},
    arm_wrist_flex_joint: {id: 5, max_angle: 150, min_angle: -150, max_speed: 15},
    arm_wrist_rotation_joint: {id: 6, neutral: 0, max_angle: 150, min_angle: -150, max_speed: 15},
    gripper_joint: {id: 7, max_speed: 5},
    }
    controllers: {
    arm_controller: {type: follow_controller, joints: [arm_shoulder_lift_joint, arm_elbow_flex_joint, arm_elbow_rotation_joint, arm_wrist_flex_joint, arm_wrist_rotation_joint], action_name: arm_controller/follow_joint_trajectory, onboard: False }
    }


    I reduced the speeds, so I have more time to react if something goes wrong, and of course added necessary joints.


    I will take a look into arbotix_python. That it the first time I hear about it and I had no idea it is used.


    Thanks!
    Last edited by a_saf; 06-16-2016 at 09:33 AM. Reason: Update

  10. #10
    Join Date
    May 2016
    Location
    USA
    Posts
    145
    Images
    12
    Rep Power
    14

    Re: MX/AX servo arm - trouble connecting via ArbotiX

    Please post a picture of the arm.

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. Problems with Arbotix Pro connecting to servos
    By Weebo in forum HR-OS1 Development and Discussion
    Replies: 1
    Last Post: 10-06-2015, 05:58 PM
  2. hobby pwm micro servo on Arbotix pro
    By dottuli in forum HR-OS1 Development and Discussion
    Replies: 2
    Last Post: 10-01-2015, 06:37 PM
  3. Trouble using USB2Dynamixel and Arbotix-M at the same time
    By Speak1ng2m3 in forum Robot Computers
    Replies: 5
    Last Post: 04-29-2015, 05:41 AM
  4. Arbotix sketch to center a servo
    By wthierry in forum Software and Programming
    Replies: 3
    Last Post: 08-11-2014, 02:19 PM
  5. Question(s) Connecting ultrasound sensor to arbotix
    By vassilissa in forum Sensors
    Replies: 1
    Last Post: 04-15-2014, 03:33 AM

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
  •