ROS内省与诊断
ROS introspection & diagnostics
Launch, inspect topics and diagnose failures in ROS systems.
20 条本项目编写的提案 · 分类 v1.1 · 新增基准运行 0 次。下方验证方式与部分得分规则是设计,不是执行结果。
- 典型应用
- ROS 2 CLI · rqt
- 小类 GUI 需求标签
CL· CLI 足够
任务提案 · 20
展开查看完整原文与建议检查方式;两种界面均保留提案英文原文。
R07.09.01.05-T01 List topics with publishers but no subscribers in a running system
原始指令
Launch fixtures/warehouse_bot/bringup.launch.py (ROS 2 Jazzy, sim time). After 20 s, list every topic that has at least one publisher and zero subscribers, excluding /rosout and /parameter_events, and write them sorted to output/orphans.txt.
- 平台
lin· Linux- 应用
- ROS 2 CLI
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP12· 答案 / 决策- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Grader computes the orphan set from a graph snapshot of the same launch (deterministic node set); file must match exactly.
建议部分得分
90% scaled by Jaccard of reported vs true orphan set; 10% set exactly correct.
R07.09.01.05-T02 Fix a QoS mismatch that stops cmd_vel from reaching the base
原始指令
In fixtures/diffbot_ws, teleop commands on /cmd_vel do not move the simulated robot. Diagnose with ros2 topic info --verbose, fix the QoS incompatibility through the base controller's parameter/QoS override in the launch file (do not edit teleop), and show the robot drives 1 m forward.
- 平台
lin· Linux- 应用
- ROS 2 CLI · Gazebo
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader relaunches: no incompatible QoS events, teleop node unchanged (hash), scripted 1 m forward command moves odom 1.0+/-0.05 m. output/diagnosis.txt must name reliability as the mismatched policy.
建议部分得分
25% cause identified; 35% fix in correct place; 40% robot moves as commanded.
R07.09.01.05-T03 Find and fix a camera topic running below its rated frequency
原始指令
fixtures/perception.launch.py publishes 4 camera streams that should each run at 30 Hz. Measure rates with ros2 topic hz, identify the stream below 25 Hz and its cause in node parameters (e.g., compression level or throttle), fix the parameter in the YAML and confirm 30+/-1 Hz.
- 平台
lin· Linux- 应用
- ROS 2 CLI
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader relaunches with the edited YAML: all 4 topics 30+/-1 Hz over 20 s; diff limited to the one faulty parameter; output/answer.txt names the topic and parameter.
建议部分得分
30% slow topic and cause identified; 30% minimal fix; 40% all rates in spec.
R07.09.01.05-T04 Repair a broken TF tree between base_link and the lidar
原始指令
Navigation in fixtures/rover_ws fails with 'Could not transform laser to base_link'. Use tf2 tools (view_frames, tf2_echo) to find the break, add the missing transform with the offsets from the URDF in input/rover.urdf.xacro in the correct launch file, and verify scans appear in the map frame.
- 平台
lin· Linux- 应用
- ROS 2 CLI · tf2_tools
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader relaunches: tf lookup map->laser succeeds; laser->base_link transform equals URDF values within 1 mm/0.1 deg; no duplicate publishers for that edge; costmap receives scans.
建议部分得分
30% break located (output/diagnosis.txt); 40% correct transform values; 30% downstream nav receives scans.
R07.09.01.05-T05 Find a mis-remapped namespace in a large graph with rqt_graph
原始指令
fixtures/fleet_sim launches 40 nodes for 3 robots. Robot r2's planner never receives a map. Use rqt_graph (nodes/topics, namespace grouping) to find the wrong remap, fix it in the launch file, and save a screenshot of the corrected graph region to output/graph.png.
- 平台
lin· Linux- 应用
- rqt · ROS 2 CLI
- 交互表面
desk· 桌面 GUIterm· 终端- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
G2· GUI 必要- 交互原语
click· 指向与点击nav· 平移 / 缩放 / 滚动vis· 视觉判断code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader relaunches: /r2/map has the map server publisher and r2 planner subscriber; only the faulty remap line changed; graph.png exists (not graded beyond presence and size).
建议部分得分
40% faulty remap identified; 40% fixed graph connectivity; 20% minimal diff.
R07.09.01.05-T06 Find when the battery fell below 20% and the nav state at that time
原始指令
From the rosbag2 recording fixtures/run_0412 (mcap), find the first timestamp at which /battery_state percentage drops below 0.20, and the most recent /nav_status message at that time. Write output/answer.json with the timestamp (ns), percentage and nav state.
- 平台
lin· Linux- 应用
- ROS 2 CLI · rosbag2 · Python
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP12· 答案 / 决策- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader computes from the bag: timestamp exact (message stamp), percentage within 1e-4, nav state string exact.
建议部分得分
40% timestamp; 20% percentage; 40% nav state.
R07.09.01.05-T07 Measure odometry drift and wheel-slip onset in PlotJuggler
原始指令
Load fixtures/slip_test.mcap in PlotJuggler, plot /odom and /ground_truth XY and their position error, and find the first time the error exceeds 0.2 m. Report the time (s from bag start, 0.1 s resolution) and the error at the end in output/answer.json; save the layout as output/slip.xml.
- 平台
lin· Linux- 应用
- PlotJuggler
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
click· 指向与点击drag· 拖放vis· 视觉判断- 工作产物
WP12· 答案 / 决策- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader computes the error series from the bag: onset time within 0.1 s and final error within 0.02 m; layout XML includes both topics and a custom error series.
建议部分得分
50% onset time; 30% final error; 20% layout saved.
R07.09.01.05-T08 Audit use_sim_time across all running nodes
原始指令
With fixtures/sim_stack.launch.py running, dump the parameters of all nodes to output/params/*.yaml and list in output/sim_time_off.txt every node whose use_sim_time is false.
- 平台
lin· Linux- 应用
- ROS 2 CLI
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP02· 记录 / 表格- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Grader snapshots the parameters of the same launch: one YAML per node, and the false-node list must match exactly (3 planted nodes).
建议部分得分
40% dumps complete; 60% exact list of offending nodes.
R07.09.01.05-T09 Fix three planted faults so Nav2 reaches all goals
原始指令
In fixtures/nav2_house (Gazebo headless + Nav2), the robot fails to reach goals. Find and fix the 3 planted faults (a costmap parameter, a sensor frame_id, a lifecycle node that never activates) with ROS 2 CLI tools and logs, then send the 3 goals in input/goals.yaml and confirm arrival.
- 平台
lin· Linux- 应用
- ROS 2 CLI · Nav2 · Gazebo
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
long· 长流程- 提案难度
- 5 / 5
建议验证方式
Grader relaunches the fixed workspace and sends the goals: all reached within 0.25 m in 120 s; diff touches only the 3 faulty items; output/faults.md names all 3.
建议部分得分
60% planted faults fixed (20 pts each); 30% all goals reached; 10% faults documented.
R07.09.01.05-T10 Trace the first error behind a node crash in rqt_console
原始指令
fixtures/arm_bringup crashes after ~30 s. Using rqt_console, filter by severity and node to find the first ERROR message that precedes the crash chain, and record node name, message text and timestamp in output/answer.json.
- 平台
lin· Linux- 应用
- rqt
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
click· 指向与点击type· 文字与表单vis· 视觉判断- 工作产物
WP12· 答案 / 决策- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader compares with the deterministic log of the fixture: node and message exact, timestamp within 1 ms.
建议部分得分
40% node; 40% message; 20% timestamp.
R07.09.01.05-T11 Restore discovery between two ROS 2 hosts with a discovery server
原始指令
Two containers (robot, base_station) run fixtures/multi_host. Topics from robot are invisible on base_station. Diagnose (domain ID, multicast disabled), configure a Fast DDS discovery server on base_station and the client env on both, and show /robot/odom echoes on base_station.
- 平台
lin· Linux- 应用
- ROS 2 CLI · Fast DDS
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP08· 应用 / 系统状态- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader restarts both containers with the submitted env/config: ros2 topic list on base_station shows robot topics within 10 s, /robot/odom receives >=9 Hz; diagnosis.txt names both causes.
建议部分得分
30% causes identified; 40% discovery server config; 30% topics flow across hosts.
R07.09.01.05-T12 Tune a joint PID live with rqt_reconfigure to meet a step spec
原始指令
The simulated joint controller in fixtures/joint_tuning exposes p, i, d as dynamic parameters. Using rqt (Dynamic Reconfigure / Parameter Reconfigure) and rqt_plot of the step test, tune gains for <5% overshoot and <0.5 s 2% settling on a 0.5 rad step. Save final gains to output/gains.yaml.
- 平台
lin· Linux- 应用
- rqt
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
drag· 拖放type· 文字与表单vis· 视觉判断- 工作产物
WP08· 应用 / 系统状态- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader applies gains.yaml and runs 3 step tests: overshoot <5% and settling <0.5 s in all; parameter-change events must come from the rqt node (graph introspection).
建议部分得分
20% gains saved; 40% overshoot spec; 40% settling spec.
R07.09.01.05-T13 Locate the node adding latency in a perception pipeline
原始指令
In fixtures/detect_pipeline (camera -> rectify -> detector -> tracker), end-to-end latency to /tracks exceeds 120 ms. Measure per-stage latency using header stamps (ros2 topic delay or a small script), identify the stage adding >50 ms and write output/latency.csv with mean and p95 per stage.
- 平台
lin· Linux- 应用
- ROS 2 CLI · Python
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP02· 记录 / 表格- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader measures the same deterministic pipeline: per-stage means within 5 ms, p95 within 10 ms, slow stage identified correctly in output/answer.txt.
建议部分得分
40% slow stage correct; 40% per-stage means; 20% p95.
R07.09.01.05-T14 Bring up lifecycle nodes and fix one that fails to configure
原始指令
fixtures/lifecycle_demo has 4 managed nodes that must be configured and activated in order: map_server, amcl, planner, controller. One fails on configure. Use ros2 lifecycle commands and logs to find why, fix its parameter file reference, and leave all 4 active.
- 平台
lin· Linux- 应用
- ROS 2 CLI
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP08· 应用 / 系统状态- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader queries ros2 lifecycle get for all 4: active; transition event log shows the required order; launch diff limited to the parameter file path.
建议部分得分
30% cause identified; 30% fix; 40% all active in correct order.
R07.09.01.05-T15 Correlate motor driver warnings with current spikes in Foxglove
原始指令
Open fixtures/agv_shift.mcap in Foxglove Studio. Build a layout with a 3D panel, a plot of /motor/current, an image panel and a diagnostics panel. Find each time window where /diagnostics reports WARN for 'motor_driver' and the peak current within it. Export the layout JSON and output/windows.csv.
- 平台
lin· Linuxmac· macOSwin· Windows- 应用
- Foxglove Studio
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
click· 指向与点击drag· 拖放nav· 平移 / 缩放 / 滚动vis· 视觉判断- 工作产物
WP02· 记录 / 表格- 条件
- 未声明
- 提案难度
- 5 / 5
建议验证方式
Grader computes WARN windows and peak currents from the bag: window starts/ends within 0.2 s and peaks within 0.1 A; layout JSON includes the 4 panel types bound to the right topics.
建议部分得分
20% layout; 40% window boundaries; 40% peak currents.
R07.09.01.05-T16 Configure a diagnostic aggregator with grouped analyzers
原始指令
Write output/analyzers.yaml for diagnostic_aggregator in fixtures/mobile_base so /diagnostics_agg groups status into Motors, Sensors (Lidar, IMU, Cameras) and Power, matching names in input/diag_spec.md; launch it and confirm Sensors/Cameras rolls up to the worst child level.
- 平台
lin· Linux- 应用
- ROS 2 CLI · diagnostics
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP08· 应用 / 系统状态- 条件
- 未声明
- 提案难度
- 4 / 5
建议验证方式
Grader launches with the YAML: /diagnostics_agg contains exactly the specified groups with correct membership; injected camera ERROR propagates to /Sensors/Cameras and /Sensors.
建议部分得分
50% group membership; 30% roll-up behavior; 20% YAML valid and loads.
R07.09.01.05-T17 Repair a Python launch file so all six nodes start
原始指令
ros2 launch fixtures/inspection_bot/launch/inspect.launch.py exits immediately. Fix the errors (a wrong package share path substitution and a remap that points to a non-existent topic) so all 6 nodes start and /inspection/report is published.
- 平台
lin· Linux- 应用
- ROS 2 CLI
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader launches the fixed file: all 6 nodes in ros2 node list within 15 s, /inspection/report publishes; diff limited to the two faulty expressions.
建议部分得分
40% path fix; 30% remap fix; 30% full bring-up.
R07.09.01.05-T18 Record a filtered, split and compressed rosbag
原始指令
While fixtures/survey_run.launch.py plays a 60 s scripted mission, record only /scan, /odom, /tf and /tf_static into output/survey_bag using mcap storage, zstd file compression and 100 MB splits. Then write ros2 bag info output to output/info.txt.
- 平台
lin· Linux- 应用
- ROS 2 CLI · rosbag2
- 交互表面
term· 终端- GUI 需求 · 任务设定
CL· CLI 足够- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP09· 文件与文件夹- 条件
- 未声明
- 提案难度
- 2 / 5
建议验证方式
Grader reads metadata.yaml: exactly the 4 topics, mcap storage, zstd compression, split size setting, duration >=58 s and message counts within 2% of the publisher counts.
建议部分得分
40% topic filter; 30% storage/compression/split; 30% completeness.
R07.09.01.05-T19 Find and fix intermittent joint_states dropouts
原始指令
In fixtures/arm_driver_ws, /joint_states drops for ~200 ms roughly every 45 s. Use ros2 topic hz/delay and ros2_tracing (LTTng) to find the blocking callback in the driver node, fix it by moving that work to a separate callback group with a MultiThreadedExecutor, and show 10 min without gaps >30 ms.
- 平台
lin· Linux- 应用
- ROS 2 CLI · ros2_tracing · C++
- 交互表面
term· 终端- GUI 需求 · 任务设定
HY· 混合- GUI 需求 · 普通权限
CL· CLI 足够- 交互原语
code· 代码与命令- 工作产物
WP06· 代码 / 工程- 条件
long· 长流程- 提案难度
- 5 / 5
建议验证方式
Grader rebuilds and runs 10 min: max inter-message gap <30 ms; the trace-identified callback is in a separate callback group; output/analysis.md cites the trace evidence (callback name and duration).
建议部分得分
30% root cause with trace evidence; 40% fix compiles and is structurally right; 30% no gaps over 10 min.
R07.09.01.05-T20 Spot the flipped camera stream and correct its parameter
原始指令
Four cameras in fixtures/quad_cam publish /cam_front, /cam_rear, /cam_left, /cam_right. One is mounted upside down but its flip parameter is wrong. View the streams in rqt_image_view against the scene layout in input/layout.png, identify the flipped one and set its 'flip_vertical' parameter in the YAML.
- 平台
lin· Linux- 应用
- rqt
- 交互表面
desk· 桌面 GUI- GUI 需求 · 任务设定
G2· GUI 必要- GUI 需求 · 普通权限
G2· GUI 必要- 交互原语
click· 指向与点击vis· 视觉判断- 工作产物
WP06· 代码 / 工程- 条件
- 未声明
- 提案难度
- 3 / 5
建议验证方式
Grader relaunches: the planted camera now renders with sky up (template match >0.9 vs reference frame); only that camera's flip parameter changed. Agent has no terminal, ROS 2 CLI or Python, so streams can only be inspected in rqt_image_view; topic subscriptions from non-rqt nodes are detected by graph introspection and fail.
建议部分得分
40% correct camera identified; 40% image orientation fixed; 20% no other changes.
已有研究映射
当前映射未给此小类指定基准参考。