PDF
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...
程序节点工厂 此接口提供创建不同类型程序节点的方法。
WaypointNodePtr createWaypointNode(const std::string &suggested_name)
SetPayloadNodePtr createSetPayloadNode()
VisualLocalizationProgramNodePtr createVisualLocalizationProgramNode()
MoveNodePtr createMoveNode()
创建一个默认的移动节点,其下包含一个默认路点节点。
ConveyorTrackingNodePtr createConveyorTrackingNode()
RecordTrackNodePtr createRecordTrackNode()
OfflineTrackNodePtr createOfflineTrackNode()
ProgramNodePtr createUserProgramNode(const char *typeid_service)
创建一个 AuboCap 程序节点,该节点是 ProgramNodeContribution 的实例。
CircleMoveNodePtr createCircleMoveNode()
ProgramHomeNodePtr createProgramHomeNode()
GripperNodePtr createGripperNode(GripperDevicePtr gripperDevice)
ProgramNodeFactory(ProgramNodeFactory &&f)
ForceOptionNodePtr createForceOptionNode()
DefaultCaseNodePtr createDefaultCaseNode()
ProgramNodeFactory(ProgramNodeFactory &f)
DirectionNodePtr createDirectionNode()
ScrewdrivingNodePtr createScrewdrivingNode()
WaypointNodePtr createWaypointNode()
创建具有默认路点名称的路点节点(对应终端用户手动添加新节点时生成的名称)。
AssignmentNodePtr createAssignmentNode()
UntilNodePtr createUntilNode()
创建一个未指定 until 类型的 Until 节点。
程序节点服务 定义了向 AuboScope 添加新类型程序节点所需的 API。