news 2026/5/2 20:48:24

避坑指南:在Ubuntu 20.04/ROS Noetic上搞定Rotors Simulator(附常见编译错误解决)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
避坑指南:在Ubuntu 20.04/ROS Noetic上搞定Rotors Simulator(附常见编译错误解决)

避坑指南:在Ubuntu 20.04/ROS Noetic上搞定Rotors Simulator(附常见编译错误解决)

如果你正在Ubuntu 20.04上尝试运行Rotors Simulator进行无人机仿真,却频频遭遇依赖缺失、编译失败等问题,这篇文章就是为你准备的。不同于基于Ubuntu 16.04/Kinetic的传统教程,我们将直击新环境下的特殊痛点,提供经过实战验证的解决方案。

1. 环境准备与依赖安装

在Ubuntu 20.04上配置ROS Noetic环境时,有几个关键依赖项容易被忽略。首先确保已安装完整版ROS桌面环境:

sudo apt install ros-noetic-desktop-full

接下来是Rotors Simulator的核心依赖包,特别注意这些包在Noetic中的命名变化:

sudo apt install ros-noetic-joy ros-noetic-octomap-ros python3-wstool python3-catkin-tools protobuf-compiler libgeographic-dev ros-noetic-geographic-msgs ros-noetic-mavros ros-noetic-mavros-msgs ros-noetic-control-toolbox

常见问题1:如果遇到mav_msgs缺失错误,需要手动克隆mav_comm仓库:

cd ~/catkin_ws/src git clone https://github.com/ethz-asl/mav_comm.git

提示:国内用户可能会遇到GitHub克隆缓慢的问题,建议使用镜像源或先下载ZIP包再解压到工作空间

2. 源码获取与工作空间配置

Rotors Simulator的官方仓库位于ETHZ-ASL的GitHub,但直接克隆可能会遇到网络问题。推荐以下两种替代方案:

  1. 国内镜像源(以Gitee为例):

    git clone https://gitee.com/mirrors_ethz-asl/rotors_simulator.git
  2. 手动下载ZIP

    • 在浏览器访问仓库页面
    • 下载ZIP压缩包并解压到~/catkin_ws/src目录

配置工作空间时,建议使用以下命令初始化:

cd ~/catkin_ws catkin init catkin config --extend /opt/ros/noetic catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

3. 编译错误全解析

3.1 OGRE头文件缺失问题

在Noetic环境中编译时,最常见的错误是OGRE头文件路径问题:

fatal error: OgrePagedWorldSection.h: 没有那个文件或目录

解决方案是修改rotors_gazebo_plugins/CMakeLists.txt,添加正确的包含路径:

find_package(OGRE REQUIRED) include_directories( ${OGRE_INCLUDE_DIRS} ${OGRE_INCLUDE_DIRS}/Paging ${OGRE_INCLUDE_DIRS}/Terrain )

3.2 Protobuf版本冲突

Ubuntu 20.04默认安装的Protobuf版本可能与ROS Noetic不兼容。如果遇到相关错误,尝试:

sudo apt install libprotobuf-dev protobuf-compiler sudo apt remove libprotobuf-lite17 libprotobuf17

3.3 Gazebo插件链接错误

如果出现Gazebo插件相关的链接错误,可能需要重新安装Gazebo开发包:

sudo apt install libgazebo11-dev

4. 仿真启动与调试技巧

成功编译后,可以通过以下命令启动基础仿真场景:

roslaunch rotors_gazebo mav_hovering_example.launch mav_name:=firefly world_name:=basic

高级调试技巧

  1. Gazebo客户端分离:添加gui:=false参数可单独启动Gazebo服务器
  2. 日志记录:设置enable_logging:=true记录飞行数据
  3. 实时参数调整:使用rqt_reconfigure动态修改控制器参数
rosrun rqt_reconfigure rqt_reconfigure

5. 性能优化与扩展应用

5.1 多机仿真配置

修改launch文件可实现多无人机协同仿真。关键配置示例:

