ROSトピックを記録する

Rvizが異常終了してしまうという問題を解決するためにデバック情報が必要です。ROSでは流れているトピックを保存する機能があります。これを使って全トピックを記録して、問題となるトピックを調べてみます。

トピックの記録はrosbagというコマンドで行います。-aですべてのトピックが記録されます。

$ rosbag record -a

これでカレントディレクトリに2022-01-23-16-37-57.bagといったログファイルができます。

取得したログファイルの情報を表示するにはrosbug infoを使います。どのようなトピックをいつ取得したのかが表示されます。

$ rosbag info 2022-01-23-16-37-57.bag
path: 2022-01-23-16-37-57.bag
version: 2.0
duration: 1:40s (100s)
start: Jan 23 2022 16:37:57.32 (1642923477.32)
end: Jan 23 2022 16:39:37.86 (1642923577.86)
size: 1.4 MB
messages: 6053
compression: none [2/2 chunks]
types: geometry_msgs/Twist [9f195f881246fdfa2798d1d3eebca84a]
nav_msgs/Odometry [cd5e73d190d741a2f92e81eda573aca7]
rosgraph_msgs/Log [acffd30cd6b6de30f120938c17c593fb]
sensor_msgs/BatteryState [476f837fa6771f6e16e3bf4ef96f8770]
sensor_msgs/JointState [3066dcd76a6cfaef579bd0f34173e9fd]
tf2_msgs/TFMessage [94810edda583a504dfda3829e70d7eec]
topics: /battery_state 1006 msgs : sensor_msgs/BatteryState
/cmd_vel 2027 msgs : geometry_msgs/Twist
/joint_states 1005 msgs : sensor_msgs/JointState
/odom 1003 msgs : nav_msgs/Odometry
/rosout 8 msgs : rosgraph_msgs/Log (2 connections)
/tf 1004 msgs : tf2_msgs/TFMessage

ROSトピックを再生する

取得したROSトピックを再生することで、トピックを繰り返し再現することもできます。その場合はrosbug playをつかいます。

$ rosbag play 2022-01-23-16-37-57.bag

トピックを再生することで、稼働しているノードはそのトピックを受け取ってトピックに従った動作をします。

例えばRomi実機のノードと3DシミュレータであるGazeboを動かしておき、rosbugでトピックを再生すると流れてくるトピックの通りの動きをします。

Gazeboはこのような画面です。RomiのモデルもRomiPiに登録されています。

romi_ros_gazebo.png

動画をYouTubeにアップしておきました。

Rvizも同様に可視化してくれるのですが、やはり途中で異常終了してしまいました。

トピックの詳細を調べる

記録したトピックはCSVファイルとして出力することもできます。

$ rostopic echo -b 2022-01-23-16-37-57.bag -p /tf > tf.csv

これらの情報からRvizを終了させてしまう異常なトピックを探してみます。

Pololu RomiでROSにチャレンジ

Pololu RomiをROSで動かしてみます。以下の記事を参考にしました。

ソースはGitHubに登録されています。

ソースをみた感じではかなり完成系に近いように見えます。これは期待できそうです。

romi_ros_romipi1.jpg

Pololu Romiとの出会い

PololuのサイトでPololu 3piについて調べていたところ、Romiというロボットカーのキットを見つけました。3piに比べて、ゆとりのある設計になっていて、制御ボードはATmega32U MCU、モータードライバ(DRV8838)、6軸IMU(LSM6DS33)を搭載しています。エンコーダ付きのモーターも使用でき、バッテリも単4×4から単3×6となり、Raspberry Pi 3 B+を搭載できます。メーカーはROSのサポートは行っていませんが、GitHubにはRomiPiというROSライブラリのリポジトリもあるようです。

国内の販売店を探したところ、スイッチサイエンスさんで取り扱っていたので、RomiシャーシキットRomi用32U4搭載制御基板Romi用エンコーダ(2個入り)を購入してみました。

各パーツの確認

到着したRomiのシャーシです。スピードを優先して軽量小型の3piとは大きさがかなり違います。

romi_chassis1.jpg

大掃除で見つかったPololu 3pi robotですが、これはATmega328Pが搭載されていて、Arduino IDEでもプログラミングができます。そこでrosserial_arduinoを使って、ROSのノードにしてみました。

