Member Profile: Joe Pfeiffer

Joe Pfeiffer

Location: Las Cruces, NM

Education: BS with a double major in Computer Science and Physics, 1979, and a PhD in Computer Science, 1986, both from the University of Washington in Seattle

Occupation: Joe was a professor in the Department of Computer Science at New Mexico State University in Las Cruces until he retired in 2010. Joe’s research interests focused on visual programming languages and geometric reasoning for mobile robots. Most of his teaching involved computer architecture, Assembly language programming, and OSes.

Member Status: Joe says he’s been a Circuit Cellar subscriber for at least 10 years.

Technical Interests: He enjoys programming Microchip Technology PIC processors. More recently, he has become interested in Android programming and development under Linux.

Most Recent Embedded Tech-Related Acquisition: Joe bought a model rocket altimeter (and a bunch of related connectors and things) for a rocket he’s building for his National Association of Rocketry Level 2 high-power certification.

Current Projects: Joe is currently developing a shop oven. “I want it to be useful for solder reflow work—so I’ll want it to be able to follow the reflow temperature profile—and also accurately maintain a temperature for applications like powder coating. I’m planning a USB interface so I can log its activity for later analysis,” he explained.

Thoughts on the Future of Embedded Technology: Joe feels that computing is becoming more pervasive and connected. “From a digital caliper that cost me under $10, to a Bluetooth-connected OBD-II scanner for a car—it’s just amazing,” he said. “One thing I worry about is that, along with so much in computing and technology, the bar is getting too high for entry. As through-hole, hand-solderable components slowly disappear, it seems like it’ll be harder and harder for someone to create a first simple project and get started,” he added.

Using Socially Assistive Robots to Address the Caregiver Gap

David Feil-Seifer

Editor’s Note: David Feil-Seifer, a Postdoctoral Fellow in the Computer Science Department at Yale University, wrote this  essay for Circuit Cellar. Feil-Seifer focuses his research on socially assistive robotics (SAR), particularly the study of human-robot interaction for children with autism spectrum disorders (ASD). His dissertation work addressed autonomous robot behavior so that socially assistive robots can recognize and respond to a child’s behavior in unstructured play. He recently was hired as Assistant Professor of Computer Science at the University of Nevada, Reno.

There are looming health care and education crises on the horizon. Baby boomers are getting older and requiring more care, which puts pressure on caregivers. The US nursing shortage is projected to worsen. Similarly, the rapid growth of diagnoses of developmental disorders suggests a greater need for educators, one that the education system is struggling to meet. These great and growing shortfalls in the number of caregivers and educators may be addressed (in part) through the use of socially assistive robotics.

In health care, non-contact repetitive tasks make up a large part of a caregiver’s day. Tasks such as monitoring instruments only require a check to verify that readings are within norms. By offloading these tasks to an automated system, a nurse or doctor could spend more time doing work that better leverages their medical training. A robot can effectively perform simple repetitive tasks (e.g., monitoring breath spirometry exercises or post-stroke rehabilitation compliance).

I coined the term “socially assistive robotics” (SAR) to describe robots that provide such assistance through social rather than physical interaction. My research is the development of SAR algorithms and complete systems relevant to domains such as post-stroke rehabilitation, elder care, and therapeutic interaction for children with autism spectrum disorders (ASD). A key challenge for such autonomous SAR systems is the ability to sense, interpret, and properly respond to human social behavior.

One of my research priorities is developing a socially assistive robotic system for children with ASD. Children with ASD are characterized by social impairments, communication difficulties, and repetitive and stereotyped behaviors. Significant anecdotal evidence indicates that some children with ASD respond socially to robots, which could have therapeutic ramifications. We envision a robot that could act as a catalyst for social interaction, both human-robot and human-human, thus aiding ASD users’ human-human socialization. In such a scenario, the robot is not specifically generating social behavior or participating in social interaction, but instead behaves in a way known to provoke human-human interaction.

