Program Listing for File vacuum_gripper.h

Return to documentation for file (include/franka/vacuum_gripper.h)

// Copyright (c) 2023 Franka Robotics GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
#pragma once

#include <chrono>
#include <cstdint>
#include <memory>
#include <string>

#include <franka/vacuum_gripper_state.h>

namespace franka {

class Network;

class VacuumGripper {
 public:
  using ServerVersion = uint16_t;

  enum class ProductionSetupProfile { kP0, kP1, kP2, kP3 };

  explicit VacuumGripper(const std::string& franka_address);

  VacuumGripper(VacuumGripper&& vacuum_gripper) noexcept;

  VacuumGripper& operator=(VacuumGripper&& vacuum_gripper) noexcept;

  ~VacuumGripper() noexcept;

  bool vacuum(uint8_t vacuum,
              std::chrono::milliseconds timeout,
              ProductionSetupProfile profile = ProductionSetupProfile::kP0) const;

  bool dropOff(std::chrono::milliseconds timeout) const;

  bool stop() const;

  VacuumGripperState readOnce() const;

  ServerVersion serverVersion() const noexcept;

  VacuumGripper(const VacuumGripper&) = delete;
  VacuumGripper& operator=(const VacuumGripper&) = delete;

 private:
  std::unique_ptr<Network> network_;

  uint16_t ri_version_;
};

}  // namespace franka