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/servo18
に std_msg/Float32
形式のトピックで目標角度( deg )の情報を送ります.数字はピン番号に対応して変わります.
別のターミナルを開いて,次のコマンドでトピックを送ります.
rostopic pub -1 /tamiya1/servo18 std_msgs/Float32 -- -20
送信後,3秒後にサーボモータが動きます.
カムロボで試すと次の動画のようになります.rostopic pub
で動かしているので,インターバルが長くなっているので気長に見てください.
#ROS in #RaspberryPi sends commands to sg90 (tiny servo motor) via pigpiod. pic.twitter.com/NDpgp2NqhY
— botamochi (@botamochi6277) April 4, 2020
コメント