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
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...
程序节点工厂 此接口提供创建不同类型程序节点的方法。
ForceContactNodePtr createForceContactNode()
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()
ToolForceZeroingNodePtr createToolForceZeroingNode()
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。