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

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 gfortran2. Qt 5.10.0定制化安装Qt作为图形界面框架其路径配置是编译过程中的第一个拦路虎。官方提供的find_qt_path.sh脚本常因路径不匹配导致编译失败。正确安装步骤下载Qt 5.10.0离线安装包约2.3GB赋予执行权限chmod x qt-opensource-linux-x64-5.10.0.run执行安装并仅勾选以下组件Qt 5.10.0 → Desktop gcc 64-bitQt ChartsQt 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-xinerama0sudo apt install libxcb-xinerama0插件加载失败设置QT_PLUGIN_PATH指向Qt5.10.0/plugins3. LCM消息中间件网络问题攻坚LCMLightweight Communications and Marshalling是项目实时通信的核心组件其安装过程常因网络问题受阻。稳定安装方案使用Git镜像源加速克隆git clone https://gitee.com/mirrors/lcm.git手动编译安装cd lcm mkdir build cd build cmake -DCMAKE_BUILD_TYPERelease .. make -j$(nproc) sudo make install验证安装lcm-gen --version提示如果遇到Python绑定问题需确保安装了python3-devsudo apt install python3-dev4. C编译报错深度解析项目采用严格的编译选项将警告视为错误(-Werror)这导致许多开发者卡在最后一步。以下是典型报错及解决方案4.1 stringop-truncation错误error: ‘char* __builtin_strncpy()’ specified bound equals destination size [-Werrorstringop-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 /swapfile4.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.h5. 编译优化与调试技巧经过上述步骤后推荐采用以下编译策略首次编译使用单线程make -j1成功后改用多线程加速make -j$(nproc)针对性重新编译touch src/common/CMakeLists.txt make性能优化参数# 在CMakeLists.txt中添加 set(CMAKE_CXX_FLAGS_RELEASE -O3 -marchnative) set(CMAKE_C_FLAGS_RELEASE -O3 -marchnative)6. 仿真环境验证成功编译后通过以下命令启动仿真./sim/sim ./user/MIT_Controller/mit_ctrl m s常见仿真问题排查现象检查点无四肢显示确认MIT_Controller是否正确编译关节抖动检查simulator.ini中的PD参数无法站立验证robot_params.yaml中的质量参数在VMware环境中建议分配至少4核CPU和8GB内存以获得流畅的仿真体验。如果遇到图形渲染问题可以尝试改用VirtualBox或物理机安装Ubuntu。

相关文章:

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

MIT Cheetah-Software编译实战:Qt路径配置、LCM依赖与C报错深度解析 1. 环境准备与依赖管理 在Ubuntu 20.04环境下编译MIT Cheetah-Software,首先需要确保系统基础环境配置正确。不同于普通开源项目,这个四足机器狗的控制系统对Qt版本、LCM消…...

如何快速创建一个轻量美观的导航站?Typecho + MijiNav组合轻松完成

在现在信息过载的数字化时代,信息碎片化问题也越来越严重,拥有一个经过严格筛查的高质量网址导航页,已经成为许多人的需求。一个轻量、美观的导航页可以大大提升工作效率和用户体验。实现一个导航网站的方式有很多,今天&#xff0…...

LM317电源模块的“隐藏参数”与实战避坑:为什么你的空载电压总是不稳?

LM317电源模块的“隐藏参数”与实战避坑:为什么你的空载电压总是不稳? 在电子设计领域,LM317作为经典的可调线性稳压器,几乎出现在每个工程师的备件库中。但当你按照标准电路搭好原型,却发现空载时输出电压飘忽不定——…...

Symfony String测试指南:如何编写高质量的字符串操作测试用例

Symfony String测试指南:如何编写高质量的字符串操作测试用例 【免费下载链接】string Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way 项目地址: https://gitcode.com/gh_mirrors…...

踩坑实录:用YOLOv8训练小目标(足球)数据集时,我是如何通过调整图像尺寸把mAP提上去的

小目标检测优化实战:YOLOv8图像尺寸调整如何提升足球识别精度 足球在绿茵场上划出的弧线总是令人着迷,但当这份优雅遇上目标检测算法时,却常常变成开发者的噩梦——那些直径不足20像素的小球,在常规训练参数下往往成为模型"视…...

Java 23新特性深度解析:向量API、FFM与开发体验优化

1. 项目概述:为什么我们需要关注Java 23?作为一名和Java打了十几年交道的开发者,每次看到新版本发布,我的第一反应不是兴奋,而是警惕。新特性意味着新的学习成本,也意味着潜在的兼容性风险。但这次&#xf…...

