ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

进迭K1 RISC-V开发板 ROS2 Iron 环境搭建

进迭K1 RISC-V开发板 ROS2 Iron 环境搭建 前言在RISC-V架构的米联客进迭K1开发板上搭建ROS2环境相比x86平台会遇到更多兼容性问题。本文基于官方教程记录了从源码编译到镜像制作的完整流程帮助开发者少走弯路。1文件部署将以下两个文件(可自行下载)部署到开发板的 /root/ros2/ros2_iron 目录ros2_iron_ready.tar.gz包含ROS2源码及rosdep缓存含全部vendor源码包ros2_deps.tar.gz21个vendor依赖的离线压缩包cd ~tar -xzvf ros2_iron_ready.tar.gzmkdir -p ~/ros2_depstar -xzf ros2_deps.tar.gz -C ~/ros2_deps --strip-components3ls ~/ros2_deps/ | wc -l # 验证应为212环境配置2.1 安装系统依赖sudo apt update sudo apt install -y \build-essential cmake git python3-pip \libasio-dev libbullet-dev libconsole-bridge-dev \libtinyxml2-dev libeigen3-dev \python3-dev python3-numpy python3-yaml python3-empysudo pip install --break-system-packages -i https://pypi.tuna.tsinghua.edu.cn/simple \vcstool rosdep colcon-common-extensions2.2 配置rosdep离线模式rosdep缓存已随tar包内置在 ~/rosdep_cache/ 目录下sudo mkdir -p /etc/ros/rosdep/sources.list.dsudo tee /etc/ros/rosdep/sources.list.d/20-default.list EOFyaml file:///root/rosdep_cache/base.yamlyaml file:///root/rosdep_cache/python.yamlyaml file:///root/rosdep_cache/ruby.yamlyaml file:///root/rosdep_cache/osx-homebrew.yamlyaml file:///root/rosdep_cache/iron.yamlEOFexport ROS_OS_OVERRIDEubuntu:jammyrosdep update # 离线环境会超时失败可跳过cd ~/ros2/ros2_ironrosdep install -r --from-paths src --ignore-src -y \--skip-keys fastcdr rti-connext-dds-6.0.1 urdfdom_headers2.3 修复Mimick RISC-V兼容问题修改 mimick_vendor/CMakeLists.txt将Mimick仓库替换为RISC-V兼容的fork# 第61行set(mimick_version 90d02296025f38da2e33c67b02b7fa0c7c7d460c)# 第63行GIT_REPOSITORY https://github.com/ziyao233/Mimick.git2.4 替换vendor包下载源为本地文件关键步骤这一步是离线编译的核心——将各vendor的 GIT_REPOSITORY/URL/FetchContent 替换为本地源目录。涉及的包括注意事项SOURCE_DIR 必须每个文件只出现一次重复会导致CMake报错。shared_queues_vendor 比较特殊需要预置压缩包到 build/shared_queues_vendor/download/ 目录。替换完成后用 grep 检查是否还有残留的远程下载URL。2.5 删除PATCH_COMMAND部分vendor的CMakeLists中有基于git的PATCH_COMMAND由于本地源码不是git仓库git apply 会失败需要删除这些补丁命令段orocos_kdl_vendor删除PATCH_COMMAND段pybind11_vendor删除两段PATCH_COMMAND2.6 安装额外系统依赖apt install -y liblttng-ust-devapt install -y qtbase5-dev shiboken2 libshiboken2-dev \python3-pyside2.qtcore python3-pyside2.qtwidgets libpyside2-devpip install --break-system-packages larkapt install -y libopencv-dev # 可选避免图像相关包编译失败3编译ROS2核心3.1 编译前内存优化K1板子仅3.7G内存必须做内存优化# 禁用桌面音频服务防止OOMsudo systemctl stop pipewire wireplumber pipewire-pulse 2/dev/nullsudo systemctl mask pipewire wireplumber pipewire-pulse 2/dev/null# 添加2G swapfallocate -l 2G /swapfile chmod 600 /swapfile \ mkswap /swapfile swapon /swapfile3.2 启动编译cd ~/ros2/ros2_ironnohup colcon build --symlink-install \--parallel-workers 2 \--cmake-args -DBUILD_TESTINGOFF \--packages-skip rviz_ogre_vendor rviz_rendering rviz_rendering_tests \rviz rviz2 rviz_default_plugins rviz_common rviz_visual_testing_framework \ ~/build1.log 21 提示--parallel-workers 建议设为2设为3及以上容易触发OOM。编译过程可能需要数小时。查看编译进度tail -n 15 ~/build1.loggrep -E ^Failed ~/build1.log # 检查是否有失败grep -cE ^Finished ~/build1.log # 已完成数量编译完成后再次执行同一命令会自动跳过已成功的包多轮收敛直到全部完成。4设置环境变量echo source ~/ros2/ros2_iron/install/local_setup.bash ~/.bashrcsource ~/ros2/ros2_iron/install/local_setup.bash5验证安装1、测试Talker/Listener通信ros2 run demo_nodes_cpp talker /tmp/talker.log 21 sleep 8ros2 run demo_nodes_py listener 21 | head -20 sleep 5cat /tmp/talker.log | tail -5看到 Publishing: Hello World: N 和 I heard: [Hello World: N] 即表示成功。ros2 pkg list | wc -l # 应输出 ~330验证 TurtleSim6制作可烧录镜像可选编译好的ROS2可以打包进Bianbu系统镜像方便批量部署1. 挂载原版Bianbu rootfs从16G扩容到30G2. 将ROS2文件和系统库提取到rootfs中3. 缩小rootfs到最小可用大小约19G4. 打包为 bianbu-custom.zip约5.7G5. 使用titanflasher工具烧录烧录后验证source /root/ros2/ros2_iron/install/local_setup.bashexport RMW_IMPLEMENTATIONrmw_cyclonedds_cppros2 run demo_nodes_cpp talker ros2 run demo_nodes_py listener如提示磁盘空间不足需要在板子上执行 resize2fs /dev/mmcblk2p6 扩大分区。
返回列表