colcon build 编译工具智能车速度控制节点编译和运行指南实战

发布时间:2026/5/19 15:52:02

colcon build 编译工具智能车速度控制节点编译和运行指南实战 智能车速度控制节点编译和运行指南第一部分编译步骤1.1 准备工作空间# 进入工作空间目录cd/home/ubuntu/ros2_wsorincp# 检查工作空间结构ls-la1.2 完整编译所有包# 编译整个工作空间所有包colcon build# 编译特定包推荐更快colcon build --packages-select smart_car_core_demo ros_robot_controller_msgs ros_robot_controller# 编译并启用符号链接便于开发colcon build --symlink-install1.3 编译单个包# 编译智能车核心演示包colcon build --packages-select smart_car_core_demo# 编译机器人控制器消息包colcon build --packages-select ros_robot_controller_msgs# 编译机器人控制器包colcon build --packages-select ros_robot_controller1.4 编译选项和参数# 并行编译加快速度colcon build --parallel-workers4# 只编译CMake包colcon build --cmake-args-DCMAKE_BUILD_TYPERelease# 编译并运行测试colcontest# 查看编译日志tail-flog/latest_build/logger_all.log1.5 编译后设置环境# 设置ROS2环境source/opt/ros/humble/setup.bash# 设置工作空间环境sourceinstall/setup.bash# 验证环境设置echo$ROS_PACKAGE_PATH1.6 验证编译结果# 检查包是否可用ros2 pkg list|grep-E(smart_car_core_demo|ros_robot_controller)# 检查可执行文件lsinstall/smart_car_core_demo/lib/smart_car_core_demo/lsinstall/ros_robot_controller/lib/ros_robot_controller/# 检查Python包python3-cimport ros_robot_controller; print(ros_robot_controller导入成功)1.7 清理编译文件# 清理特定包的构建文件colcon build --packages-select smart_car_core_demo --cmake-clean-first# 清理所有构建文件rm-rfbuild/ install/ log/# 重新编译colcon build第二部分运行步骤步骤 1打开终端并进入工作空间cd/home/ubuntu/ros2_wsorincp步骤 2设置 ROS2 环境如果尚未自动设置source/opt/ros/humble/setup.bashsourceinstall/setup.bash注意如果您已经重新启动了终端环境会自动通过.bashrc文件设置。步骤 3验证包是否可用ros2 pkg list|grepsmart_car_core_demo应该显示smart_car_core_demo步骤 4运行速度订阅者节点接收指令ros2 run smart_car_core_demo speed_subscriber这个节点会启动并等待速度指令。步骤 5运行机器人控制器节点底层控制# 打开另一个终端ros2 run ros_robot_controller ros_robot_controller步骤 6打开另一个终端运行速度发布者节点发送指令在新终端中cd/home/ubuntu/ros2_wsorincpsource/opt/ros/humble/setup.bashsourceinstall/setup.bash ros2 run smart_car_core_demo speed_publisher这个节点会每秒发布一次速度指令线速度 0.50 m/s角速度 0.20 rad/s。步骤 7观察通信您会看到发布者终端显示发布车速度指令线速度0.50 m/s, 角速度0.20 rad/s订阅者终端显示速度订阅节点已启动等待cmd_vel指令…“和速度订阅节点运行中…”控制器终端显示start和通信状态步骤 8停止节点按CtrlC停止任一节点。可选使用 launch 文件同时启动两个节点ros2 launch smart_car_core_demo topic_demo.launch.py注意当前 launch 文件可能需要调整因为它寻找的是speed_subscriber_simple而不是speed_subscriber。验证修复要验证环境修复是否成功可以运行# 检查包路径ros2 pkg prefix smart_car_core_demo# 测试 source 命令source/opt/ros/humble/setup.bashsourceinstall/setup.bash现在您的树莓派终端应该可以正常运行所有 ROS2 命令了系统架构和权限管理完整系统架构speed_publisher → (cmd_vel话题) → speed_subscriber → (ros_robot_controller/set_motor话题) → ros_robot_controller → (串口/dev/rrc) → 电机控制器 → 电机关键组件说明speed_publisher发布速度指令到cmd_vel话题speed_subscriber订阅cmd_vel话题计算电机转速发布到ros_robot_controller/set_motor话题ros_robot_controller订阅ros_robot_controller/set_motor话题通过串口控制硬件串口设备/dev/rrc符号链接到/dev/ttyACM0串口设备管理和故障排除1. 查看串口设备# 查看所有串口设备ls-la/dev/tty*# 查看特定设备智能车控制器通常使用 ttyACM0 或 ttyUSB0ls-la/dev/ttyACM*ls-la/dev/ttyUSB*# 查看 /dev/rrc 符号链接ls-la/dev/rrc2. 检查串口占用情况# 方法1使用 fuser 检查哪个进程在使用设备sudofuser/dev/ttyACM02/dev/null||echo没有进程使用 /dev/ttyACM0# 方法2使用 lsof如果已安装sudolsof/dev/ttyACM02/dev/null||echolsof 未安装或没有进程使用设备# 方法3检查系统日志dmesg|grepttysudodmesg|grepttyACM3. 安装必要的工具# 安装 lsof更强大的进程查看工具sudoaptupdatesudoaptinstalllsof-y# 安装串口调试工具sudoaptinstallminicomscreen-y4. 测试串口通信# 简单测试查看设备是否存在[-c/dev/ttyACM0]echo设备存在||echo设备不存在# 测试读写权限[-r/dev/ttyACM0]echo可读||echo不可读[-w/dev/ttyACM0]echo可写||echo不可写权限管理1. 当前权限状态检查# 检查用户所属的组id-nGubuntu# 检查 dialout 组成员getent group dialout# 检查设备权限ls-la/dev/ttyACM02. 添加用户到 dialout 组如果需要# 添加用户到 dialout 组sudousermod-a-Gdialout ubuntu# 使组更改立即生效需要新终端或运行newgrp dialout# 验证更改groupsubuntu3. 恢复原始权限如果需要撤销# 从 dialout 组中移除用户sudogpasswd-dubuntu dialout# 验证用户已从组中移除groupsubuntu# 注意需要新终端会话才能使更改生效4. 替代权限方案更安全# 创建 udev 规则只给特定设备权限echoKERNELttyACM[0-9]*, MODE0666, GROUPdialout|sudotee/etc/udev/rules.d/50-myusb.rules# 重新加载 udev 规则sudoudevadm control --reload-rulessudoudevadm trigger# 重新插拔设备使规则生效常见问题解决编译问题问题1colcon命令找不到# 安装colconsudoaptupdatesudoaptinstallpython3-colcon-common-extensions-y问题2CMake错误# 安装CMake和构建工具sudoaptinstallcmake build-essential-y# 清理并重新编译rm-rfbuild/ install/ log/ colcon build问题3Python包依赖错误# 安装Python依赖pip3installsetuptools wheel# 检查Python版本python3--version问题4包找不到# 1. 重新构建包cd/home/ubuntu/ros2_wsorincp colcon build --packages-select ros_robot_controller# 2. 重新加载环境sourceinstall/setup.bash# 3. 验证包ros2 pkg list|grepros_robot_controller运行问题问题1节点运行但小车轮胎不动# 1. 检查 ros_robot_controller 是否运行ros2 run ros_robot_controller ros_robot_controller# 2. 检查话题通信ros2 topic list ros2 topicecho/ros_robot_controller/set_motor# 3. 检查串口权限ls-la/dev/rrc问题2校验失败错误# 1. 检查硬件连接# 确保小车电源打开USB 线连接# 2. 检查串口设备ls-la/dev/ttyACM*# 3. 重启 ros_robot_controller 节点问题3环境设置错误# 检查 .bashrc 配置cat~/.bashrc|grep-A5-B5ROS2# 手动设置环境source/opt/ros/humble/setup.bashcd~/ros2_wsorincpsourceinstall/setup.bashcd~/ros2_wsorincp/jianpankongzhiwssourceinstall/setup.bash完整测试流程测试1验证所有节点# 终端1机器人控制器ros2 run ros_robot_controller ros_robot_controller# 终端2速度订阅者ros2 run smart_car_core_demo speed_subscriber# 终端3速度发布者ros2 run smart_car_core_demo speed_publisher测试2验证话题通信# 查看所有活跃话题ros2 topic list# 监听速度指令ros2 topicecho/cmd_vel# 监听电机指令ros2 topicecho/ros_robot_controller/set_motor测试3验证硬件连接# 检查设备文件[-c/dev/rrc]echo硬件连接正常||echo硬件未连接# 检查权限[-rw/dev/rrc]echo有读写权限||echo无读写权限维护建议定期更新sudoaptupdatesudoaptupgrade备份配置# 备份 .bashrccp~/.bashrc ~/.bashrc.backup# 备份工作空间配置tar-czfros2_ws_backup.tar.gz /home/ubuntu/ros2_wsorincp监控系统日志# 查看 ROS2 日志ros2 doctor# 查看系统日志dmesg|tail-20定期测试# 运行完整测试cd/home/ubuntu/ros2_wsorincp ./run_complete_test.sh# 可以创建这个脚本紧急恢复如果系统出现问题可以按以下步骤恢复恢复环境# 重置 .bashrc如果有备份cp~/.bashrc.backup ~/.bashrcsource~/.bashrc重新构建所有包cd/home/ubuntu/ros2_wsorincp colcon buildsourceinstall/setup.bash检查硬件# 重启硬件sudoreboot# 或重新插拔 USB 设备编译和运行快速参考快速编译命令# 进入工作空间cd~/ros2_wsorincp# 编译所有必要包colcon build --packages-select smart_car_core_demo ros_robot_controller_msgs ros_robot_controller# 设置环境sourceinstall/setup.bash快速运行命令# 终端1控制器ros2 run ros_robot_controller ros_robot_controller# 终端2订阅者ros2 run smart_car_core_demo speed_subscriber# 终端3发布者ros2 run smart_car_core_demo speed_publisher快速验证# 检查话题ros2 topic list# 检查节点ros2nodelist# 检查服务ros2servicelist现在您的智能车速度控制系统应该完全正常运行

相关新闻