突破1k !具身智能中文教程项目火了
在前面yolo单个文件运行的结果中,可以看出,yolov8在检测的时候,会存在误检的问题,有人说,用yolo-world开放检测自己定义不就没有问题了吗,在我的科研过程中,实际测试表明,用yolo-world开放检测,也不能够完全的解决误检的问题,对于不太常规的物体,依旧不能够检测成功,因此,需要对感知模块进行改进。有的同学要问了,同学!有没有本地部署的版本,有的同学有的,如果想要本地部署的同学可
Datawhale干货
作者:李昀迪,every-embodied团队
学完具身导航基础课,还是一头雾水不会动手实践?
复现顶会代码,被复杂逻辑绕晕,摸不清算法流程?
环境配置地狱、数据集超大、下载繁琐,想结合大模型却无从下手?
别慌!这套具身导航综合入门实战直接救场!
从环境搭建、模型权重下载,到算法拆解与全流程整合,一步一步讲透!
仅需半天,就能完整跑通「感知→决策→规划→控制」全链路算法,不管是入门启蒙,还是深入科研,都能直接拿来用,轻松为你的科研之路添砖加瓦~
完整开源项目直达👇:
https://github.com/datawhalechina/every-embodied
效果演示:
机器人任务:在完全未知的室内环境中,自主寻找两个目标物体 ——chair 椅子(在另一个房间)couch 沙发(在当前房间)
整套流程完全靠感知→决策→导航闭环实现:机器人一边探索环境,一边用视觉模型检测物体;每找到一个目标,就自动记入历史记录,同步给大模型作为下一步决策依据;全程不需要人为干预,直到把两个目标全部找完,完成物体搜寻任务。
想不想自己复现一遍?从环境搭建到 VLM 决策,一套流程直接跑通,让你的 AI 机器人真正实现 “自主导航”~
一、开箱即用!零环境配置也能玩
嫌配环境麻烦?直接用现成镜像,懒人福音。
Autodl 镜像地址:https://www.autodl.art/i/datawhalechina/every-embodied/datawhale-navigation
Autodl镜像README中有详细的镜像运行说明,gpu-free中也提供了镜像支持,可以在镜像中搜索datawhale,选择加载具身导航综合入门实践镜像。
进入镜像,4 行命令直接跑起来:
conda activate navigationcd /root/every_embodied_navigation/export LD_PRELOAD=/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:/lib/x86_64-linux-gnu/libGLdispatch.so.0python main.py
二、从零搭建!打造你的专属具身导航框架
1. 配置conda环境
conda activate navigationcd /root/every_embodied_navigation/export LD_PRELOAD=/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:/lib/x86_64-linux-gnu/libGLdispatch.so.0python main.py
2. 配置算法环境
# 安装视觉感知算法模块pip install ultralytics# 安装大模型所需要的相关组件pip install openaipip install transformers# 下载算法运行的仿真环境(注意网络问题)python -m habitat_sim.utils.datasets_download --uids habitat_test_scenes --data-path /data
✅ 到这里,API 调用版环境全部搞定!
有的同学要问了,同学!同学!有没有本地部署的版本,有的同学有的,如果想要本地部署的同学可以继续以下的环境配置,想直接用API的可以跳过下面的内容,直接查看第三部分,当然~本地部署也不是很复杂哦~
# 依赖安装pip install acceleratepip install modelscope# 下载模型权重modelscope download --model Qwen/Qwen3-VL-4B-Instruct --local_dir /root/every_embodied_navigation/Qwen3-VL-4B-Instruct/
这里的路径可以自行修改,比如我的主函数是在every_embodied_navigation文件夹下,也需要在every_embodied_navigation下再加一个Qwen3-VL-4B-Instruct这个文件夹,用来存放模型权重,如果不加Qwen3-VL-4B-Instruct这个文件夹,则会出现模型权重文件全下载到主函数的文件夹下的情况。这里由于云端内存的原因,下载了Qwen3-VL-4B的模型,大家自行可以去modelscope下载Qwen3-VL-8B或者其他的模型进行测试,仅需修改vlm文件夹下的文件,navigator.py文件以及config.py文件即可。
下载完成后,清爽目录结构长这样,模块清晰超好改:
every_embodied_navigation/├── main.py # 主函数入口(支持 --mode local/api)├── navigator.py # 核心导航器│├── config/│ └── config.py # 统一配置│├── utils/ # 仿真+几何计算工具│ ├── simulator.py│ └── geometry.py │├── perception/ # YOLO视觉感知│ └── detector.py│├── mapping/ # 建图+前沿点检测│ └── map_utils.py │├── planning/ # 路径规划执行│ └── planner.py│├── vlm/ # 多模态大模型决策核心│ ├── base_engine.py│ ├── local_engine.py │ ├── api_engine.py │ └── __init__.py │└── output/ # 可视化+视频保存│ └── visualizer.py │└── Qwen3-VL-4B-Instruct/ # 权重文件
安装全程不卡壳,新手也能轻松搞定。
三、路径 & 参数设置,一遍就会
1. 修改大模型调用形式
主函数改mode参数,一键切换本地部署 / API 调用

