# Teleoperation NAO ## Project description This ROS package allows you to remotely control a NAO robot by standing in front of a webcam and having two ArUco markers on the hands and one ArUco marker on the chest. You can move a NAO around using a "Human Joystick" approach and make NAO imitate your arm motions. For more details, read our ![report](docs/report.latex). Our package relies on the NAO being reachable from the computer and the environment variable `NAO_IP` being set to the IP address of the NAO. Our main code is written in Python and located in `script/` with the ArUco detection and rviz GUI logic in C++ in `src/`. ## Requirements * ROS Indigo on Ubuntu 14.04 * [aruco_ros](http://wiki.ros.org/aruco_ros) * [nao_robot](http://wiki.ros.org/nao_robot) * [nao_meshes](http://wiki.ros.org/nao_meshes) * [usb_cam](http://wiki.ros.org/usb_cam) We installed the dependencies by cloning them to our workspace and running `catkin_make`, but `sudo apt install ros-indigo-package-name` should work even better. ## Usage Hang an ArUco #0 marker on the chest, take the #1 in the left hand and #2 in the right hand. The markers should be 15cm high/wide. Then you can run ```sh $ roslaunch teleoperation calibration.launch ``` The NAO will tell you what to do. After that you can launch the teleoperation routine by running. ```sh $ roslaunch teleoperation fulltest.launch ``` If you want our awesome GUI, run ```sh $ roslaunch nao_bringup nao_full.launch $ roslaunch teleoperation with_gui.launch ``` If any problems arise with the GUI, such as the NAO not getting properly displayed, try pointing the rviz to the correct NAO `.urdf`, which should be somewhere in the `nao_description` package. This diagram depicts what you should expect from the teleoperation routine. ![State Machine](docs/figures/teleoperation_overview.png) Since this package relies on the NAO voice recognition, you must be in the same room with NAO, and the room must be quiet.