Errata

Making Things See

Errata for Making Things See

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date Submitted
Printed Page 90
5th paragraph

I tried example 9 today, having just downloaded latest Kinect SDK, SimpleOpenNI etc.
I found the depthMap is NOT reversed (contrary to what the book says - perhaps it was reversed in earlier versions?).
So I had to change the line:
int i = reversedX + y * 640;
to:
int i = x + y * 640;
in order to get the "pen" to move in the same direction as my finger.

Anonymous  Jan 25, 2014 
Printed, PDF Page 140
6th paragraph

There's a link to download the files for the air drum kit project, but the link is currently unavailable.

Erick Mendon  Aug 25, 2013 
Printed Page 124-125
Last Paragraph on 124 and 1st on 125

Paragraph at the bottom of page 124 is repeated at the top of page 125.

Tim Murphy  Jul 24, 2013 
PDF Page 98
3rd line

when I tried to compile the example code i get this in return
SimpleOpenNI Version 0.27
Exception in thread "Animation Thread" java.lang.NullPointerException
at kinect_deteccion_cercana.draw(kinect_deteccion_cercana.java:47) at processing.core.PApplet.handleDraw(PApplet.java:2266)
at processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:243)
at processing.core.PApplet.run(PApplet.java:2140)
at java.lang.Thread.run(Thread.java:662)

Anonymous  Apr 03, 2013 
PDF Page 118
Point #2 of code explanation

Your discussion of rotateX ignores the fact that the function flips both the Y and Z axis. Flipping the Y axis makes everything "right side up". Flipping the Z axis means that the depth readings from the Kinect correspond with the depth values on the screen (smaller depth numbers are closer to the viewer, bigger depth numbers are further away).

Rich Simpson  Mar 28, 2013 
Printed, PDF, ePub, Mobi Page 47-49
Installation instructions for OpenNI and Processing Library

Because OpenNI and Processing are in a period of rapid development now, please begin at the simple-openni site for installing OpenNI as well as simple-openni:

https://code.google.com/p/simple-openni/wiki/Installation

Brian Jepson
Brian Jepson
 
Mar 07, 2013 
ePub Page 4173/13181
M?xico

PVector[] depthPoints = kinect.depthMapRealWorld();

Null Pointer exception

SimpleOpenNI Version 0.27
Exception in thread "Animation Thread" java.lang.NullPointerException
at SimpleOpenNI.XnPoint3D.cArrayUnwrap(XnPoint3D.java:39)
at SimpleOpenNI.ContextWrapper.depthMapRealWorld(ContextWrapper.java:223)
at SimpleOpenNI.SimpleOpenNI.updateDepthRealWorld(SimpleOpenNI.java:851)
at SimpleOpenNI.SimpleOpenNI.depthMapRealWorld(SimpleOpenNI.java:438)
at Pjt14kinect.draw(Pjt14kinect.java:55)
at processing.core.PApplet.handleDraw(Unknown Source)
at processing.core.PApplet.run(Unknown Source)
at java.lang.Thread.run(Thread.java:662)

Anonymous  Jan 07, 2013 
Printed Page 9
.

On page 9, the author implies that Nite cannot be used with
commercial projects. In fact on the openni website it states

http://community.openni.org/openni/topics/how_much_does_nite_cost_can_i_use_it_in_my_product

NiTE for Windows, Mac and Linux are FREE for commercial use, you can
freely use it for your projects!
There are other versions, such as NiTE for ARM (for Android) for
specific embedded systems, they are distributed by Primesense under
specific licenses.

Anonymous  Dec 28, 2012 
Printed Page 121
Code segment downloaded from github

Program stops at :
PVector[] depthpoints = kinect.depthMapRealWorld();

Error reported as:

NullPointerException


Sep 22 14:28:16 Clive-Wisharts-iMac.local java[623] <Error>: CGContextGetCTM: invalid context 0x0
Sep 22 14:28:16 Clive-Wisharts-iMac.local java[623] <Error>: CGContextSetBaseCTM: invalid context 0x0
Sep 22 14:28:16 Clive-Wisharts-iMac.local java[623] <Error>: CGContextGetCTM: invalid context 0x0
Sep 22 14:28:16 Clive-Wisharts-iMac.local java[623] <Error>: CGContextSetBaseCTM: invalid context 0x0
SimpleOpenNI Version 0.27
Exception in thread "Animation Thread" java.lang.NullPointerException
at SimpleOpenNI.XnPoint3D.cArrayUnwrap(XnPoint3D.java:39)
at SimpleOpenNI.ContextWrapper.depthMapRealWorld(ContextWrapper.java:223)
at SimpleOpenNI.SimpleOpenNI.updateDepthRealWorld(SimpleOpenNI.java:851)
at SimpleOpenNI.SimpleOpenNI.depthMapRealWorld(SimpleOpenNI.java:438)
at Kinect_ex04_first_point_cloud.draw(Kinect_ex04_first_point_cloud.java:52)
at processing.core.PApplet.handleDraw(PApplet.java:1906)
at processing.core.PApplet.run(PApplet.java:1803)
at java.lang.Thread.run(Thread.java:680)

Anonymous  Sep 22, 2012 
PDF Page 309
sample code

