Code developed 2016-2017 to control the second iteration of the Digital Construction Platform.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
apps Updated readme, added NeoPixel control files Oct 30, 2017
template Commit after cleaning up kukaslxctrl. Cleaned up folders (especially … Jan 10, 2017
DCP_BasicOpsManual_2017-10-30.pdf Removed text readme, updated markdown readme to reflect new toolpathi… Mar 3, 2017



dcpctrl_v2 contains software developed for interfacing with & controlling the Digital Construction Platform (DCP). It is the second iteration of software for the DCP. The first iteration (contained in the mdcp repo) relied on the LabJack T7 for interfacing with the AT40GW and KUKA, and ran in standard MATLAB scripts and functions. This iteration is based more heavily in Simulink, and takes advantage of Simulink's real-time capabilities (particularly Simulink Desktop Real-Time) to implement hard(er) real-time controllers.

This software is being developed during academic year 2016-2017 by the Mediated Matter Group at the MIT Media Lab.

Style guide:

We vaguely follow


	apps/ -- All applications to run DCP. Contains both online (Simulink) and offline (MATLAB) tools
	data/ -- Location to store data generated by programs. Do not commit data to repository unless you have a very good readson - this folder should be generally regarded as a temp folder.
	experimental/ -- Sandbox location for storing small, personal projects. Not indexed by init. If something is getting larger than one or two files, create a branch.	

	lib/ -- Core libraries for DCP operation.
		rvctools/ -- Peter Corke's Robotics Toolbox (
	robots/ -- Device-specific libraries & functions. Also contains DCP robot description file, config_dcpv2.m
	template/ -- Templates for various software (Simulink Desktop Real-Time models, etc.)
	util/ -- Non-robot-specific utility functions

Basic Usage:

To successfully use dcpctrl_v2, you need a DCP. Good luck!

Once you have a DCP, the general procedure for using code in this library is:

  • Run init to set up environment
  • Create waypoints and task-space trajectory from input file using program like img2vecttoolpath or img2rasttoolpath (/apps/wayptgen/img2lightpainting)
  • Create joint-space trajectory from task-space trajectory using converter like xtraj2qtraj (/apps/trajgen/)
  • Create Simulink timeseries trajectory from joint-space trajectory using converter like qtraj2slxtraj (/apps/controller/at40_pctrl)
  • Execute trajectory with controller like at40_pctrl (/apps/controller/at40_pctrl)


Please contact Julian Leland (jleland(at)mit(dot)edu) with questions or comments.