ラズパイ4でコンテナーからサーボモーターを動かしてみる


ラズパイ4/4GB(ubuntu 20.04)+ コンテナ+ROS2(Foxy)+ SG90(サーボモータ)という構成

なんでROS2があるのかというと….次回に続くからです^^。

デジタル・マイクロサーボ SG90(Tower Pro):秋月電子で1個400円也。

 

GPIOの結線

 

ラズパイのOSイメージはUbuntu Server 20.04 LTS

 

Jetsonで作成したROS2のドッカーイメージDocker Hub にpushしておいたものを使います。同じUbuntuベースのarm64(aarch64)アーキテクチャなので可能ですが、X86-64 (amd64) のWindowsでは不可です。

初期設定やDocker のインストール、ROS2のイメージのDLなどはこのページをご参照ください。

 

/home/ubuntu のディレクトリ構成は適宜、読み替えてください。

 


コンテナ

作業用ディレクトリを作っておきます。

 

コンテナからGPIOを操作するので以下のようなオプションを使います。

コンテナ作成

sudo docker create -it --name my_ros2 --network host --device /dev/gpiomem --device /dev/ttyAMA0 -v /home/ubuntu/work-ros2:/work wisteriahill/ros:foxy-ros-base-l4t-r32.4.4

コンテナ起動

 

アップデート&アップグレード、ライブラリ・パッケージ等のインストール

 

サーボモータを動かしてみます。

【servo.py】

 

上図の形を初期位置にします。

アーム(サーボ・ホーンと言うそうです、角?)の部分が行ったり来たりを10回繰り返します(それだけです)。Ctrl + C で強制終了。

アームに矢印を貼ったりして意味を持たせると、より分かりやすくなります。

方位センサーやGPSなどと組み合わせれば「目的の場所はどっち?」を指示してくれます。

 

グルグル回転させたい場合はこの方のブログ参照

 

また、使っているライブラリとの組み合わせだとアームがしばしばプルプルと微振動します。ジッターという現象だそうです。気になる方はこの用語で検索して対処法を探してみてください^^。

 


Appendix

コンテナからI2Cデバイスに接続する場合

 


Next

ROS2のDDS を使ってJetsonからメッセージを送り、ラズパイのサーボモータを任意の角度で動かしてみます。

DOMAIN_IDを設定することで、対象となる1機のラズパイにのみ、データを持つメッセージを1度だけpublish してみます。

Jetsonからラズパイにメッセージを届けてみる(ROS2/DDS)

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*