Breadth-first collision-checked grid path
Breadth-first collision-checked grid path. Parameterized bounded JSON adapter; numerical operation, no hardware execution.
pythonrobotics-breadth-first-planner | Record version: 1.0.0
Record JSON | Markdown recipe | Complete search index
Fetch and prepare
curl -fsSL https://hub.superfastrobotics.com/skills/pythonrobotics-breadth-first-planner/skill.json
curl -fsSL https://hub.superfastrobotics.com/skills/pythonrobotics-breadth-first-planner/README.md
python /PATH_TO_SKILL/scripts/rsh.py inspect pythonrobotics-breadth-first-planner --json
python /PATH_TO_SKILL/scripts/rsh.py prepare pythonrobotics-breadth-first-planner --project ./experiment --expected-source-commit cdd0cc888802b584c2d654ca85e3c5460973487d --expected-record-version 1.0.0 --plan --json
Inspect the requirements, then remove --plan to prepare a project. Preparation verifies the archive SHA256 and preserves exact source pins. --install-deps explicitly installs dependencies. Run the returned simulation command separately.
Environment
- Runtime
- pythonrobotics cdd0cc888802
- Robot
- mathematical-model
- Controller
- json-contract-v1
- Observation
- explicit-json-input
- OS / architecture
- windows / x86_64
- Python
- >=3.10,<3.11
Compatibility status: hub_verified
- Runtime
- pythonrobotics cdd0cc888802
- Robot
- mathematical-model
- Controller
- json-contract-v1
- Observation
- explicit-json-input
- OS / architecture
- linux / x86_64
- Python
- >=3.10,<3.11
Compatibility status: hub_verified
All inputs and outputs follow interface v1. Simulation adapters query exact synthetic simulator state; no perception or physical sensor compatibility.
Requirements
- x86_64 CPU; no GPU or robot required
No display. Matplotlib Agg for numerical imports; PyBullet DIRECT for simulation.
Packages: contourpy==1.3.2, cycler==0.12.1, fonttools==4.65.0, kiwisolver==1.5.1, matplotlib==3.9.4, numpy==1.26.4, packaging==26.3, pillow==12.3.0, pyparsing==3.3.3, python-dateutil==2.9.0.post0, scipy==1.13.1, six==1.17.0
Runtime dependency versions are pinned for the supported Python 3.10 x86_64 CPU environments and checked against execution receipts. Platform-specific wheel hashes are not represented as a universal artifact lock; prepare captures pip freeze.
External API keys: none.
Invocation
Executable interface
{
"version": "1",
"kind": "algorithm",
"abstraction_level": 0,
"execution_domain": "computation",
"language": "python",
"input_transport": "json_file_or_inline",
"output_transport": "json_stdout",
"conventions": {
"linear_unit": "m",
"angular_unit": "rad",
"time_unit": "s",
"coordinate_frame": "planar_map_xy",
"joint_order": "not_used",
"quaternion_order": "not_used"
},
"input_schema": {
"type": "object",
"required": [
"start",
"goal",
"bounds",
"obstacles",
"robot_radius"
],
"additionalProperties": false,
"properties": {
"start": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"minimum": 1,
"maximum": 39
},
"x-unit": "m",
"x-frame": "planar_map_xy",
"x-order": [
"x",
"y"
],
"description": "start; units=m; frame=planar_map_xy; component order=x,y"
},
"goal": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"minimum": 1,
"maximum": 39
},
"x-unit": "m",
"x-frame": "planar_map_xy",
"x-order": [
"x",
"y"
],
"description": "goal; units=m; frame=planar_map_xy; component order=x,y"
},
"bounds": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "integer",
"minimum": 0,
"maximum": 40
},
"x-unit": "m",
"x-frame": "planar_map_xy",
"description": "bounds; units=m; frame=planar_map_xy"
},
"obstacles": {
"type": "array",
"minItems": 0,
"maxItems": 200,
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"minimum": 0,
"maximum": 40
}
},
"x-unit": "m",
"x-frame": "planar_map_xy",
"x-order": [
"x",
"y"
],
"description": "obstacles; units=m; frame=planar_map_xy; component order=x,y"
},
"robot_radius": {
"type": "number",
"minimum": 0.1,
"maximum": 0.6,
"x-unit": "m",
"x-frame": "planar_map_xy",
"description": "robot_radius; units=m; frame=planar_map_xy"
}
}
},
"output_schema": {
"type": "object",
"required": [
"path_xy",
"length_m"
],
"additionalProperties": false,
"properties": {
"path_xy": {
"type": "array",
"minItems": 2,
"maxItems": 2048,
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"minimum": -100.0,
"maximum": 100.0
}
},
"x-unit": "m",
"x-frame": "planar_map_xy",
"x-order": [
"x",
"y"
],
"description": "path_xy; units=m; frame=planar_map_xy; component order=x,y"
},
"length_m": {
"type": "number",
"minimum": 0,
"maximum": 100000,
"x-unit": "m",
"x-frame": "planar_map_xy",
"description": "length_m; units=m; frame=planar_map_xy"
}
}
},
"preconditions": [
"Inputs use the declared units and frame; no implicit transforms.",
"This exact numerical/simulation model is not a physical robot configuration."
],
"postconditions": [
"All declared checks must pass and all outputs must be finite.",
"Success applies only to this operation and model, not higher-level task completion."
],
"failure_codes": [
"invalid_input_or_environment",
"execution_failed",
"task_failed"
],
"composition": {
"depends_on": [],
"automatic_frame_conversion": false,
"automatic_hardware_execution": false
},
"output_selector": "outputs",
"origin_reference_ids": [],
"origin_relationship": "adapted_from; inspect declared model and inputs, not original robot compatibility"
}
Entrypoint: python run.py
{
"argv": [
"{python}",
"{recipe_dir}/run.py",
"--source-dir",
"{source_dir}",
"--example"
],
"inputs": {
"start": [
2,
2
],
"goal": [
18,
18
],
"bounds": [
0,
20
],
"obstacles": [
[
10,
1
],
[
10,
2
],
[
10,
3
],
[
10,
4
],
[
10,
5
],
[
10,
6
],
[
10,
7
],
[
10,
8
],
[
10,
9
],
[
10,
10
],
[
10,
11
],
[
10,
12
]
],
"robot_radius": 0.3
},
"outputs": {
"format": "single JSON object on stdout",
"payload_selector": "outputs",
"schema": {
"type": "object",
"required": [
"path_xy",
"length_m"
],
"additionalProperties": false,
"properties": {
"path_xy": {
"type": "array",
"minItems": 2,
"maxItems": 2048,
"items": {
"type": "array",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number",
"minimum": -100.0,
"maximum": 100.0
}
},
"x-unit": "m",
"x-frame": "planar_map_xy",
"x-order": [
"x",
"y"
],
"description": "path_xy; units=m; frame=planar_map_xy; component order=x,y"
},
"length_m": {
"type": "number",
"minimum": 0,
"maximum": 100000,
"x-unit": "m",
"x-frame": "planar_map_xy",
"description": "length_m; units=m; frame=planar_map_xy"
}
}
}
}
}
Success: Exit 0, status=task_complete, success=true, finite outputs satisfying interface.output_schema and all declared numerical/model checks. This is not a physical robot or general task-success claim.
Timeout: 30 seconds. Caller must terminate the separate adapter process after 30 seconds; adapters bound iterations/scene steps and close simulation clients.
Failure modes
- Invalid or oversized JSON
- Source checksum mismatch
- Unavailable pinned dependency
- No valid path or postcondition failure
- Execution exceeding the declared bounded algorithm budget
Source and license
- Repository
- https://github.com/AtsushiSakai/PythonRobotics
- Authors
- Atsushi Sakai and PythonRobotics contributors
- Commit
cdd0cc888802b584c2d654ca85e3c5460973487d- Archive SHA256
6d3ccf43be4ae770a9e8dffd463c2561665847df5b7ddf693b01130004dbcee5- License
- MIT
- Hub commit
39b06d7a6016edcea27e348e49ffd86f29ec1811
- ArmNavigation/n_joint_arm_to_point_control/NLinkArm.py
- ArmNavigation/n_joint_arm_to_point_control/n_joint_arm_to_point_control.py
- InvertedPendulum/inverted_pendulum_lqr_control.py
- LICENSE
- Localization/extended_kalman_filter/ekf_with_velocity_correction.py
- Localization/extended_kalman_filter/extended_kalman_filter.py
- Localization/unscented_kalman_filter/unscented_kalman_filter.py
- PathPlanning/AStar/a_star.py
- PathPlanning/BSplinePath/bspline_path.py
- PathPlanning/BezierPath/bezier_path.py
- PathPlanning/BidirectionalAStar/bidirectional_a_star.py
- PathPlanning/BidirectionalBreadthFirstSearch/bidirectional_breadth_first_search.py
- PathPlanning/BreadthFirstSearch/breadth_first_search.py
- PathPlanning/Catmull_RomSplinePath/catmull_rom_spline_path.py
- PathPlanning/CubicSpline/cubic_spline_planner.py
- PathPlanning/DepthFirstSearch/depth_first_search.py
- PathPlanning/Dijkstra/dijkstra.py
- PathPlanning/DubinsPath/dubins_path_planner.py
- PathPlanning/DynamicWindowApproach/dynamic_window_approach.py
- PathPlanning/GreedyBestFirstSearch/greedy_best_first_search.py
- PathPlanning/PotentialFieldPlanning/potential_field_planning.py
- PathPlanning/ProbabilisticRoadMap/probabilistic_road_map.py
- PathPlanning/QuinticPolynomialsPlanner/quintic_polynomials_planner.py
- PathPlanning/RRT/rrt.py
- PathPlanning/RRT/rrt_with_pathsmoothing.py
- PathPlanning/RRTStar/rrt_star.py
- PathPlanning/ReedsSheppPath/reeds_shepp_path_planning.py
- PathTracking/pure_pursuit/pure_pursuit.py
- PathTracking/stanley_control/stanley_control.py
- utils/__init__.py
- utils/angle.py
- utils/plot.py
- ArmNavigation/n_joint_arm_to_point_control/__init__.py
- ArmNavigation/__init__.py
- __init__.py
- Localization/__init__.py
- PathPlanning/__init__.py
- PathPlanning/CubicSpline/__init__.py
- PathPlanning/DubinsPath/__init__.py
- PathPlanning/RRT/__init__.py
- PathPlanning/RRTStar/__init__.py
- PathTracking/__init__.py
Evidence
Runtime: task_complete / task_complete
Three frozen positive cases passed against this exact adapter; see per-case receipts. This does not estimate general accuracy.
Reviewer: Hub maintainer runtime harness | 2026-10-19
- python tools/verify_executable_recipes.py --source-cache SOURCE_CACHE --output OUTPUT --backend pythonrobotics
Submitter reports and hub verification remain separate. Source review does not establish task success.