編集部
トランジスタ技術2020年12月号
<特集>スピード製作!初歩の遠隔制御ロボット
~ラズパイ4/Arduino/LiDAR/ROS/センサ&アクチュエータ…定番ツールで誰でも~
[特集執筆]砂川 寛行
▼目次と記事サンプル
https://toragi.cqpub.co.jp/tabid/915/Default.aspx
●ロボットを動かして慣れることを体験
筐体にさまざまなセンサを取り付けて,人の行けない場所の保守点検を行う遠隔制御ロボットが注目されています.今では,ロボットのメイン・コントローラとして,高性能なコンピュータ・ボード ラズベリー・パイが約4,000円,周囲の状況把握や地図作成に向く距離センサとして,LiDARが約2,000円と安価に入手できます.
ロボット制御のソフトウェアは,オープンソースのロボット開発ソフトウェアROSで開発期間を短縮できます.遠隔制御においては,家庭に普及しているWi-Fi環境を使用すれば,ロボットとパソコンの双方向通信を実現できます.
本特集では,すべて入手性が良い部品を組み合わせてハードウェアを作り,PythonとROSを使用して遠隔制御ロボット制御システムに仕上げます.人が行くことができない床下に潜り込んで,環境状況をカメラで確認したり,悪臭を検知して消臭剤を散布したりするロボットを製作します.
[ソースコード公開]
第1章,第2章,第3章,第5章のソースコード(←クリック)
I/O制御,各種センサのデータ取得,LiDAR,サーモ表示カメラ,
ROS通信プログラムをまとめたzipファイルをダウンロードできます.
■本誌の補足
● 温湿度/CO2/TVOC(総揮発性有機化合物量)/センサ・データをRviz画面に表示
紙面掲載のタイミングでは,温湿度/気圧センサ・モジュールBME280TVOC/CO2センサ・モジュールCCS811の取得データを,ROS経由で母艦(マスタ)パソコンに送信するところまでの解説が間に合いませんでした.上記センサの取得データをRvizで読み取れるようにします.
● カメラと熱センサのデータ合成処理
上記2つのセンサは,センサ表示パネルのプログラム(本誌p.40のリスト9)でデータ取得処理を実行していますが,センサのライブラリがPython3だけにしか対応していないので,その状態ではROSプログラム(紙面p.62のリスト6)で動かすことはできませんでした.また,母艦側のパソコンでセンサ・データを表示する対応も面倒だったので,サーモ表示用センサ・モジュールAMG8833と同様に取得データを画像データに変換して送信し,Rviz画面に表示させるようにしました.カメラのセンサ・データを画像イメージに変換してAMG8833の画像と合成したのちに,ROSメッセージとして送信します.
▲手順
① センサ表示パネル(本誌p.40のリスト9)のプログラムを次のリスト1に修正します.取得したセンサ・データをJSON形式にしてファイルに保存します.
リスト1:sensor_panel_json.py
保存されたJSONデータ:sensor.json
② AMG8833センサの取得データをイメージ画像として保存(処理は紙面p.41のリスト11と同じ内容ですが,保存ファイル名を変更)
リスト2:amg8833save.py
③ 上記①のJSONデータを読み取って黒ベタ画像の上にテキストとして埋め込み,AMG8833イメージ画像に合成して保存するプログラムを作成
リスト3:add_sensor_data.py
④ 上記③の画像をROSプログラムにてROSメッセージとして送信する(画像送信は紙面p.62のリスト6と同じ内容)
①~③までのプログラムは,起動時に自動実行するように,crontabにて設定しました.
参照:crontabの内容.txt
メッセージとして送信する画像はPicturesフォルダに保存するようにしました.
LAUNCH(ランチ)ファイル(本誌p.54のリスト1)にて,ROSプログラムを実行すると,母艦のRviz画面ではAMG8833のサーモ・イメージ・センサから取得したデータが表示されるようになります.
[ウェビナ開催!遠隔制御ロボ作りのヒント]
・リンク先
https://zoom.us/meeting/register/tJMpcu2urT4vHNZOK0NM4Vln2miLdOH2FLGH
■読者プレゼント
●ラズベリー・パイ4 モデルB/2Gバイト (3名様,提供:ケイエスワイ)
●1万円ロボット・ケース「Devastator」 (1名様)
本特集の第4章で紹介したロボットの筐体です.組み立てマニュアル,金属ケース,DCモータなど同梱しています.
(※写真の筐体はLiDARモジュールとアクリル板を搭載していますが,プレゼントには同梱していません)