AuboStudio SDK  0.6.3
program_node_factory.h
浏览该文件的文档.
1#ifndef AUBO_SCOPE_PROGRAM_NODE_FACTORY_H
2#define AUBO_SCOPE_PROGRAM_NODE_FACTORY_H
3
43
44namespace arcs {
45namespace aubo_scope {
48
49/**
50 * \chinese
51 * 程序节点工厂
52 * 此接口提供创建不同类型程序节点的方法。
53 *
54 * 可以创建内置程序节点(由 AUBO Robots 提供)和 AuboCap 程序节点。大多数方法
55 * 将创建与终端用户手动添加节点时具有相同默认配置的节点。
56 *
57 * 请注意,此默认配置可能会因 AuboScope 版本而异。
58 * \endchinese
59 * \english
60 * ProgramNodeFactory
61 * This interfaces supplies methods to create different types of program nodes.
62 *
63 * Both built-in program nodes (provided by AUBO Robots) and AuboCap
64 * program nodes can be created. Most methods will create a node with the same
65 * default configuration as if the end user added the node manually.
66 *
67 * Note that this default configuration may change between AuboScope versions.
68 * \endenglish
69 */
71{
72public:
76
77 /**
78 * \chinese
79 * 创建一个 AuboCap 程序节点,该节点是 ProgramNodeContribution 的实例。
80 *
81 * @param typeid_service 创建程序节点贡献的服务
82 * @return 由 ProgramNodeService 创建的表示 ProgramNodeContribution 的
83 * ProgramNode。如果提供 ProgramNodeService 的 AuboCap 未安装,则返回
84 * <code>null</code>。
85 * @throws IllegalArgumentException 如果参数 ProgramNodeService 为
86 * <code>null</code> 或未实现 ProgramNodeService
87 * \endchinese
88 * \english
89 * This method creates a AuboCap program node which is an instance of a
90 * {@link contribution/ProgramNodeContribution}.
91 *
92 * @param typeid_service is the service creating the program node
93 * contribution
94 * @return the {@link ProgramNode} which represents the {@link
95 * contribution/ProgramNodeContribution} created by {@link
96 * ProgramNodeService}. Returns <code>null</code> if AuboCap providing
97 * ProgramNodeService is not installed.
98 * @throws IllegalArgumentException if the argument ProgramNodeService
99 * is <code>null</code> or ProgramNodeService does not implement {@link
100 * ProgramNodeService}.
101 * \endenglish
102 */
103 ProgramNodePtr createUserProgramNode(const char *typeid_service);
104
105 /**
106 * \chinese
107 * 创建一个默认的移动节点,其下包含一个默认路点节点。
108 * @return 新的移动节点
109 * \endchinese
110 * \english
111 * Creates a default Move node with one default Waypoint node under it.
112 * @return new Move Node.
113 * \endenglish
114 */
115 MoveNodePtr createMoveNode();
116
117 /**
118 * \chinese
119 * <p>创建一个默认的移动节点,其下不包含路点节点(例如用于插入命名路点)。</p>
120 * 注意:移动节点必须至少包含一个路点节点才有效。
121 * @return 新的移动节点
122 * \endchinese
123 * \english
124 * <p>Creates a default Move node without a Waypoint node under it (e.g. to be
125 * used for inserting named waypoints).</p>
126 * Note that at least one Waypoint node must be under it for a Move node to
127 * be valid.
128 * @return new Move Node.
129 * \endenglish
130 */
132
133 /**
134 * \chinese
135 * 创建具有默认路点名称的路点节点(对应终端用户手动添加新节点时生成的名称)。
136 * @return 新的路点节点
137 * \endchinese
138 * \english
139 * Creates a Waypoint node with default waypoint name (corresponds to the
140 * name generated if the end user added a new node manually).
141 * @return new Waypoint Node.
142 * \endenglish
143 */
144 WaypointNodePtr createWaypointNode();
145
146 /**
147 * \chinese
148 * <p>创建具有建议名称的路点节点。</p>
149 * <p>如果建议名称已被注册,最终名称可能会不同。路点名称在插入程序树时注册。</p>
150 * 变量路点将使用变量名称而不是建议名称。
151 *
152 * @param suggested_name 建议的路点名称。有效名称必须匹配正则表达式
153 * [a-zA-Z][a-zA-Z0-9_]{0,14}
154 * @return 新的路点节点
155 * @throws IllegalWaypointNameException 如果名称为非法格式
156 * \endchinese
157 * \english
158 * <p>Creates a Waypoint node with a suggested name.</p>
159 * <p>The final name can be different if the suggested name is already
160 * registered. The waypoint name is registered when it is inserted into the
161 * program tree.</p>
162 * Variable waypoints will use the name of the variable instead of the
163 * suggested name.
164 *
165 * @param suggested_name the suggested name of the waypoint. Valid names
166 * must match regex [a-zA-Z][a-zA-Z0-9_]{0,14} for a total of 15 characters.
167 * @return new Waypoint Node.
168 * @throws IllegalWaypointNameException In case of an illegal name.
169 * \endenglish
170 */
171 WaypointNodePtr createWaypointNode(const std::string &suggested_name);
172
173 /**
174 * \chinese
175 * 创建一个未指定 until 类型的 Until 节点。
176 * @return 新的 Until 节点
177 * \endchinese
178 * \english
179 * Creates an Until Node with no until type specified.
180 * @return a new Until Node.
181 * \endenglish
182 */
183 UntilNodePtr createUntilNode();
184 DirectionNodePtr createDirectionNode();
185 WaitNodePtr createWaitNode();
186 SetNodePtr createSetNode();
187 SetPayloadNodePtr createSetPayloadNode();
188 PopupNodePtr createPopupNode();
189 HaltNodePtr createHaltNode();
190 CommentNodePtr createCommentNode();
191 FolderNodePtr createFolderNode();
192 LoopNodePtr createLoopNode();
193 AssignmentNodePtr createAssignmentNode();
194 IfNodePtr createIfNode();
195 ElseIfNodePtr createElseIfNode();
196 ElseNodePtr createElseNode();
197 CircleMoveNodePtr createCircleMoveNode();
198 PalletNodePtr createPalletNode();
199 SeekNodePtr createSeekNode();
200 ForceNodePtr createForceNode();
201 ForceOptionNodePtr createForceOptionNode();
202 AssemblyNodePtr createAssemblyNode();
203 ScrewdrivingNodePtr createScrewdrivingNode();
204 ScriptNodePtr createScriptNode();
205 TimerNodePtr createTimerNode();
206 SwitchNodePtr createSwitchNode();
207 CaseNodePtr createCaseNode();
208 DefaultCaseNodePtr createDefaultCaseNode();
209 BreakNodePtr createBreakNode();
210 SubProgNodePtr createSubProgNode();
211 CallNodePtr createCallNode();
212 OfflineTrackNodePtr createOfflineTrackNode();
213 RecordTrackNodePtr createRecordTrackNode();
214 ThreadNodePtr createThreadNode();
215 ProgramHomeNodePtr createProgramHomeNode();
216 VisualLocalizationProgramNodePtr createVisualLocalizationProgramNode();
217 ConveyorTrackingNodePtr createConveyorTrackingNode();
218
219 /**
220 * \chinese
221 * <p>创建新的夹爪程序节点。此节点类型可用于编程所选夹爪设备的夹取和释放动作。</p>
222 * 程序节点将使用与终端用户在 AuboScope 中手动添加节点时相同的默认配置创建,
223 * 即未选择夹爪动作的未定义配置。
224 *
225 * @param gripperDevice 要为其创建夹爪节点的夹爪设备,不能为 <code>null</code>。
226 * 创建的夹爪节点将为此设备编程夹爪动作。
227 * @return 新的夹爪程序节点(可使用 TreeNode 接口插入到程序树中)
228 * @throws UnresolvedDeviceException 当指定的 gripperDevice 设备不可解析时
229 * \endchinese
230 * \english
231 * <p>
232 * This method creates a new Gripper program node. This node type can be
233 * used for programming grip and release actions with a selected gripper
234 * device.
235 * </p>
236 * The program node will be created with the same default configuration as
237 * if the end user added the node manually in AuboScope, i.e. an undefined
238 * configuration where the gripper action is unselected.
239 *
240 * @param gripperDevice the gripper device to create a Gripper node for, not
241 * <code>null</code>. The created Gripper node will program gripper actions
242 * for this device.
243 * @return a new Gripper program node (which can be inserted into the
244 * program tree using the {@link TreeNode} interface).
245 * @throws UnresolvedDeviceException when the specified
246 * <code>gripperDevice</code> device is unresolved. See
247 * {@link GripperDevice#isResolvable()}.
248 * \endenglish
249 */
250 GripperNodePtr createGripperNode(GripperDevicePtr gripperDevice);
251
252private:
253 friend class DataSwitch;
255 void *d_{ nullptr };
256};
257
258} // namespace aubo_scope
259} // namespace arcs
260
261#endif
#define ARCS_ABI_EXPORT
#define ARCS_CLASS_FORWARD(C)
Macro that forward declares a class and defines the respective smartpointers through ARCS_DECLARE_PTR...
\chinese 程序节点工厂 此接口提供创建不同类型程序节点的方法。
WaypointNodePtr createWaypointNode(const std::string &suggested_name)
\chinese
SetPayloadNodePtr createSetPayloadNode()
VisualLocalizationProgramNodePtr createVisualLocalizationProgramNode()
MoveNodePtr createMoveNode()
\chinese 创建一个默认的移动节点,其下包含一个默认路点节点。
ConveyorTrackingNodePtr createConveyorTrackingNode()
RecordTrackNodePtr createRecordTrackNode()
OfflineTrackNodePtr createOfflineTrackNode()
ProgramNodePtr createUserProgramNode(const char *typeid_service)
\chinese 创建一个 AuboCap 程序节点,该节点是 ProgramNodeContribution 的实例。
CircleMoveNodePtr createCircleMoveNode()
ProgramHomeNodePtr createProgramHomeNode()
GripperNodePtr createGripperNode(GripperDevicePtr gripperDevice)
\chinese
ProgramNodeFactory(ProgramNodeFactory &&f)
ForceOptionNodePtr createForceOptionNode()
DefaultCaseNodePtr createDefaultCaseNode()
ProgramNodeFactory(ProgramNodeFactory &f)
DirectionNodePtr createDirectionNode()
ScrewdrivingNodePtr createScrewdrivingNode()
WaypointNodePtr createWaypointNode()
\chinese 创建具有默认路点名称的路点节点(对应终端用户手动添加新节点时生成的名称)。
AssignmentNodePtr createAssignmentNode()
MoveNodePtr createMoveNodeNoTemplate()
\chinese
UntilNodePtr createUntilNode()
\chinese 创建一个未指定 until 类型的 Until 节点。
\chinese 程序节点服务 定义了向 AuboScope 添加新类型程序节点所需的 API。 \endchinese \english ProgramNodeService Defines an A...