libfranka 0.21.3
FCI C++ API
Loading...
Searching...
No Matches
mobile_model.h
Go to the documentation of this file.
1// Copyright (c) 2026 Franka Robotics GmbH
2// Use of this source code is governed by the Apache-2.0 license, see LICENSE
3#pragma once
4
5#include <array>
6#include <cstdint>
7#include <memory>
8#include <string>
9
15namespace franka {
16
20enum class MobileFrame : std::uint8_t {
23};
24
26inline constexpr size_t kNumDriveModules = 2;
27
29inline constexpr size_t kJointsPerDriveModule = 2;
30
38 std::array<double, kNumDriveModules * kJointsPerDriveModule> drive_modules{};
39};
40
50class MobileModel final {
51 public:
53 static constexpr size_t kNumModules = kNumDriveModules;
54
56 static constexpr size_t kJointsPerModule = kJointsPerDriveModule;
57
65 explicit MobileModel(const std::string& urdf_model);
66
72 MobileModel(MobileModel&& other) noexcept;
73
81 MobileModel& operator=(MobileModel&& other) noexcept;
82
86 ~MobileModel() noexcept;
87
89 MobileModel(const MobileModel&) = delete;
90 MobileModel& operator=(const MobileModel&) = delete;
92
106 std::array<double, 16> pose(MobileFrame frame, const MobileJointPositions& joint_positions) const;
107
108 private:
109 class Data;
110 std::unique_ptr<Data> data_;
111};
112
113} // namespace franka
Calculates poses for mobile robot frames using Pinocchio.
Definition mobile_model.h:50
static constexpr size_t kJointsPerModule
Number of joints per drive module (steering + drive).
Definition mobile_model.h:56
MobileModel(const std::string &urdf_model)
Constructs a MobileModel from a URDF string.
static constexpr size_t kNumModules
Number of swerve drive modules.
Definition mobile_model.h:53
std::array< double, 16 > pose(MobileFrame frame, const MobileJointPositions &joint_positions) const
Gets the 4x4 pose matrix for the given mobile frame relative to the robot's base frame (URDF root lin...
~MobileModel() noexcept
Destructor.
MobileModel(MobileModel &&other) noexcept
Move-constructs a new MobileModel instance.
MobileModel & operator=(MobileModel &&other) noexcept
Move-assigns this MobileModel from another MobileModel instance.
constexpr size_t kJointsPerDriveModule
Number of joints per drive module (steering + drive).
Definition mobile_model.h:29
constexpr size_t kNumDriveModules
Number of swerve drive modules.
Definition mobile_model.h:26
MobileFrame
Enumerates the frames of a mobile robot's drive modules.
Definition mobile_model.h:20
@ kRearDriveModule
Rear swerve drive module frame.
@ kFrontDriveModule
Front swerve drive module frame.
Joint positions for all controllable subsystems of a mobile robot.
Definition mobile_model.h:36
std::array< double, kNumDriveModules *kJointsPerDriveModule > drive_modules
Drive module joint positions: {front_steering, front_drive, rear_steering, rear_drive}.
Definition mobile_model.h:38