别再死记硬背了!用Verilog/SystemVerilog手把手教你理解Decoder、Mux和Selector的电路本质

从Verilog代码反推Decoder与Mux的硬件本质:写给会看电路图但写不出代码的工程师 当你第一次在教科书上看到2-4解码器的门级电路图时,是否觉得那些与门排列得像积木一样整齐?但当你打开编辑器准备用Verilog实现时,却发现大脑一片空…...

Embulk高级用法指南:如何实现高效并行处理与数据分片

Embulk高级用法指南:如何实现高效并行处理与数据分片 【免费下载链接】embulk Embulk: Pluggable Bulk Data Loader. 项目地址: https://gitcode.com/gh_mirrors/em/embulk Embulk是一个强大的可插拔批量数据加载器,专为高效处理大规模数据迁移而…...

别再手动算潮流了!用MATLAB+Matpower搞定IEEE标准算例(附完整代码)

电力系统潮流计算实战:MATLABMatpower高效解决方案 在电力系统分析与设计中,潮流计算是最基础却至关重要的环节。传统的手工计算方式不仅耗时费力,而且难以应对复杂网络结构的分析需求。本文将带您探索如何利用MATLAB平台上的Matpower工具包&…...

为内部工具集成 AI 能力时选择 Taotoken 作为中间层的考量

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部工具集成 AI 能力时选择 Taotoken 作为中间层的考量 当企业计划为内部管理系统、数据分析工具等引入大模型能力时&#xff0…...

别再只盯着Transformer了!用PyTorch手把手复现加性注意力(Additive Attention),理解注意力机制的起点

从加性注意力到Transformer:PyTorch实战与演进逻辑解析 在Transformer架构横扫NLP领域的今天,回望2014年提出的加性注意力机制(Additive Attention),犹如在摩天大楼顶端俯瞰地基。这个由Bahdanau在神经机器翻译中首次提…...

买服装模板机选中捷、川田、杰克还是慧拿?紧凑型流水线升级,空间与适配才是核心决策

在服装智能制造全面普及的今天,线上模板机已经成为服装企业改造紧凑流水线、实现降本增效的核心装备。当前市场上,中捷、川田、杰克、慧拿四大品牌稳居全球服装自动化设备第一梯队,技术实力、产品品质、品牌口碑均处于行业头部水平。面对 “选…...

BooruDatasetTagManager AiApiServer深度配置:解决常见模型兼容性问题

BooruDatasetTagManager AiApiServer深度配置:解决常见模型兼容性问题 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager BooruDatasetTagManager是一款功能强大的AI图片标签管理工具&#xff…...

为Claude Code配置Taotoken解决密钥被封与Token不足难题

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Claude Code配置Taotoken解决密钥被封与Token不足难题 应用场景类,针对经常使用Claude Code但受限于官方限制的开发者…...

ARM+FPGA异构计算在能源电力领域的核心优势与应用实践

1. 项目概述:为什么是ARMFPGA?最近几年,在能源电力这个对可靠性和实时性要求极高的领域,我观察到一股明显的技术趋势:越来越多的项目开始采用“国产ARM处理器 FPGA”的异构计算架构。这不再是实验室里的概念验证&…...

TTK插件系统扩展指南:自定义Golden生成函数和输入数据生成函数的完整教程

TTK插件系统扩展指南:自定义Golden生成函数和输入数据生成函数的完整教程 【免费下载链接】ops-test-kit TTK(Ops Test Tool Kit)是CANN算子库提供的全链路、自动化、批量化算子测试框架,帮助开发者快速完成算子批量功能验证、性能…...

cann/cann-bench: Softmax算子API描述

Softmax 算子 API 描述 【免费下载链接】cann-bench 评测AI在处理CANN领域代码任务的能力,涵盖算子生成、算子优化等领域,支撑模型选型、训练效果评估,统一量化评估标准,识别Agent能力短板,构建CANN领域评测平台&#…...

从Dubbo超时到内存锯齿:高并发服务JVM调优与大对象排查实战

1. 项目背景与问题初现做后端服务开发,尤其是高并发场景下的核心服务,最怕的就是线上服务“抽风”——平时跑得好好的,一到业务高峰期就出现各种超时、失败。最近我就遇到了一个典型的案例,我们团队负责的一个音乐核心服务&#x…...

