Table of Contents
Robotino Potential Field Navigator With Object Pickup
This tutorial is part of the Robotino Operation series
The completed project can be downloaded here robotino_control_pf_pickup.zip
This is an extension of the Robotino Vision Pickup and Robotino Potential Field Navigation tutorials. It is recommended that you complete that tutorial before proceeding.
Videos
The completed project in action.
Procedure
The only functional update to this tutorial from the Robotino Potential Field Navigation tutorial is in the PFNavNode.cpp.
- PFgrab.cpp
#include "PFNav.h" #include "approach_grab.h" int main(int argc, char **argv) { ros::init(argc, argv, "PFNavNode"); PFNav navigator; approach_grab mygrab; // preapare some points and add them to the potential field. navigator.tileGridGoal(10,2,10); navigator.tileGridObstacle(4,2,20,2); navigator.tileGridObstacle(6,-2,20,2); navigator.tileGridObstacle(8,3,20,2); navigator.navField.printPotentialField(); navigator.setOdom(0,0,0); // set the odometer to 0 navigator.spin(); // start running! mygrab.spinOnce(); // run one loop of our approach grab navigator.tileGridGoal(0,0,10); // go back to the origin navigator.spin(); // Run again! return 0; }
As you can see the way to add items to the Navigator's potential field has been simplified. You can also enter the object location in units of DASL floor tiles for convenience.
Other than adding the unit conversions in the PFNav class and adding the ability to spinOnce in approach_grab the accompanying classes have remained the same. Here are the prototypes for the added member functions. If you are interested you can find their source in the src directory of the completed package.
PFNav
void tileGridObstacle(float x,float y, float w, float d); void tileGridGoal(float x,float y, float w);
approach_grab
void spinOnce();
Launching your project
to launch your project
open 4 terminal windows
terminal 1
roslaunch robotino_node robotino_node.launch hostname:=<robotinoIP>
terminal 2
rosrun robotino_control BHApose <robotinoIP>
terminal 3
rosrun robotino_control vision
terminal 4
rosrun robotino_control approach_grab_node