Please find C++ code for SARSA and docking: http://www.informatik.uni-hamburg.de/~weber/code/reinforcement.learning.zip http://www.informatik.uni-hamburg.de/~weber/code/wtm_nao.zip Before I start with the explanation of the attached files, a few recommendations and suggestions. Folder structure, I have a folder in my "home folder" called "workspace" where I do all the programming, for small and stand alone programs that does not play any role. However, if you start using ROS, Naoqi, etc, all the automatically generated files make reference to the source code location. Also in summary, I suggest you to create a folder call "workspace" at your home directory in linux, that way it will be easier for us to share code compiled for ROS, Naoqi, etc. * The first zip file (reinforcement learning) contains the SARSA algorithm in C++. It is a stand alone program that I made to test the class called SARSA. I created a grid world example to test that everything was working properly. You should start studying this program before you move to the other program. Understanding this code it will help you to modify the other. Btw, The IDE I used was code blocks. * The file called "wtm_nao". This code uses ROS to communicated python scripts that control the robot and C++ code that runs learning and has the logic for robot docking. You should uncompress the files inside a folder call wtm_nao. wtm_nao is a ROS package it has the standard ROS folders and files plus a few folders created by myself, which I explain briefly below: - extras: has some particular environmental variables settings - launch: Python scripts to lunch all needed scripts - logs: where I export all the program output, i.e. sensor measurements, log files, etc. - nao_ccp_nodes: empty at the moment - nao_hl_cpp_nodes: programs written in C++ (ROS nodes). Just for SARSA and code that does not have any thing to do with hardware, drivers or so. - nao_hl_python_nodes: ROS nodes writen in Python. Basically code that does not have anything to do with hardware or drivers. - nao_python_nodes: ROS nodes that set commands to the nao or read sensor values. They are servers that provide services to the nodes inside "nao_hl_python_nodes" and "nao_hl_cpp_nodes" - nao_test_nodes: python scripts (ros nodes) to test mainly nodes inside "nao_python_nodes" - nao_without_ros: Python scripts to interact with the Nao, they do not use ROS. They are just Python code plus Naoqi commands. Steps to follow for you, try out the program "reinforcement learning". Configure ROS and follow the beginner tutorial, please the entire tutorial and just go forward if you really understood what you where doing. Then read the scripts in "nao_python_nodes" and read the documentation of the Naoqi function used for these scripts. Run the test scripts that are in "nao_test_nodes" and just after you completed all those steps start to modify the program called "docking" that is in "nao_hl_cpp_nodes". I bit more of the implementation is explained in the publication pdf file: http://www.informatik.uni-hamburg.de/~weber/publications/11_Navarro_RobotCharging_TAROS.pdf DOCUMENTATION: - http://www.informatik.uni-hamburg.de/WTM/wtm/naodoc/index_doc.html - http://www.ros.org/wiki/ - http://ros-users.122217.n3.nabble.com/ - http://www.codeblocks.org/