告别卡顿!手把手教你用UltraISO给老旧笔记本装上OpenEuler 22.03 LTS(保姆级BIOS设置指南)

告别卡顿!手把手教你用UltraISO给老旧笔记本装上OpenEuler 22.03 LTS(保姆级BIOS设置指南) 老旧笔记本性能跟不上现代操作系统?别急着淘汰它们!OpenEuler作为一款轻量级Linux发行版,特别适合为老设备注入新…...

CANN/cann-bench MHA算子API描述

MHA 算子 API 描述 【免费下载链接】cann-bench 评测AI在处理CANN领域代码任务的能力,涵盖算子生成、算子优化等领域,支撑模型选型、训练效果评估,统一量化评估标准,识别Agent能力短板,构建CANN领域评测平台&#xff0…...

终极Windows和Office激活指南:KMS智能激活工具三步永久激活方案

终极Windows和Office激活指南:KMS智能激活工具三步永久激活方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统频繁弹出激活提示而烦恼吗?Office突然变…...

CANN ops-fft未来规划:51+接口路线图与社区发展蓝图

CANN ops-fft未来规划:51接口路线图与社区发展蓝图 【免费下载链接】ops-fft ops-fft 是 CANN (Compute Architecture for Neural Networks)算子库中提供 FFT 类计算的基础算子库,采用模块化设计,支持灵活的算子开发和…...

IPv6网络规划必看:华为设备上DHCPv6与SLAAC(无状态地址分配)到底怎么选?

IPv6网络规划实战:华为设备地址分配方案深度解析 在IPv6网络部署的浪潮中,地址分配策略的选择往往成为困扰网络架构师的首要难题。当传统IPv4的DHCP方式遇上IPv6全新的SLAAC(无状态地址自动配置)机制,技术决策的复杂性…...

别再死记硬背了!手把手教你玩转COMSOL Desktop的窗口布局与自定义(附效率翻倍技巧)

别再死记硬背了!手把手教你玩转COMSOL Desktop的窗口布局与自定义(附效率翻倍技巧) 作为一名经常与多物理场仿真打交道的工程师,你是否曾因频繁切换窗口而打断思路?或是花费大量时间在菜单栏中寻找某个隐藏功能&#…...

【紧急预警】Perplexity即将下线v1历史索引接口(倒计时≤45天):迁移至Time-Aware Search API的6步合规过渡方案

更多请点击: https://kaifayun.com 第一章:Perplexity历史资料搜索 Perplexity 是一款以实时网络检索与引用驱动为特色的 AI 搜索工具,自 2022 年由 Aravind Srinivas、Denis Yarats、Johnny Ho 和 Andy Konwinski 共同创立以来,…...

别只盯着波特率!深入理解英飞凌MCMCAN的报文过滤与优先级处理机制

别只盯着波特率!深入理解英飞凌MCMCAN的报文过滤与优先级处理机制 在嵌入式系统开发中,CAN总线通信的稳定性和效率往往决定了整个系统的性能表现。许多工程师在配置CAN模块时,常常将注意力集中在波特率设置等基础参数上,却忽略了报…...

CANN/hccl参数面建链阶段故障诊断

参数面建链阶段 【免费下载链接】hccl 集合通信库(Huawei Collective Communication Library,简称HCCL)是基于昇腾AI处理器的高性能集合通信库,为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode.com/cann/hcc…...

用emWin定时器给你的STM32 GUI界面“注入灵魂”:实现动态数据刷新与简易动画(基于WM_TIMER消息)

用emWin定时器为STM32 GUI注入动态交互的灵魂 在嵌入式设备的人机交互设计中,静态界面往往给人呆板的印象。想象一下工业仪表盘上凝固的数字,或是医疗设备上永不变化的指示灯——这种缺乏生命力的呈现方式不仅降低用户体验,还可能掩盖关键数据…...

dialoqbase入门指南:如何在5分钟内创建你的第一个AI聊天机器人

dialoqbase入门指南:如何在5分钟内创建你的第一个AI聊天机器人 【免费下载链接】dialoqbase Create chatbots with ease 项目地址: https://gitcode.com/gh_mirrors/di/dialoqbase dialoqbase是一款强大的开源工具,让你能够轻松创建AI聊天机器人。…...

Python开发者三步完成Taotoken接入并调用多模型

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Python开发者三步完成Taotoken接入并调用多模型 对于希望便捷使用多种大语言模型的Python开发者而言,通过一个统一的AP…...