You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2 Galactic下MoveIt编译耗尽内存致Ubuntu崩溃求助

编译ROS2 MoveIt UR5e包时内存耗尽问题

在Ubuntu 20.04系统中使用ROS2 Galactic与MoveIt操控UR5e机械臂,执行官方文档推荐的colcon build --mixin release编译命令时,内存及交换空间会被耗尽,编译到37/45任务时系统冻结,且pilz_industrial_motion_planner包编译失败。目前CPU占用问题已解决,但尝试过以下内存限制方法均无效:

  • 使用systemd-run --scope -p MemoryLimit=3000M -p CPUQuota=70% -- colcon build --mixin release --parallel-workers 3限制资源
  • 用cpulimit、调整swappiness参数、修改ulimit、设置nice优先级

可行解决方法

1. 单独编译问题包

先跳过pilz_industrial_motion_planner完成其他包的编译,再单线程编译这个高内存消耗的包:

# 先编译除pilz包外的所有内容
colcon build --mixin release --packages-skip pilz_industrial_motion_planner
# 单线程编译pilz包
colcon build --mixin release --packages-select pilz_industrial_motion_planner --parallel-workers 1

2. 启用编译缓存减少资源重复消耗

安装ccache缓存编译中间文件,避免重复编译时的内存浪费:

sudo apt install ccache
# 编译时启用ccache
colcon build --mixin release --cmake-args -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache --parallel-workers 2

3. 临时扩容交换空间

如果物理内存不足,临时创建大尺寸交换文件缓解内存压力:

# 创建8G交换文件
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 编译完成后可关闭并删除交换文件
# sudo swapoff /swapfile
# sudo rm /swapfile

4. 检查并调整问题包的编译配置

查看pilz_industrial_motion_planner包的CMakeLists.txt,确认是否存在强制高并行编译的配置(如set(CMAKE_BUILD_PARALLEL_LEVEL 4)),将其修改为1或2后再编译。

内容的提问来源于stack exchange,提问作者LordGowther

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 17:30:43