[Patrick Goebel] The Chronicle of Pi Robot, Dynamixel using ROS
페이지 정보
작성일2012/11/07 13:41 Hit17,577Q1. Please introduce yourself.
I have worked as a network administrator and web developer for the past 20 years. However, before that I did a PhD in cognitive psychology that involved computer simulations of artificial neural networks for pattern recognition, memory and motor control. Back then, computers were too slow to run any kind of real-time robotics applications. Then in 2005 I discovered the rapidly developing world of hobby robotics. One could now buy a whole range of cheap sensors, webcams and fast computers to build a fairly sophisticated robot right in your own living room. That's when I started the Pi Robot Project.
Q2. What is the purpose of developing Pi Robot and why you name it Pi? (Is it your lab research like understanding behavior or just personal hobby? )
The Pi Robot project has always had two primary goals: first, to return to my earlier academic interests in
studying human perception, cognition and motor control but now using robots; and second, to help others do the same by posting tutorials on my website (http://www.pirobot.org) and more recently, by publishing a book called ROS By Example (http://www.lulu.com/spotlight/pirobot).
While I have worked on Pi primarily as a hobby, I would love to teach both ROS and robotics in a classroom setting. As for the name Pi, I figured a good name for a robot was a number and what better number than Pi? (-:
Q3. I saw you started building Pi robot back in 2005, when and how did you meet Dynamixel?
In the beginning I used standard hobby servos since they are relatively inexpensive and easy to use with many different microcontrollers. However, once I started learning ROS, I realized I would need servos that could report back position, speed and torque in real time. ROS has some very powerful packages for controlling multi-jointed arms but it requires this kind of feedback from the joints to make it work. As far as I know, Dynamixel servos are the only model that provide this data.
Q4. Could you name all the programming tools you have used so far?
And explain what makes ROS so popular these days for robot developers?
Back in 2005, I used Microsoft's Visual Studio, C# and RoboRealm. This is a nice development environment for getting a robot up to speed quickly. By contrast, most development work in ROS takes place at the command line or using a text editor like Emacs or Eclipse, and the language of choice is C++ or Python. The popularity of ROS among developers probably arises from a number of factors including: it is free, non-proprietary, open source, runs on a free and non-propriety OS (Linux), is supported by a large community of developers who are willing to share much of their code, and includes some powerful libraries for performing SLAM, arm navigation, object recognition, face detection and other vision tasks using OpenCV.
Q5. Was there any problem getting data to and from Dynamixel using ROS? Any suggestion to improve Dynamixel development environment?
By the time I discovered ROS, a few people had already begun writing ROS drivers for Dynamixels. Since Dynamixels use a well-documented serial protocol (thanks to Robotis), it was relatively straightforward to write Python drivers that could run on Linux which is the OS used by most people running ROS. The most complete ROS Dynamixel projects are the ArbotiX stack (http://www.ros.org/wiki/arbotix) and the Dynamixel Motor stack (http://www.ros.org/wiki/dynamixel_motor). One potential area for improvement is fault tolerance: when servos move relative to each other such as in a robot arm, movement of the servo cables can sometimes cause the existing ROS drivers to crash.
Q6. Please share your top 5 resources for Dynamixel developers. (like Forest moon or ROS stack)
If you're a C# developer, it would be hard to beat the Forest Moon library (http://www.forestmoon.com/Software/DynaCommander/) though I haven't used it for a few years now. Windows users can also use the most excellent RoboRealm software (http://www.roborealm.com/) which now includes a Dynamixel module. In the ROS world, I have already mentioned the ArbotiX and Dynamixel Motor stacks. And for a tutorial on how to use the Dynamixel Motor stack in ROS with a pan and tilt head, you can check out the Dynamixel chapter in my book, ROS By Example.
Q7. Last but not the least, how would you define a robot?
For me, a robot is a machine that can sense, plan and act. One could also add "learn from experience." So a wind up car that simply goes straight until it crashes into something is a toy but not a robot. If the car has an IR sensor on front and turns to avoid obstacles, then it becomes a simple kind of robot. In this case, the "planning" part is simply to turn left or right. If the car can also learn to anticipate where obstacles are e.g., by storing an occupancy grid of its environment, then planning can become more sophisticated; for example, it could compute the shortest path between itself and a goal location.