Abstract: Crafting a proper assistance policy is a difficult endeavour but essential for the development of robotic assistants. Indeed, assistance is a complex issue that depends not only on the task-at-hand, but also on the state of the user, environment and competing objectives. As a way forward, this paper proposes learning the task of assistance through observation; an approach we term Learning Assistance by Demonstration (LAD). Our methodology is a subclass of Learning-by-Demonstration (LbD), yet directly addresses difficult issues associated with proper assistance such as when and how to appropriately assist. To learn assistive policies, we develop a probabilistic model that explicitly captures these elements and provide efficient, online, training methods. Experimental results on smart mobility assistance — using both simulation and a real-world smart wheelchair platform — demonstrate the effectiveness of our approach; the LAD model quickly learns when to assist (achieving an AUC score of 0.95 after only one demonstration) and improves with additional examples. Results show that this translates into better task-performance; our LAD-enabled smart wheelchair improved participant driving performance (measured in lap seconds) by 20.6s (a speedup of 137%), after a single teacher demonstration.
YARP is another robot development platform, similar to ROS. I had to code up a simple data reader in Python (operating over YARP ports) and couldn’t find any good examples. After some experimenting, I found a solution that worked for me. The following is a simple code snippet for other YARP Python newbies:
class ExampleReader: def __init__(self): #create a new input port and open it self.in_port = yarp.BufferedPortBottle() self.in_port.open("/example/data:i") #connect up the output port to our input port yarp.Network.connect("/example/data:o", "/example/data:i") return def getData(self): #in this example, I assume the data is a single integer #we use read() where the parameter determines if it is #blocking (True) or not. btl = self.in_port.read(True) my_data = btl.get(0).asInt() #if you have doubles, you can use asDouble() #or strings can be obtained using asString() return my_data
Just got news that our paper on the ARTY smart paediatric wheelchair was accepted to the IROS 2012 Workshop on Progress, Challenges and Future Perspectives in Navigation and Manipulation Assistance for Robotic Wheelchairs.
Abstract: Standard powered wheelchairs are still heavily dependent on the cognitive capabilities of users. Unfortunately, this excludes disabled users who lack the required problem-solving and spatial skills, particularly young children. For these children to be denied powered mobility is a crucial set-back; exploration is important for their cognitive, emotional and psychosocial development. In this paper, we present a safer paediatric wheelchair: the Assistive Robot Transport for Youngsters (ARTY). The fundamental goal of this research is to provide a key-enabling technology to young children who would otherwise be unable to navigate independently in their environment. In addition to the technical details of our smart wheelchair, we present user-trials with able-bodied individuals as well as one 5-year-old child with special needs. ARTY promises to provide young children with “early access” to the path towards mobility independence.
More information about ARTY (with video).
Just submitted an IROS camera-ready copy of some recent work on online spatio-temporal learning:
In this work, we are primarily concerned with robotic systems that learn online and continuously from multi-variate data-streams. Our first contribution is a new recursive kernel, which we have integrated into a sparse Gaussian Process to yield the Spatio-Temporal Online Recursive Kernel Gaussian Process (STORK-GP). This algorithm iteratively learns from time-series, providing both predictions and uncertainty estimates. Experiments on benchmarks demonstrate that our method achieves high accuracies relative to state-of-the-art methods. Second, we contribute an online tactile classifier which uses an array of STORK-GP experts. In contrast to existing work, our classifier is capable of learning new objects as they are presented, improving itself over time. We show that our approach yields results comparable to highly-optimised offline classification methods. Moreover, we conducted experiments with human subjects in a similar online setting with true-label feedback and present the insights gained.
This work was nominated as a finalist for the 2012 CoTeSys Cognitive Robotics Best Paper Award.
Independent mobility is crucial for a growing child and its loss can severely impact cognitive, emotional and social development. Unfortunately, powered wheelchair provision for young children has been difficult due to safety concerns. But powered mobility need not be unsafe. Risks can be reduced through the use of robotic technology (e.g., obstacle avoidance) and we present a prototype safe smart paediatric wheelchair: the Assistive Robot Transport for Youngsters (ARTY). A core aspect of our work is that we aim to bring ARTY to the field and we discuss the challenges faced when trying to involve children in the development/testing of medical technology. We discuss one preliminary experiment designed as a “Hide-and-Seek” game as a short case study.
Note: This paper was submitted to the ACM/IEEE HRI-2011 Pioneers Workshop, Lausanne 2011.