ROSとRaspberry Piとタミヤのカムロボットでラジコンを作ろう[遠隔操作編]

ROS

前回はROSを使ったモータのテストを行いました. 今回はいよいよロボットを遠隔操作していきます.

Obtain Camera Image with Web Brower

遠隔操作をする前に, カメラのテストを行います.
初めにカメラ用(+遠隔操作用)のパッケージをダウンロードしてビルドします.

cd ~/catkin_ws/src
sudo apt-get install ros-kinetic-uvc-camera
sudo apt-get install ros-kinetic-roswww
sudo apt-get install ros-kinetic-rosbridge-suite
git clone https://github.com/RobotWebTools/web_video_server.git
git clone https://github.com/GT-RAIL/async_web_server_cpp.git
cd ../
catkin_make

次にカメラ画像のトピックを飛ばします.

rosrun uvc_camera uvc_camera_node

別のターミナルを開いてトピックの一覧を見ます.

rostopic list

この時,次のようにトピック一覧が出てきます.

/camera_info
/image_raw
/image_raw/compressed
/image_raw/compressed/parameter_descriptions
/image_raw/compressed/parameter_updates
/image_raw/compressedDepth
/image_raw/compressedDepth/parameter_descriptions
/image_raw/compressedDepth/parameter_updates
/image_raw/theora
/image_raw/theora/parameter_descriptions
/image_raw/theora/parameter_updates

ここでは/image_rawをブラウザに表示させるために,配信サーバを立ち上げます.
別のターミナルを開いて, 次のコマンドを実行してください.

rosrun web_video_server web_video_server

この状態で
http://[RaspberryPiのIPアドレス]:8080/stream?topic=/image_rawにブラウザでアクセスすると画像を確認できます.

RaspberryPi自身からはhttp://localhost:8080/stream?topic=/image_rawからもアクセスできます.

Teleoperation

ここまでで, 遠隔操作をする準備ができました.
teleop.launchを起動します.

roslaunch tamiya_cam_robot teleop.launch

teleop.launchはサーバーを立ち上げ, サーバーから配信されるコマンドを読み取りモータを動かすノードを立ち上げます.

この状態でhttp://[RaspberryPiのIPアドレス]:8085/tamiya_cam_robot/teleop.htmlにブラウザからアクセスします.
すると, 下の画面のように遠隔操作用のページが表示されます. 左側がカメラが取得した画像,右が操作用の十字キーもどきです. 右下の画像は後から合成したロボットの様子になります(時間的には完全に同期していません).

コメント