当前位置: 首页 > news >正文

【保姆级教程】在AutoDL容器中部署EGO-Planner,实现无人机动态避障规划

【保姆级教程】在AutoDL容器中部署EGO-Planner,实现无人机动态避障规划

作为ROS生态中经典的无人机路径规划框架,EGO-Planner以其高效的动态避障能力和实时重规划特性,成为很多开发者入门无人机规划的首选工具。但在远程容器(如AutoDL)中部署时,常因环境配置、通信问题卡壳。本文结合实战经验,从AutoDL登录到规划成功,一步步带你打通全流程,新手也能轻松上手。

一、前置知识:核心概念与环境准备

在开始前,先明确几个关键概念,避免后续操作 confusion:

  • AutoDL容器:提供远程GPU/CPU资源,预装Linux系统,需通过终端或远程桌面操作;
  • Catkin工作空间:ROS项目的“工程目录”,用于组织代码、编译产物,本文默认工作空间为~/catkin_ws
  • EGO-Planner:无人机路径规划框架,核心功能包为planner/plan_manage,依赖uav_simulator(仿真)、Utils(工具库);
  • ROS消息通信:节点间通过“话题”传递数据,本文关键目标点话题为/goal_with_id,消息类型quadrotor_msgs/GoalSet

环境要求

  • AutoDL容器:建议选择“Ubuntu 20.04 + ROS Noetic”镜像(若无预装,可后续手动安装,但镜像自带更省心);
  • 硬件:最低1核2G内存,GPU非必需(仅仿真可CPU运行);
  • 网络:确保容器能正常访问外网(用于安装依赖、拉取代码)。

二、Step 1:登录AutoDL并进入容器