David Feil-Seifer developed an autonomous robot that recognizes and appropriately responds to a child’s free-form behavior in play contexts, similar to those seen in some more traditional autism spectrum disorder (ASD) therapies.

Enabling a robot to exhibit and understand social behavior with a child is challenging. Children are highly individual and thus technology used for social interaction needs to be robust to be effective. I developed an autonomous robot that recognizes and appropriately responds to a child’s free-form behavior in play contexts, similar to those seen in some more traditional ASD therapies.

To detect and mitigate child distress, I developed a methodology for learning and then applying a data-driven spatiotemporal model of social behavior based on distance-based features to automatically differentiate between typical vs. aversive child-robot interactions. Using a Gaussian mixture model learned over distance-based feature data, the developed system was able to detect and interpret social behavior with sufficient accuracy to recognize child distress. The robot can use this to change its own behavior to encourage positive social interaction.

To encourage human-human interaction once human-robot interaction was achieved, I developed a navigation planner that used the above spatiotemporal model. This was used to maintain the robot’s spatial relationship with a child to sustain interaction while also guiding the child to a particular location in a room. This could be used to encourage a child to move toward another interaction partner (e.g., a parent). The desired spatial interaction behavior is achieved by modifying an established trajectory planner to weigh candidate trajectories based on conformity to a trained model of the desired behavior.

I also developed a methodology for robot behavior that provides autonomous feedback for a robot-child imitation and turn-taking game. This was accomplished by incorporating an established therapeutic model of feedback along with a trained model of imitation behavior. This is used as part of an autonomous system that can play Simon Says, recognize when the rules have been violated, and provide appropriate feedback.

A growing body of data supports the hypothesis that robots have the potential to aid in addressing the needs of people through non-contact assistance. My research, along with that of many others, has resulted in technical advances for robots providing assistance to people. However, there is a long way to go before these systems can be deployed as a therapeutic platform. Given that the beneficiary populations are growing, and the required therapeutic needs are increasing far more rapidly than the existing resources to address it, SAR could provide lasting benefits to people in need.

David Feil-Seifer, a Postdoctoral Fellow in the Computer Science Department at Yale University, focuses his research on socially assistive robotics (SAR), particularly the study of human-robot interaction for children with autism spectrum disorders (ASD). His dissertation work addressed autonomous robot behavior so that socially assistive robots can recognize and respond to a child’s behavior in unstructured play. David received his MS and PhD in Computer Science from the University of Southern California and a BS in Computer Science from the University of Rochester, NY. He recently was hired as Assistant Professor of Computer Science at the University of Nevada, Reno.

Colm Baston Wins the CC Code Challenge (Week 6)

We have a winner of last week’s CC Weekly Code Challenge, sponsored by IAR Systems! We posted a code snippet with an error and challenged the engineering community to find the mistake!

Congratulations to Colm Baston of Flintshire, UK, for winning the CC Weekly Code Challenge for Week 6! He’ll receive the Elektor 2012 & 2011 Archive DVD.

Colm’s correct answer was randomly selected from the pool of responses that correctly identified an error in the code. Colm answered:

Line 7: (c == *s++) is comparing the values of c and *s rather than assigning: It should be (c = *s++)

You can see the complete list of weekly winners and code challenges here.

What is the CC Weekly Code Challenge?
Each week, Circuit Cellar’s technical editors purposely insert an error in a snippet of code. It could be a semantic error, a syntax error, a design error, a spelling error, or another bug the editors slip in. You are challenged to find the error.Once the submission deadline passes, Circuit Cellar will randomly select one winner from the group of respondents who submit the correct answer.

Inspired? Want to try this week’s challenge? Get started!

Submission Deadline: The deadline for each week’s challenge is Sunday, 12 PM ESTRefer to the Rules, Terms & Conditions for information about eligibility and prizes.

Client Profile: Custom Computer Services (CCS), Inc.

Custom Computer Services (CCS), Inc.
Spring City Drive
Waukesha, WI 53186