2. config参数路径修改
-
场景文件用的是相对路径,一般不需要修改
-
本地 VLM 路径建议用绝对路径,否则会触发 huggingface 联网报错
-
API 对接阿里云百炼,用通义模型无需改地址,填 API_KEY 和模型名即可

参数配完,直接运行,零障碍启动!
四、代码运行!看机器人自主导航
配置完成,一行命令启动:
python main.py
如果出现BUG可以优先参考第七部分“远离BUG”。
1. 实时打印大模型思考全过程,决策逻辑一目了然,还会自动保存日志
============================================================ 📝 大模型完整思考过程============================================================--- 决策 #1 --- 位置: [0.9390037655830383, -1.5215539932250977, -2.021697998046875] 检测: 13 物体, 前沿: 1 个 动作: go_to_object 置信: 0.85 思考: 当前图像显示的是百叶窗,未发现目标物体。YOLO检测结果显示有多个沙发(couch)目标,但距离较远(3.94m至4.00m),且未访问过。根据规则,应优先选择最近的未访问目标。最近的沙发在索引9,距离2.36m,符合优先导航条件。因此,应导航至该沙发。--- 决策 #2 --- 位置: [2.7892143726348877, -1.600250005722046, -0.646697998046875] 检测: 17 物体, 前沿: 3 个 动作: explore_frontier 置信: 0.85 思考: 当前检测到的目标物体中,'couch'已访问,待寻找的'chair'未被检测到。YOLO结果中未出现'chair'的检测结果,因此无法直接导航到目标。根据规则3,应选择最优前沿点进行探索。可选前沿点中,[1]位置[2.44, -1.60, 2.33]距离3.00m,朝向未探索区域,且距离适中,符合探索优先级。因此选择该前沿点进行探索。--- 决策 #3 --- 位置: [2.423809766769409, -1.600250005722046, 2.2950756549835205] 检测: 8 物体, 前沿: 5 个 动作: go_to_object 置信: 0.81 思考: 我看到了多个椅子目标,其中最近的椅子在[4.55, -2.64, 3.86],距离2.84米,置信度0.81,符合优先导航到最近目标的规则。虽然有多个椅子,但最近的未访问目标是当前最优选择。因此,我决定导航到最近的椅子。
2. 自动保存导航视频
左屏:机器人第一视角实时画面
右屏:2D 占据地图(黄色 = 未探索前沿、绿色 = 前沿点、深蓝 = 机器人、浅蓝 = 行走路径、紫色 = 规划路径)


3. 独立测试文件,轻松调试
为了方便大家学习,我们还为大家准备了单独运行调试的文件,不需要额外下载任何依赖,单独运行文件即可。介绍如下:
-
local_test.py:具身导航框架代码中使用的是transformers库调用的本地部署文件,单独测试文件local_test.py给大家提供了另一种本地部署的方法:用modelscope来本地部署。文件中仅需修改已经下载的模型权重文件路径以及图片路径即可,图片已经为大家准备好了。

代码的运行输出如下:
['This is a close-up, eye-level photograph of a small, fluffy white dog, likely a Samoyed or a similar breed like a Pomeranian, sitting indoors on a light-colored wooden floor.\n\nThe dog has a thick, luxurious coat of pure white fur that looks soft and voluminous, especially around its neck and chest. Its ears are pointed and erect, with a slightly pinkish inner lining visible. The dog’s face is round and expressive, featuring large, dark, round eyes that look directly at the camera with an innocent and curious gaze. It has a small, black nose and a gentle, slightly open mouth that gives']
-
api_test.py:这个是使用api运行的大模型文件,仅需填入按照上文获取的大模型api,修改图片路径即可,注意,原来官网代码的api调用不支持图片的直接输入,需要进行转换,这里已经提供,为了方便大家理解,提供了两种格式的图片文件,一个是png图片,另一个是webp文件,可以看出,除了路径以外,还需要修改base64_url中的格式,这个也与具身导航框架中的图片转换内容一致。

