WebCFace 2.9.0
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
robot_link.h
Go to the documentation of this file.
1#pragma once
4#include "webcface/geometry.h"
6#ifdef WEBCFACE_MESON
7#include "webcface-config.h"
8#else
9#include "webcface/common/webcface-config.h"
10#endif
11
13namespace internal {
14struct TemporalRobotJointData;
15struct RobotLinkData;
16} // namespace internal
17
18enum class RobotJointType {
20 fixed = 1,
21 rotational = 2,
22 prismatic = 3,
23};
24class RobotLink;
37 std::unique_ptr<internal::TemporalRobotJointData> temp_data;
42 std::shared_ptr<internal::RobotLinkData> msg_data;
43
44 public:
45 friend class RobotLink;
46
47 RobotJoint();
48 explicit RobotJoint(
49 const std::shared_ptr<internal::RobotLinkData> &msg_data);
50 RobotJoint(const SharedString &name, const SharedString &parent_name,
51 RobotJointType type, const Transform &origin, double angle);
53 RobotJoint(const RobotJoint &other);
54 RobotJoint &operator=(const RobotJoint &other);
55
62 StringView name() const;
70 WStringView nameW() const;
75 std::optional<RobotLink> parent() const;
80 RobotJointType type() const;
85 Transform origin() const;
90 double angle() const;
91};
92
93inline namespace robot_joints {
101inline RobotJoint fixedAbsolute(const Transform &origin) {
102 return RobotJoint{nullptr, nullptr, RobotJointType::fixed_absolute, origin,
103 0};
104}
112inline RobotJoint fixedAbsolute(const Point &origin) {
113 return fixedAbsolute(Transform{origin, {}});
114}
123inline RobotJoint fixedJoint(const StringInitializer &parent_name,
124 const Transform &origin) {
125 return RobotJoint{nullptr, parent_name,
126 RobotJointType::fixed, origin, 0};
127}
136inline RobotJoint fixedJoint(const StringInitializer &parent_name,
137 const Point &origin) {
138 return fixedJoint(parent_name, Transform{origin, {}});
139}
153 const StringInitializer &parent_name,
154 const Transform &origin, double angle = 0) {
155 return RobotJoint{name,
156 parent_name,
157 RobotJointType::rotational, origin, angle};
158}
172 const StringInitializer &parent_name,
173 const Transform &origin, double angle = 0) {
174 return RobotJoint{name,
175 parent_name,
176 RobotJointType::prismatic, origin, angle};
177}
178} // namespace robot_joints
179
180namespace RobotJoints = robot_joints; // 〜ver1.11
181
191 std::shared_ptr<internal::RobotLinkData> msg_data;
192
193 public:
194 RobotLink();
195 explicit RobotLink(
196 const std::shared_ptr<internal::RobotLinkData> &msg_data);
198 RobotLink(const SharedString &name, const RobotJoint &joint,
199 const Geometry &geometry, ViewColor color);
200
206 std::shared_ptr<internal::RobotLinkData>
207 lockJoints(const std::vector<SharedString> &link_names) const;
208
218 RobotLink(const StringInitializer &name, const RobotJoint &joint,
219 const Geometry &geometry, ViewColor color = ViewColor::inherit)
220 : RobotLink(static_cast<const SharedString &>(name), joint, geometry, color) {}
231 RobotLink(const StringInitializer &name, const Geometry &geometry,
232 ViewColor color = ViewColor::inherit)
233 : RobotLink(static_cast<const SharedString &>(name), fixedAbsolute({0, 0, 0}), geometry, color) {}
234
241 StringView name() const;
249 WStringView nameW() const;
254 RobotJoint joint() const;
259 std::optional<Geometry> geometry() const;
264 ViewColor color() const;
265};
3次元 or 2次元の座標を表すクラス。
Definition transform.h:23
modelの関節1つを表すクラス
Definition robot_link.h:32
u8stringとstringとwstringをshared_ptrで持ち共有する
Definition encoding.h:159
SharedString のpublicなコンストラクタインタフェース (入力専用)
Definition encoding.h:215
webcfaceで管理されている文字列を参照するstring_view
Definition encoding.h:60
3次元の平行移動と回転
Definition transform.h:652
RobotJoint prismaticJoint(const StringInitializer &name, const StringInitializer &parent_name, const Transform &origin, double angle=0)
直動関節
Definition robot_link.h:171
RobotJoint fixedAbsolute(const Transform &origin)
親リンクをもたず座標を定義する
Definition robot_link.h:101
RobotJoint fixedJoint(const StringInitializer &parent_name, const Transform &origin)
固定された関節
Definition robot_link.h:123
RobotJoint rotationalJoint(const StringInitializer &name, const StringInitializer &parent_name, const Transform &origin, double angle=0)
回転関節
Definition robot_link.h:152
ViewColor
Definition component_view.h:41
RobotJointType
Definition robot_link.h:18
Definition geometry.h:26
#define WEBCFACE_DLL
Definition webcface-config.h:69
#define WEBCFACE_NS_END
Definition webcface-config.h:118
#define WEBCFACE_NS_BEGIN
Definition webcface-config.h:117