RaspberryPiとROSでサーボモータを動かす

ROS

ROSとpigpiodを連携させて,Raspberry Piでサーボモータを動かします.

基本的な方法はDCモータでやった方法と一緒です.違うのは pigpio への指令が set_PWM_dutycycle() から set_servo_pulsewidth() に変わっていることだけです.

GitHubにパッケージを公開しているのでまずはこれをインストールしてください.

cd ~/catkin_ws/src
git clone git@github.com:botamochi6277/tamiya_cam_robot.git

インストールしたら,パッケージをビルドしてください.

cd ~/catkin_ws
catkin_make

次に,サーボモータ用の Listener を起動します.pin でサーボモータに接続しているピン番号を指定します.次のコマンドの場合は18番ピンを使用しています.pigpioの場合はどのI/Oからでもサーボに指令を送れます.

rosrun tamiya_cam_robot servo_listener _pin:=18

次に tamiya1/servo18std_msg/Float32 形式のトピックで目標角度( deg )の情報を送ります.数字はピン番号に対応して変わります.
別のターミナルを開いて,次のコマンドでトピックを送ります.

rostopic pub -1 /tamiya1/servo18 std_msgs/Float32 -- -20

送信後,3秒後にサーボモータが動きます.

カムロボで試すと次の動画のようになります.rostopic pub で動かしているので,インターバルが長くなっているので気長に見てください.

コメント