diff --git a/ur_bringup/launch/ur10_bringup.launch b/ur_bringup/launch/ur10_bringup.launch
index 445e0b3c89b57d8e47487a4cf6a98a9540a1d957..311bf5574ac1c7aed882b80515fdd579bb8d9ca8 100644
--- a/ur_bringup/launch/ur10_bringup.launch
+++ b/ur_bringup/launch/ur10_bringup.launch
@@ -12,6 +12,8 @@
   <arg name="robot_ip"/>
   <arg name="reverse_port" default="50001"/>
   <arg name="limited" default="false"/>
+  <arg name="min_payload"  default="0.0"/>
+  <arg name="max_payload"  default="20.0"/>
 
   <!-- robot model -->
   <include file="$(find ur_description)/launch/ur10_upload.launch">
@@ -22,6 +24,8 @@
   <include file="$(find ur_bringup)/launch/ur_common.launch">
     <arg name="robot_ip" value="$(arg robot_ip)"/>
     <arg name="reverse_port" value="$(arg reverse_port)"/>
+    <arg name="min_payload"  value="$(arg min_payload)"/>
+    <arg name="max_payload"  value="$(arg max_payload)"/>
   </include>
 
 </launch>
diff --git a/ur_bringup/launch/ur10_bringup_joint_limited.launch b/ur_bringup/launch/ur10_bringup_joint_limited.launch
index 9964be4721aedf94f28b74397175a07a70748a32..b95ce8c10cb7f2f750019a793315039254047eae 100644
--- a/ur_bringup/launch/ur10_bringup_joint_limited.launch
+++ b/ur_bringup/launch/ur10_bringup_joint_limited.launch
@@ -11,10 +11,14 @@
   <!-- robot_ip: IP-address of the robot's socket-messaging server -->
   <arg name="robot_ip"/>
   <arg name="reverse_port" default="50001"/>
+  <arg name="min_payload"  default="0.0"/>
+  <arg name="max_payload"  default="20.0"/>
 
   <include file="$(find ur_bringup)/launch/ur10_bringup.launch">
     <arg name="robot_ip" value="$(arg robot_ip)"/>
     <arg name="reverse_port" value="$(arg reverse_port)"/>
     <arg name="limited"  value="true"/>
+    <arg name="min_payload"  value="$(arg min_payload)"/>
+    <arg name="max_payload"  value="$(arg max_payload)"/>
   </include>
 </launch>
diff --git a/ur_bringup/launch/ur5_bringup.launch b/ur_bringup/launch/ur5_bringup.launch
index 6e2bfd7c273768f8a79bccf51dd0d85bb70198aa..52f7ebd67b5cb0f357127b9cd42fc2dc370aafad 100644
--- a/ur_bringup/launch/ur5_bringup.launch
+++ b/ur_bringup/launch/ur5_bringup.launch
@@ -12,6 +12,8 @@
   <arg name="robot_ip"/>
   <arg name="reverse_port" default="50001"/>
   <arg name="limited" default="false"/>
+  <arg name="min_payload"  default="0.0"/>
+  <arg name="max_payload"  default="10.0"/>
 
   <!-- robot model -->
   <include file="$(find ur_description)/launch/ur5_upload.launch">
@@ -22,6 +24,8 @@
   <include file="$(find ur_bringup)/launch/ur_common.launch">
     <arg name="robot_ip" value="$(arg robot_ip)"/>
     <arg name="reverse_port" value="$(arg reverse_port)"/>
+    <arg name="min_payload"  value="$(arg min_payload)"/>
+    <arg name="max_payload"  value="$(arg max_payload)"/>
   </include>
 
 </launch>
diff --git a/ur_bringup/launch/ur5_bringup_joint_limited.launch b/ur_bringup/launch/ur5_bringup_joint_limited.launch
index 4aa7a04f18170c11b7c4e367482cb8a238043df2..dfa7560e814601e4afd4f1e7ae134766e8460fe9 100644
--- a/ur_bringup/launch/ur5_bringup_joint_limited.launch
+++ b/ur_bringup/launch/ur5_bringup_joint_limited.launch
@@ -11,10 +11,14 @@
   <!-- robot_ip: IP-address of the robot's socket-messaging server -->
   <arg name="robot_ip"/>
   <arg name="reverse_port" default="50001"/>
