Developers have always tried to improve their ways of interaction with machines. From simple levers to radio buttons and then from push buttons to touch screens, developers have always tried to devise out simple yet more effective ways for interaction with robots.
Moving on from the revolutionary soft-touch techniques, interacting via gestures is on the rise. In this article I will show you how to operate the P3-DX robot via pointing gestures. To understand this tutorial you should have basic knowledge and understanding of ROS and Pioneer P3-DX and ADstar planner.
Here I will be using gesture control to point out to the robot about a location and the robot judge and calculate out that coordinate and then will move towards that location.
To figure out the location of the point Openni_tracker node is used. By using Kinect depth sensors, transforms of the human skeleton are published by Openni_tracker node. Then from these transforms, coordinates of right shoulder and right hand are found. They are then used to find the coordinates of the point on the ground where the hand is pointing by extending the line joining right shoulder and right hand.
This point is then quantized to the nearest grid coordinate in the P3-DX robot's frame and new goal is published to sbpl_start topic, making the robot go to that point.
listener : listens to the transforms published by openni_tracker node and sends the goal to P3DX robot using P3DX_sbpl package.
Published topics : /start_sbpl (P3DXsbpl/startmsg) : Width, height, start coordinates, end coordinates and obstacle threshold relative to the pointed point are published on this topic.
roscore rosrun openni_tracker openni_tracker rosrun tf_experiment listner roslaunch P3DX_sbpl P3DX_sbpl.launch
Now a person can be randomly moving his right hand here and there, in order to avoid random point calculation, whenever a user raises his left hand above the head, right hand is used to calculate the point.
Comments are welcomed :)
More on PlaywithRobots
- Introduction to AVR microcontrollers
- Basic hardware and software required for AVR
- AVR fuse bits
- Input/Output Concept