代码的运行输出如下:
图中描绘的是一只可爱的白色小狗,它正坐在室内木地板上,面向镜头。小狗毛发蓬松洁白,眼睛乌黑明亮,鼻子是黑色的,表情显得非常温顺和呆萌。背景较为模糊,可以看到部分家具或装饰物,整体氛围温馨舒适。这只小狗看起来像一只萨摩耶犬或类似品种的小型犬。
-
yolo_test.py:除了具身导航框架中的yolov8以外,还提供了yolo-world的测试,仅需几行代码即可完成视觉检测,需要注意的是,yolo-world开放视觉检测需要提前定义分类的类型。(yolov8l-world.pt)由于模型过大,因此请前往https://docs.ultralytics.com/zh/models/yolo-world/下载。

两种yolo模型的检测结果如下,可以看出,yolo-world提前定义之后,可以很清楚的识别出萨摩耶小狗~

五、代码全拆解!搞懂具身导航核心逻辑
具身导航中大部分算法应该大家都有所了解,例如yolo视觉算法,大语言模型,以及规划算法,如何将这些算法应用到具身导航,是我们需要探索和学习的,本课程主要就是为了让大家了解和熟悉具身导航整个流程,给大家讲解分享学习时踩到的坑,为大家后续的研究起到一点点的帮助,就心满意足啦~
下面开始具体的算法讲解,主要围绕具身导航各个算法的结合与具身导航需要额外添加学习的代码部分来进行讲解,各个算法的原理可以参考datawhale的其他教程,例如yolo和大语言模型算法,都有很好的讲解。
先看VLM 一次决策完整流程,8 步走完智能导航:
1.旋转观察 → 2. 结果去重 → 3. 提取前沿点 → 4. 构造 VLM 输入
5.大模型决策 → 6. 执行动作 → 7. 到达判断 → 8. 任务终止检查
这就是具身导航一次决策的完整流程,相信大家对整个代码有了一个初步的认知,下面对代码文件各个模块进行详细的讲解。
1. config 参数调优经验
YOLO_CONF_THRESHOLD = 0.35TARGET_REACH_DIST = 1.5MODEL_TEMPERATURE = 0.3
除了先前配置文件中的一些参数,这里再讲解一下这里各个参数的调试依据。
1)YOLO_CONF_THRESHOLD 设 0.35 是经验值。太低(0.1)会把墙上的阴影也检测成椅子;太高(0.6)在光线暗的场景里会漏掉目标。
2)TARGET_REACH_DIST 设 1.5 米。太小(0.5m)机器人会撞墙;太大(3m)VLM会误判机器人已经到达。
3)MODEL_TEMPERATURE 对决策质量影响很大。0.3 是比较保守的选择,输出更稳定。调高到 0.8 以上时,模型可能会出现幻觉,出现一些不存在的物体。
2. utils:2D→3D 坐标转换核心
1)simulator.py
这个文件中主要用来创建habitat环境,如果有不懂的可以参考every-embodied项目中的https://github.com/datawhalechina/every-embodied/tree/main/08-%E5%85%B7%E8%BA%AB%E5%AF%BC%E8%88%AA%E5%8F%8AVLN,有基础的讲解。
2)geometry.py
def depth_to_3d_world(depth_map: np.ndarray, bbox, agent_state, K: np.ndarray): x1, y1, x2, y2 = [int(v) for v in bbox] mx = max(1, (x2 - x1) // 4) my = max(1, (y2 - y1) // 4) region = depth_map[y1 + my:y2 - my, x1 + mx:x2 - mx] if region.size == 0: return None valid = region[region > 0] if valid.size == 0: return None d = float(np.median(valid)) if d <= 0 or d > 10.0: return None cx_px = (x1 + x2) / 2.0 cy_px = (y1 + y2) / 2.0 fx, fy = K[0, 0], K[1, 1] cx_c, cy_c = K[0, 2], K[1, 2] point_cam = np.array([ (cx_px - cx_c) * d / fx, -(cy_px - cy_c) * d / fy, -d, 1.0, ]) rot = agent_state.rotation q = np.array([rot.w, rot.x, rot.y, rot.z]) R = quaternion_to_rotation_matrix(q) T = np.eye(4) T[:3, :3] = R T[:3, 3] = np.array(agent_state.position) return (T @ point_cam)[:3]
depth_to_3d_world函数:把 YOLO 像素框 + 深度图,转换成 3D 世界坐标,是视觉→导航的关键桥梁!
3. perception:视觉感知
感知模块不做过多的介绍,代码很简单,就是利用yolo做了一个视觉检测。
4. mapping:前沿点检测
def detect_frontiers(full_map: np.ndarray, explored_mask: np.ndarray, min_area: int = 8): navigable = (full_map > 0).astype(np.uint8) explored = (explored_mask > 0).astype(np.uint8) unexplored_nav = (navigable & (1 - explored)).astype(np.uint8) border = cv2.morphologyEx(explored, cv2.MORPH_GRADIENT, np.ones((3, 3), np.uint8)) frontier_mask = (border & unexplored_nav).astype(np.uint8) n, labels, stats, centroids = cv2.connectedComponentsWithStats(frontier_mask, 8) pts = [] for i in range(1, n): if stats[i, cv2.CC_STAT_AREA] >= min_area: c = centroids[i] pts.append(np.array([int(c[1]), int(c[0])])) # row, col return pts, frontier_mask
mapping建图中最重要的就是前沿点检测,这个也是大部分未知环境导航论文中都使用到的模块,但是其实原理并不复杂
border = cv2.morphologyEx(explored, cv2.MORPH_GRADIENT, np.ones((3, 3), np.uint8)) frontier_mask = (border & unexplored_nav).astype(np.uint8)
这两行代码就是找出已探索区域的边缘线,边缘线 & 未探索可通行区域 = 前沿线。
n, labels, stats, centroids = cv2.connectedComponentsWithStats(frontier_mask, 8)
然后每个独立的前沿区域取质心,也就是一个前沿点。是不是很简单~
5. vlm:机器人的智能大脑
传统导航用规则来决策(离目标近就走过去,否则探索最近前沿),而我们用多模态大模型来理解场景并做出更智能的决策。
1)base_engine.py
base_engine.py主要作用是prompt构建、用户文本格式化、JSON解析、规则降级、日志记录。api和本地部署共用这一套逻辑,这是多模态大模型共用的输入。
def _build_system_prompt(self) -> str: return f"""你是一个具身智能导航机器人的决策大脑。你的任务是在室内环境中找到以下全部目标物体: {self.targets}你需要根据当前观察到的图像、YOLO检测结果(含物体3D坐标和距离)、可探索的前沿点,做出导航决策。决策规则:1. 如果检测到了目标物体且距离合理(< 8米), 优先导航到目标物体2. 如果检测到多个目标物体, 选择最近的未访问目标3. 如果没有检测到目标物体, 选择最优的前沿点进行探索4. 选择前沿点时, 优先选择距离适中、朝向较大未探索区域的方向5. 如果所有目标都已访问, 返回 "task_complete"严格以以下JSON格式回复, 不要输出其他内容:{{ "thinking": "你的详细思考过程: 1)看到了什么 2)分析各选项 3)做出决策的理由", "action": "go_to_object" 或 "explore_frontier" 或 "task_complete", "target_index": 选择的目标在对应列表中的索引(从0开始), "confidence": 0到1之间的置信度}}"""
system_prompt主要是告诉大模型他是谁,需要严格遵守的规则有哪些:
-
明确角色:你是具身智能导航机器人的决策大脑
-
给出5条清晰的决策规则,优先级从高到低
-
强制输出格式:严格JSON,防止模型自由发挥
def _build_user_text(self, agent_pos, visited_targets, detection_summary, frontier_info, nav_history) -> str: text = f"""## 第 {self.count} 次决策### 当前状态- Agent位置: [{agent_pos[0]:.2f}, {agent_pos[1]:.2f}, {agent_pos[2]:.2f}]- 已访问目标: {visited_targets if visited_targets else '无'}- 待寻找目标: {[t for t in self.targets if t not in visited_targets]}### YOLO 检测结果 (原地旋转360°汇总)""" if detection_summary: for i, d in enumerate(detection_summary): p = (f"[{d['world_pos'][0]:.2f}, {d['world_pos'][1]:.2f}, {d['world_pos'][2]:.2f}]" if d.get("world_pos") else "未知") dist = f"{d['distance']:.2f}m" if d.get("distance") is not None else "未知" tag = "目标" if d["is_target"] else "非目标" text += f" [{i}] {d['class']} (置信度:{d['confidence']:.2f}) 3D位置:{p} 距离:{dist} {tag}\n" else: text += " 当前旋转一圈未检测到任何物体\n" text += "\n### 可用前沿点\n" if frontier_info: for i, f in enumerate(frontier_info): text += (f" [{i}] 位置:[{f['position'][0]:.2f}, {f['position'][1]:.2f}, " f"{f['position'][2]:.2f}] 距离:{f['distance']:.2f}m\n") else: text += " 无可用前沿点\n" text += f"\n### 导航历史\n{nav_history}\n" return text
user_prompt中主要包含喂给大模型的信息,主要包含:
-
视觉图像:旋转一圈中均匀采样4帧关键帧,压缩为JPEG base64
-
检测结果文字摘要:类别、置信度、3D坐标、距离、是否是目标
-
前沿点信息:最多8个候选前沿点的位置和距离
-
导航历史:最近5次决策记录,让模型知道自己走了哪里
def _fallback(self, dets, fronts, visited) -> dict: """VLM 调用失败时的规则降级策略。""" if dets: tgts = [d for d in dets if d["is_target"] and d["class"] not in visited and d.get("distance") is not None and d["distance"] < 8] if tgts: tgts.sort(key=lambda x: x["distance"]) idx = dets.index(tgts[0]) return {"action": "go_to_object", "target_index": idx, "reasoning": f"[降级] 检测到 {tgts[0]['class']}", "confidence": 0.6} if fronts: return {"action": "explore_frontier", "target_index": 0, "reasoning": "[降级] 无目标, 探索前沿", "confidence": 0.3} return {"action": "explore_frontier", "target_index": 0, "reasoning": "[降级] 随机探索", "confidence": 0.1}
最后一个是为了保证在实机部署中,网络断了或者模型崩了之后,能有个兜底的代码,使得系统能够正常运行。
6. planning:路径执行
这一部分主要是采用habitat-sim中自己的habitat_sim.GreedyGeodesicFollower,并输出动作执行,这一部分可以在得到目标点后,自行根据仿真环境修改,可以自己添加和替换规划器,并添加控制器,以达到更好的效果。
7. output:可视化
这一部分就是可视化的内容,也可以自行修改。
恭喜大家完成了代码讲解的阅读,相信大家已经对代码有了更深的了解,对各个模块已经非常的熟悉,最后navigator.py将各个模块结合,并再main.py中运行。之前也提到本课程写了api调用和local本地部署两个单的具身导航文件,如果对各个模块之间的调用不理解的,也可以直接使用单个文件进行运行和学习,本课程主要就是想竭尽全力让大家简单清晰的学习到具身导航的基础流程,并能够为大家今后的科研或者学习提供一点点小小的帮助,希望没有让大家失望~
后续是当前代码存在的一些问题的改进建议和一些前沿的方案,由于本教程希望能够用最小的代码和安装流程,为大家讲清楚整个最基础的具身导航框架流程,同时上传云端的内存也有限制,因此,并没有添加一些比较复杂的例如图像分割,3D高斯建图,vllm部署等内容,大家可以自行学习添加。
六、坦诚交底!项目现存问题 + 进阶方案
这个具身导航框架中存在的问题还是要向大家说明,它并不是完美无缺的,也希望这些问题能够给各位在今后的科研中提供一点小小的思路,能够帮助到大家是我的荣幸,也是做这个课程的初衷~
1. 感知模块的误检问题:

