Program Listing for File mobile_model.h

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

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

#include <array>
#include <cstdint>
#include <memory>
#include <string>

namespace franka {

enum class MobileFrame : std::uint8_t {
  kFrontDriveModule,
  kRearDriveModule
};

inline constexpr size_t kNumDriveModules = 2;

inline constexpr size_t kJointsPerDriveModule = 2;

struct MobileJointPositions {
  std::array<double, kNumDriveModules * kJointsPerDriveModule> drive_modules{};
};

class MobileModel final {
 public:
  static constexpr size_t kNumModules = kNumDriveModules;

  static constexpr size_t kJointsPerModule = kJointsPerDriveModule;

  explicit MobileModel(const std::string& urdf_model);

  MobileModel(MobileModel&& other) noexcept;

  MobileModel& operator=(MobileModel&& other) noexcept;

  ~MobileModel() noexcept;

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

  std::array<double, 16> pose(MobileFrame frame, const MobileJointPositions& joint_positions) const;

 private:
  class Data;
  std::unique_ptr<Data> data_;
};

}  // namespace franka