The code doesn't work with ModelBuilder v0007a03 because the model.addFace() calls are incorrect. Here's how to fix it:

// build a triangle out of three vectors
UVec3[] vv = {new UVec3(150, 150, 0),
new UVec3(300, 150, 0),
new UVec3(150, 150, -150)};
model.addFace(vv);

vv[0] = new UVec3(300, 150, 0);
vv[1] = new UVec3(300, 150, -150);
vv[2] = new UVec3(150, 150, -150);
model.addFace(vv);

vv[0] = new UVec3(300, 150, -150);
vv[1] = new UVec3(300, 150, 0);
vv[2] = new UVec3(300, 300, 0);
model.addFace(vv);

vv[0] = new UVec3(300, 300, -150);
vv[1] = new UVec3(300, 150, -150);
vv[2] = new UVec3(300, 300, 0);
model.addFace(vv);

Richs1000  Aug 27, 2012 
PDF Page 290
Sample Code

You have the drawLimb() function in the code, which isn't used.

Richs1000  Aug 08, 2012 
PDF Page 256
sample code

Markers 4 and 6 are reversed in the code listing.

Rich Simpson  Aug 07, 2012 
Other Digital Version 247
sample code in GitHub

In the chSK_scene_image_basic.pde sample code available on GitHub:

Line 6 - This line isn't necessary:
PImage userImage;

Line 23 - This is missing ">0":
if (kinect.getNumberOfUsers()) {

Line 31 - This is missing "!":
if (userMap[i] = 0) {

Rich Simpson  Aug 02, 2012 
PDF Page 224
code sample, beneath pushmatrix()

You left out the call to scale(4)

Rich Simpson  Jun 28, 2012 
Printed Page 48
starting para #3

first sub-bullet direct downloading the Hardware Binaries. 2nd bullet indicates that you double-click the downloaded .msi and follow instructions. when you run the .msi you get a message that tells you to install OpenNI first.

even after making this correction, of following the correct order, can install the drivers but when running the test of DepthImage receive an error of: 'can't open the depthMap, maybe the camera is not connected!

cjecking he blogs several other folks are having the same issue with a windows (XP in my case) instal!

Anonymous  May 31, 2012 
chapter 1
under Figure 1.1

au natural should be "au naturel" if you're going to quote the french

Anonymous  Mar 14, 2012 
PDF Page 49
2nd paragraph

Linux Installation on a fresh Ubuntu 11.1.as described on page 49 does not work. Following the instructions on simple-openni website listed on page 49, today (date Mar 6/12), it states that "Before you can use SimpleOpenNI you have to install Processing and OpenNI.", in conflict with page 49 which says to install Simple-OpenNI first. Trying to install OpenNI with the Terminal command "sudo ./install,sh -i" from the uncompressed folder, stops within a few lines with an error message. 'libnimocknodes.so...unterminated quoted string"

Anonymous  Mar 06, 2012 
PDF Page 250
Code sample

The code sample from the book (and Greg's Github) uses:

image(backgroundImage, 0, 0);

to update the background each time we call draw, but (at least in my case) this doesn't seem to work as expected, the rgbImage.pixels seems to overdraw the entire background, without it ever being updated.

Simply changing the line to:

background(backgroundImage);

fixed the problem though.

ivoflipse@gmail.com  Feb 08, 2012 
PDF Page 243
middle of page (code fragmant, last line)

in the last line of code, "toNormalized" should read toNormalize to match the declared variable above it.

tatyana  Jan 03, 2012 
PDF Page 126
top of page

I was able to correct the issue to allow accurate "mirroring" by adding this line:
rotateY(radians(180));

above the "rotateX" line

tatyana  Dec 31, 2011 
PDF Page 126
5th & 6th line of code

translate(width/2, height/2, -1000); //
rotateX(radians(180)); // flip y-axis from "realWorld"

To move the image closer (zoom in), I actually have to put in 1000 instead of -1000 into the 3rd value for translate.

Also 'rotateX(radians(180))' does not seem to actually flip the y-axis and the image shown. The point cloud image does not mirror my movements and is still reversed. When I try to pass in any value besides "180" into radians, the screen is just black.

Any suggestions?

Tatyana  Dec 31, 2011 
PDF Page 53
"Installing the Processing Library"

I followed the instructions in Chapter 2 for installation of the relevant software as if I was completely new to working with the Kinect and the libraries--which I am.
Installation went smoothly, but nothing worked...because nowhere, as far as I can tell, did the procedure mention that I needed to install the Processing app. The text refers to it often, even telling the user to quit and relaunch it...which was nothing if not puzzling, since no app was running.
Everything worked fine once I guessed that Processing had to be present, and installed it.
I think you can safely assume that some of your readers have never used Processing before, and are not simply installing a new set of drivers for something with which they're already familiar, but rather that this entire exercise is new to them...so they need to be told to install Processing.
(BTW: I would have made this a Comment instead of an Errata report, except the "Comment Now" button is nowhere to be found on the pages.)

Anonymous  Dec 29, 2011 
Other Digital Version 212
After 2nd Paragraph

Under Project 8: Air Drum Kit, there is a link to the makingthingssee.com domain, but GoDaddy has the domain parked.

David Bishop  Dec 22, 2011