无人船 | 基于ROS的轻量级多无人艇自主导航仿真框架

发布于:2025-03-25 ⋅ 阅读:(31) ⋅ 点赞:(0)

目录

  • 1 前言
  • 2 多无人艇自主导航仿真框架
    • 2.1 配置模块(config)
    • 2.2 感知模块(perception)
    • 2.3 任务模块(task)
    • 2.4 路径规划模块(path planner)
    • 2.5 轨迹规划模块(trajectory planner)
    • 2.6 控制模块(controller)
  • 3 视频介绍
  • 4 使用说明

1 前言

无人水面艇USV是海上自主无人系统的关键组成部分,在民用、军用领域应用广泛,例如海上救援、水质测量、扫雷反潜等,因此对USV导航算法的研究具有重要意义。为了便于进行USV相关算法的验证与部署,本文介绍的这套基于ROS的多无人艇的自主导航仿真平台,轻量化地实现了建图、规划、控制等多种功能,同时自研框架保证了功能的高度可拓展和可定制

在这里插入图片描述

2 多无人艇自主导航仿真框架

如下图所示为本文展示的多无人艇自主导航仿真框架,接下来分小节介绍

在这里插入图片描述

2.1 配置模块(config)

首先介绍配置模块,主要分为

  • 参数配置
  • 插件配置
  • 环境配置
  • 可视化配置
  • 坐标系管理

五个主要功能

参数配置中设计了user_config.yaml文件,通过底层处理映射到roslaunch文件,便于配置无人艇的型号、采用的规划器、控制器等信息。插件配置管理着船桨、海浪等第三方模拟器,以及一些Rviz可视化工具。

请添加图片描述
环境配置可以在海洋场景中自定义障碍物,通过简单的大小位置配置即可,底层会自动在指定位置生成植入浮力插件的障碍物,用于测试USV的避障性能

在这里插入图片描述

在多USV环境中,每艘船需要可视化的数据可能很多,手动添加难免繁琐,为了便于测试,这套框架会自动根据用户设置的船体数量在Rviz中配置相应的可视化选项

在这里插入图片描述
除此之外,需要通过统一的坐标系管理,将分布式的船体坐标系进行连接

在这里插入图片描述

2.2 感知模块(perception)

与室内结构化导航系统不同,室外导航无法获取先验的大范围地图,因此点云处理并将其用于实时建图是首要的任务。在实时建图模块中,平台采用视线算法添加障碍栅格,并及时清除残影。平台同样支持代价地图及其插件的使用,便于在配置空间进行规划

在这里插入图片描述

2.3 任务模块(task)

move_base框架相比,我增加了一个任务模块服务于巡逻巡检等特殊场景。由于大多数任务调度可以建模为旅行商或多旅行商问题,因此我提供了一个tsp求解器,集成了贪心算法、遗传算法、粒子群算法等常用选项。在仿真中,我也设计了一个简单的状态机用于行为决策。

在这里插入图片描述

2.4 路径规划模块(path planner)

在明确要执行的任务后,无人艇需要规划一条从当前位置到任务点的最短路径,当然,这个任务点可以不从任务模块发出,而直接像move_base中由用户手动指定目标。路径规划集成了常用的图搜索、采样搜索等算法,增加了可视图、四叉树等拓扑搜索,以及更精细化的路径采样、插值等算法。

在这里插入图片描述

2.5 轨迹规划模块(trajectory planner)

在路径的基础上,需要基于无人艇运动学和动力学,生成可用于跟踪控制的轨迹。轨迹规划模块采用曲线生成、动力学搜索、LOS制导、轨迹优化等算法,为无人艇提供局部导航信息。由于无人艇的运动通常位于一个大范围环境,感知的局限性导致我们无法得知场景全貌,例如激光雷达扫描到未在建图上的障碍物。因此轨迹除了引导无人艇运动,还用于触发路径重规划。

在这里插入图片描述

2.6 控制模块(controller)

受到海风、海浪的影响,无人艇的跟踪控制难度远高于室内移动机器人。平台目前集成了基于运动学的PID控制,将进一步补充LQR、MPC等算法

3 视频介绍

基于ROS的轻量级多无人艇自主导航仿真平台

4 使用说明

本项目在ROS noetic上测试

  1. 安装ROS,推荐安装桌面完整版

  2. 安装依赖

    • conan
      pip install conan==1.59.0
      conan remote add conancenter https://center.conan.io
      
    • python
      sudo apt install python-is-python3
      
    • ROS依赖
      sudo apt install ros-noetic-map-server
      sudo apt install ros-noetic-velodyne*
      sudo apt install ros-noetic-hector-gazebo-plugins
      
  3. 编译代码

    cd scripts/
    ./build.sh
    
  4. 运行代码

    cd scripts/
    ./main.sh
    
  5. 使用wamv goal指定目标位置,启动导航

在这里插入图片描述

完整工程代码请联系下方博主名片获取


🔥 更多精彩专栏


👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

网站公告

今日签到

点亮在社区的每一天
去签到