Robotics StackExchange | Archived questions

motors sensetivity

Hi,

I have a mobile platform with two powerful dc motors than it needed. Therefore, its minimum velocity is about 0.4 m/s and angular velocity is 1 rad/s (minimum) that is higher that the normal platforms in the market. The problem is that in the navigation, the "cmd_vel" commands that sent are start in very small values like 0.05 m/s and same values in the angular velocities commands. It is possible to limit the minimum linear velocity in the yaml file but the minimum angular velocity it is not possible. Because of that, my platform can't move constantly and behave in strange ways like it is lose is trajectory and can't return to it again. Someone has an idea what I can do to solve that issue.

Thanks

Asked by Aviad on 2019-02-20 10:58:56 UTC

Comments

I would strongly recommend looking at your motor controllers so that you can have a better control of the speed of your wheels. This is not a problem caused by having powerful motors, but a problem caused by your controllers not being good enough.

Asked by PeteBlackerThe3rd on 2019-02-20 11:56:08 UTC

Hi, The problem is not the controller for sure. These motors came with a worm gear. It is like to put a track engine in motor cycle ;)

Asked by Aviad on 2019-02-20 12:12:10 UTC

Can you describe how you are controlling the motors and what type feedback you're using? Peter is correct that you need to look at the control scheme. Perhaps the controllers are good but just not being used in the best way. There is no question it is a control issue when you can't control the speed

Asked by billy on 2019-02-20 12:42:50 UTC

I am using roboteq controller with serial connection which get the data by arduino. It get an HEX value and I have about 15 value that I can used because it is like I send int values. If I set low value it won't move and high value it will move fastly. So I can work in this range only.

Asked by Aviad on 2019-02-20 13:24:47 UTC

The minimum power which the motor starting produce 0.3 m/s velocity. I can't, with this controller at least to provide lower velocity. I have a platform with 4 wheels that 2 wheels are connected togheter so it is an ddition problem with the navigation

Asked by Aviad on 2019-02-20 13:28:42 UTC

OK I see the issue. You do not have encoders for the controller to use to control the motor speed and you're dealing with stiction in the motor that requires a high voltage command to get moving. Once moving it's going too fast...continued...

Asked by billy on 2019-02-20 15:58:59 UTC

If you can't add encoders (do so if you can) you may have some success with adding a short high voltage pulse at the start of motion to get the motor turning and then revert to the command level coming from ROS. Even a short pulse (50mS) may be able to improve function. But encoders would be better.

Asked by billy on 2019-02-20 16:03:40 UTC

Yes. Like you said. The motors required high voltage to get moving and the can provide minimum velocity of 0.3 m/s with a small resolution for changes between the minimum to the maximum velocity. In your opinion I can get from that condition a good navigation?

Asked by Aviad on 2019-02-20 16:11:26 UTC

If your controllers give you 15 different power levels and you have no encoders then you will not be able to achieve very good path following. You'll need to add encoders and higher quality motor controllers, they should have at least 256 to 1024 speed steps.

Asked by PeteBlackerThe3rd on 2019-02-20 18:04:23 UTC

That way you'll be able to implement a closed loop controller to accurately control the speed of the wheels.

Asked by PeteBlackerThe3rd on 2019-02-20 18:05:20 UTC

If 0.3m/s is really the slowest it can go, and you're navigating indoors or in close quarters outdoor, then you are unlikely to get acceptable results with autonomous navigation. But I have to admit I have not ever tried open loop motor control for navigation. Maybe someone else that has can help.

Asked by billy on 2019-02-20 18:19:57 UTC

Answers