I've actually been working a lot on motors in this area of calculations recently. I think you should use the Society of Robots "RMF" Calculator for some of this, because the maximum mass will depend on factors like:
-incline
-max velocity/acceleration while carrying
-efficiency
But, I'm fairly certain how to calculate "at what rpm with that mass", or at least give you an idea of an rpm RANGE it will do.
1) *I'm basing this off of this source:
http://curriculum.vexrobotics.com/curriculum/speed-power-torque-and-dc-motorsand the assumption that your motor's graph of speed (RPM) on y-axis and torque on x-axis is a linear relationship, which I'm fairly certain all motors nearly follow that graph.
Knowns (convert units, for example, onlineconverter.com, kg-cm to N-m):
torque under load in N-m = Torque_Load
free speed in rpm = Free_Speed
stall current in amps = Stall_Current
free current in amps = Free_Current
current = Current....this value is JUST UNDER stall current, you choose this value. You don't want to stall your motor because it could break. That is why you pick an amperage slightly lower than the stall current. eg: stall current 3 amps, current that we pick is 2.9 amps, or 2.8 amps, or 2 amps if you really want to be conservative. (I would just do free_current - 0.1amps)
Calculations:
Torque_Load = (Current – Free_Current) x Stall_Torque / (Stall_Current – Free_Current)
...now that we have solved for Torque_Load in N-m, we know that this is the maximum torque the motor will do at JUST UNDER stall current. So this is basically your "maximum torque" without stalling (aka without damaging). And now we want to know at what speed in rpm the motor will turn at this "maximum torque".
Speed = -(Free_Speed / Stall_Torque) x Torque_Load + Free_Speed
and that will give you "Speed" in rpm at just under stall torque.
2) So we have solved for Torque_Load and Speed. What do we know about your motor?
We know that just below the maximum amperage it can handle (aka not at stall torque but just under stall torque), it will bear "Torque_Load" N-m amounts of torque, and spin at an rpm of "Speed".
Hence, you find a good range for estimates:
Speed of motor: between Free_Speed and "Speed". for example, between 303 rpm and 7 rpm.
So, if you let the motor draw close to the stall amperage, and put the load at which it still turns, the SLOWEST it will go is 7 rpm, or whatever "Speed" comes out to. This value "Speed" is the slowest your motor will turn under the largest load it can handle without stalling/breaking.
The fastest the motor will turn is with a really light load, so 303 rpm, but not really 303 rpm because this is with *NOTHING, it will be slower than that. If your entire wheel/robot arm was styrofoam, maybe it would be about 302.9 rpm or something.
3) Now convert RPM to speed. I don't know if you have a robot arm or wheels. If you have wheels then let's assume you want it in cm/s, and you are working with rpm, so put your wheel radius in cm.
Robot_Max_Speed = Free_Speed * 2 * pi * Wheel_Radius / 60
or for cm/min: Robot_Max_Speed = Free_Speed * 2 * pi * Wheel_Radius
Robot_Slowest_Speed_without_Stalling = Speed * 2 * pi * Wheel_Radius / 60
or for cm/min: ... = Speed * 2 * pi * Wheel_Radius
4) If you want to use the SOR "RMF Calculator", I'm pretty sure you enter "Speed" in rpm for motor speed, and "Torque_Load" for torque (after converting N-m to kg-cm or lbs-ft of course). But I'm not entirely sure how to use the RMF calculator, so if anyone reading this knows, please reply!
I'm going to attach an excel spreadsheet that might help people out.