ROS导航实现之路径规划

这篇具有很好参考价值的文章主要介绍了ROS导航实现之路径规划。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导航实现之路径规划

  move_base 功能包提供了基于动作(action)的路径规划实现,move_base 可以根据给定的目标点,控制机器人底盘运动至目标位置,并且在运动过程中会连续反馈机器人自身的姿态与目标点的状态信息,move_base主要由全局路径规划与本地路径规划组成。

  move_base已经被集成到了navigation包,可以通过如下命令安装:

sudo apt install ros-<ROS版本>-navigation

(1)构建适用于机器人导航的代价地图

  由于导航过程中,障碍物信息是可变的,导航时机器人需要实时获取当前的障碍物信息,且机器人在靠近障碍物边缘时,可能会由于惯性、机器人体的不规则外形,在转弯等过程中发生碰撞,SLAM构建的静态地图在导航中是不可以直接使用的,需要构建实时获取数据和障碍物膨胀后的代价地图。

代价地图:

  • 全局代价地图(全局路径规划)

  • 本地代价地图(本地路径规划)

(2)使用move_base功能包编写路径规划相关得launch文件

  复制调用模板,将功能包修改为自己功能包得名字

<launch>

    <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
        <rosparam file="$(find 功能包)/param/costmap_common_params.yaml" command="load" ns="global_costmap" />
        <rosparam file="$(find 功能包)/param/costmap_common_params.yaml" command="load" ns="local_costmap" />
        <rosparam file="$(find 功能包)/param/local_costmap_params.yaml" command="load" />
        <rosparam file="$(find 功能包)/param/global_costmap_params.yaml" command="load" />
        <rosparam file="$(find 功能包)/param/base_local_planner_params.yaml" command="load" />
    </node>

</launch>

(3)设置配置文件

  在功能包里新建文件夹命名为param,将上文中得launch文件里涉及的配置文件名新建到这个文件夹中

  粘贴标准例程中的代码,把各种坐标系名称和机器人几何参数修改到与自己的项目匹配。

  • costmap_common_params.yaml

  该文件是move_base 在全局路径规划与本地路径规划时调用的通用参数,包括:机器人的尺寸、距离障碍物的安全距离、传感器信息等。配置参考如下:

#机器人几何参,如果机器人是圆形,设置 robot_radius,如果是其他形状设置 footprint
robot_radius: 0.12 #圆形
# footprint: [[-0.12, -0.12], [-0.12, 0.12], [0.12, 0.12], [0.12, -0.12]] #其他形状

obstacle_range: 3.0 # 用于障碍物探测,比如: 值为 3.0,意味着检测到距离小于 3 米的障碍物时,就会引入代价地图
raytrace_range: 3.5 # 用于清除障碍物,比如:值为 3.5,意味着清除代价地图中 3.5 米以外的障碍物


#膨胀半径,扩展在碰撞区域以外的代价区域,使得机器人规划路径避开障碍物
inflation_radius: 0.2
#代价比例系数,越大则代价值越小
cost_scaling_factor: 3.0

#地图类型
map_type: costmap
#导航包所需要的传感器
observation_sources: scan
#对传感器的坐标系和数据进行配置。这个也会用于代价地图添加和清除障碍物。例如,你可以用激光雷达传感器用于在代价地图添加障碍物,再添加kinect用于导航和清除障碍物。
scan: {sensor_frame: laser, data_type: LaserScan, topic: scan, marking: true, clearing: true}
Copy
  • global_costmap_params.yaml

  该文件用于全局代价地图参数设置:

global_costmap:
  global_frame: map #地图坐标系
  robot_base_frame: base_footprint #机器人坐标系
  # 以此实现坐标变换

  update_frequency: 1.0 #代价地图更新频率
  publish_frequency: 1.0 #代价地图的发布频率
  transform_tolerance: 0.5 #等待坐标变换发布信息的超时时间

  static_map: true # 是否使用一个地图或者地图服务器来初始化全局代价地图,如果不使用静态地图,这个参数为false.
Copy
  • local_costmap_params.yaml

  该文件用于局部代价地图参数设置:

local_costmap:
  global_frame: odom #里程计坐标系
  robot_base_frame: base_footprint #机器人坐标系

  update_frequency: 10.0 #代价地图更新频率
  publish_frequency: 10.0 #代价地图的发布频率
  transform_tolerance: 0.5 #等待坐标变换发布信息的超时时间

  static_map: false  #不需要静态地图,可以提升导航效果
  rolling_window: true #是否使用动态窗口,默认为false,在静态的全局地图中,地图不会变化
  width: 3 # 局部地图宽度 单位是 m
  height: 3 # 局部地图高度 单位是 m
  resolution: 0.05 # 局部地图分辨率 单位是 m,一般与静态地图分辨率保持一致
Copy
  • base_local_planner_params

  基本的局部规划器参数配置,这个配置文件设定了机器人的最大和最小速度限制值,也设定了加速度的阈值。

TrajectoryPlannerROS:

# Robot Configuration Parameters
  max_vel_x: 0.5 # X 方向最大速度
  min_vel_x: 0.1 # X 方向最小速速

  max_vel_theta:  1.0 # 
  min_vel_theta: -1.0
  min_in_place_vel_theta: 1.0

  acc_lim_x: 1.0 # X 加速限制
  acc_lim_y: 0.0 # Y 加速限制
  acc_lim_theta: 0.6 # 角速度加速限制

