21 OSs = {
'humble':
'jammy',
'jazzy':
'noble'}
22 Prefixs = {
'humble':
'H',
'jazzy':
'J'}
32 'nav2_collision_monitor',
34 'nav2_constrained_smoother',
39 'nav2_dwb_controller',
40 'nav2_graceful_controller',
41 'nav2_lifecycle_manager',
44 'nav2_mppi_controller',
48 'nav2_regulated_pure_pursuit_controller',
49 'nav2_rotation_shim_controller',
51 'nav2_simple_commander',
55 'nav2_theta_star_planner',
57 'nav2_velocity_smoother',
59 'nav2_waypoint_follower',
63 Distros = [
'humble',
'jazzy']
66 def getSrcPath(package: str, prefix: str, OS: str) -> str:
67 return f
'https://build.ros2.org/job/{prefix}src_u{OS[0]}__{package}__ubuntu_{OS}__source/'
70 def getBinPath(package: str, prefix: str, OS: str) -> str:
72 f
'https://build.ros2.org/job/{prefix}bin_u{OS[0]}64__{package}__ubuntu_{OS}_'
77 def createPreamble(Distros: list[str]) -> str:
78 table =
'| Package | '
79 for distro
in Distros:
80 table += distro +
' Source | ' + distro +
' Debian | '
83 for distro
in Distros:
84 table +=
' :---: | :---: |'
89 header = createPreamble(Distros)
92 for package
in Packages:
93 entry = f
'| {package} | '
94 for distro
in Distros:
96 prefix = Prefixs[distro]
98 srcURL = getSrcPath(package, prefix, OS)
99 binURL = getBinPath(package, prefix, OS)
100 response = requests.get(srcURL)
102 if response.status_code != 200:
103 entry +=
'N/A | N/A | '
105 entry += f
'[]({srcURL}) | '
106 entry += f
'[]({binURL}) | '
112 body = body.replace(
'| opennav_docking |',
'| nav2_docking |')
114 body = body.replace(
'| nav2_regulated_pure_pursuit_controller |',
115 '| nav2_regulated_pure_pursuit |')
117 print(header +
'\n' + body)
120 if __name__ ==
'__main__':