Open mia0813 opened 6 months ago
对勺子栅格地图进行了处理,转化成了用于路径规划的路径规划图
在勺子地图上实现了简单的A*路径规划,但出现了把勺子当作了一个面无法区分勺子正反面进行路径规划的问题
在 Mesh 里,一般遵循右手定则,即一个 face 的所有顶点的顺序可以决定其法线的方向。
比如:对于一个按P0、P1、P2顺序存储的三角形,其法线方向就是:
另外,尝试使用 Open3d 里的 LineSet 绘制路径。
使用open3d里的LineSet绘制了路径,基本路线可以正确实现。 正确情况
尝试写一个功能:
用鼠标点两个点,一个是起点一个是终点。
实现了起始点和目标点在open3d图中标出
你这里的mesh可视化没有处理好,看一下我的写法。
两个点可以用鼠标交互得到吗?
对mesh可视化进行了修正,但是暂未解决鼠标交互问题和路径有点看不清的问题(更换了颜色也没解决看不清的问题)
可以参考 open3d 官方文档实现选点。
https://www.open3d.org/docs/release/tutorial/t_geometry/pointcloud.html
参考 line_width.py 修改把路径变粗
使用了mat报错 mat = o3d.visualization.rendering.MaterialRecord() mat.shader = "unlitLine" mat.line_width = 10 path_line_set.material = mat 使用了line_width报错 path_line_set.line_width = 10 均警告AttributeError: open3d.cpu.pybind.geometry.LineSet' object has no attribute暂未解决
自己构建了路径规划函数,输出可以正确得到八个邻居节点
在linux系统下仍然无法解决AttributeError: open3d.cpu.pybind.geometry.LineSet' object has no attribute的问题,初步推测问题在于open3d的版本,还在解决中,把代码先进行了上传。
o3d.visualization.draw([
{
"name": "path_line_set",
"geometry": path_line_set,
"material": mat
},
{
"name": "mesh",
"geometry": mesh,
},
{
"name": "line_set",
"geometry": line_set,
},
{
"name": "points",
"geometry": points,
}
])
将构建路径规划图时的面切割成三角后可以实现八个邻接点,在生成路径时也可以生成斜线,但偶尔会出现一半生成斜线一半仍旧阶梯状的情况,在解决中。
只是三角形的话,好像不是八邻域。可以通过绘制 lineset 的方式可视化点的邻域,方便进行 debug
利用 open3d 的 gui class 开发了一个简易的 app (#9) ,目前可以做到鼠标交互和几何体的渲染:
实现了双向A,并对其和单向A 的时间进行了对比,可知双向A *效率更高
[想法]
在处理 obj 的时候,应该就可以将整个几何体的边界点,面点,之类的信息找到。
根据两点 vertix normal 的夹角找到外折角,并在构建 graph 的时候将其断开。
使用FMM方法实现了路径规划,但是未能解决将面划分为三角形后,怎么得到三角形内部的点并利用三角形区域之间的关系进行路径规划
实现A*算法在三维表面的路径规划