# Goal Tolerance Parameters,目标公差
  xy_goal_tolerance: 0.10
  yaw_goal_tolerance: 0.05

# Differential-drive robot configuration
# 是否是全向移动机器人
  holonomic_robot: false

# Forward Simulation Parameters,前进模拟参数
  sim_time: 0.8
  vx_samples: 18
  vtheta_samples: 20
  sim_granularity: 0.05

(4)新建launch文件,将需要的map_server服务、amcl服务、rviz启动集成

<launch>
    <!-- 设置地图的配置文件 -->
    <arg name="map" default="nav.yaml" />
    <!-- 运行地图服务器,并且加载设置的地图-->
    <node name="map_server" pkg="map_server" type="map_server" args="$(find navigation)/map/$(arg map)"/>
    <!-- 启动AMCL节点 -->
    <include file="$(find navigation)/launch/amcl.launch" />

    <!-- 运行move_base节点 -->
    <include file="$(find navigation)/launch/path.launch" />
    <!-- 运行rviz -->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find navigation)/rviz/navigation_test.rviz" />

</launch>

(5)启动gazebo仿真环境,运行集成后的launch文件,即可实现导航

(6)测试,可以看到gazebo和rviz都启动了,添加rviz组件:RobotModel、Map、Posearray、odometry

ROS导航实现之路径规划

  通过菜单栏上方的2D Nav Goal设置目标点,会发现小车会自行朝目标点运动
  此外,我们还可以通过继续选择map的不同话题,得到全局和局部的代价地图(如下图所示),也可以选择添加Path,看到全局路径规划和局部路径规划的可视化结果

ROS导航实现之路径规划

路径规划文章来源地址https://www.toymoban.com/news/detail-482174.html

到了这里,关于ROS导航实现之路径规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ROS中实现A*路径规划

    学习A*路径规划算法,优化启发函数,并在ROS中进行测试。 A star算法教程 源码地址:https://gitcode.net/VOR234/aster 安装Linux系统,建议Ubuntu18.04; 安装ROS环境并学习其基本操作; 查找A 路径规划资料,学习并熟知A 路径规划算法; 对比赛中所提供A*算法的启发函数AstarPathFinder::ge

    2024年01月16日
    浏览(33)
  • 【ROS-Navigation】—— DWA路径规划算法解析

        最近在学习ROS的navigation部分,写些东西作为笔记,方便理解与日后查看。本文从Astar算法入手,对navigation源码进行解析。 PS:ros navigation源码版本https://gitcode.net/mirrors/ros-planning/navigation/-/tree/noetic-devel DWA具体的算法原理在之前的博客(见自动驾驶路径规划——DWA(动态

    2023年04月16日
    浏览(31)
  • 【ROS-Navigation】—— Astar路径规划算法解析

        最近在学习ROS的navigation部分,写些东西作为笔记,方便理解与日后查看。本文从Astar算法入手,对navigation源码进行解析。 PS:ros navigation源码版本https://gitcode.net/mirrors/ros-planning/navigation/-/tree/noetic-devel     对于Astar算法,想必大家都非常熟悉了。具体算法原理就不

    2024年01月18日
    浏览(48)
  • cartographer,ros,路径规划近两年的工作笔记

    马上转入cartographer的去ros移植了,随便记录一下研究cartographer和ros这些天来的摸鱼笔记吧虽然很多人对用ros做产品嗤之以鼻,但是我个人是不排斥的,对代码能力有限的人群来说这是产品化最快的方式! 敝帚自珍~~~继续加油~~~ odom 尤其是转弯的时候,存在累积误差,以惯导

    2024年02月06日
    浏览(38)
  • Apollo和autoware规划算法代码ros移植-路径规划可跑工程分享

    之前出了: Apollo规划代码ros移植-Lattcie的二次规划. Apollo规划代码ros移植-Lattice规划框架. 规划代码ros移植-POMDP预测规划(一). Apollo规划代码ros移植-Em planner. Apollo规划代码ros移植-混合A*. Apollo规划代码ros移植-动态障碍物处理(一). 适合人群: 1.想移植Apollo,autoware等流行规划算法到

    2024年02月12日
    浏览(48)
  • 无人机飞行控制、导航和路径规划的原理、技术和相关算法

    无人机飞行控制、导航和路径规划是无人机技术的核心组成部分,其原理和技术涉及多个学科领域。这些技术和算法的不断发展和优化,为无人机的应用和发展提供更强有力的支持。下面解释它们的原理、技术和相关算法。 飞行控制: 无人机飞行控制的基本原理是通过传感

    2024年04月12日
    浏览(50)
  • 路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法 RRT*算法 针对传统RRT算

    2024年02月06日
    浏览(83)
  • 路径规划 | 图解Theta*算法(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法

    2024年02月11日
    浏览(61)
  • 路径规划 | 图解LPA*算法(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法

    2024年01月16日
    浏览(37)
  • 路径规划 | 图解D* Lite算法(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法 上节我们介绍了LPA*算

    2023年04月08日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包