이 가이드는 인류와 AI가 함께 만드는 지식입니다.
이 콘텐츠는 Human + AI Partnership 철학 아래 모든 사람이 로봇·AI를 배울 수 있도록 무료로 제공됩니다. 당신의 질문과 기여가 다음 학생의 미래를 바꿉니다.
ROS 2 Construction Robotics Guide 2026
Construction is labor-constrained and ripe for automation. This guide covers the ROS 2 stack for jobsite robots: georeferenced site mapping, BIM-driven autonomous layout, rough-terrain navigation, and task execution like printing and bricklaying.
1. The Construction Robot Stack
Jobsite robots tie the digital model (BIM) to physical work with survey-grade accuracy:
# Core stack for a site robot
sudo apt-get install -y ros-humble-nav2-bringup ros-humble-robot-localization ros-humble-slam-toolbox
# Layers:
# 1. Georeferencing (total station / RTK-GPS -> site datum)
# 2. Site mapping (SLAM against evolving structure)
# 3. BIM integration (IFC model -> task coordinates)
# 4. Task execution (layout marking, printing, placing)2. Georeferencing to the Site Datum
Everything on a jobsite references control points. Register the robot to the site coordinate system:
import numpy as np
def compute_site_transform(robot_pts, site_pts):
"""Rigid transform (Kabsch) from robot frame to site datum
using >=3 surveyed control points."""
rc = robot_pts - robot_pts.mean(axis=0)
sc = site_pts - site_pts.mean(axis=0)
H = rc.T @ sc
U, _, Vt = np.linalg.svd(H)
d = np.sign(np.linalg.det(Vt.T @ U.T))
R = Vt.T @ np.diag([1, 1, d]) @ U.T
t = site_pts.mean(axis=0) - R @ robot_pts.mean(axis=0)
return R, t # now every robot pose maps to real building coordinates3. Site Mapping on a Changing Structure
Unlike a warehouse, a construction site changes daily. Map incrementally and flag deviations:
# slam_toolbox in lifelong mapping mode — the map evolves as
# walls go up. Persist and reload the serialized map each day.
slam_toolbox:
ros__parameters:
mode: mapping
map_update_interval: 5.0
enable_interactive_mode: true
# Serialize at end of shift, deserialize next morning
map_file_name: /site/level3_map
resolution: 0.054. BIM Integration
Parse the IFC building model to extract task locations (e.g. where to mark a wall):
import ifcopenshell, ifcopenshell.geom
def extract_walls(ifc_path):
model = ifcopenshell.open(ifc_path)
settings = ifcopenshell.geom.settings()
tasks = []
for wall in model.by_type('IfcWall'):
shape = ifcopenshell.geom.create_shape(settings, wall)
verts = shape.geometry.verts # in model coordinates
baseline = wall_baseline(verts)
tasks.append({'id': wall.GlobalId, 'baseline': baseline})
return tasks # transform baselines into site datum, then robot frame5. Autonomous Layout Marking
Layout robots print BIM lines/points onto the slab — replacing hours of manual chalk work:
def execute_layout(self, tasks):
for task in sort_by_travel(tasks, self.position):
target = site_to_robot(task['point'], self.site_tf)
self.nav.goToPose(to_pose(target))
self.nav.waitUntilNavComplete()
# Verify position against total station before marking
if self.position_error() < 0.003: # 3mm layout tolerance
self.marker.print(task['label'])
else:
self.log_deviation(task)6. Rough-Terrain Navigation
- Traversability: classify rubble, mud, and ramps from depth/point clouds.
- Tracked/legged bases: handle debris that wheels cannot.
- Elevation maps: use grid_map for 2.5D costmaps on uneven ground.
- Slip estimation: fuse IMU + wheel odometry to detect and correct slip.
7. Task Robots: Printing & Bricklaying
# Bricklaying: a mobile base positions, an arm places
def lay_course(self, course):
for brick in course:
self.base.reposition_for(brick.location) # coarse
grasp = self.arm.pick_from_feeder()
place = compute_place_pose(brick, mortar_offset=0.01)
self.arm.move_to(place, speed='slow') # fine
self.arm.release()
self.verify_placement(brick) # vision check vs BIM tolerance8. As-Built Verification
Robots also scan what was built and compare to the model — catching errors early:
def scan_vs_bim(point_cloud, bim_model, tolerance=0.01):
deviations = []
for pt in point_cloud:
nearest = bim_model.nearest_surface(pt)
d = distance(pt, nearest)
if d > tolerance:
deviations.append({'point': pt, 'deviation': d})
return deviations # feed a daily progress + quality report9. Jobsite Safety
- Worker detection: stop for people in dynamic, cluttered scenes.
- Exclusion zones: geofence active machinery and edges/openings.
- Dust/weather: harden sensors; LiDAR degrades in heavy dust.
- Fall protection: edge detection near slab openings and floor edges.
- Lockout: disable tools whenever localization confidence drops.
10. Real Platforms
- Dusty Robotics: autonomous layout/floor-printing robots.
- Boston Dynamics Spot: site scanning and progress capture.
- Built Robotics: autonomous heavy equipment (excavators).
- SAM / Hadrian: bricklaying automation.
Key Takeaways
Construction robotics lives or dies on accuracy: georeference every robot to the site datum with surveyed control points, map incrementally on a structure that changes daily, and drive tasks straight from the BIM/IFC model. Layout marking hits millimeter tolerances, rough-terrain navigation handles the mess of a real jobsite, and as-built scanning closes the loop by comparing reality to the model. Treat worker safety and localization confidence as gating conditions for every tool action.