2020/03/11 に記事の内容を変更しました.
- pigpio.yamlの廃止
- wheels_listenerの追加
- L298NとTB6612の両タイプのモータドライバに対応
- teleop.launchの廃止
- teleop.html から teleop_twist.html へ変更 (暫定的, 旧teleop.htmlを削除する可能性あり)
前回はROSを使ったモータのテストを行いました. 今回はいよいよロボットを遠隔操作していきます.
Obtain Camera Image with Web Browser
遠隔操作をする前に, カメラのテストを行います.
初めにカメラ用(+遠隔操作用)のパッケージをダウンロードしてビルドします.
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
ここまでで, 遠隔操作をする準備ができました.モータードライバに合わせて,launchファイルを起動します.電気回路編の配線から変更している場合は,それぞれのlaunchファイルを編集して,ピンを指定してください.
- L298N の場合
roslaunch tamiya_cam_robot teleop_L298N.launch
- TB6612 の場合
roslaunch tamiya_cam_robot teleop_tb6612.launch
teleop_L298N.launch
と teleop_tb6612.launch
はROSと連携するWebサーバーを立ち上げます.
この状態でhttp://[RaspberryPiのIPアドレス]:8085/tamiya_cam_robot/teleop_twist.html
にブラウザからアクセスします.
すると, 下の画面のように遠隔操作用のページが表示されます. 左側がカメラが取得した画像,右が操作用の十字キーもどきです. 右下の画像は後から合成したロボットの様子になります(時間的には完全に同期していません,動画は旧ノードを使った時のものですが,操作は変わっていません).
ボタンを押すと tamiya1/cmd_vel
が wheels_listener
へPublishされます.
コメント