<group ns="uav1"> <include file="$(find rotors_gazebo)/launch/spawn_mav.launch"> <arg name="mav_name" value="uav1" /> </include> </group> <group ns="uav2"> <include file="$(find rotors_gazebo)/launch/spawn_mav.launch"> <arg name="mav_name" value="uav2" /> </include> </group>

5.2 自定义无人机模型

rotors_description/urdf目录下添加新的模型文件,主要包含:

  • 机身几何定义
  • 传感器配置
  • 动力系统参数

典型模型文件结构:

<?xml version="1.0"?> <robot name="custom_drone"> <link name="base_link"> <inertial> <mass value="0.5"/> <inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.02"/> </inertial> <visual> <geometry> <box size="0.1 0.1 0.05"/> </geometry> </visual> </link> <!-- 添加电机和螺旋桨 --> </robot>

6. 传感器集成实战

Rotors Simulator支持多种虚拟传感器集成。以下是在无人机上添加RGB相机的配置示例:

  1. 修改模型文件添加相机插件
  2. 配置图像话题和参数
  3. 通过ROS节点处理图像数据

典型相机配置代码片段:

<gazebo reference="camera_link"> <sensor type="camera" name="front_camera"> <update_rate>30</update_rate> <camera> <horizontal_fov>1.047</horizontal_fov> <image> <width>640</width> <height>480</height> </image> </camera> <plugin name="camera_controller" filename="libgazebo_ros_camera.so"> <ros> <namespace>camera</namespace> </ros> <camera_name>front</camera_name> <frameName>camera_link</frameName> <hackBaseline>0.07</hackBaseline> </plugin> </sensor> </gazebo>

7. 控制器调参与飞行测试

Rotors Simulator默认提供Lee位置控制器,其参数文件通常位于:

rotors_gazebo/resource/lee_controller_<model>.yaml

关键参数说明:

参数说明典型值
position_gain位置控制增益[5, 5, 10]
velocity_gain速度控制增益[3, 3, 4]
attitude_gain姿态控制增益[3, 3, 1]
angular_rate_gain角速率增益[0.5, 0.5, 0.2]

飞行测试时建议逐步调整参数:

  1. 先调姿态控制器确保稳定性
  2. 再调位置控制器达到目标精度
  3. 最后优化速度响应曲线
# 实时监控无人机状态 rostopic echo /firefly/odometry_sensor1/odometry
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 20:41:50

告别网盘限速:如何通过本地解析技术实现多平台文件高速下载

告别网盘限速&#xff1a;如何通过本地解析技术实现多平台文件高速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…

作者头像 李华
网站建设 2026/5/2 20:38:49

题解:AcWing 6055 最短路径

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来&#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构&#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

作者头像 李华
网站建设 2026/5/2 20:38:30

独立开发者如何利用Taotoken按需调用大模型并精准控制月度预算

独立开发者如何利用Taotoken按需调用大模型并精准控制月度预算 1. 预算控制的核心需求 独立开发者和小微团队在接入大模型服务时&#xff0c;往往面临预算有限的挑战。Taotoken提供的按token计费机制和用量监控功能&#xff0c;能够帮助开发者将AI成本控制在可预测范围内。与…

作者头像 李华
网站建设 2026/5/2 20:37:30

单北斗GNSS在变形监测中的应用与发展潜力探讨

本文将详细探讨单北斗GNSS在变形监测中的多元应用及其未来潜力&#xff0c;聚焦于位移监测的基本原理和技术优势。单北斗GNSS通过高精度的卫星定位技术&#xff0c;可以在各类基础设施和地质灾害监测中提供及时、准确的数据支持&#xff0c;例如在桥梁和隧道的实时监测中&#…

作者头像 李华
网站建设 2026/5/2 20:37:28

别再只传不管了!SAP请求传输后,用SCMP/SCU3做二次校验的完整流程

SAP请求传输后的二次校验&#xff1a;SCMP/SCU3深度操作指南 在SAP项目实施过程中&#xff0c;代码和配置的跨系统传输是日常开发工作的核心环节。许多开发团队常陷入一个误区&#xff1a;一旦点击了传输按钮&#xff0c;便默认所有对象都已成功迁移到目标系统。这种"传完…

作者头像 李华