Skip to content
Snippets Groups Projects
Commit 00bda9bb authored by David Schiebener's avatar David Schiebener
Browse files

added HowTo for automatic view selection

parent 8cb1da8d
No related branches found
No related tags found
No related merge requests found
/**
\page RobotComponents-HowTos RobotComponents HowTos
\section RobotComponents-HowTo-change_this HowTo Title
\section RobotComponents-HowTo-ViewSelection How to use the Automatic View Selection
\subsection The automatic mode
The purpose of the automatic view selection is to make the robot autonomously look in the most useful direction at any time. If, for example, the current task is to grasp an object, and during the grasping both the object and the hand should be localized visually, the robot should look at them both at once if possible, or alternatingly otherwise.
This is achieved by considering the localization uncertainties of the requested objects in the working memory. The priority of an object to be looked at is the logarithm of the volume of its uncertainty ellipsoid. The Automatic View Selection will find the view direction that maximizes the sum of the priorities of all objects that are visible in that direction. Details on this can be found in the following paper:
K. Welke, D. Schiebener, T. Asfour and R. Dillmann: Gaze selection during manipulation tasks, IEEE International Conference on Robotics and Automation (ICRA), 2013
Additionally, there is a little random component that slightly modifies the view direction, which is helpful when anobject is at the edge of the field of view or the localization only succeeds from time to time. Empiriclly, this leads to somewhat more stable localization results. The effect of this random component is most visible when no object has been requested and the robot just looks around without purpose.
A new view direction is by default chosen every 2.5 seconds (this can be changed in the config of the ViewSelection component). This gives the robot enough time to move the head to the target configuration, get to rest there so the camera images are not blurry, and let localizers run a few times.
The default maximal distance in which an object is considered to be localizable is 1.5 meters. If the object is further away, the view selection will ignore it. Other important parameters that you might need to adapt for your robot are the camera opening angle and the range of motion for the head. The default parameters are set for ARMAR-III.
\subsection Setting manual view targets
Description (the change_this part of the section identifier must be edited to be descriptive and unique)
Most of the time, the fully automatic mode should work fine for your purposes. As long as the robot knows where the objects of interest are, it will look into the direction with the highest accumulated uncertainty of relevant objects. However, if the robot doesn't know where an object is, e.g. because it has not been localized yet, you may need to set a view direction manually. You can do this with the method addManualViewTarget(const FramedPositionBasePtr& target).
When you set a manual view target, the next time a new view direction is set, it will be towards the position you requested. You can add several manual targets, they will be looked at in the order in which you added them in the usual 2.5 second interval. Afterwards, if the automatic view selection is activated, it will continue normally. If it is deactivated, your manual targets will be looked at ,and then the robot will not change the view direction further after the last one.
*/
In most cases, the best strategy is to set the expected possible object locations as manual view targets in the beginning, and let the view selection run automatically otherwise. You should check at key times in your statechart whether the required objects are successfully being localized (the standard skills like visual servoing and grasping do that), and if not, add manual view targets to find them.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment