CM3588 Plus 部署 ROS 2 Jazzy:TARKBOT R750 底盘、A2M7 雷达与 RViz2 联调记录
CM3588 Plus 部署 ROS 2 JazzyTARKBOT R750 底盘、A2M7 雷达与 RViz2 联调记录1. 项目背景本文记录在 FriendlyElec CM3588 Plus 上部署 ROS 2 Jazzy并完成 TARKBOT R750 全向底盘、A2M7 激光雷达与 RViz2 可视化联调的全过程。最终目标是让板载 CM3588 作为机器人上位机直接完成底盘通信、雷达采集、传感器数据发布和后续 SLAM 建图。2. 硬件与软件环境项目配置上位机FriendlyElec CM3588 Plus系统Ubuntu 24.04.4 LTSaarch64内核6.1.141 Rockchip/FriendlyElec 适配内核ROSROS 2 Jazzy机器人底盘TARKBOT R750 全向移动底盘OpenCTR H60 控制器激光雷达A2M7CH340 串口芯片底盘通信USB CDC ACM/dev/ttyACM0雷达通信USB CH340/dev/ttyUSB0ROS 中间件Cyclone DDSCM3588 通过网线连接 Windows并使用 Windows Internet Connection Sharing 获取网络板端地址为192.168.137.23. 确认系统与网络首先确认系统版本uname -a cat /etc/os-release系统为 Ubuntu 24.04.4 LTS架构为 ARM64因此不能直接使用在 x86_64 WSL 中编译出的 ROS 可执行文件必须将源码迁移到板端重新编译。Windows ICS 环境下默认 DNS 有时会解析异常。可临时切换 DNSsudo resolvectl dns eth0 223.5.5.5 1.1.1.1 sudo resolvectl flush-caches验证网络sudo ping -c 3 1.1.1.1注意普通用户运行ping出现missing cap_net_raw属于系统权限配置问题使用sudo ping即可不影响 ROS。4. 安装 ROS 2 Jazzy通过鱼香 ROS 安装器安装 ROS 2 Jazzy并使用国内镜像源。安装后验证source /opt/ros/jazzy/setup.bash echo $ROS_DISTRO ros2 --help输出jazzy说明 ROS 环境可用。安装工作空间构建依赖sudo apt install -y build-essential \ python3-colcon-common-extensions \ python3-rosdep \ python3-vcstool \ python3-serial \ libboost-thread-dev \ ros-jazzy-rmw-cyclonedds-cpp初始化 rosdepsudo rosdep init rosdep update配置环境变量echo source /opt/ros/jazzy/setup.bash ~/.bashrc echo export RMW_IMPLEMENTATIONrmw_cyclonedds_cpp ~/.bashrc echo source ~/ros2_ws/install/setup.bash ~/.bashrc source ~/.bashrc这里使用 Cyclone DDS是为了保证后续多终端 ROS 2 通信稳定。5. 迁移并编译机器人 ROS 功能包从电脑 WSL 中复制源码到 CM3588tarkbot_robot sllidar_ros2在板端创建工作空间并编译cd ~/ros2_ws rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install source install/setup.bash最终构建结果Finished sllidar_ros2 Finished tarkbot_robot Summary: 2 packages finished关键点WSL 是 x86_64CM3588 是 aarch64。只能迁移src源码目录不能迁移build、install、log或已编译程序。6. 检查 USB 串口设备连接底盘和雷达后检查ls -l /dev/ttyACM* /dev/ttyUSB* 2/dev/null dmesg | tail -30识别结果/dev/ttyACM0 # OpenCTR H60 底盘控制器 /dev/ttyUSB0 # A2M7 激光雷达 CH340将当前用户加入串口权限组sudo usermod -aG dialout $USER执行后必须重新登录 SSH权限才会生效。7. 启动并验证激光雷达启动 A2M7 雷达节点ros2 launch tarkbot_robot lidar_a2m7_py.launch.py正常启动日志如下GET_INFO reply bytes26 GET_HEALTH reply bytes10 scan descriptora55a0500004081 A2M7 python scan bridge started on /dev/ttyUSB0 256000说明串口、波特率、协议解析均正常。检查雷达话题ros2 topic echo --no-daemon /scan --once可看到frame_id: laser angle_min: 0.0 angle_max: 6.283185 range_min: 0.05 range_max: 16.0.inf表示该方向未收到有效回波或距离超出范围是正常数据不代表雷达故障。8. 启动并恢复底盘通信启动底盘节点ros2 launch tarkbot_robot robot.launch.py启动日志显示Set serial /dev/ttyACM0 at 230400 baud is Connected to OpenCTR board setup publisher on odom setup publisher on imu setup publisher on bat_vol setup subscriber on cmd_vel initialization completed, is Running!初期执行ros2 topic echo --no-daemon /odom --once会一直等待没有输出。原因不是 ROS 节点崩溃而是控制器尚未开始回传数据。向底盘发送一次零速度安全指令ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist \ {linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}该命令不会驱动机器人移动但会触发控制器通信状态进入正常工作模式。随后成功收到/odomros2 topic echo --no-daemon /odom --once也成功收到/imuros2 topic echo --no-daemon /imu --once9. 验证底盘与 IMU 发布频率使用以下命令timeout 6s ros2 topic hz /imu timeout 6s ros2 topic hz /odom实测结果/imu : 约 50.1 Hz /odom : 约 50.1 Hz频率稳定、抖动很小说明底盘控制器、串口、ROS 驱动和 CM3588 性能均正常。注意ros2 topic hz不支持--no-daemon参数。正确写法是ros2 topic hz /odom10. 安装 RViz2 并解决图形库问题系统最初仅安装了 ROS 基础组件执行rviz2时提示找不到命令。安装 RViz2sudo apt update sudo apt install -y ros-jazzy-rviz2不建议执行sudo apt upgrade因为板子带有 FriendlyElec/Rockchip 定制内核、图形和多媒体软件包整机升级风险较高。安装完成后若出现libOgreMain.so.1.12.10: cannot open shared object file原因是当前终端仍是安装前加载的 ROS 环境。重新加载环境即可source /opt/ros/jazzy/setup.bash source ~/ros2_ws/install/setup.bash rviz211. RViz2 显示雷达和 TF在 MobaXterm 开启 X11 Forwarding 后通过 SSH 运行rviz2RViz 默认Fixed Frame是map会报错Frame [map] does not exist因为当前尚未运行 SLAM 建图节点系统中还没有map坐标系。将 RViz 的Fixed Frame改为odom然后添加TF/scan对应的LaserScan此时可看到坐标关系odom - base_footprint - laser以及雷达的二维障碍物点云。建议将右上角视角从Orbit改为TopDownOrtho更适合查看二维雷达数据。12. 最终联调结果本次部署完成后CM3588 已具备以下能力ROS 2 Jazzy ARM64 原生运行底盘/odom稳定发布约 50 HzIMU/imu稳定发布约 50 HzA2M7 雷达/scan正常发布TF 坐标树连通RViz2 可实时显示坐标系和雷达点云底盘与雷达均直接接入板端无需再通过 Windows WSL 的 USB/IP 转发13. 后续计划下一步将在当前基础上安装并配置slam_toolbox完成雷达 SLAM 实时建图/map - odom - base_footprint - laser坐标树建立保存地图文件后续接入导航与自主移动功能至此机器人已经从“电脑 WSL 临时调试”过渡到“板端 CM3588 独立运行”的架构。