0% found this document useful (0 votes)
49 views27 pages

04 ETH Zürich ROS-I+in+Architecture+and+Digital+Fabrication

The document describes the Programmed Wall project from 2006 at ETH Zurich involving robotic brick assembly. It discusses additive, formative, and subtractive processes used in the project as well as computational design and robot models.

Uploaded by

luan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
49 views27 pages

04 ETH Zürich ROS-I+in+Architecture+and+Digital+Fabrication

The document describes the Programmed Wall project from 2006 at ETH Zurich involving robotic brick assembly. It discusses additive, formative, and subtractive processes used in the project as well as computational design and robot models.

Uploaded by

luan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 27

The Programmed Wall, Robotic Brick Assembly, ETH Zurich, 2006

Additive processes
Formative processes
Subtractive processes
Computational Design
Fundamentals

Robot models

Backends
# Rhino # Blender
from compas.robots import * from compas.robots import *
from compas_fab.rhino import RobotArtist from compas_fab.blender import RobotArtist

r = 'ros-industrial/abb' r = 'ros-industrial/abb'
p = 'abb_irb6600_support' p = 'abb_irb6600_support'
b = 'kinetic-devel' b = 'kinetic-devel'

github = GithubPackageMeshLoader(r,p,b) github = GithubPackageMeshLoader(r,p,b)


urdf = github.load_urdf('irb6640.urdf') urdf = github.load_urdf('irb6640.urdf')

model = RobotModel.from_urdf_file(urdf) model = RobotModel.from_urdf_file(urdf)


model.load_geometry(github) model.load_geometry(github)

RobotArtist(model).draw_visual() RobotArtist(model).draw_visual()
# Rhino # Blender
from compas.robots import * from compas.robots import *
from compas_fab.rhino import RobotArtist from compas_fab.blender import RobotArtist

r = 'ros-industrial/abb' r = 'ros-industrial/abb'
p = 'abb_irb6600_support' p = 'abb_irb6600_support'
b = 'kinetic-devel' b = 'kinetic-devel'

github = GithubPackageMeshLoader(r,p,b) github = GithubPackageMeshLoader(r,p,b)


urdf = github.load_urdf('irb6640.urdf') urdf = github.load_urdf('irb6640.urdf')

robot = Robot.from_urdf_file(urdf) robot = Robot.from_urdf_file(urdf)


robot.load_geometry(github) robot.load_geometry(github)

RobotArtist(robot).draw_visual() RobotArtist(robot).draw_visual()
# Rhino # Blender
from compas.robots import * from compas.robots import *
from compas_fab.rhino import RobotArtist from compas_fab.blender import RobotArtist

r = 'ros-industrial/abb' r = 'ros-industrial/abb'
p = 'abb_irb6600_support' p = 'abb_irb6600_support'
b = 'kinetic-devel' b = 'kinetic-devel'

github = GithubPackageMeshLoader(r,p,b) github = GithubPackageMeshLoader(r,p,b)


urdf = github.load_urdf('irb6640.urdf') urdf = github.load_urdf('irb6640.urdf')

robot = Robot.from_urdf_file(urdf) robot = Robot.from_urdf_file(urdf)


robot.load_geometry(github) robot.load_geometry(github)

RobotArtist(robot).draw_visual() RobotArtist(robot).draw_visual()
docker-compose up -d Right-click → Compose Up
Overview: all the moving parts
ROBOT CONTROLLER
🤖

TCP

ROS Master Driver Bridge MoveIt!

Websocket

WINDOWS COMPAS FAB roslibpy


Forward Kinematics
from compas_fab.backends import RosClient
from compas_fab.robots import Configuration

with RosClient() as client:


robot = client.load_robot()

configuration = Configuration.from_revolute_values([-3.14, 0.0, 0.0, 0.0, 0.0, 0.0])

frame_RCF = robot.forward_kinematics(configuration)
Inverse Kinematics
from compas.geometry import Frame
from compas_fab.backends import RosClient

with RosClient() as client:


robot = client.load_robot()

frame_WCF = Frame([0.3, 0.1, 0.5], [1, 0, 0], [0, 1, 0])


start_configuration = robot.init_configuration()

configuration = robot.inverse_kinematics(frame_WCF, start_configuration)


Plan cartesian motion
from compas.geometry import Frame
from compas_fab.backends import RosClient
from compas_fab.robots import Configuration

with RosClient() as client:


robot = client.load_robot()

frames = []
frames.append(Frame((0.29, 0.39, 0.50), (0, 1, 0), (0, 0, 1)))
frames.append(Frame((0.51, 0.28, 0.40), (0, 1, 0), (0, 0, 1)))

start_configuration = Configuration.from_revolute_values((3.14, 0.0, 0.0, 0.0, 0.0, 0.0))

trajectory = robot.plan_cartesian_motion(frames, start_configuration)


Plan motion
from compas.geometry import Frame
from compas_fab.backends import RosClient
from compas_fab.robots import Configuration

with RosClient() as client:


robot = client.load_robot()

frame = Frame([0.4, 0.3, 0.4], [0, 1, 0], [0, 0, 1])


start_configuration = Configuration.from_revolute_values((3.14, 0.0, 0.0, 0.0, 0.0, 0.0))

goal_constraints = robot.constraints_from_frame(frame,
tolerance_position=0.001,
tolerance_axes=[0.01, 0.01, 0.01])

trajectory = robot.plan_motion(goal_constraints, start_configuration)


Rhino + Grasshopper + ROS
Thanks!

You might also like