这一步是所有操作的起点,重点是“找到终端入口”:

  1. 登录AutoDL控制台:打开AutoDL官网(https://www.autodl.com/),登录后在“我的容器”中找到已创建的容器,点击“启动”;
  2. 进入终端:启动后点击“JupyterLab”,在打开的页面中,左侧导航栏找到“终端”图标(类似命令行的黑色图标),点击即可打开Linux终端;
  3. 确认初始路径:默认终端路径为/root,后续所有操作均在该用户下执行(无需切换用户,避免权限问题)。

三、Step 2:确认并编译Catkin工作空间

EGO-Planner的代码需放在Catkin工作空间的src目录下,编译后才能运行。若你已上传代码(如之前操作),直接执行以下步骤;若未上传,需先克隆代码(附克隆命令)。

2.1 确认工作空间结构

先检查~/catkin_ws是否存在,以及src目录下是否有EGO-Planner相关代码:

# 进入工作空间
cd ~/catkin_ws
# 查看src目录内容(关键看是否有planner、uav_simulator、Utils)
ls src
  • src目录下已有planneruav_simulatorUtils:跳过“克隆代码”,直接编译;
  • 若没有:先执行以下命令克隆EGO-Planner及其依赖(需等待1-2分钟,视网络速度而定):
    # 进入src目录
    cd ~/catkin_ws/src
    # 克隆EGO-Planner核心代码
    git clone https://github.com/ZJU-FAST-Lab/EGO-Planner-v2.git planner/plan_manage
    # 克隆无人机仿真代码
    git clone https://github.com/ZJU-FAST-Lab/uav_simulator.git
    # 克隆工具库
    git clone https://github.com/ZJU-FAST-Lab/Utils.git
    

2.2 编译工作空间

编译是将源代码生成可执行文件(如仿真节点、规划节点)的关键步骤,需确保无编译错误:

# 回到工作空间根目录
cd ~/catkin_ws
# 编译(-j1表示单线程编译,避免多线程冲突;性能好可去掉-j1)
catkin_make -j1
  • 编译成功标志:终端最后输出“[100%] Built target xxx”,无“error”或“failed”;
  • 若编译报错:常见原因是缺少依赖,可执行 sudo apt install ros-noetic-xxx(xxx为报错中提示的缺失包名,如ros-noetic-octomap),安装后重新编译。

2.3 加载ROS环境变量

编译后生成的可执行文件和功能包路径,需通过“环境变量”让系统识别,每次新开终端都需执行

# 加载当前工作空间的环境变量
source ~/catkin_ws/devel/setup.bash
  • 可选优化:将上述命令添加到~/.bashrc,实现“新开终端自动加载”,无需每次手动输入:
    echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
    

四、Step 3:启动EGO-Planner仿真节点

仿真节点是“无人机+环境”的载体,启动后会创建随机障碍物,并等待目标点输入。

3.1 清理旧ROS进程(关键!避免通信冲突)

若之前启动过ROS相关进程(如roscore、仿真节点),未正常关闭会导致“连接重置”错误,需先清理:

# 杀死所有ROS相关进程(包括roscore、节点)
pkill -f "ros" && pkill -f "roscore"

执行后等待2-3秒,确保旧进程完全退出。

3.2 启动单机仿真核心

直接用“绝对路径”启动仿真文件,避免因“功能包名识别错误”导致启动失败(这是新手常踩的坑):

# 启动仿真节点(会自动启动roscore,无需单独启动)
roslaunch ~/catkin_ws/src/planner/plan_manage/launch/single_drone_interactive.launch
  • 启动成功标志:终端持续输出[FSM]: state: WAIT_TARGET, Drone:0. Waiting for target,表示无人机已就绪,等待目标点;
  • 注意:不要关闭这个终端!关闭会导致仿真节点退出。

五、Step 4:发送目标点,触发避障规划

仿真节点就绪后,需新建一个终端发送目标点,让无人机开始规划。

5.1 新建终端并加载环境变量

在JupyterLab中再次点击“终端”图标,新建一个终端,执行:

# 加载环境变量(若已添加到.bashrc,可跳过)
source ~/catkin_ws/devel/setup.bash

5.2 发送正确格式的目标点

关键!之前多次失败的核心原因是“消息格式不匹配”,需严格按照quadrotor_msgs/GoalSet的结构发送(通过rosmsg show quadrotor_msgs/GoalSet可查看结构):

# 发送目标点到/goal_with_id话题,坐标为(x=5.0, y=2.0, z=1.5)
rostopic pub -1 /goal_with_id quadrotor_msgs/GoalSet "drone_id: 0
goal: [5.0, 2.0, 1.5]"
  • 参数说明:
    • drone_id: 0:单机场景固定为0(多机时区分不同无人机);
    • goal: [5.0, 2.0, 1.5]:目标点的三维坐标,可根据需求修改(如[8.0, 5.0, 2.0]);
    • -1:表示“发送一次后退出”,无需持续发送。

六、Step 5:验证规划成功(关键日志解读)

发送目标点后,回到“仿真终端”,若出现以下日志,说明EGO-Planner已完全跑通:

  1. 目标点接收成功[INFO] Received goal: 5.000000, 2.000000, 1.500000 → 无人机正确识别目标;
  2. 状态切换正常[FSM]Drone:0, from WAIT_TARGET to SEQUENTIAL_START → 从“等待目标”进入“启动流程”;
  3. 动态重规划成功Drone 0 Replan 0, Success=yes(多次出现)→ 无人机实时计算避障路径,每次重规划都成功;
  4. 轨迹执行中[FSM]Drone:0, from REPLAN_TRAJ to EXEC_TRAJ → 规划出的路径正在被执行,“规划→执行”闭环打通。

若出现Success=no:无需担心,偶尔一次重规划失败是正常的,后续会自动重试,只要大部分Success=yes即可。

七、可选:Rviz可视化(直观看到无人机与轨迹)

若想“眼见为实”,通过Rviz看到无人机、障碍物和彩色规划轨迹,需配置AutoDL远程桌面(纯终端环境无法显示GUI)。

7.1 启动远程桌面服务

在任意终端执行:

# 启动AutoDL远程桌面(首次执行会提示设置密码,记好密码)
autodl-desktop
  • 启动成功后,终端会输出“远程桌面已启动”,并显示访问链接(如http://xxx.autodl.com:xxxx)。

7.2 连接远程桌面

  1. 复制终端输出的远程桌面链接,在本地浏览器中打开;
  2. 输入之前设置的密码,进入Linux桌面环境;
  3. 打开桌面的“Terminal”(类似Windows的命令提示符)。

7.3 启动Rviz

在桌面终端中执行:

# 加载环境变量
source ~/catkin_ws/devel/setup.bash
# 启动Rviz(加载EGO-Planner预设配置)
roslaunch ~/catkin_ws/src/planner/plan_manage/launch/rviz.launch
  • 可视化效果:Rviz中会显示无人机模型(绿色/蓝色)、随机障碍物(灰色)、彩色规划轨迹(红色/绿色),无人机将沿轨迹飞向目标点。

八、常见问题排查(避坑指南)

  1. 启动仿真报错“RLException: [xxx.launch] is neither a launch file”
    → 原因:功能包名错误或路径错误;解决方案:用绝对路径启动(如本文Step 3.2的命令)。
  2. 发送目标点后无反应,日志仍显示“WAIT_TARGET”
    → 原因:话题名或消息格式错误;解决方案:执行rosnode info /drone_0_ego_planner_node | grep "Subscriptions"确认目标点话题,再用rosmsg show 话题类型确认格式。
  3. Rviz启动报错“qt.qpa.xcb: could not connect to display”
    → 原因:未进入远程桌面,纯终端无GUI环境;解决方案:按Step 7配置远程桌面后再启动Rviz。

九、总结

本文从AutoDL登录到规划成功,覆盖了“环境准备→编译→启动→验证”全流程,核心是避开三个新手坑:

  1. 用“绝对路径”启动仿真文件,避免功能包名识别错误;
  2. rosmsg show确认的消息结构发送目标点,避免格式错误;
  3. 启动前清理旧ROS进程,避免通信冲突。

按照本文步骤操作,即使是ROS新手,也能在1小时内打通EGO-Planner的动态避障功能。后续可尝试修改目标点坐标、调整仿真参数(如障碍物数量),深入探索EGO-Planner的特性。

最后,附上关键命令速查表,方便后续快速复用:

操作目标命令
编译工作空间cd ~/catkin_ws && catkin_make -j1
加载环境变量source ~/catkin_ws/devel/setup.bash
清理ROS进程pkill -f "ros" && pkill -f "roscore"
启动仿真roslaunch ~/catkin_ws/src/planner/plan_manage/launch/single_drone_interactive.launch
发送目标点(x=5,y=2,z=1.5)rostopic pub -1 /goal_with_id quadrotor_msgs/GoalSet "drone_id: 0; goal: [5.0, 2.0, 1.5]"
启动远程桌面autodl-desktop
启动Rvizroslaunch ~/catkin_ws/src/planner/plan_manage/launch/rviz.launch

要不要我帮你整理一份 “EGO-Planner 常见问题排查手册”?把本文中提到的报错和解决方案汇总成文档,方便你后续遇到问题时快速定位原因。

http://www.dtcms.com/a/564492.html

相关文章:

  • 仿生机器鹰无人机技术解析
  • 2025无人机在电力交通中的应用实践
  • Qt实时绘制飞行轨迹/移动轨迹实时显示/带旋转角度/平滑移动/效果一级棒/地面站软件开发/无人机管理平台
  • 八股已死、场景当立(场景篇-负载均衡篇)
  • Go语言设计模式:备忘录模式详解
  • 基于YOLOv10的无人机智能巡检系统:电力线路悬挂物检测实战
  • 定制开发开源AI智能名片S2B2C商城小程序中的羊群效应应用研究
  • seo搜索引擎优化网站店铺位置怎么免费注册定位
  • 一个专门做恐怖片的网站做化工行业网站
  • 物联网 “神经” 之以太网:温湿度传感器的工业级 “高速干道”​
  • Biotin-PEG-OH,生物素-聚乙二醇-羟基,应用领域
  • 物联网“神经”之LoRa:温湿度传感器的广域“节能使者”
  • 舆情处置的自动化实践:基于Infoseek舆情系统的技术解析与落地指南
  • jcms内容管理系统百度seo怎么查排名
  • 亚马逊旺季广告攻略:解码产品周期,精准引爆销量
  • 【C#】HTTP中URL编码方式解析
  • 高速打印,安全稳定全兼顾 至像国产芯系列M3500DNWA应用测评
  • MacOS 安装Python 3.13【同时保留旧版本】
  • 八股训练营第 6 天 | HTTPS 和HTTP 有哪些区别?HTTPS的工作原理(HTTPS建立连接的过程)?TCP和UDP的区别?
  • 多阶段构建:打造最小化的 Spring Boot Docker 镜像
  • 在windows或者mac配置安装miniforge3
  • Arbess零基础学习 - 使用Arbess+GitPuk实现Java项目构建并Docker部署
  • 网站注册备案之后怎么做营销网络平台
  • laya3如何打包mac包
  • 【Linux】从内存布局到信号屏蔽:Linux 内核态与用户态交互核心知识点汇总
  • Docker:创建自定义容器,附通用Python 3.12模板
  • 从开源到智能体:OpenCSG 的长期主义
  • 合肥的网站建设州满分企业网
  • java通过模板渲染PDF报告
  • 基于 Verl 前端与 Atlas A3 集群的 DeepSeek-R1 模型 RL 训练优化实践:Cann-recipes-train 仓库技术深度解读