Controlling motor speed with cmd_vel commands

Hello everyone,
I’m trying to control a motor that will be used to steer a rover (non skid steering) which means I want to control how many turns. I finally got the setup (Pixhawk, PM07, Sabertooth, Qgroundcontrol, PX4) right and I got it to work but I can’t fully control the motor. when I send zero velocity command, unstamped messages, and local positions messages, the motor doesn’t spin but when I send linear cmd_vel x,y or z = 1 or any number, the motor spins fast and I can’t control the speed. when I send unstamped messages or local points, the motor spins and stops every couple seconds but not exactly according to the ROS rate given. In addition, I can’t control how many rotations it rotates. I believe there is something wrong with the parameters or I don’t understand mavros commands.
I’m using main0 to control the pwm and Aion Robotics R1 UGV ground rover frame. you can see the parameter in the link: Rover - Google Drive
Any help would be so much appreciated.