在前面yolo单个文件运行的结果中,可以看出,yolov8在检测的时候,会存在误检的问题,有人说,用yolo-world开放检测自己定义不就没有问题了吗,在我的科研过程中,实际测试表明,用yolo-world开放检测,也不能够完全的解决误检的问题,对于不太常规的物体,依旧不能够检测成功,因此,需要对感知模块进行改进。
2. 2D转3D的问题:
在仅执行找到chair椅子和couch沙发这两个物体的时候,我发现没什么特别大的问题,甚至运行的很完美,当时还很开心,这个问题是我想要多测试几遍,在让系统找到TV电视时偶然发现的,有没有会觉得当时的我会很苦恼?不!发现这个问题的时候我依然很开心毕竟科研嘛,能发现问题,就代表需要解决这个问题,这样不就能在这个领域留下哪怕很微弱的贡献了吗~
============================================================ 📝 大模型完整思考过程============================================================--- 决策 #1 --- 位置: [0.9390037655830383, -1.5215539932250977, -2.021697998046875] 检测: 13 物体, 前沿: 1 个 动作: go_to_object 置信: 0.63 思考: 当前检测到多个目标物体,包括tv(距离4.56m)、couch(距离3.94m)和bed(非目标)。根据规则2,应选择最近的未访问目标。couch在3.94m处,tv在4.56m处,因此优先选择couch。前沿点距离2.86m,但目标优先级更高,故不选择探索。置信度基于检测结果,选择couch的置信度0.63较高。--- 决策 #2 --- 位置: [3.9896955490112305, -1.600250005722046, -0.521697998046875] 检测: 14 物体, 前沿: 4 个 动作: go_to_object 置信: 0.61 思考: 当前检测到两个目标物体:tv(距离2.64m)和未访问的chair。但检测结果中未出现chair,因此无法直接导航到chair。根据规则,应优先选择最近的未访问目标。tv距离最近(2.64m),且在待寻找目标中,因此选择tv作为目标。置信度为0.61,表明识别可靠。--- 决策 #3 --- 位置: [3.0499484539031982, -1.600250005722046, 2.3973488807678223] 检测: 14 物体, 前沿: 3 个 动作: go_to_object 置信: 0.85 思考: 当前检测到多个椅子目标,且距离均在8米内,符合优先导航到目标物体的规则。已访问'couch'和'tv',剩余目标为'chair'。检测到的椅子中,距离最近的是[12],位置[4.61, -2.42, 3.64],距离2.16米,置信度0.79,是当前最优选择。因此应导航到最近的未访问椅子。为什么这个全是前往物体的思考过程,我看大模型也有前往前沿点的过程啊
大家请看,有没有发现,大模型一直都是go_to_object,没有探索前沿点的过程,我的chair明明在另一个房间,他是怎么不探索前沿点去的呢?他真的成长成超级人工智能了?不是的!大家请看!

