🤖
Raspberry PiでWayPonDEV RPLIDAR A1M8 を設定する手順
WayPonDEV RPLIDAR A1M8 を Raspberry Pi 4 上の Ubuntu Server 22.04 および ROS2 Humble で使用するための手順を以下に記載します。
必要なハードウェアとソフトウェア
ハードウェア
- Raspberry Pi 4
- WayPonDEV RPLIDAR A1M8
- USB ケーブル(RPLIDAR 接続用)
ソフトウェア
- Ubuntu Server 22.04(Raspberry Pi 向けにインストール済み)
- ROS2 Humble(インストール済み)
必要なパッケージのインストール
依存パッケージのインストール
以下のコマンドを実行します。
sudo apt update
sudo apt install -y git python3-colcon-common-extensions python3-pip
RPLIDAR 用の ROS2 パッケージをセットアップ
1. ワークスペースの作成
以下のディレクトリ構成を作成します。
~/ros2_ws/
├── src/
コマンド例:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
2. SLAMTEC の ROS2 パッケージをクローン
以下のコマンドを実行して、rplidar_ros2
リポジトリを取得します。
cd ~/ros2_ws/src
git clone https://github.com/Slamtec/rplidar_ros2.git
3. パッケージのビルド
ワークスペースのルートディレクトリで以下を実行します。
cd ~/ros2_ws
colcon build --symlink-install
ビルドが成功したか確認します:
source install/setup.bash
デバイスのセットアップ
1. USB ポートの確認
以下のコマンドで RPLIDAR が接続されたポートを確認します。
ls /dev/ttyUSB*
通常、/dev/ttyUSB0
として認識されます。
2. 権限の設定
以下のコマンドでポートの権限を変更します。
sudo chmod 666 /dev/ttyUSB0
起動設定の確認と編集
1. RPLIDAR の設定ファイルを確認
rplidar_ros2
の設定ファイルを編集し、正しいポートを指定します。
nano ~/ros2_ws/src/rplidar_ros2/launch/rplidar.launch.py
以下を修正します:
Node(
package='rplidar_ros2',
executable='rplidar_composition',
name='rplidar_node',
parameters=[{
'serial_port': '/dev/ttyUSB0', # 使用するポートを指定
'serial_baudrate': 115200, # ボーレート
'frame_id': 'laser_frame', # フレーム ID
'inverted': False,
'angle_compensate': True,
}],
output='screen'
),
RPLIDAR の起動と動作確認
1. RPLIDAR ノードの起動
以下を実行してノードを起動します。
source ~/ros2_ws/install/setup.bash
ros2 launch rplidar_ros2 rplidar.launch.py
2. トピックの確認
RPLIDAR のデータが /scan
トピックで配信されていることを確認します。
ros2 topic list
ros2 topic echo /scan
TF ツリーの確認(オプション)
1. TF ブロードキャストノードの作成
以下の簡単なノード例を作成し、base_link
と laser_frame
の関係を設定します。
サンプルコード
import rclpy
from rclpy.node import Node
from tf2_ros import TransformBroadcaster
from geometry_msgs.msg import TransformStamped
class TFPublisher(Node):
def __init__(self):
super().__init__('tf_publisher')
self.br = TransformBroadcaster(self)
self.timer = self.create_timer(0.1, self.broadcast_tf)
def broadcast_tf(self):
t = TransformStamped()
t.header.stamp = self.get_clock().now().to_msg()
t.header.frame_id = 'base_link'
t.child_frame_id = 'laser_frame'
t.transform.translation.x = 0.2
t.transform.translation.y = 0.0
t.transform.translation.z = 0.1
t.transform.rotation.w = 1.0
t.transform.rotation.x = 0.0
t.transform.rotation.y = 0.0
t.transform.rotation.z = 0.0
self.br.sendTransform(t)
def main():
rclpy.init()
node = TFPublisher()
rclpy.spin(node)
node.destroy_node()
rclpy.shutdown()
if __name__ == '__main__':
main()
2. ディレクトリ構成例
以下のような構成で保存します:
~/ros2_ws/
├── src/
│ ├── rplidar_ros2/ # RPLIDAR の ROS2 パッケージ
│ └── tf_publisher/ # TF ブロードキャストノード(オプション)
├── build/ # ビルド生成物
├── install/ # インストール済みパッケージ
└── log/ # ビルドログ
以上で設定は完了です。
『PythonではじめるRaspberry Pi入門』を執筆しています
これからPythonやRaspberry Piを使ってアプリケーションを開発してみたいという方向けの入門書です。Pythonプログラムから実際に動くものを作ってみたい方はぜひ手に取ってみてください。
Discussion