手元にあるPS4用のジョイスティック(DualShock4)をROS2 Foxyで使ってみました。動作環境はWindows10のVMWareで動かしているUbuntu20.04 LTS です。

DualShock4はBluetoothをサポートしているのですが、今回は有線でのUSB接続です。

ros2_joy_ps4_usb1.jpg

DMCおうちロボコンとは

先日行われたMaker Faire Tokyo 2022で展示されていたDMCおうちロボコンに興味をもちました。

MFTokyo2022_dmc_robocon1.jpg

ライントレースロボットでいかに速く完走するかを競うものですが、2022年はRaspberry Pi Picoを使った標準ロボットを規定のパーツでくみ上げて、ソフトウェアだけをチューニングすることで、いかに速く走るかを競うとのこと。

MFTokyo2022_dmc_robocon2.jpg

これまでルンバのシリアル接続は、USBシリアル変換ボードのコネクタとルンバのシリアルコネクタにブレッドボード用のワイヤーを刺して行っていました。

roomba_serial_wire1.jpg

先日このワイヤーが切れてしまったので、もう少し使い勝手の良いものを作ってみました。これまでは単純にワイヤーを刺しているだけなので、抜けやすかったり、取り外したときにTX-RXがどっちだっけと悩むことも多かったのです。

USBシリアル変換ボードはそのまま使うとして、しっかりしたコネクタで接続するようにしてみました。秋月電子にあるFTDI USBシリアル変換ケーブル(5V)を流用するとかっこよくできるのですが、やや高いですし、実験用なのでこのくらいで十分かと。

材料はシンプルです。ルンバのシリアルコネクタに適合するミニDINプラグ 7Pはマルツさんで買いました。

roomba_serial_parts1.jpg

これを組み合わせてUSB変換コネクタができました。

roomba_serial_cable1.jpg

ルンバのシリアルコネクタに取り付けます。

roomba_serial_connect1.jpg

PCでターミナルソフトを動かして、ルンバの電源をいれると無事情報が出力されました。

roomba_serial_output1.jpg

これで安定したシリアル接続ができそうです。

COSMAC MicroBoard Computerの技術資料や成果物をGitHub.comで管理するようにしました。

詳細はREADME.mdでご確認ください。

COSMAC Toy Computerの技術資料や成果物をGitHub.comで管理するようにしました。

詳細はREADME.mdでご確認ください。

ルンバのLEDの制御ができたので、ルンバのバッテリー電圧を表示するノードを作ってみました。

具体的には以下の処理を行います。

  1. ルンバからはバッテリー電圧の情報(battery/voltage)が配信されていますので、これをSubscribeします。
  2. 受け取ったバッテリー電圧の情報を使って、LEDを表示する指令(set_ascii)をPublishします。
  3. ルンバではLEDを表示する指令をSubscribeして、LEDを点灯させます。

これを繰り返せばバッテリ電圧がリアルタイムで表示されるはずです。

ルンバには各種状態表示を行うためのLEDと音を出す機能があります。ルンバのROS2用のドライバではこの機能をサポートしているので、実際に試してみました。

roomba_sub_test1.jpg

おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。おおたfabさんのルンバロボットのLiDARが壊れてしまったので、その交換とROS2化を行いました。

ROS2のセットアップ

おおたfabの勉強会ではROS1 Melodicで実験を行ってきました。ROS2 Foxyでも問題なくルンバが動くことがわかったので、ROS2環境で再セットアップを行います。

手順はこれまでにまとめたものをGitHubにアップしていますので、これを見ながら進めました。

まずは机上でRaspberry PiとルンバとLiDARを接続して動作確認を行いました。

200KHzだったシステムクロックが1.79MHzに!

GazelleさんよりEMU1802-miniの高速版ファームウェアをご提供いただきました。ソースコードの開発および公開に感謝いたします。これをV2.1GとしてGitHubのemu1802のソースにマージしました。これでCOSMAC CPUクロックが1.79MHzまで高速化できました。

emu1802-mini-v21g_programming.jpg

前回はSLAMで環境地図を作成しました。今回はこの環境地図の情報を使って自律走行を行います。ROS2ではNavigation 2と呼んでいます。今回はTurtlebot3用のNavigation 2パッケージを使用します。

環境地図を用意する

前回SLAMで作成した地図です。

ros2-foxy-roomba-slam-map.jpg

この地図はmap.pgmとmap.yamlという2つのファイルでできています。このファイルをホームディレクトリに用意します。

最近のコメント

アセット

  • ros2_joy_ps4_roomba.jpg
  • ros2_joy_ps4_rqtgraph1.png
  • joy_cmd_vel_topic1.png
  • joy_topic1.png
  • jstest-gtk-capture2.png
  • jstest-gtk-capture1.png
  • jstest_capture1.png
  • ros2_joy_ps4_usb1.jpg
  • dmc_robocon_fin1.jpg
  • dmc_robocon_fin0.jpg

カテゴリ

ウェブページ

  • about
  • blogs
  • today
Powered by Movable Type 7.9.5