松灵机器人scout mini 自主导航(5)——采用CMU团队导航策略
重操旧业,最近实验室又需要测试无人车导航算法,因此又重新启动了松灵机器人scout mini小车 自主导航项目。通过调研,最终选择了前几年比较火的CMU团队的策略(https://www.cmu-exploration.com/)。
CMU exploration 介绍
CMU exploration是一项非常优秀的开源工作,得到了广泛的认可。作者等人维护了一个社区用于解答提问,详细可见链接
参考引用
算法方面我就不做过多的介绍了,详细可见对应的论文和代码地址,本文只介绍在仿真配置流程和过程中遇到的一系列问题。
- ICRA 2022:Autonomous Exploration Development Environment and the Planning Algorithms
- IROS 2022:FAR planner: Fast, attemptable route planner using dynamic visibility update
FAR planner
仿真小车搭建
在之前的文章中我们已经实现了小车仿真环境搭建,并成功实现了LIO-SAM算法仿真。详细内容可以参考链接
https://www.cnblogs.com/binbin2002/p/18499013
导航环境搭建
CMU团队开发了一个详细的仿真环境,;里面包含室内环境、校园、停车场、隧道、森林等仿真环境。

# 1.安装依赖
sudo apt update
sudo apt install libusb-dev
# 2. 克隆源码
git clone https://github.com/HongbiaoZ/autonomous_exploration_development_environment.git
# 3.分支检查与编译安装
cd autonomous_exploration_development_environment
git checkout melodic # Ubuntu 20.04 则将 melodic 替换为 noetic
catkin_make
# 4. 通过脚本安装仿真环境
./src/vehicle_simulator/mesh/download_environments.sh
# 5. 启动开发环境
source devel/setup.sh
roslaunch vehicle_simulator system_xxx.launch
# xxx 可替换为对应的 5 种环境之一:campus、forest、garage、indoor、tunnel
# 案例:发送一系列 waypoint,同时发送导航边界和速度,车辆在跟踪 waypoint 的同时在边界内行驶(另开一个终端)
cd autonomous_exploration_development_environment
source devel/setup.sh
roslaunch waypoint_example waypoint_example_garage.launch
规划算法搭建
CMU提供了多个导航算法,例如far_planner tare_planner,DSVP等导航策略。可以根据需求自己选择规划方法
- 方法1 :采用tare_planner
# 1. 克隆源码
git clone https://github.com/caochao39/tare_planner.git
# 2. 编译安装
cd tare_planner
catkin_make
# 3. 启动开发环境
cd ~/autonomous_exploration_development_environment
source devel/setup.sh
roslaunch vehicle_simulator system_xxx.launch
# xxx 可替换为对应的 5 种环境之一:campus、forest、garage、indoor、tunnel
# 4. 启动 TARE(另开一个终端)
cd ~/tare_planner
source devel/setup.sh
roslaunch tare_planner explore_xxx.launch
- 方法2:采用 far_planner
# 1. 克隆源码
git clone https://github.com/MichaelFYang/far_planner
# 2. 编译安装
cd far_planner
catkin_make
# 3. 启动开发环境
cd ~/autonomous_exploration_development_environment
source devel/setup.sh
roslaunch vehicle_simulator system_xxx.launch
# xxx 可替换为对应的 5 种环境之一:campus、forest、garage、indoor、tunnel
# 4. 启动 FAR Planner(另开一个终端)
cd ~/far_planner
source devel/setup.sh
roslaunch far_planner far_planner.launch
仿真启动效果
启动 autonomous_exploration_development_environment(以garage为例)
在system_garage.launch中,修改 gazebo_gui为true,可以启动gazebo环境仿真
启动仿真环境效果如下:

启动 far_planner 规划
启动 far_planner 效果如下:

可以通过rviz选择goalpoint 用于导航
右边的按钮作用如下:
- Reset Visibility Graph:
- 重置可视图. 算法中会提供各个环境中已经探索完的全局V-graph,可以进行重置可视图。同时可以通过勾选 Update Visibility Graph,动态更新可试图。
- 如果想read V-graph 进来然后快速的进行规划和导航操作。此时便可把 Update Visibility Graph 取消勾选(如果环境是动态的则需要勾选以实现更新)
- Resume Navigation to Goal:
- 重新设置导航目标点
- Read & Save:
- 保存已经探索生成的V-Graph / 读取之前保存的V-Graph
- Planning Attemptable:
- 如果取消勾选,则系统默认只会规划已知环境的路径(不会去尝试未知区域),当把 Goalpoint 放在未知区域时才会自动切换为 Attemptable 模式下的规划
CMU exploration与scout mini 小车+LIO-SAM结合
修改loam_interface.launch 接口
算法还提供了system_real_robot.launch能够直接进行实车部署。实车和用他自带的仿真环境在于定位方法不一定。
- gazebo仿真中采用的时gazebo自带的真实位置定位
- 实车则采用SLAM算法进行定位和建图
幸运的是,他们开放了SLAM外部接口。能够兼容目前市场上主流的激光SLAM算法:LOAM、A-LOAM、LeGO-LOAM、LIO-SAM、LIO-mapping、FAST-LIO2、Faster-LIO
- stateEstimationTopic = /lio_sam/mapping/odometry
- registeredScanTopic = /lio_sam/mapping/cloud_registered
- flipStateEstimation = false
- flipRegisteredScan = false
下面我们以之前的LIO-SAM为例进行说明
<!-- loam-interface.launch内容如下 -->
<launch>
<node pkg="loam_interface" type="loamInterface" name="loamInterface" output="screen" required="true">
<param name="stateEstimationTopic" type="string" value="/lio_sam/mapping/odometry" />
<param name="registeredScanTopic" type="string" value="/lio_sam/mapping/cloud_registered" />
<!-- 不同的slam算法发布的odometry以及registered cloud坐标系不一样,需要修改话题名称。而且,不同坐标系的方向不一样,有时候需要进行坐标旋转转换,需要坐标转换则需要修改flipStateEstimation 为true -->
<param name="flipStateEstimation" type="bool" value="false" />
<param name="flipRegisteredScan" type="bool" value="false" />
<param name="sendTF" type="bool" value="true" />
<param name="reverseTF" type="bool" value="false" />
</node>
</launch>
loam_interface相关设置链接: https://pan.baidu.com/s/14zw6TNMD4kDjT5vkh2tgmw?pwd=d72x
提取码:d72x
仿真运行
# 1.启动scout mini 仿真
cd scout_gazebo_sim
source devel/setup.bash
roslaunch scout_gazebo_sim scout_mini_playpen.launch
# 2.启动LIO-SAM
source devel/setup.bash
roslaunch lio_sam run.launch
# 3.启动 CMU_explaration real_robot
cd CMU_exploaration
source devel/setup.bash
roslaunch vehicle_simulator system_real_robot.launch
# 4.启动 far_planner
source devel/setup.bash
roslaunch far_planner far_planner.launch
启动scout 仿真

启动LIO-SAM

启动 system_real_robot.launch

启动 far planner

- 导航效果图

遇到问题汇总
1. cmd_vel 话题类型不对
[ERROR] [1745573906.144386448]: Client [/scout_skid_steer_controller] wants topic /cmd_vel to have datatype/md5sum [geometry_msgs/Twist/9f195f881246fdfa2798d1d3eebca84a], but our version has [geometry_msgs/TwistStamped/98d34b0043a2093cf9d9345ab6eef12e]. Dropping connection.
在实际操作中发现cmd_vel话题不对,询问chatgpt发现是cmd_vel的类型不对,一个是geometry_msgs/Twist类型,一个是geometry_msgs/TwistStamped 类型。我们需要保证消息类型一致
解决方法: 修改src/autonomous_exploration_development_environment/src/local_planner/src/pathFollower.cpp中的cmd_vel的类型。
//pathFollower.cpp 的226-229行
// ros::Publisher pubSpeed = nh.advertise<geometry_msgs::TwistStamped> ("/cmd_vel", 5);
// geometry_msgs::TwistStamped cmd_vel;
// cmd_vel.header.frame_id = "vehicle";
ros::Publisher pubSpeed = nh.advertise<geometry_msgs::Twist>("/cmd_vel", 5);
geometry_msgs::Twist cmd_vel;
//pathFollower.cpp 的335-343行
// if (pubSkipCount < 0) {
// cmd_vel.header.stamp = ros::Time().fromSec(odomTime);
// if (fabs(vehicleSpeed) <= maxAccel / 100.0) cmd_vel.twist.linear.x = 0;
// else cmd_vel.twist.linear.x = vehicleSpeed;
// cmd_vel.twist.angular.z = vehicleYawRate;
// pubSpeed.publish(cmd_vel);
// pubSkipCount = pubSkipNum;
// }
if (pubSkipCount < 0) {
if (fabs(vehicleSpeed) <= maxAccel / 100.0) cmd_vel.linear.x = 0;
else cmd_vel.linear.x = vehicleSpeed;
cmd_vel.angular.z = vehicleYawRate;
pubSpeed.publish(cmd_vel);
pubSkipCount = pubSkipNum;
}
重新编译即可。
松灵机器人scout mini 自主导航(5)——采用CMU团队导航策略的更多相关文章
- QT--图灵机器人
QT--图灵机器人 1.登陆图灵机器人官网注册一个图灵机器人 2.获取apikey 3.pro文件添加 QT += core gui network 4.头文件 #include < ...
- weiphp---------图灵机器人存在的bug。
1.很多人下载下来weiphp源码以后,配置好了图灵机器人却不能使用.原因是因为他源码里面存在一个小bug 上图红色框框内是他的源码,问题就出在这里. 修改方法: if($result ['code' ...
- ROS::message_filters中的一个报错(mt::TimeStamp……)
『方便检索』 ros::Time msg_time = mt::TimeStamp<typename mpl::at_c<Messages, i>::type>::value( ...
- 机器人与机器人仿真技术(zz)
http://www.viblue.com/archives/5587.htm 一.机器人简介: 机器人(Robot)是自动执行工作的机器装置.它既可以接受人类指挥,又可以运行预先编排的程序,也可以根 ...
- ROS探索总结(十七)——构建完整的机器人应用系统
上一篇博客介绍了HRMRP机器人平台的设计,基于该平台,可以完成丰富的机器人应用,以较为典型的机器人导航为例,如何使用HRMRP来完成相应的功能?本篇博客将详细介绍如何将HRMRP应用到 ...
- ROS探索总结(十六)——HRMRP机器人的设计
1. HRMRP简介 HRMRP(Hybrid Real-time Mobile Robot Platform,混合实时移动机器人平台)机器人是我在校期间和实验室的其他小伙伴一起从零开 ...
- Mini projects #3 ---- Stopwatch: The Game
课程全名:An Introduction to Interactive Programming in Python,来自 Rice University 授课教授:Joe Warren, Scott ...
- Android智能聊天机器人
http://www.tuling123.com/ 注册一个账号,申请一个KEY值.此网站也有文档,可以查看. package com.tulingdemo; import java.te ...
- CetenOS 6.9 搭建hubot运维机器人
前言 Hubot是由Github开发的开源聊天机器人,基于Node.js采用CoffeeScript编写 可以借助Hubot开发Chatbot来自动化的完成想要一切自动化任务,比如: -运维自动化(编 ...
- 使用yocs_cmd_vel_mux进行机器人速度控制切换
cmd_vel_mux包从名字就可以推测出它的用途,即进行速度的选择(In electronics, a multiplexer or mux is a device that selects one ...
随机推荐
- 如何在WPS和Word/Excel中直接使用DeepSeek功能
以下是将DeepSeek功能集成到WPS中的详细步骤,无需本地部署模型,直接通过官网连接使用:1. 下载并安装OfficeAI插件 (1)访问OfficeAI插件下载地址:https://www.of ...
- Linux mint的hadoop安装方法
参考网址http://www.powerxing.com/install-hadoop/ 1.创建hadoop账户 这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 sh ...
- 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版
一.今天发现百度搜索出现已接入DeepSeek的提示,再也不用担心使用DeepSeek时出现"服务器繁忙,请稍后再试."的问题了. 在百度搜索首页出现[即刻体验AI搜索Deep ...
- NebKit简介及工作流程
引言 随着云计算技术的不断发展,容器化技术已成为现代软件开发和部署的重要组成部分.NebKit作为一个创新的容器编排和管理工具,旨在简化这一过程,提高开发效率和系统的可靠性.本文将对NebKit进行简 ...
- 使用cy7c68013调试mt9v011 ov7670 摄像头测试 icamera视频采集调试
使用cy7c68013调试mt9v011 ov7670 摄像头测试 icamera视频采集调试 采集底板选用cp601d,原理图参考icamera设计,使用cy7c68013a芯片设计,固件刷ic ...
- C#/.NET/.NET Core技术前沿周刊 | 第 28 期(2025年2.24-2.28)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 李沐动手学深度学习V2-chapter_linear-networks
李沐动手学深度学习V2 文章内容说明 本文主要是自己学习过程中的随手笔记,需要自取 课程参考B站:https://space.bilibili.com/1567748478?spm_id_from=3 ...
- pip 提示import error,cannot import name locations
出现这个问题的原因: 环境中没有安装年文件 安装了,环境路径错误 解决如下: 首先 执行升级命令 升级到最新 python -m pip install -U pip 再到site-packages目 ...
- Selenium 报错 提示“unable to find an ant file to run”
解决:我采用方法2解决成功 翻译:不能找到执行文件 出现问题原因:这个文件是我从电脑A拷贝到电脑B,缺少相应文件导致
- 1、从DeepSeek API调用到Semantic Kernel集成:深度解析聊天机器人开发全链路
引言:AI时代下的聊天机器人开发范式演进 在生成式AI技术爆发的当下,基于大语言模型(LLM)的聊天机器人开发已形成标准化技术链路.本文将结合DeepSeek API与微软Semantic Kerne ...