AuboCaps  0.6.0
render_interface.h
Go to the documentation of this file.
1 #ifndef AUBO_CAPS_INTERFACE_RENDER_INTERFACE_H
2 #define AUBO_CAPS_INTERFACE_RENDER_INTERFACE_H
3 
4 #include <vector>
6 
7 class QGridLayout;
8 
9 namespace arcs {
10 namespace aubo_scope {
11 
12 ARCS_CLASS_FORWARD(RenderInterface);
13 
15 {
16 public:
17  enum ShowOptions : uint16_t
18  {
19  None = 0,
20  Ground = 0x01,
21  TargetRobot = 0x02,
22  RealRobot = 0x04,
23  Coordinate = 0x08,
24  Track = 0x10,
25  Point = 0x20,
26  View = 0x40,
27  Obstacle = 0x80,
28  SafetyPlane = 0x0100,
29  ToolPosition = 0x0200,
30  PointCloud = 0x0400,
31  All = 0xFFFF,
32  };
33 
34 public:
37  virtual ~RenderInterface();
38 
39  /**
40  * 设置 Render 窗口嵌入/移除(isEmbeded) 布局 gly 中
41  *
42  * @param is_embeded 是否嵌入
43  * @param gly 布局
44  * @return 无
45  */
46  void setRenderEmbeded(bool is_embeded, QGridLayout *gly);
47 
48  /**
49  * 设置显示模式,控制各种元素的显隐
50  *
51  * @param options 选项值,详情查看 ShowOptions 枚举
52  * @return 无
53  */
54  void setShowOptions(uint16_t options);
55 
56  /**
57  * 添加/修改点云
58  *
59  * @param name 点云名称
60  * @param points 点集合
61  * @param color 点云颜色 rgba
62  * @return 无
63  */
64  void addPointCloud(const std::string &name,
65  const std::vector<std::vector<double>> &points,
66  const std::vector<double> &color);
67 
68  /**
69  * 移除指定名称的点云
70  *
71  * @param name 点云名称
72  * @return 无
73  */
74  void removePointCloud(const std::string &name);
75 
76  /**
77  * 查找制定名称的点云是否存在
78  *
79  * @param name 点云名称
80  * @retval true 存在
81  * @retval false 不存在
82  */
83  bool hasPointCloud(const std::string &name);
84 
85  /**
86  * 移除所有的点云
87  *
88  * @param 无
89  * @retval 无
90  */
91  void clearPointCloud();
92 
93  /**
94  * 添加/修改路点
95  *
96  * @param wp 代表路点的唯一对象
97  * @param pose 路点位姿 x,y,z,rx,ry,rz
98  * @retval true 成功
99  * @retval false 失败
100  */
101  bool addWaypoint(void *wp, const std::vector<double> &pose);
102 
103  /**
104  * 移除指定路点
105  *
106  * @param wp 代表路点的唯一对象
107  * @retval 无
108  */
109  void removeWaypoint(void *wp);
110 
111  /**
112  * 查找指定路点是否存在
113  *
114  * @param wp 代表路点的唯一对象
115  * @retval true 存在
116  * @retval false 不存在
117  */
118  bool hasWaypoint(void *wp);
119 
120  /**
121  * 移除所有的路点
122  *
123  * @param 无
124  * @retval 无
125  */
126  void clearWaypoints();
127 
128  /**
129  * 添加/修改指定路点的交融轨迹
130  *
131  * @param wp 代表路点的唯一对象
132  * @param track 路点位姿 x,y,z,rx,ry,rz 集合
133  * @retval 无
134  */
135  void setMoveTrack(void *wp, const std::vector<std::vector<double>> &track);
136  void setBlendTrack(void *wp, const std::vector<std::vector<double>> &track);
137 
138  /**
139  * 添加/修改坐标轴
140  *
141  * @param name 坐标轴名称
142  * @param pose 位姿 x,y,z,rx,ry,rz
143  * @retval 无
144  */
145  void addCoordinate(const std::string &name,
146  const std::vector<double> &pose);
147 
148  /**
149  * 移除指定坐标轴
150  *
151  * @param name 坐标轴名称
152  * @retval 无
153  */
154  void removeCoordinate(const std::string &name);
155 
156  /**
157  * 查找指定坐标轴是否存在
158  *
159  * @param name 坐标轴名称
160  * @retval true 存在
161  * @retval false 不存在
162  */
163  bool hasCoordinate(const std::string &name);
164 
165  /**
166  * 添加/修改线
167  *
168  * @param name 线名称
169  * @param points 点集合
170  * @param color 线颜色 rgba
171  * @retval 无
172  */
173  void addLine(const std::string &name,
174  const std::vector<std::vector<double>> &points,
175  const std::vector<double> &color);
176 
177  /**
178  * 移除指定线
179  *
180  * @param name 线名称
181  * @retval 无
182  */
183  void removeLine(const std::string &name);
184 
185  /**
186  * 移除所有的线
187  *
188  * @param 无
189  * @retval 无
190  */
191  void clearLines();
192 
193  /**
194  * 添加/修改平面
195  *
196  * @param name 平面名称
197  * @param pose 位置
198  * @param size 平面大小(长,宽)
199  * @param color 线颜色 rgba
200  * @retval 无
201  */
202  void addPlane(const std::string &name, const std::vector<double> &pose,
203  const std::vector<double> &size,
204  const std::vector<double> &color);
205 
206  /**
207  * 移除指定平面
208  *
209  * @param name 名称
210  * @retval 无
211  */
212  void removePlane(const std::string &name);
213 
214  /**
215  * 移除所有的平面
216  *
217  * @param 无
218  * @retval 无
219  */
220  void clearPlanes();
221 
222  /**
223  * 添加/修改立方体
224  *
225  * @param name 立方体名称
226  * @param pose 位置
227  * @param size 立方体大小(长,宽,高)
228  * @param color 立方体颜色 rgba
229  * @param type 立方体绘制类型 0 代表画 6 个平面,1 代表只画边框线
230  * @retval 无
231  */
232  void addCube(const std::string &name, const std::vector<double> &pose,
233  const std::vector<double> &size,
234  const std::vector<double> &color, int type = 0);
235 
236  /**
237  * 添加/修改立方体
238  *
239  * @param name 立方体名称
240  * @param pose 位置
241  * @param length_min
242  * @param length_max
243  * @param width_min
244  * @param width_max
245  * @param height_min
246  * @param height_max
247  * @param color 立方体颜色 rgba
248  * @param type 立方体绘制类型 0 代表画 6 个平面,1 代表只画边框线
249  * @retval 无
250  */
251  void addCube(const std::string &name, const std::vector<double> &pose,
252  float length_min, float length_max, float width_min,
253  float width_max, float height_min, float height_max,
254  const std::vector<double> &color, int type = 0);
255 
256  /**
257  * 移除指定立方体
258  *
259  * @param name 立方体名称
260  * @retval 无
261  */
262  void removeCube(const std::string &name);
263 
264  /**
265  * 移除所有的立方体
266  *
267  * @param 无
268  * @retval 无
269  */
270  void clearCubes();
271 
272 private:
273  friend class DataSwitch;
274  RenderInterface();
275  void *d_{ nullptr };
276 };
277 
278 } // namespace aubo_scope
279 } // namespace arcs
280 
281 #endif // AUBO_CAPS_INTERFACE_RENDER_INTERFACE_H
ARCS_CLASS_FORWARD(GripForceCapability)
#define ARCS_ABI_EXPORT
Definition: class_forward.h:16