当前位置: 首页 > news >正文

MIT Cheetah-Software编译手记:搞定Qt5.10.0路径、LCM依赖与那些诡异的C++报错

MIT Cheetah-Software编译实战:Qt路径配置、LCM依赖与C++报错深度解析

1. 环境准备与依赖管理

在Ubuntu 20.04环境下编译MIT Cheetah-Software,首先需要确保系统基础环境配置正确。不同于普通开源项目,这个四足机器狗的控制系统对Qt版本、LCM消息中间件和Eigen库有着严格的要求。

关键依赖版本要求

Qt == 5.10.0 LCM >= 1.4.0 Eigen >= 3.3.7

注意:Qt 5.10.0是项目明确要求的版本,其他版本可能导致界面兼容性问题。建议在全新环境中安装,避免与其他Qt项目产生冲突。

安装基础开发工具链:

sudo apt update && sudo apt upgrade -y sudo apt install -y build-essential cmake git libglib2.0-dev \ mesa-common-dev freeglut3-dev coinor-libipopt-dev \ libblas-dev liblapack-dev gfortran

2. Qt 5.10.0定制化安装

Qt作为图形界面框架,其路径配置是编译过程中的第一个拦路虎。官方提供的find_qt_path.sh脚本常因路径不匹配导致编译失败。

正确安装步骤

  1. 下载Qt 5.10.0离线安装包(约2.3GB)
  2. 赋予执行权限:
    chmod +x qt-opensource-linux-x64-5.10.0.run
  3. 执行安装并仅勾选以下组件:
    • Qt 5.10.0 → Desktop gcc 64-bit
    • Qt Charts
    • Qt Data Visualization

安装完成后,需要修改项目中的路径查找脚本:

# 修改Cheetah-Software/scripts/find_qt_path.sh sed -i 's/Qt5/Qt5.10.0/g' scripts/find_qt_path.sh

常见问题解决方案:

问题现象解决方法
找不到qmake检查~/.bashrc中QT_PATH环境变量
界面无法启动安装libxcb-xinerama0:sudo apt install libxcb-xinerama0
插件加载失败设置QT_PLUGIN_PATH指向Qt5.10.0/plugins

3. LCM消息中间件网络问题攻坚

LCM(Lightweight Communications and Marshalling)是项目实时通信的核心组件,其安装过程常因网络问题受阻。

稳定安装方案

  1. 使用Git镜像源加速克隆:
    git clone https://gitee.com/mirrors/lcm.git
  2. 手动编译安装:
    cd lcm && mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make -j$(nproc) sudo make install
  3. 验证安装:
    lcm-gen --version

提示:如果遇到Python绑定问题,需确保安装了python3-dev:

sudo apt install python3-dev

4. C++编译报错深度解析

项目采用严格的编译选项,将警告视为错误(-Werror),这导致许多开发者卡在最后一步。以下是典型报错及解决方案:

4.1 stringop-truncation错误

error: ‘char* __builtin_strncpy()’ specified bound equals destination size [-Werror=stringop-truncation]

解决方案: 修改项目根目录CMakeLists.txt:

# 将 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror") # 改为 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra")

4.2 内存不足引发的编译中断

fatal error: Killed signal terminated program cc1plus

临时交换分区创建

sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

4.3 缺失stropts.h头文件

fatal error: stropts.h: No such file or directory

变通解决方案

sudo touch /usr/include/stropts.h echo "#include <sys/ioctl.h>" | sudo tee -a /usr/include/stropts.h

5. 编译优化与调试技巧

经过上述步骤后,推荐采用以下编译策略:

  1. 首次编译使用单线程:
    make -j1
  2. 成功后改用多线程加速:
    make -j$(nproc)
  3. 针对性重新编译:
    touch src/common/CMakeLists.txt && make

性能优化参数

# 在CMakeLists.txt中添加 set(CMAKE_CXX_FLAGS_RELEASE "-O3 -march=native") set(CMAKE_C_FLAGS_RELEASE "-O3 -march=native")

6. 仿真环境验证

成功编译后,通过以下命令启动仿真:

./sim/sim & ./user/MIT_Controller/mit_ctrl m s

常见仿真问题排查

现象检查点
无四肢显示确认MIT_Controller是否正确编译
关节抖动检查simulator.ini中的PD参数
无法站立验证robot_params.yaml中的质量参数

在VMware环境中,建议分配至少4核CPU和8GB内存以获得流畅的仿真体验。如果遇到图形渲染问题,可以尝试改用VirtualBox或物理机安装Ubuntu。

http://www.jsqmd.com/news/851478/

相关文章:

  • 两百元预算玩转OpenHarmony标准系统:低成本开发板硬件选型与驱动开发实战
  • 如何用BilibiliDown轻松下载B站视频:新手完整指南
  • Layerdivider深度解析:5步实现智能图像分层,生成专业级PSD文件
  • 2026年成都清水建筑模板批发新趋势,厂家直供更省心 - GrowthUME
  • 2026年B站游戏业务:稳住盈利,两手抓战略寻增量!
  • 从滑动变阻器到真实传感器:STM32CubeMX ADC单通道采集电压的校准与数据处理实战
  • 5分钟告别桌面混乱:免费开源工具NoFences帮你打造高效工作空间
  • 【亲测免费】 开源之旅:ChatGPT-Next-Web,跨平台的智能对话界面
  • 别再只用来测网速了!手把手教你用Win11自带的IIS,5分钟搭个能分享文件的局域网小网站
  • NLP-Models-Tensorflow核心算法详解:从Bahdanau到Luong Attention的演进
  • 2026年建筑模板加工厂精选指南:品质与服务并重的选择 - GrowthUME
  • C++-练习-109
  • 深入解析浏览器端音频解密的5大核心技术:WebAssembly性能优化与安全架构
  • 告别手动调参!用Python脚本批量运行DSSAT模型,5分钟搞定上百个农田情景模拟
  • FreeRDP 终极指南:如何构建跨平台远程桌面解决方案
  • 2026年杭州抗变形建筑模板批发厂家有何独特优势? - GrowthUME
  • setup-java高级配置指南:如何自定义Java架构、包类型和本地安装
  • LFSR不止能生成随机数:盘点数字IC设计中那些意想不到的妙用(从PRBS测试到BIST设计)
  • 从芯片手册到CubeMX:手把手教你搞定STM32G431RBT6的时钟树与中断配置
  • 2026年自建房新趋势:支模木方如何引领绿色建筑革命 - GrowthUME
  • Newbie-Guideline数据库实战:SQL查询与ER模型设计的完整教程
  • 2026年AI搜索优化服务商怎么选?深度对比GEO方案与品牌 - GrowthUME
  • PHP Font Lib 实战:从零开始创建字体处理应用程序
  • FinalShell vs. Xshell:深度对比后,我为什么选它做主力SSH工具?附独家配置优化心得
  • TTK(Ops Test Tool Kit):昇腾CANN算子库的终极自动化测试框架完整指南
  • 保姆级教程:在Ubuntu 20.04上从零跑通VoxelNet(KITTI数据集+TensorFlow 1.14)
  • 2026年支模木方订做攻略:如何挑选靠谱厂家不踩坑 - GrowthUME
  • 3分钟搞定!Windows上安装Android应用的终极指南:APK Installer完全教程
  • 分享10款实测好用的降AI率软件(2026年3月版) - 殷念写论文
  • STM32CUBEMX+Keil AC6编译提速实战:解决LWIP和绝对地址警告的坑