news 2026/5/8 10:32:38

在Ubuntu 20.04上从零部署FAR Planner:一份包含键盘遥控和避坑的保姆级教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在Ubuntu 20.04上从零部署FAR Planner:一份包含键盘遥控和避坑的保姆级教程

在Ubuntu 20.04上从零部署FAR Planner:一份包含键盘遥控和避坑的保姆级教程

第一次接触FAR Planner时,我被它动态更新可见性图的能力所吸引——这种技术能让机器人在未知环境中像探险家一样自主探索。但真正动手部署时,才发现从环境配置到键盘控制的每个环节都可能遇到意想不到的"坑"。本文将带你用最直接的方式,在Ubuntu 20.04上完整部署FAR Planner,并解决那些官方文档没细说的实际问题。

1. 环境准备与依赖安装

在开始之前,确保你的Ubuntu 20.04系统已经安装了ROS Noetic。这是FAR Planner运行的基础环境。我遇到过不少问题都源于ROS环境配置不当,所以这一步千万不能马虎。

首先更新软件包列表并安装关键依赖:

sudo apt update sudo apt install -y libusb-dev git build-essential

特别注意libusb-dev是后续编译必不可少的依赖,缺少它会导致难以排查的链接错误。我曾经因为漏装这个包,花了两个小时排查编译错误。

接下来需要配置ROS工作空间。建议创建一个独立的工作目录,避免与现有ROS项目冲突:

mkdir -p ~/far_planner_ws/src cd ~/far_planner_ws catkin_make

2. 获取并编译自主探索开发环境

FAR Planner需要依赖Autonomous Exploration Development Environment运行。这个环境提供了一系列仿真场景和基础功能模块。

使用以下命令克隆仓库并切换到正确分支:

cd ~/far_planner_ws/src git clone https://github.com/HongbiaoZ/autonomous_exploration_development_environment.git cd autonomous_exploration_development_environment git checkout noetic # 对应Ubuntu 20.04的ROS版本

编译过程中最常见的两个问题:

  1. 权限问题:如果遇到权限错误,尝试用sudo chmod -R 755给目录赋权
  2. 依赖缺失:编译时如果报错缺少某些ROS包,用rosdep install自动安装

成功编译后,下载仿真环境数据(约500MB):

./src/vehicle_simulator/mesh/download_environments.sh

提示:如果下载速度慢,可以手动下载压缩包并解压到指定目录,这能节省大量时间。

3. 安装与配置FAR Planner核心功能

现在可以安装FAR Planner本体了。回到工作空间的src目录:

cd ~/far_planner_ws/src git clone https://github.com/MichaelFYang/far_planner.git

编译前需要特别注意几个关键点:

  • 确保所有依赖都已安装
  • 检查ROS环境变量是否正确设置
  • 确认系统Python版本为3.8(Ubuntu 20.04默认)

编译命令:

cd ~/far_planner_ws catkin_make -j$(nproc)

编译完成后,建议先测试基础功能是否正常:

source devel/setup.sh roslaunch vehicle_simulator system_campus.launch

在另一个终端运行:

source devel/setup.sh roslaunch far_planner far_planner.launch

如果RVIZ正常启动并显示仿真环境,说明基础功能已经就绪。

4. 实现键盘遥控:解决消息类型不匹配问题

官方文档对键盘控制的说明比较简略,实际使用时会发现teleop_twist_keyboard的默认消息类型与FAR Planner不兼容。以下是详细解决方案。

首先安装键盘控制节点:

sudo apt-get install ros-noetic-teleop-twist-keyboard

关键问题在于消息类型转换:

组件消息类型数据结构
teleop_twist_keyboardgeometry_msgs/Twist线性+角速度
FAR Plannergeometry_msgs/TwistStamped带时间戳的Twist

解决方法有两种:

方案一:修改键盘节点源码

  1. 找到键盘控制脚本位置:
    locate teleop_twist_keyboard.py
  2. 备份原文件后,用支持TwistStamped的版本替换
  3. 修改关键参数:
    • 第22行:TwistTwistStamped
    • 第204行:FalseTrue

方案二:创建转换节点

更优雅的方式是编写一个简单的ROS节点做消息转换:

#!/usr/bin/env python3 import rospy from geometry_msgs.msg import Twist, TwistStamped def callback(data): twist_stamped = TwistStamped() twist_stamped.header.stamp = rospy.Time.now() twist_stamped.twist = data pub.publish(twist_stamped) rospy.init_node('twist_converter') pub = rospy.Publisher('/cmd_vel_stamped', TwistStamped, queue_size=10) rospy.Subscriber('/cmd_vel', Twist, callback) rospy.spin()

将上述代码保存为twist_converter.py,赋予执行权限后运行:

chmod +x twist_converter.py rosrun your_package twist_converter.py

5. 常见问题排查与性能优化

即使按照步骤操作,仍可能遇到各种问题。以下是几个典型场景的解决方案:

问题1:Gazebo黑屏或模型加载失败

解决方法:

sudo apt-get install --reinstall ros-noetic-gazebo-ros-pkgs export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/far_planner_ws/src/autonomous_exploration_development_environment/src/vehicle_simulator/meshes

问题2:TF树报错

常见错误是时间戳不同步,解决方法:

rosparam set /use_sim_time true

问题3:规划器反应迟钝

可以调整FAR Planner的线程占用比例:

<!-- 修改far_planner.launch文件 --> <param name="update_graph_thread_ratio" value="0.2" />

性能优化建议:

  1. far_planner.launch中调整这些参数:
    <param name="kUpdateGraphInterval" value="0.1" /> <param name="kAdmissibleCost" value="1.5" />
  2. 对于复杂环境,增加规划器更新频率
  3. 在低配设备上,降低RVIZ的显示质量

6. 扩展应用:连接真实设备与自定义环境

当需要在真实机器人上部署时,启动命令有所不同:

roslaunch vehicle_simulator system_real_robot.launch

连接真实激光雷达需要配置正确的topic名称。修改loam_interface.launch文件:

<param name="pointCloudTopic" value="/laser_cloud" />

创建自定义仿真环境的步骤:

  1. 准备3D模型文件(.dae或.stl格式)
  2. 放入src/vehicle_simulator/meshes目录
  3. 创建对应的launch文件,参考现有环境模板
  4. 在RVIZ中调整显示参数

对于想使用ROS bag数据测试的用户,建议这样播放:

rosbag play --clock your_bag.bag

同时需要在local_planner.launch中设置:

<param name="use_sim_time" value="true" />

7. 高级调试技巧与可视化优化

熟练使用RVIZ的调试工具能大幅提高开发效率。几个实用技巧:

  • Ctrl+Shift+A显示所有交互标记
  • 使用Focus Camera功能锁定视角
  • 通过Panel > Add New Panel添加自定义视图

可视化可见性图的技巧:

  1. 在RVIZ中添加MarkerArray显示
  2. 设置颜色透明度为0.3以便观察底层环境
  3. 使用Toggle按钮临时关闭某些显示

记录调试数据的方法:

rosbag record -O debug.bag /far_planner/graph /far_planner/path

分析数据时,可以使用rqt_plot观察关键指标:

rqt_plot /far_planner/path/length

我在实际项目中发现,当机器人卡住时,检查这些方面最有效:

  1. 可见性图的覆盖范围是否足够
  2. 当前路径的成本值是否突然增大
  3. 最新的传感器数据是否正常更新
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 10:30:08

终极指南:轻松突破《原神》60帧限制,享受高刷新率游戏体验

终极指南&#xff1a;轻松突破《原神》60帧限制&#xff0c;享受高刷新率游戏体验 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock genshin-fps-unlock是一款专门为《原神》玩家设计的帧率…

作者头像 李华
网站建设 2026/5/8 10:30:08

ydotool开发指南:理解uinput框架与虚拟设备创建原理

ydotool开发指南&#xff1a;理解uinput框架与虚拟设备创建原理 【免费下载链接】ydotool Generic command-line automation tool 项目地址: https://gitcode.com/gh_mirrors/yd/ydotool 一、什么是uinput框架&#xff1f; uinput是Linux内核提供的一个强大框架&#x…

作者头像 李华
网站建设 2026/5/8 10:29:40

Unity点云可视化终极指南:Pcx插件实现高效三维数据渲染

Unity点云可视化终极指南&#xff1a;Pcx插件实现高效三维数据渲染 【免费下载链接】Pcx Point cloud importer & renderer for Unity 项目地址: https://gitcode.com/gh_mirrors/pc/Pcx 在Unity中处理点云数据一直是3D开发者的技术痛点&#xff0c;但Pcx插件彻底改…

作者头像 李华
网站建设 2026/5/8 10:28:00

华硕笔记本性能降温利器:G-Helper降压调校实战指南

华硕笔记本性能降温利器&#xff1a;G-Helper降压调校实战指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Exper…

作者头像 李华
网站建设 2026/5/8 10:27:05

抖音下载器使用指南:3步轻松保存喜欢的视频和直播

抖音下载器使用指南&#xff1a;3步轻松保存喜欢的视频和直播 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …

作者头像 李华