第2天 ROS 《ROS文件系统+常用命令实战(小乌龟案例)零基础吃透》
博客前言✅ 配套实验环境ROS NoeticUbuntu20.04 | Melodic、Kinetic版本命令、逻辑完全通用一、本节课教学目标理解ROS工作空间Workspace概念、目录结构与实际开发用途掌握ROS功能包Package创建规则、标准目录组织方式熟记ROS系统高频命令熟练查看节点、话题、服务、参数信息完成小乌龟综合实验闭环工作空间→功能包→代码→编译→运行全套开发流程二、核心概念精讲课堂原话2.1 ROS工作空间Workspace1. 核心概念工作空间是ROS项目的顶层根目录统一托管全部功能包、编译缓存、环境变量、项目依赖所有ROS自定义代码、驱动、URDF模型都必须放在工作空间内才能正常编译运行。2. 标准目录结构catkin_ws标准架构catkin_ws/ ├─ src/ # 【核心目录】存放所有自定义功能包、源码文件 ├─ build/ # 编译临时目录存放编译中间文件、cmake缓存 ├─ devel/ # 开发运行目录存放可执行程序、环境配置脚本 └─ install/ # 可选安装目录初学开发全程无需使用3. 工作空间基础操作命令1从零创建工作空间# 递归创建工作空间src源码目录 mkdir -p ~/catkin_ws/src # 切换至工作空间根目录 cd ~/catkin_ws # 初始化编译环境自动生成build、devel文件夹 catkin_make2激活工作空间环境# 激活当前终端工作空间环境 source devel/setup.bash 课堂高频考点source devel/setup.bash 作用让当前终端识别当前工作空间内自定义功能包、Python节点、launch文件、自定义消息/服务。不执行该命令执行rosrun直接报错 ——package not found✅ 永久配置环境一劳永逸echo source ~/catkin_ws/devel/setup.bash ~/.bashrc source ~/.bashrc2.2 ROS功能包Package功能包是ROS开发最小功能单元节点代码、URDF模型、启动文件、自定义消息、依赖配置全部封装在功能包内部是ROS开发最小载体。1. 功能包创建语法实操语法catkin_create_pkg 包名 依赖1 依赖2 ...# 必须进入src源码目录创建 cd ~/catkin_ws/src # 创建turtle_test功能包绑定三大核心依赖 catkin_create_pkg turtle_test rospy std_msgs geometry_msgs2. 功能包标准目录结构my_package/ ├─ CMakeLists.txt # 编译配置文件C必改Python零基础无需修改 ├─ package.xml # 包描述文件、依赖声明核心文件 ├─ scripts/ # 规范存放Python脚本节点 ├─ src/ # 存放C源码文件 ├─ msg/ # 自定义消息文件目录 └─ srv/ # 自定义服务文件目录3. 开发硬性注意事项CMakeLists.txt package.xml功能包生死文件禁止删除、重命名Python脚本放入scripts文件夹后必须授权chmod x 脚本名.py功能包名称禁止大写字母、中文、特殊符号、空格2.3 核心编译命令catkin_make1. 一句话作用编译整个ROS工作空间批量解析所有功能包依赖、编译源代码、生成可执行程序与环境脚本等同于C语言gcc编译代码。2. 底层执行流程扫描src目录下全部自定义功能包读取package.xml解析全部依赖关系读取CMakeLists.txt匹配编译规则编译源码生成可运行节点程序自动生成build、devel两大编译目录3. ROS开发黄金三连命令必背cd ~/catkin_ws # 切入工作空间根目录 catkin_make # 全局编译工作空间 source devel/setup.bash # 激活环境变量 课堂趣味比喻方便学生记忆src文件夹 厨房源代码 食材catkin_make 开火做饭编译源码devel文件夹 成品饭菜编译完成程序source激活命令 饭菜上桌终端识别程序rosrun运行节点 开饭执行程序三、ROS全套常用命令汇总期末速查表ROS所有命令围绕五大核心节点Node、话题Topic、服务Service、参数Param、功能包Package命令功能说明roscore启动ROS核心、主节点、参数服务器、日志服务运行所有程序前提rosrun 包名 节点名运行指定功能包内部单个节点roslaunch 包名 xxx.launch批量启动节点、加载参数、一键启动项目rosnode list查看当前系统全部运行节点rosnode info /节点名查看节点发布/订阅话题、绑定服务详情rostopic list查看系统全部通信话题rostopic info /话题名查看话题消息类型、发布者、订阅者rostopic echo /话题名实时打印话题传输数据rostopic pub终端手动发布话题消息rostopic hz /话题名检测话题数据发布频率rosmsg show 消息类型查看消息内部字段结构rosservice list查看系统全部服务rosservice call /服务名终端手动调用服务接口rosparam list/get/set查看/读取/修改参数服务器全局参数roscd / rospack find快速跳转、查询功能包路径rqt_graph图形化可视化节点、话题通信关系✅ 零基础记忆口诀roscore 启系统rosrun 跑节点rosnode 看节点rostopic 看通信rosmsg 看格式rosservice 调功能rosparam 改参数rqt_graph 看关系四、综合实战让小乌龟转起来课堂完整版实验实验目标闭环工作空间功能包完整开发流程实操全部ROS命令吃透节点/话题/服务/参数四大通信逻辑实验前置准备一次性打开4个终端所有终端统一加载基础环境source /opt/ros/noetic/setup.bash # 配置永久环境后下方命令可省略 source ~/catkin_ws/devel/setup.bash步骤1搭建项目环境# 1. 创建并初始化工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_make source devel/setup.bash # 2. 创建实验功能包 cd ~/catkin_ws/src catkin_create_pkg turtle_test rospy std_msgs geometry_msgs步骤2编写Python小乌龟控制节点# 切入功能包、创建脚本文件夹 cd ~/catkin_ws/src/turtle_test mkdir scripts cd scripts vim move_turtle.pyPython源码直接复制#!/usr/bin/env python3 import rospy from geometry_msgs.msg import Twist # 初始化ROS节点 rospy.init_node(move_turtle) # 绑定小乌龟速度话题 pub rospy.Publisher(/turtle1/cmd_vel, Twist, queue_size10) # 设置程序运行频率 rate rospy.Rate(10) # 配置运动速度前进旋转画圆 msg Twist() msg.linear.x 1.0 # X轴线速度 前进 msg.angular.z 0.5 # Z轴角速度 旋转 # 循环发布速度指令 while not rospy.is_shutdown(): pub.publish(msg) rate.sleep()⚠️ 必执行添加脚本执行权限chmod x move_turtle.py步骤3全局编译激活环境cd ~/catkin_ws catkin_make source devel/setup.bash步骤4四终端分工启动项目终端1启动ROS核心服务roscore终端2启动小乌龟仿真窗口rosrun turtlesim turtlesim_node终端3运行自定义控制脚本rosrun turtle_test move_turtle.py✅ 现象小乌龟自动持续画圆运动终端4全部命令实操训练1、节点查看命令rosnode list rosnode info /turtlesim2、话题查看命令rostopic list rostopic info /turtle1/cmd_vel rosmsg show geometry_msgs/Twist3、终端手动控龟不用代码# 匀速直行 rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist linear: {x: 2.0}, angular: {z: 0.0} # 原地旋转 rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist linear: {x: 0.0}, angular: {z: 1.0}4、获取乌龟实时坐标姿态rostopic echo /turtle1/pose rostopic hz /turtle1/pose5、服务调用新增/删除乌龟# 生成第二只乌龟 rosservice call /spawn x: 2.0,y: 2.0,theta: 0.0,name: turtle2 # 清空运动轨迹 rosservice call /clear # 重置仿真窗口 rosservice call /reset6、参数修改更改画布背景色rosparam set /turtlesim/background_r 255 rosparam set /turtlesim/background_g 255 rosparam set /turtlesim/background_b 255 rosservice call /clear7、可视化通信拓扑图rqt_graph五、课堂标准演示流程授课直接照搬roscore启动ROS核心rosrun turtlesim turtlesim_node启动小乌龟仿真rosnode list / rosnode info排查节点信息rostopic系列查看话题通信机制rostopic pub手动下发运动指令rosservice调用服务新增乌龟、清屏rosparam修改全局画布参数rqt_graph图形化复盘通信逻辑六、课程核心总结工作空间项目顶层目录src存包、catkin_make编译、source激活环境功能包ROS最小功能模块双配置文件缺一不可Python脚本必须授权四大核心通信节点程序、话题持续通信、服务单次交互、参数全局配置固定开发流水线建工作空间→建功能包→写代码→编译→激活环境→启动节点七、新手高频报错解决方案报错package not found执行source devel/setup.bash激活环境报错Python脚本无法启动执行chmod x 授权脚本权限报错roscore端口占用重启终端、关闭残留ROS进程即可CSDN博客标签#ROS入门 #ROS零基础 #ROS命令 #turtlesim仿真 #机器人开发 #Ubuntu运维 #ROS教案专栏更新持续更新ROS全套课堂教案、小车URDF建模、底盘驱动、SLAM建图全套课程一键订阅不迷路✅