diff --git a/scripts/live_recognition.py b/scripts/live_recognition.py index 967b508..d69c785 100644 --- a/scripts/live_recognition.py +++ b/scripts/live_recognition.py @@ -70,14 +70,15 @@ def find_colored_ball(frame, hsv_lower, hsv_upper, min_radius): return None M = cv2.moments(c) - center = (M["m10"] // M["m00"], M["m01"] // M["m00"]) - return center, radius + center = (int(M["m10"] / M["m00"]),int(M["m01"] // M["m00"])) + return center, int(radius) def draw_ball_markers(frame, center, radius, history): # draw the enclosing circle and ball's centroid on the frame, - cv2.circle(frame, center, radius, (0, 255, 255), 1) - cv2.circle(frame, center, 5, (0, 255, 0), -1) + if center is not None and radius is not None: + cv2.circle(frame, center, radius, (255, 255, 0), 1) + cv2.circle(frame, center, 5, (0, 255, 0), -1) # loop over the set of tracked points for i in range(1, len(history)): @@ -87,7 +88,7 @@ def draw_ball_markers(frame, center, radius, history): # otherwise, compute the thickness of the line and # draw the connecting lines thickness = int(np.sqrt(64 / float(i + 1)) * 2.5) - cv2.line(frame, history[i - 1], history[i], (0, 0, 255), thickness) + cv2.line(frame, history[i - 1], history[i], (0, 255, 0), thickness) return frame @@ -112,11 +113,11 @@ def nao_demo(): center, radius = find_colored_ball( frame, red_lower, red_upper, min_radius ) + history.appendleft(center) + draw_ball_markers(frame, center, radius, history) except TypeError: # No red ball found and function returned None history.appendleft(None) - continue - history.appendleft(center) - draw_ball_markers(frame, center, radius, history) + draw_ball_markers(frame, None, None, history) # show the frame to screen cv2.imshow("Frame", frame) @@ -124,6 +125,7 @@ def nao_demo(): finally: vd_proxy.unsubscribe(cam_subscriber) + cv2.destroyAllWindows() if __name__ == '__main__': diff --git a/setup/install_nao_ros.sh b/setup/install_nao_ros.sh index 6d944b3..637117f 100644 --- a/setup/install_nao_ros.sh +++ b/setup/install_nao_ros.sh @@ -1,64 +1,35 @@ -#!/bin/sh +#!/bin/bash -echo "make naqui dir" -mkdir ~/naoqi +# Exit immediately if something fails +set -e -sleep 1 +# opt is better that $HOME imho +naoqi_root='/opt/naoqi' +pynaoqi='pynaoqi-python2.7-2.1.4.13-linux32' +cppnaoqi='naoqi-sdk-2.1.4.13-linux32' -echo "copy the files into the naoqi folder" -#cp naoqi-sdk-2.1.4.13-linux32.tar.gz pynaoqi-python2.7-2.1.4.13-linux32.tar.gz ~/naoqi -cp pynaoqi-python2.7-2.1.4.13-linux32.tar.gz ~/naoqi -cd ~/naoqi +echo "Make NAOQi root dir" +sudo mkdir ${naoqi_root} +cd ${naoqi_root} -sleep 1 +echo "Get the SDKs" +sudo wget \ + 'https://drive.google.com/uc?export=download&id=1cZYzD_kK-Ty3n7cqYcX1M7XMOSAs899O' \ + -O "pynaoqi.tar.gz" -echo "Extract them" -#tar xzf naoqi-sdk-2.1.4.13-linux32.tar.gz -tar xzf pynaoqi-python2.7-2.1.4.13-linux32.tar.gz +sudo wget \ + 'https://drive.google.com/uc?export=download&id=1qmT2GiRJ5icZkWScjKqCIErIevu8fLkF' \ + -O "cppnaoqi.tar.gz" + +sudo tar xzf cppnaoqi.tar.gz && sudo rm cppnaoqi.tar.gz +sudo tar xzf pynaoqi.tar.gz && sudo rm pynaoqi.tar.gz echo "Add the NAOqi library path to PYTHONPATH" -export PYTHONPATH=~/naoqi/pynaoqi-python2.7-2.1.4.13-linux32:$PYTHONPATH +export PYTHONPATH="${naoqi_root}/${pynaoqi}:$PYTHONPATH" -echo "make this permanently available for every future terminal" -echo 'export PYTHONPATH=~/naoqi/pynaoqi-python2.7-2.1.4.13-linux32:$PYTHONPATH' >> ~/.bashrc +echo "Make this permanently available for every future terminal" +echo 'export PYTHONPATH="'"${naoqi_root}/${pynaoqi}"':$PYTHONPATH"' \ + >>${HOME}/.profile -echo "install ros packages for nao" +echo "Install ROS packages for Nao" sudo apt-get install ros-indigo-nao-robot - - - -''' -echo "Setting up sources.list" -sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' -sleep 1 -echo "Set up your keys" -sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 -sleep 1 - -echo "Doing apt update" -sudo apt update -sleep 1 - -echo "installing ros" -#sudo apt-get install ros-indigo-desktop-full -sudo apt-get install ros-indigo-desktop -sleep 1 - -echo "Initialize rosdep" -sudo rosdep init -sleep 1 -rosdep update -sleep 1 - -echo "Environment setup" -echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc -sleep 1 -source ~/.bashrc - -sleep 1 -echo "getting rosinstall" -sudo apt install python-rosinstall -''' - - -exit 0 diff --git a/setup/install_ros.sh b/setup/install_ros.sh index d0f25a0..6e62818 100644 --- a/setup/install_ros.sh +++ b/setup/install_ros.sh @@ -1,35 +1,31 @@ -#!/bin/sh +#!/bin/bash + +# Exit if something fails +set -e + echo "Setting up sources.list" -sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' -sleep 1 -echo "Set up your keys" -sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 -sleep 1 +sudo bash -c \ + 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" \ +>/etc/apt/sources.list.d/ros-latest.list' -echo "Doing apt update" -sudo apt update -sleep 1 +echo "Set up repository keys" +sudo apt-key adv \ + --keyserver hkp://ha.pool.sks-keyservers.net:80 \ + --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 -echo "installing ros" -#sudo apt-get install ros-indigo-desktop-full -sudo apt-get install ros-indigo-desktop -sleep 1 +echo "Update packages list" +sudo apt-get update + +echo "Install ROS" +sudo apt-get install ros-indigo-desktop echo "Initialize rosdep" sudo rosdep init -sleep 1 rosdep update -sleep 1 echo "Environment setup" -echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc -sleep 1 -source ~/.bashrc +echo "source /opt/ros/indigo/setup.bash" >>${HOME}/.bashrc +source ${HOME}/.bashrc -sleep 1 -echo "getting rosinstall" -sudo apt install python-rosinstall - - - -exit 0 +echo "Get rosinstall" +sudo apt-get install python-rosinstall