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

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

智能车速度控制节点编译和运行指南

第一部分:编译步骤

1.1 准备工作空间
# 进入工作空间目录cd/home/ubuntu/ros2_wsorincp# 检查工作空间结构ls-la
1.2 完整编译所有包
# 编译整个工作空间(所有包)colcon build# 编译特定包(推荐,更快)colcon build --packages-select smart_car_core_demo ros_robot_controller_msgs ros_robot_controller# 编译并启用符号链接(便于开发)colcon build --symlink-install
1.3 编译单个包
# 编译智能车核心演示包colcon build --packages-select smart_car_core_demo# 编译机器人控制器消息包colcon build --packages-select ros_robot_controller_msgs# 编译机器人控制器包colcon build --packages-select ros_robot_controller
1.4 编译选项和参数
# 并行编译(加快速度)colcon build --parallel-workers4# 只编译CMake包colcon build --cmake-args-DCMAKE_BUILD_TYPE=Release# 编译并运行测试colcontest# 查看编译日志tail-flog/latest_build/logger_all.log
1.5 编译后设置环境
# 设置ROS2环境source/opt/ros/humble/setup.bash# 设置工作空间环境sourceinstall/setup.bash# 验证环境设置echo$ROS_PACKAGE_PATH
1.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-c"import 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:停止节点

Ctrl+C停止任一节点。

可选:使用 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) → 电机控制器 → 电机

关键组件说明

  1. speed_publisher:发布速度指令到cmd_vel话题
  2. speed_subscriber:订阅cmd_vel话题,计算电机转速,发布到ros_robot_controller/set_motor话题
  3. ros_robot_controller:订阅ros_robot_controller/set_motor话题,通过串口控制硬件
  4. 串口设备/dev/rrc(符号链接到/dev/ttyACM0

串口设备管理和故障排除

1. 查看串口设备

# 查看所有串口设备ls-la/dev/tty*# 查看特定设备(智能车控制器通常使用 ttyACM0 或 ttyUSB0)ls-la/dev/ttyACM*ls-la/dev/ttyUSB*# 查看 /dev/rrc 符号链接ls-la/dev/rrc

2. 检查串口占用情况

# 方法1:使用 fuser 检查哪个进程在使用设备sudofuser/dev/ttyACM02>/dev/null||echo"没有进程使用 /dev/ttyACM0"# 方法2:使用 lsof(如果已安装)sudolsof/dev/ttyACM02>/dev/null||echo"lsof 未安装或没有进程使用设备"# 方法3:检查系统日志dmesg|grepttysudodmesg|grepttyACM

3. 安装必要的工具

# 安装 lsof(更强大的进程查看工具)sudoaptupdatesudoaptinstalllsof-y# 安装串口调试工具sudoaptinstallminicomscreen-y

4. 测试串口通信

# 简单测试:查看设备是否存在[-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/ttyACM0

2. 添加用户到 dialout 组(如果需要)

# 添加用户到 dialout 组sudousermod-a-Gdialout ubuntu# 使组更改立即生效(需要新终端或运行)newgrp dialout# 验证更改groupsubuntu

3. 恢复原始权限(如果需要撤销)

# 从 dialout 组中移除用户sudogpasswd-dubuntu dialout# 验证用户已从组中移除groupsubuntu# 注意:需要新终端会话才能使更改生效

4. 替代权限方案(更安全)

# 创建 udev 规则,只给特定设备权限echo'KERNEL=="ttyACM[0-9]*", MODE="0666", GROUP="dialout"'|sudotee/etc/udev/rules.d/50-myusb.rules# 重新加载 udev 规则sudoudevadm control --reload-rulessudoudevadm trigger# 重新插拔设备使规则生效

常见问题解决

编译问题

问题1:colcon命令找不到
# 安装colconsudoaptupdatesudoaptinstallpython3-colcon-common-extensions-y
问题2:CMake错误
# 安装CMake和构建工具sudoaptinstallcmake build-essential-y# 清理并重新编译rm-rfbuild/ install/ log/ colcon build
问题3:Python包依赖错误
# 安装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-B5"ROS2"# 手动设置环境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"无读写权限"

维护建议

  1. 定期更新

    sudoaptupdatesudoaptupgrade
  2. 备份配置

    # 备份 .bashrccp~/.bashrc ~/.bashrc.backup# 备份工作空间配置tar-czfros2_ws_backup.tar.gz /home/ubuntu/ros2_wsorincp
  3. 监控系统日志

    # 查看 ROS2 日志ros2 doctor# 查看系统日志dmesg|tail-20
  4. 定期测试

    # 运行完整测试cd/home/ubuntu/ros2_wsorincp ./run_complete_test.sh# 可以创建这个脚本

紧急恢复

如果系统出现问题,可以按以下步骤恢复:

  1. 恢复环境

    # 重置 .bashrc(如果有备份)cp~/.bashrc.backup ~/.bashrcsource~/.bashrc
  2. 重新构建所有包

    cd/home/ubuntu/ros2_wsorincp colcon buildsourceinstall/setup.bash
  3. 检查硬件

    # 重启硬件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

现在您的智能车速度控制系统应该完全正常运行!

http://www.jsqmd.com/news/520849/

相关文章:

  • 昇腾310P边缘端人脸检测实战:YOLOv11-Face模型C++推理性能优化全解析
  • 伏羲天气预报实时进度监控:Web界面日志输出与异常诊断方法
  • 台式机没蓝牙?手把手教你用USB蓝牙适配器+Bluetooth LE Explorer调试BLE模块(Win10实测)
  • Janus-Pro-7B实现简单编译器前端:词法分析与语法树生成演示
  • 手把手教学:通义千问1.8B轻量模型WebUI环境搭建与配置
  • 基于 STM32 + FPGA 船舶电站控制器设计与实现
  • 从EMD到Hilbert谱:Python实战信号瞬时特征提取与FFT对比
  • 避开这些坑!Gitee+Markdown图片外链的3种正确姿势
  • 利用OFA-Image-Caption构建无障碍应用:为视障用户朗读图片内容
  • 图像处理新手必看:3种常见噪声的识别与去除实战(附Python代码)
  • Linux用户与组管理及文件权限配置详解
  • 掌握CREST:从分子构象采样到热力学分析的完整实践指南
  • GitHub Trending霸榜!深度解析AI Coding辅助神器 Superpowers
  • PP-DocLayoutV3与Python爬虫结合:自动化文档解析实战
  • SGP30传感器驱动开发:I²C异步通信与环境补偿实践
  • 如何用HSTracker提升炉石传说对战决策?macOS玩家必备智能助手全解析
  • 学习C语言第28天
  • PCB设计与硬件开发的14个致命误区解析
  • 脉冲神经网络(SNN)创新实践:AAAI-2024时间步长动态调整策略解析
  • 从零构建Samba 4.13.0:源码编译与依赖管理的实战指南
  • 千万级数据批量更新优化:UPDATE替换MERGE INTO
  • Qwen3-ForcedAligner-0.6BGPU算力优化:梯度检查点+FlashAttention内存节省技巧
  • 嵌入式网络丢包故障的分层诊断与工程实践
  • 卡证检测矫正模型效果深度评测:对比传统OCR与深度学习方案
  • CLAP音频分类可演进:支持LoRA微调接口,兼顾零样本与领域适配
  • 基于单片机的温控风扇设计与实现
  • 终极指南:3分钟学会抖音无水印视频批量下载
  • 【收藏】500+ AI工具导航,这一站搞定你的AI工具箱!
  • NLP新手必看:如何用NLTK快速玩转语料库(附实战代码)
  • 牛客周赛Round136总结