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