Concerns about Infrared

According to Eric Rosenthal, monkeys that include berries as a major component of their diets are able to recognize berries more readily because they have a specific IR signature. Studies on Makak Monkeys (http://jn.physiology.org/cgi/content/full/84/2/953) they are responsive to light in the Infrared range, and there is a chance that using Infrared may impact their behavior in the wild. In addition, it is important that we verify other species at our site, aside from Monkeys are not sensitive to light in this range, since this might impact the overall ecosystem and introduce new variables we cannot account for. This might suggest that IR emitters on collars would also influence behavior undesirably, and we should verify with Tony how much of a concern this is. At the same time, the possibility that a certain level of sensitivity has not been observed does not necessarily mean that it does not exist, and alternatives would be useful to explore.

Relevance to Trap Cameras

If there is any uncertainty as to how much IR a monkey can see, it would follow that PIR technology might be problematic, and that's why we're fascinated by the potential applications of computer vision to a trap camera and how that might also enable better filtering of what photographs are worth taking.

A closer examination of the Canon Hackers Developer Kit reveals that much to be mined in terms of how to script specific settings and series of images (both through bracketing and scripts), and ways we might trigger different settings based on lighting conditions. There does not appear to be a way to use the camera hardware itself to do computer vision or motion tracking, and so it seems an external sensor will always be required unless we use a board or computer that can perform live image processing.

references: chdk for dummies: http://chdk.wikia.com/wiki/CHDK

amerahacker.com seems like a great resource for considering ways of controlling the camera externally, and how we might hack batteries and sd cards to expand the timeframe of how often someone needs to visit a camera trap.

camera triggers: http://media.wiley.com/product_data/excerpt/19/07645965/0764596519.pdf

universal remote: http://www.camerahacker.com/universal_remote/index.shtml

their book, hacking digital cameras might be worth picking up: http://www.amazon.com/exec/obidos/ASIN/0764596519/ref=nosim/cynosurexinternaA

Why Radio is Better For Tracking

Radio remains outside the range of what wildlife can detect, which is why it is suited for collars, and why we can safely use it in these applications, but with power / size remaining an issue in existing radio collars, we've been exploring what passive and semi-passive antennas might offer that radio emitting collars cannot.

As we understand it, RFID tags are basically antennas connected to diodes. When a resonant frequency is received the diode cuts the wavelength in two and emits it at double the frequency, and a base unit simply listens for double what it emitted. The base stations are definitely complicated to engineer, but we still might be able to make our own, or hack existing ones.

What is particularly promising is that RFID is presently used to observe/track swarms of bees, and the range of transmitter devices can often reach as far as 300 feet. http://news.nationalgeographic.com/news/2008/11/081114-bees-radio-tracking-missions.html

If this technology can work with bees, and apparently birds as well, it seems like an ideal way to approach tracking the monkeys. There are essentially two options: a common tag for all monkeys, or addressed tags. A common tag has the benefit of requiring a far simpler transmitter/detector unit, and there's a chance that with more power we could get a much farther range than they are generally used for. Yet addressing would allow us to identify the specific monkey one has tracked, and might be more desirable in Ecuador.

What a Canterlevered Apporach to Radio Would Offer

If we were to utilize solutions like those offered by Texas Instrument's Tag-It system, we could utilize cheap and weatherproof tagging of individual monkeys that could be addressed and detected by a transmitting unit. These units generally operate in the 500 mA range, and so powering a portable unit to replace the existing radio collars would be quite easy. This seems like an ideal replacement for the Radio Collars, as the tags would require a lot less work for reserachers, and the addressing scheme of the transmitter/detector would mean that channels would no longer have to be scanned, and presence of a monkey would require less skill to determine (ie no special training to hear faint signals).

We were unable to test the collars themselves, and so these suggestions are contingent on being able to reproduce a range at least as far as the existing collars.

Should that range be possible, there are many other possibilities that emerge. A transmitter/detector would not simply help identify the presence of monkeys, but also listen for what other monkeys are in range. If this could be outfitted to work by scanning with a narrow focus, one could simultaneously figure out where monkeys are in space (direction + signal strength), and could offer us the possibility of a "social bomb in the wild" functionality.

The following questions are worth answering:

For Tony: Should we be concerned about IR, or do these sensors operate in a range that the Monkeys will never see?

Antennas can be made by placing a diode in a printed circuit, and if we can produce our own transmitter/detector, experiments on what ranges are possible could be performed to see whether producing our own tagging/detecting system would help boost range to cover wider areas. This would not necessarily allow for addressing without having to change frequencies but is worth exploring.

Existing solutions might already be capable of replacing the radio collars. How might we repurpose RFID systems for store security, or existing tracking methods for birds and insects?

Texas Instruments' "Tag-It" Line is something we should investigate - the tags are extremely inexpensive, but depending on the functionality of the base units we'd like to use, there are incredible possibilities that already exist for tracking assets and inventories. http://www.ti.com/rfid/shtml/apps-asset-tracking.shtml

What frequency ranges would be best suited to the humid jungle environment? We know 2.4ghz (Xbee, Bluetooth, WiFi, Zigbee) is absorbed by water and our worst option, but as we get into the higher ranges we might

/* Simple processing sketch that sends a remote AT Command "DB" 
to check the signal strength of the last packet received - this 
is a necessary command since RSSI does not appear to be included 
in the default packet structure.  we need to parse this packet 
to isolate that reading, but for now the second to last byte 
returned is the one we're lookign for.*/

import processing.serial.*;

Serial port;

void setup() {
  port = new  Serial (this, Serial.list()[0], 9600);
}

void draw() {

}
/* for the packet being sent below, bytes 3-10 are the 
8byte serial number of a specific radio, as a default 
set this to 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF 
to broadcast to all available radios.  the string read 
back will deliver the signal strength reading.  */

void keyReleased() {
  int[] packet = { 


    0x17, 0x01, 0x00, 0x13,0xA2, 0x00, 0x40, 0x3D, 0x69, 0x89, 0xFF, 0xFE, 0x02, 'D', 'B',       };  


/* use this packet alternatively if you want to broadcast
0x17, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x02, 'D', 'B',       };  */




  port.write(0x7E);
  port.write(0x00);
  port.write(packet.length);
  for (int thisByte = 0; thisByte < packet.length; thisByte++) {
    port.write(packet[thisByte]);
  }

  port.write(checkSum(packet));

}


void serialEvent (Serial port) {
  int inByte = port.read();
  if (inByte == 0x7E) {
    println(); 
  }
  print (hex(inByte, 2) + " "); 
}


// calculate the checksum
int checkSum(int[] thisArray) {
  byte ck = 0;
  // add all the bytes:
  for (int i = 0; i < thisArray.length; i++) {
    ck += (byte)(thisArray[i]);
  } 
  // subtract the result from 0xFF.
  // note that it should be only one byte, that's why we 
  // convert it to a byte. then back to an int to return it

  ck = (byte)(0xFF - ck);
  return (int)(ck);
}