+  <arg name="min_payload"  default="0.0"/>
+  <arg name="max_payload"  default="10.0"/>
 
   <include file="$(find ur_bringup)/launch/ur5_bringup.launch">
     <arg name="robot_ip" value="$(arg robot_ip)"/>
     <arg name="reverse_port" value="$(arg reverse_port)"/>
     <arg name="limited"  value="true"/>
+    <arg name="min_payload"  value="$(arg min_payload)"/>
+    <arg name="max_payload"  value="$(arg max_payload)"/>
   </include>
 </launch>
diff --git a/ur_bringup/launch/ur_common.launch b/ur_bringup/launch/ur_common.launch
index 73eff943c287cc956b03cf7941396005a67a09df..cd3b292caa6eb98df20ed788f474bc7fb31d47a1 100644
--- a/ur_bringup/launch/ur_common.launch
+++ b/ur_bringup/launch/ur_common.launch
@@ -13,6 +13,8 @@
   <!-- robot_ip: IP-address of the robot's socket-messaging server -->
   <arg name="robot_ip"/>
   <arg name="reverse_port" default="50001"/>
+  <arg name="min_payload"/>
+  <arg name="max_payload"/>
   
   <!-- copy the specified IP address to be consistant with ROS-Industrial spec.
   NOTE: The ip address is actually passed to the driver on the command line -->
@@ -22,7 +24,10 @@
   <node name="robot_state_publisher" pkg="robot_state_publisher" type="state_publisher" />
 
   <!-- driver -->
-  <node name="ur_driver" pkg="ur_driver" type="driver.py" args="$(arg robot_ip) $(arg reverse_port)" output="screen" />
+  <node name="ur_driver" pkg="ur_driver" type="driver.py" args="$(arg robot_ip) $(arg reverse_port)" output="screen">
+    <param name="min_payload" type="double" value="$(arg min_payload)"/>
+    <param name="max_payload" type="double" value="$(arg max_payload)"/>
+  </node>
    
   <!-- TF Buffer Server -->
   <node pkg="tf2_ros" type="buffer_server" name="tf2_buffer_server">
diff --git a/ur_driver/src/ur_driver/driver.py b/ur_driver/src/ur_driver/driver.py
index ea08d416461c3c29b592e4dbd853563e1f2ac04f..f213ddd4b029163dc2ab98c768766910883e5542 100755
--- a/ur_driver/src/ur_driver/driver.py
+++ b/ur_driver/src/ur_driver/driver.py
@@ -61,8 +61,8 @@ MULT_blend = 1000.0
 
 #Bounds for SetPayload service
 MIN_PAYLOAD = 0.0
-MAX_PAYLOAD = 5.0    #UR5
-#MAX_PAYLOAD = 10.0    #UR10
+MAX_PAYLOAD = 1.0
+#Using a very conservative value as it should be set throught the parameter server
 
 
 FUN_SET_DIGITAL_OUT = 1
@@ -617,8 +617,8 @@ class URServiceProvider(object):
         self.robot = robot
 
     def setPayload(self, req):
-        if req.payload < MIN_PAYLOAD or req.payload > MAX_PAYLOAD:
-            print 'ERROR: Payload out of bounds'
+        if req.payload < min_payload or req.payload > max_payload:
+            print 'ERROR: Payload ' + str(req.payload) + ' out of bounds (' + str(min_payload) + ', ' + str(max_payload) + ')'
             return False
         
         if self.robot:
@@ -893,6 +893,15 @@ def main():
     # Reads the maximum velocity
     global max_velocity
     max_velocity = rospy.get_param("~max_velocity", 2.0)
+    
+    # Reads the minimum payload
+    global min_payload
+    min_payload = rospy.get_param("~min_payload", MIN_PAYLOAD)
+    # Reads the maximum payload
+    global max_payload
+    max_payload = rospy.get_param("~max_payload", MAX_PAYLOAD)
+    rospy.loginfo("Bounds for Payload: [%s, %s]" % (min_payload, max_payload))
+    
 
     # Sets up the server for the robot to connect to
     server = TCPServer(("", reverse_port), CommanderTCPHandler)