diff --git a/franka_hw/include/franka_hw/franka_combinable_hw.h b/franka_hw/include/franka_hw/franka_combinable_hw.h
index 75605c35102ea6f3d4d8ad51c226657721e9126f..0c8ff363dad68d89523cf34d21e22281c1405578 100644
--- a/franka_hw/include/franka_hw/franka_combinable_hw.h
+++ b/franka_hw/include/franka_hw/franka_combinable_hw.h
@@ -131,12 +131,13 @@ class FrankaCombinableHW : public FrankaHW {
       throw std::invalid_argument(error_message);
     }
     checkJointLimits();
-    libfranka_state_mutex_.lock();
-    robot_state_libfranka_ = robot_state;
-    libfranka_state_mutex_.unlock();
-    libfranka_cmd_mutex_.lock();
+    {
+      std::lock_guard<std::mutex> state_lock(libfranka_state_mutex_);
+      robot_state_libfranka_ = robot_state;
+    }
+
+    std::lock_guard<std::mutex> command_lock(libfranka_cmd_mutex_);
     T current_cmd = command;
-    libfranka_cmd_mutex_.unlock();
     if (has_error_ || !controller_active_) {
       return franka::MotionFinished(current_cmd);
     }
diff --git a/franka_hw/src/franka_combinable_hw.cpp b/franka_hw/src/franka_combinable_hw.cpp
index e1723271827273a4fae437a0bfef2632a9a90b51..665df3f9ab4c114111a1837bf4448c73fcc9859d 100644
--- a/franka_hw/src/franka_combinable_hw.cpp
+++ b/franka_hw/src/franka_combinable_hw.cpp
@@ -54,12 +54,13 @@ void FrankaCombinableHW::controlLoop() {
 
       checkJointLimits();
 
-      ros_state_mutex_.lock();
-      libfranka_state_mutex_.lock();
-      robot_state_libfranka_ = robot_->readOnce();
-      robot_state_ros_ = robot_->readOnce();
-      libfranka_state_mutex_.unlock();
-      ros_state_mutex_.unlock();
+      {
+        std::lock_guard<std::mutex> ros_state_lock(ros_state_mutex_);
+        std::lock_guard<std::mutex> libfranka_state_lock(libfranka_state_mutex_);
+        robot_state_libfranka_ = robot_->readOnce();
+        robot_state_ros_ = robot_->readOnce();
+      }
+
       if (!ros::ok()) {
         return;
       }
@@ -67,9 +68,10 @@ void FrankaCombinableHW::controlLoop() {
     ROS_INFO("FrankaCombinableHW::%s::control_loop(): controller is active.", arm_id_.c_str());
 
     // Reset commands
-    libfranka_cmd_mutex_.lock();
-    effort_joint_command_libfranka_ = franka::Torques({0., 0., 0., 0., 0., 0., 0.});
-    libfranka_cmd_mutex_.unlock();
+    {
+      std::lock_guard<std::mutex> command_lock(libfranka_cmd_mutex_);
+      effort_joint_command_libfranka_ = franka::Torques({0., 0., 0., 0., 0., 0., 0.});
+    }
 
     try {
       control();