用途:该技能面向 ROS1(Robot Operating System 1)的开发与维护,适用于构建或维护 ROS1 包与节点、编写 launch 文件与消息/服务、调试话题/服务/动作通信、配置 catkin 工作空间、处理 tf/tf2 与 URDF 机器人模型、使用 actionlib 执行长任务、优化 nodelet 零拷贝传输,以及规划 ROS1 到 ROS2 的迁移。
主要能力与要点:节点设计强调单一职责,初始化顺序为先加载参数、再建发布者、最后建订阅者;话题命名建议采用 /robot_name/sensor_type/data_type,高频传感器数据用小队列,命令类用较大队列,避免 queue_size=0,低频数据可用 latch。launch 文件建议使用 arg 提升可配置性,按子系统分组命名空间,用 if/unless 区分仿真与实机,并支持 remap 与 rosparam 加载。tf 树要求每帧只有一个父帧,静态变换用 static_transform_publisher,动态变换保持稳定频率并正确设置时间戳,查询时处理 Lookup/Connectivity/Extrapolation 异常。长任务使用 actionlib,服务端设置 auto_start=False,在循环内检查抢占并发布反馈。
常见陷阱:不同时钟的时间戳不可直接比较,应使用 message_filters 的 ApproximateTimeSynchronizer;ROS1 默认单线程 spinner,耗时回调会阻塞其他回调,可用 MultiThreadedSpinner 或独立工作线程与队列;参数应使用私有命名空间 ~param 并设默认值,避免硬编码与全局冲突;同进程大数据交换可用 nodelet 减少序列化开销。
调试工具:rostopic list/hz/bw/echo、rosnode list/info、roswtf、rqt_graph、rqt_console,以及 tf_monitor、view_frames、tf_echo 和 rosbag record/info/play。
迁移提示:rospy→rclpy、roscpp→rclcpp、catkin_make→colcon build、roslaunch XML→ROS2 Python launch、全局参数服务器→每节点参数、roscore→DDS 发现、nodelet→ROS2 Components、dynamic_reconfigure→ROS2 参数回调;建议从叶子节点开始迁移,过渡期可用 ros1_bridge 同时运行两套栈。
限制:资料未提供具体安装命令、版本兼容范围、性能基准或收费信息。