おおた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つのファイルでできています。このファイルをホームディレクトリに用意します。

前回の記事でルンバ単体の環境設定まで行うことができました。これだけでは手動操作しかできません。ここでPCを接続して、そちらで環境地図の生成(SLAM)や自律走行(Navigation)の環境を作っていきます。

ros2-foxy-roomba-base1.jpg

残念ながらMaker Faire Tokyo 2022には出展許可はいただけませんでした。また来年ということになりますが、来年であればROS2でルンバを動かしておきたいものです。

ROS1でルンバを動かしたという記事は見かけますが、ROS2はあまり見かけませんので、調査から始めることにしました。

ハードウェアの準備

以下のハードウェアを使用します。

これらを組み合わせるとこのようになります。

roomba600_rasppi_ydlidar.jpg

LiDARが壊れました - きょうのかんぱぱ

最近はROS2でルンバを自律走行させるべく実験をしていますが、急にLiDARのデータが取れなくなりました。

slamtec_rplidar_a1m8_z.jpg

EMU1802-miniの回路図および基板のガーバーデータはGitHubに無償で公開しておりますので誰でも製作できますが、このデータを使い、オレンジピコショップさんでEMU1802-mini専用基板の販売が開始されました。

emu1802-mini-pcb_rev10.jpg

原型となったEMUZ80では、PIC18F47Q43でROM, RAM, UARTをエミュレーションしています。EMU1802-miniではPICのUARTの機能は使わずCOSMAC CPUのQ出力とEF3入力を利用したソフトウェアシリアルを使っていました。これは既存のCOSMACのソフトウェアではソフトウェアシリアルが利用されていてハードウェアの互換性があるからです。

しかし、今回製作しているEMU1802-miniでは一般的な速度のCPUクロックにできないため、どうしてもソフトウェアシリアルの速度が低速になってしまい、使い勝手がよくありません。IDOITモニタだけでもUART対応にできれば用途が広がるのではと思われます。

PICのUARTをファームウェアに組み込む

これまでのファームウェアではUART機能をコメントアウトしていましたので、まずはこれをもとに戻しました。これでEMUZ80と同様にE000H、E001HをアクセスすることでPICのUARTにアクセスできるはずです。

動作確認を行うために、写真のようにPICのUARTにつながっているCON2にもUSBシリアルを9600bpsで接続します。

emu1802-mini-uart-test0703.jpg

IDIOTモニタでUARTのレジスタのメモリアドレスを確認します。?MコマンドでE000H付近をダンプしてみると、このアドレスだけ何らかの値が設定されていることが確認できます。さらに!MコマンドでUARTのデータレジスタのアドレスであるE001にデータを書き込むと、CON2のUSBシリアルにそのデータがリアルタイムに出力されることを確認しました。

emu1802-mini-uart_write1.png

ファームウェアとハードウェアは正常に動作しているようです。

EMU1802-miniはCOSMACのCPUクロックをファームウェアで自由に変更することができます。超低速にすれば単純なSEQ/REQの繰り返しでLチカを目で確認することもできます。

emu1802_clockup_testing1.jpg

EMU1802-miniで実験していると、USBシリアルをつないだだけでPOWER LEDが点灯してしまいます。このため逆流防止のためダイオード 1N4148を追加しました。

回路図では以下のような修正となります。

emu1802-mini-added-diode.png

最近のコメント

アセット

  • otafab_20220731 _nav2_2.png
  • otafab_20220731_ nav2_1.png
  • otafab_20220731_map1.png
  • otafab_20220731_slam1.png
  • otafab_new_lidar1.jpg
  • emu1802-mini-v21g_programming.jpg
  • emu1802_asciiart_completed.png
  • emu1802_asciiart_error11.png
  • ros2-foxy-roomba-nav2-goal3.jpg
  • ros2-foxy-roomba-nav2-goal2.jpg

カテゴリ

ウェブページ

  • about
  • blogs
  • today
Powered by Movable Type 7.9.4