在这个图片中,这个是机器人到达couch沙发附近后,又发现了挂在墙上的tv,并导航到他的附近,问题就出在这里,在2d转3d坐标的过程中,因为tv很薄,又贴着墙,算法将坐标转到了墙后,这个是算法转换误差导致的,因此,机器人直接运行到了墙后,也就是chair椅子所在的房间,大家可以看下图。

可以看出,导航到有椅子这个房间后,由于贴着墙,系统判断机器人到达了tv电视的附近,所以视频的左上角显示找到了tv,并重新开始检测,又在这个房间中发现了chair椅子,因此才出现了大模型决策过程中,只有三个go_to_object这个问题。
那怎么解决呢?
给大家推荐几个有代码的文章,方便大家学习
1.https://ieeexplore.ieee.org/abstract/document/10870413/
单位:中国科学技术大学
项目主页:https://xiaohanlei.github.io/projects/GaussNav/
代码链接:https://github.com/XiaohanLei/GaussNav
解决路径:主要通过3DGS来实现物体实例级3D定位与导航。
2.https://arxiv.org/abs/2510.21307
单位:浙江大学
项目主页:https://sage-3d.github.io/
代码链接:
https://github.com/Galery23/SAGE-3D_Official?tab=readme-ov-file
解决路径:为VLN构建语义和物理对齐的3DGS环境,提供可执行的物体3D定位与交互。
3.https://arxiv.org/abs/2408.11811
单位:清华大学
项目主页:https://xuxw98.github.io/ESAM/
代码链接:https://github.com/xuxw98/ESAM?tab=readme-ov-file
解决路径:实时在线3D实例分割,用SAM的2D Mask转3D点云Mask,为具身导航提供物体3D坐标。
七、远离 BUG!常见问题一键修复
愿我们大家都远离BUG,愿大家调BUG一调就通~
BUG-1
ImportError: libEGL.so.1: cannot open shared object file: No such file or directory
遇到libEGL.so.1这个BUG时,只需要更新和安装以下库即可
apt updateapt install -y libegl1-mesa libegl1-mesa-dev libgl1-mesa-glx
BUG-2
GL::Context: cannot retrieve OpenGL version: GL::Renderer::Error::InvalidValue
遇到GL这个BUG时,可以通过运行以下代码来避免
export LD_PRELOAD=/lib/x86_64-linux-gnu/libGLX_nvidia.so.0:/lib/x86_64-linux-gnu/libGLdispatch.so.0
如果大家遇到了其他的BUG,欢迎指出~

一起“点赞”三连↓
更多推荐
所有评论(0)