I have a belt-driven holonomic mobile robot with mecanum wheels. It can perform forward/backward, rotation and diagonal movements well, however when I try to move it sideways; it vibrates during the motion which I want to get rid of. Do you have any idea why it happens to me or what should I do?
The belts might be loose, try moving the motor further away, or maybe another belt.
Depending on how it's coded, that portion of the program might be running slow. See if the voltage going to the motor is consistent.
There could be a loose screw somewhere along that axis, make sure everything is secured.
We have had similar problems in the past with Mech wheels. Without knowing a whole lot about your situation, I would recommend that your wheels are in the correct configuration–the diagonal runners on the wheels should form an “X” when viewing the robot from the top. Additionally, double check that your runners are not too tight–if they are, the robot will be unable to strafe or vibrate a lot because the runners will not turn well. I hope this helps; if not, maybe post some pictures or the robot and double check that the code is making the motors turn at the same rate. Good luck!
We are having that problem as well. we think it is due to the wheels not spinning at the same speeds when strafing. We are putting encoders on the output shafts to help correct this.
In addition to things posted above, consider your gearing ratio. Sideways motion has the highest total torque demand for mecanum drives (due to friction of the rollers). Your gear ratio should be such that the motors run at about half of their free speed, for typical sideways robot speed. That will give you a good range (so you can move sideways slow or fast and still be in the middle of the motor speed-torque curve).
The torque while strafing is ~1/SQRT(2), (71%) times that of forward driving since the wheels are quite literally driving into/away from each other and the rollers free spin, creating friction from the thrust loads. The tractive torque in diagonal movement is arguably half that (since only half the motors are running and the other two wheels are dragging). The torque in the forward/reverse directions are the same as traction wheel drive trains with the same coefficient of friction.
For good strafing, the rollers need to be able to free spin as much as possible. Also check that none of the thrust bushings are wearing out on the rollers. Also, clean the rollers. All of this is such a p.i.t.a, it’s why we don’t do Mecanum any more.
Listen to this guy, that is how mecanum wheels move sideways, they need to be in an X formation. (look at the rollers) if they already are than I’m not really sure.
It really sounds like your motors aren’t geared low enough (i.e. you don’t have enough torque). In 2011 my team used 8 in mecanum wheels and we had our four CIMs geared to give us about 11 ft/sec. It was too fast and we couldn’t straif unless we were running close to full power. The year before (2010) we also used 8 in mecanum. Our motors were geared lower than in 2011 so we had more torque. That year our maneuverability and pushing power won us a regional.
If the wheels are in the wrong orientation, it’ll go forward and sideways just fine. It just won’t spin well, if at all. Since the rotation is reported to be good, it’s not likely to be a wheel mounting problem.
My question now is what “vibrates during the motion” means. Is the vibration present when the robot is up on blocks with the wheels off the ground? Do the wheels do what they’re intended to, but with a mechanical bumpiness issue? Or do the wheels themselves move in a jerky manner that causes the vibration?
Check the motion of the wheels when trying to move sideways. One side should be turning inward with the tops moving toward one another and the other outward with the tops moving apart. It is possible to get the symptom you describe by getting various combinations of things crossed up (motor positions, direction of rotation, etc). If they are moving “both inward” or “both outward” it just sits there and chatters against the floor as the two sides work against one another trying to split or compress the robot.
I am using velocity control, not position. So, Jacobian it is…
Well, my controller does not require the maximum current. The current sent to motors are pretty low. So, I guess it can’t be enough torque, no?
The wheels are fine when they’re not in contact with ground. (Much faster but fine) When contacted with ground; it can go sideways (two wheels go inward two go outward) but during the motion; it starts chattering which cause vibration.
If you know the desired translational and rotational velocity of the vehicle, calculating the required wheel speeds to achieve that does not require a Jacobian. So you’ve got me curious… what exactly are you doing?
Well, my reference to the robot is in Cartesian space. I want to know where the robot goes, I won’t be interested in how fast the wheels are turning eventually. For further control algorithms (such as admittance, etc.), I want to use velocity control instead of position. Kinematics also work, you’re right but Jacobian for such device is much simpler for this system, no?