Skip to content

speckdavid/shakey2016

Repository files navigation

Shakey 2016

Shakey the robot was one of the first autonomous robots that showed impressive capabilities of navigation and mobile manipulation. The provided code is a today's (2016) implementation of Shakey with modern robotics technology. It is possible to run the Shakey 2016 project on a PR2 or as a simulation. More information in IEEE Robotics and Automation Letters (Vol. 2): Shakey 2016 — How Much Does it Take to Redo Shakey the Robot?

Shakey 2016 - Video

If you are intrested in trying out Shakey 2016, you can run and evaluate an example in Section 2. Shakey Quickscenario (with Simulation). If you want to create your own scenario either with simulation or with a real world PR2, you can find a detailed explanation in Section 3. Section 4 describes the execution of Shakey 2016. Finally, Section 5 is about evaluating recorded runs.

1. Installing Shakey 2016

The Shakey 2016 system can be executed on a real robot, the PR2, or as a simulation. The Robot Operating System (ROS) is necessary to run this project. Our system is optimized (and recommended) for ROS Indigo Igloo and ROS Hydro Medusa. Once you have set up a catkin workspace you can clone the Shakey 2016 Repository into your source folder (src) and build it as shown here. Now the Shakey 2016 project should be installed and is ready for use.


2. Shakey Quickscenario (with Simulation)

Here we explain how to run a provided scenario in order to test, reproduce and compare the system. First of all, start the simulation and the robot system.

$ roslaunch shakey_quickscenario shakey_world.launch

You should tuck the arms of the robot such that they can not interact with the objects. For that purpose you can use teleop. The picture below illustrates the desired robot state.

$ roslaunch pr2_teleop_general pr2_teleop_general_keyboard.launch

If you want, you can start Rviz to visualize additional data of your run.

$ rosrun rviz rviz -d $(rospack find shakey_executable)/shakey_rviz.rviz

Now start the Shakey 2016 system. In order to start a scenario we use screenrun with byobu. If you don't want to use byobu, you can use the optional instructions of section 2.1.

$ roslaunch shakey_quickscenario screenrun.launch
$ byobu

The planner window should appear which monitors the current state of the system. Press "Execution/Run" to start the system. The robot will try to tidy up all objects located in the different rooms. Note: If you get an error message, wait a moment and try to press "Execution/Run" again (some modules may take some time to start).

Now it is possible to evaluate and compare your run data. We provide a python script which creates plots of the run data (here). You can use the scipt as follows.

$ python eval/eval_data.py shakey_quickscenario/eval/[your_run_name (date)]

Here you can find some plots of a run we executed for comparison.


2.1 Optional: Start Shakey 2016 Modules by hand

If you don't want to use byobu, you can start all modules by hand as follows (use different tabs of your shell).

$ roslaunch shakey_executable shakey_localize.launch pkg:=$(rospack find shakey_quickscenario)
$ roslaunch shakey_2dnav shakey_2dnav.launch
$ roslaunch shakey_object_recognition shakey_object_recognition.launch
$ roslaunch shakey_actionlib shakey_actionserver.launch
$ roslaunch shakey_planning_server continual-planning-shakey.launch map_suffix:='shakey_quickscenario'

3. Create a new scenario (Simulation or Real World PR2)

In this section we explain how you can create your own scenario for the Shakey 2016 system. It is possible to use a simulation by building a map with gazebo. Or you can use a real world scenario with a real world PR2.


3.1 Start shakey_quickstart and rviz

Start the shakey quickstart tool to set up the new scenario.

$ rosrun shakey_quickstart shakey_quickstart

Start Rviz as an additional visualization tool.

$ rosrun rviz rviz -d $(rospack find shakey_executable)/shakey_rviz.rviz

3.2 Create / Load new Scenario

Now you can create or load a new scenario. Inserting your descired scneario name and press Load /Create. If the a scenario with the desired name already exists, the relevant data will be loaded. Otherwise a new scenario with all relevant folders and files will be created.


3.3 Create a Map

Press "Start mapping" to build a map of the new scenario. The shakey_quickplay window should visualize the current map. Additionally, the map is published as "/map" which can be used to visualize it with Rviz. Once you are satisfied with the map you can press stop mapping and the map will be saved (indicaded by a small checkmark at the bottom). Note: Restarting the mapping procedure will remove the already created map.


3.4 Create relevant Poses

For a complete scenario it is neessary to specify Search Locations, Doorway Entries and Object Goal Locations. For that purpose you can use the Location area of shakey_quickstart (combined with rviz). At the top right you can choose between different topics which pusblish StampedPoses. We recommonend to use the "/move_base_simple/goal" topic. Furthermore, you can choose at bottom left which location type you want to specify next. In addition, you should choose the room in which the corresponding location should be located.

In Rviz you can via drag and drop specify exact poses of the desired location. Select at top "2D Nav Goal" and click at the position you prefer. The already created locations are published as MarkerArray with topic "/poses_marker".

Search Locations are visualized as blue arrows, Doorways are visualized as red arrow with a connecting line between two corresponding entry points and Object Goal Locations as green boxes (irrelevant orientation).


3.5 Save the Scenario

Once you set all locations you can save them by pressing the Save button. If everything is set up you can press the Done! button and the shakey_quickstart window closes.


4. Start your Scenario

In order to start Shakey 2016 in your scenario follow the subsequent steps. If you use a real PR2 you can skip part 4.1.


4.1 Start the Simulation (optional)

If you work with a "real" PR2 you can skip this part. Otherwise start the simualtion with gazebo.

$ roslaunch shakey_executable shakey_world.launch pkg:="$(rospack find [your_scenario_name])"

You can insert objects (boxes and wedges) with the following command.

$ roslaunch shakey_spawn_objects spawn_["box or wedge"].launch x:="x-value" y:="y-value" name:="[obj_name]"

E.g. a box at the origin with name box_0 can be created as follows.

$ roslaunch shakey_spawn_objects spawn_box.launch x:="0" y:="0" name:="box_0"

4.2 Start Shakey 2016

In order to start a scenario we use screenrun with byobu.

$ roslaunch [your_scenario_name] screenrun.launch
$ byobu

You can navigate between different tabs with F3 and F4. Now, start all ros nodes by executing the provided commands (ENTER) in every tab. The planning monitor should appear and as explained in section 1 by pressing "Execution/Run" you can start the system.


5. Evaluate Runs

It is possible to evaluate and compare data of a single run or data of a collection of runs. The data of runs are stored in a subfolder eval/ located in the corresponding scenario folder. We provide a python script which creates plots of run data. The following command prints the usage of the script.

$ python eval/eval_data.py

6. Count Additional Code Lines

A script is provided here to count the additional code lines (not published before) we had to write in order to create the Shakey 2016 system. The Blacklist and Whitelist show which files are counted (with comments).


7. References

D. Speck, C. Dornhege and W. Burgard, Shakey 2016 — How Much Does it Take to Redo Shakey the Robot?, in IEEE Robotics and Automation Letters, vol. 2, no. 2, pp. 1203-1209, April 2017.

About

Shakey 2016 is a today's (2016) implementation of Shakey with modern robotics technology.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published