Contact: Sales,

Embedded Products/Services: CCS specializes in embedded software and hardware development tools. Available to the development community is a range of solutions for Microchip Technology microcontrollers, and digital signal controllers (DSCs), that include: C compilers, prototyping boards, development kits, and programmers/debuggers. CCS also offers custom engineering services and a line of embedded Ethernet devices (e.g., EZ Web Lynx). For more information visit

Product Information: The CCSC Version 5 compiler with all of its new features and enhancements has just been released! Version 5 is the first release to include an aggressive code optimizer, plus a dynamic C Profiler tool. Other enhancements include:

  • New libraries—generate relevant and tight code for a specific application. Included are: RS-232, RS-485, PWM, timers, a capacitive touchpad, and more.
  • C++ stream operator support—C++ streams provide a unified interface for I/O and data formatting.
  • Serial port monitor—a graphing capability enables real-time graphing at a PC from a Microchip Technology PIC microcontroller program. For more information on Version 5, visit

Exclusive Offer: For Circuit Cellar readers, CCS is offering $60 off the purchase price of any development kit. Development kits include: the IDE C Compiler, prototyping board, an ICD-U64 debugger/programmer, a breadboard with auxiliary parts, a power supply, and cables. Call the sales department at 262-522-6500 ext. 35 and mention the promo code CC60, or visit and use the promo code CC60 in your cart. This offer is valid until August 31, 2013.

Custom Computer Services, Inc.

CC276: Not a Hockey Fan?

Hockey can be fun, unless you’re building a surface-mount device (SMD) prototype and the “puck” is one of the tiny components getting away from your soldering iron. In an article appearing last month in Circuit Cellar, “DIY?Surface-Mount Circuit Boards: Tips and Tricks for Building SMD Prototypes,” engineer James Lyman inadvertently sparked a bit of debate on the magazine’s website. Readers posted various alternatives to Lyman’s approach to the “SMD hockey” challenge. Here’s how Lyman’s article describes the problem and his solution:

“When I built my first few surface-mount boards, I did what so many amateurs and technicians do. I carefully placed each minute component on the circuit board in its correct position, and then spent several minutes playing ‘SMD hockey.’ With nothing holding the component in place, I’d take my soldering iron and heat the pad component while touching the solder to the junction. Just as the solder was about to melt, that little component would turn into a ‘puck’ and scoot away. Using the soldering iron’s tip as a ‘hockey stick,’ I’d chase the little puck back to its pads and try again, which was maddening…

“It slowly occurred to me that I needed something to hold each part in place while soldering—something that would glue them in place. Commercial houses glue the components down on the boards and then use a wave soldering machine, which does all the soldering at once. That’s exactly what I started doing. I use J-B Weld, a common off-the-shelf epoxy.”

Here is a sampling of alternative solutions readers posted to

  • From Bill: “If you must use epoxy, then the cheapest fast-setting epoxy from Poundland will do the trick.
    “Personally, I’ve always used a tiny spot of cheapo CA superglue, which gives you 20-60 s to position the component. If there are a lot of SMDs on the board, you might want to use an accelerant spray to reduce the CA cure to 5 or 10 s. If you can’t afford proper CA accelerant, then isoprop or a gentle waft above the board with a cloth soaked in a little household ammonia will do the trick.”
  • From Trevor: ”I did a lot of hand soldering of SM parts years ago and agree that it is best to fix the parts before soldering.
    “I used an adhesive made for SM parts from RS Components, which comes in a syringe and is really easy to use. ” (Trevor’s post provides a link to his preferred Electrolube brand.)
  • From Kevin: ”Crikey, epoxying all the components first is a bit brutal. What if you want to change one? Melt the solder and twist, all at the same time?
    “Much easier to tin one pad, then place the part on it with tweezers and touch it with the iron, one end soldered fine, now solder the other end.”

Feel free to visit to weigh in or take some of the advice offered there.