rosserial_3pi_robot1.jpg

rosserialのクライアントライブラリで小さなマイコンでもROSのノードにすることができます。ただしホストとなるPCのノードが必要で、そのPCとクライアントはシリアル接続をする必要があります。

今回はシリアル接続にXBeeの透過モードを使うことでワイヤレスにします。透過モードは一度設定すればXBee同士で透過的なシリアル通信が行えます。今回使用したXBeeはシリーズ2(S2)と呼ばれているもので少し古めのものですが、115200bpsまで使えますので十分です。

あけましておめでとうございます。
去年はM5Paperで2020年から2021年への年越しをしましたが、今年は何をしようかなと思っていたところで以前購入したm3piが大掃除で見つかりました。

m3pi_newyear2022.jpg

m3piはPololuが販売していたロボットカーで3pi robotにmbedやXbeeが搭載できる拡張基板を組み合わせたもので、国内でもスイッチサイエンスさんに若干在庫があるようです。ベースとなっている3pi robotはATmega328が搭載されているのでこれだけでも動かすことができます。3pi robotはまだ現在も販売されており、新モデルもあるようです。

以前書いた記事がこちらにありますので参考にしてください。

このm3piにはLEDが8個ついていて高速回転をしながらLEDを点滅することでPOVを行うことができます。

今回はこれで新年を祝ってみました。動画をYouTubeにアップしておきました。回転音が大きいので無音にしています。

きれいに2022と表示したかったのですが、回転のタイミングがなかなか合わずに文字が流れてしまいました。半日程度で作ったものなので、今回はこのくらいで勘弁してください。

では、今年もよろしくお願いします。

四寸五分さんがGithub.comで公開しているZ8001MBをベースにtomi9さんが製作したZ8K CP/MボードのRev.2 基板をいただきました。Z8000系はまだ一度も触ったことがなくぜひ組み立ててCP/Mを動かしてみたいと思っていたところでした。

到着した基板とパーツです。tomi9さんありがとうございました。

z8kcpm_pcb1.jpg

Google Cloud認定資格のAssociate Cloud Engineer (ACE) に挑戦してみました。

Google Cloud Platform (GCP) の経験は、仮想マシンのCompute EngineやBigQueryを無料枠で少し触った程度ですが、もう少し知識を広げたいなと考えていたところでした。

ACEの試験概要

ACEの試験の概要です。

  • 受験時間:2時間
  • 登録料:$125
  • 日本語での受験可能
  • 6か月以上のGoogle Cloudの実務経験を想定

実務経験はほぼ無いですが、これからGCPを触ればなんとかなるかなと。

年内の取得を目指して、まずはGCPのすべての機能が触れるように90日間$300分の無料トライアルに申し込みました。学習を始めたのは10月でしたので、年内はGCPが$300分まで使い放題です。クリスマスまでには取得したいなと試験日は12/13と設定しました。

おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。前回LiDARを使って地図の作成を行いましたが、今回はKinectを使って地図作成にチャレンジします。

kinect_slam1_photo.jpg

Sparkfun版JetBotを実際に動かすためにはmicroSDカードにソフトウェアを書き込む必要があります。前回のハードウェア編では、イメージを書き込んだmicroSDを使用しました。このmicroSDの書き込みかたをまとめておきます。

jetbot_assembly11.jpg

かなり前に買ったままとなっていたSpeakFunのJetBot シャーシキットを使ってJetBotを組み立ててみました。

JetBotにはNVIDIA Jetson Nanoコンピューターが搭載されており、カメラで物体認識を行うことで衝突回避などを行うことができます。

jetbot_assembly1.jpg

最近のコメント

アセット

  • romi_ros_gazebo.png
  • romi_ros_i2cslave_arduino_ide1.png
  • romi_ros_catkin_build_screenshot.png
  • romi_ros_romipi1.jpg
  • romi_rviz_screenshot_2022-01-23_13-23-55.png
  • Romi_raspberrypi_test1.jpg
  • Romi_arduino_test1.jpg
  • Romi_chassis_32u4.jpg
  • Romi_batterybox1.jpg
  • romi_encoder3.jpg

カテゴリ

ウェブページ

  • about
  • blogs
  • today
Powered by Movable Type 7.9.1