環境
Ubuntu LTS 14.04
ROSを入れる/設定する(ROSを設定してある人は飛ばしてください)
terminalを開く
$sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'
$wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
$sudo apt-get update
$sudo apt-get install python python-pip git ruby-full g++ cmake qtcreator make automake autoconf doxygen libboost-dev libopencv-dev subversion mercurial openjdk-7-jdk freeglut3-dev
$sudo apt-get install ros-indigo-desktop-full
$rosdep init
$rosdep update
$echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc && source ~/bashrc
$sudo apt-get install python-rosinstall
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src && catkin_init_workspace
$cd ~/catkin_ws/ && catkin_make
$souce ~/.bashrc
DRONEシミュレータを入れる
terminalを開く
$cd ~/catkin_ws/src && git clone git clone https://github.com/AutonomyLab/ardrone_autonomy.git
$rosdep install ardrone_autonomy
↑でエラー出ても無視
$ cd ardrone_autonomy
$sudo ./build_sdk.sh
$cd ../
$rosmake ardrone_autonomy
$cd ~/catkin_ws && catkin_make
$source ~/.bashrc
$rospack profile && rosstack profile
$cd ~/catkin_ws/src && svn checkout https://svncvpr.informatik.tu-muenchen.de/cvpr-ros-pkg/trunk/ardrone_helpers
$cd ardrone_helpers
$rosdep install joy
rosdepはエラー出ても無視
$rosdep install ardrone_joystick
rosdepはエラー出ても無視
$rosmake joy
$rosmake ardrone_joystick
$cd ~/catkin_ws/
$catkin_make
$source ~/.bashrc
$rospack profile && rosstack profile
$cd ~/catkin_ws/src && git clone https://github.com/kendemu/tum_simulator_ros_ingido/
シミュレータがROS Indigo Distributionでは動かなかったので動くようにリポジトリ作りました
$cd tum_simulator_ros_indigo
$rosdep install cvg_sim_gazebo_plugins
rosdepはエラー出ても無視
$rosmake cvg_sim_gazebo_plugins
$rospack profile && rosstack profile
$rosdep install cvg_sim_gazebo
rosdepはエラー出ても無視
$rosmake cvg_sim_gazebo
$rosdep instal cvg_sim_msgs
rosdepはエラー出ても無視
$rosmake cvg_sim_msgs
$rosdep install tum_simulator
rosdepはエラー出ても無視
$cd ~/catkin_ws && catkin_make
$source ~/.bashrc
$rospack profile && rosstack profile
シミュレータを動かす
$roslaunch cvg_sim_gazebo ardrone_testworld.launch
Gazeboというアプリケーションに注目
別のターミナルを開く
$rostopic pub -1 /ardrone/takeoff std_msgs/Empty
Droneが離陸します!
DRONEでSLAMを行うには
SLAMは地図生成と自己位置推定を行うアルゴリズムのことを言います。
SLAMができるとDroneの自律操縦も可能になります。
http://wiki.ros.org/tum_ardrone
DRONEナビゲーションパッケージのインストール
$cd ~/catkin_ws/src
$git clone git://github.com/tum-vision/tum_ardrone.git tum_ardrone
$rosdep install tum_ardrone
$rosmake tum_ardrone
$cd ~/catkin_ws
$catkin_make
$rosstack profile && rospack profile
実行
$roslaunch cvg_sim_gazebo ardrone_testworld.launch
$roslaunch tum_ardrone tum_ardrone.launch
$rosrun tum_ardrone drone_autopilot
$rosrun tum_ardrone drone_gui
ps3(sixaxis)でのDRONEの動かし方(simulator)
ターミナルを開く
$sudo apt-add-repository ppa:falk-t-j/qtsixa
$sudo apt-get update
$sudo apt-get install sixad
ps3コントローラをUSB経由で繋いでください
$ sudo sixpair
ps3コントローラをUSBから抜いて
$ sixad --start
無線の状態でPSのボタンを押してください。
設定完了です!
別のターミナルを開く
$roslaunch cvg_sim_gazebo ardrone_testworld.launch
別のターミナルを開く
$ roslaunch ardrone_joystick teleop.launch
L1を押す(teleop.launchのエラーメッセージは無視)
動きます!
画像追跡
https://www.youtube.com/watch?feature=player_embedded&v=UaZtiBNVVpM
Turtlebot http://wiki.ros.org/Robots/TurtleBot
で色情報(CamShiftアルゴリズム)を元に画像追跡を行うプログラムを書きました。追跡画像の角度をpublishします。ソースに書かれてあるカメラのFOVを随時換え、geometry_msgs/Twistのlinear.y/linear.zへの値を変更してください。
https://github.com/kendemu/followme
さらにロバストに画像追跡を行いたい場合はHaarCascadeやR-CNNがあります。顔の角度をpublishするros nodeを作りましたのでご活用ください。こちらは4つのhaarcascade識別器の推論結果をクラスタリングして要素数でフィルタリングすることによってさらにロバストに顔追跡が可能です。
https://github.com/demulab/face_detector