🤖 【TurtleBot3 ROS2環境構築⑥】TurtleBot3初回起動とキーボード操縦 - bringupからteleop_keyboardまで
シリーズ この記事は「TurtleBot3 × ROS2 環境構築シリーズ」の一部です。 シリーズ目次を見る
2026年5月時点。シリーズ⑥です。ネットワーク設定のあと、実機で bringup と teleop_keyboard を動かし、RViz2 で LiDAR を見ます。想定読者は SSH まで終え、初めてモータを回したい方です。
手順の正本は TurtleBot3 e-Manual の Bringup です。電源順序(OpenCR→RPi4)と ROS_DOMAIN_ID の一致を先に確認すると、/scan が見えないトラブルを減らせます。
読了後はホストPC から /cmd_vel を送り、RViz2 でスキャンが流れるところまで確認できる状態を目指します。
bringup 前に何を確認する?
| チェック項目 | 確認方法 |
|---|---|
| バッテリーが充電されている | OpenCR LED が緑 / 電圧 11.1V 以上(目安) |
| ホストPCと TurtleBot3 が同一 Wi-Fi | ping(IP は自分の環境のもの) |
| ROS_DOMAIN_ID が両方で一致 | echo $ROS_DOMAIN_ID |
| TURTLEBOT3_MODEL=burger | echo $TURTLEBOT3_MODEL |
| OpenCR ファームウェア書き込み済み | シリーズ③の手順完了想定 |
Step 1: 電源投入の順序は?
1-1. バッテリーの装着と確認
バッテリー電圧の確認方法:
- OpenCRの電源スイッチをON
- 緑LED点灯 → 正常(11.1V以上)
- 赤LED点灯 → 要充電(11V未満)
1-2. 電源ONの順序
- OpenCRの電源スイッチをON(基板上のスイッチ)
- Raspberry Pi 4の電源をON(OpenCRのUSBポートから給電)
- RPi4のLEDが緑色に安定点灯したら起動完了(約30秒〜1分)
1-3. SSHで接続確認
# ホストPCのターミナルで
ssh turtlebot3
# または: ssh ubuntu@192.168.1.101 Step 2: bringup はどう起動する?
bringup は TurtleBot3 e-Manual どおり、ロボット上のハードウェアノード(LiDAR・オドメ・モータドライバ)を起動する操作です。
2-1. TurtleBot3側でbringupを実行
SSH でログインした RPi4 のシェルで launch を実行します。ホストPC 側は RViz2 や teleop を動かす構成が一般的です。
# RPi4(SSH接続中)
ros2 launch turtlebot3_bringup robot.launch.py 正常起動時の出力:
[INFO] [turtlebot3_node]: Init TurtleBot3 Node.
[INFO] [turtlebot3_node]: ROS_DOMAIN_ID: 30
[INFO] [turtlebot3_node]: Succeeded to open the port - /dev/ttyACM0
[INFO] [turtlebot3_node]: Succeeded to set the baudrate - 1000000
[INFO] [hlds_laser_publisher]: Initializing Scanner...
[INFO] [hlds_laser_publisher]: Firmware version: 1.28
2-2. ホストPC側でトピック確認
別のターミナル(ホストPC)で確認します。
ros2 topic list 以下のトピックが表示されれば起動成功:
/battery_state
/cmd_vel
/imu
/joint_states
/odom
/scan
/sensor_state
/tf # LiDARデータのリアルタイム確認
ros2 topic echo /scan --once
Step 3: teleop_keyboard で操縦するには?
3-1. キーボード操縦ノードの起動
ホストPC側の新しいターミナルで実行します。
# ホストPC(新しいターミナル)
ros2 run turtlebot3_teleop teleop_keyboard 起動すると操作ガイドが表示されます:
Control Your TurtleBot3!
---------------------------
Moving around:
w
a s d
x
w/x : increase/decrease linear velocity (Burger : ~ 0.22 m/s)
a/d : increase/decrease angular velocity (Burger : ~ 2.84 rad/s)
space key, s : force stop
CTRL-C to quit
3-2. 操縦方法
| キー | 動作 | 備考 |
|---|---|---|
| W | 前進(速度アップ) | 押すたびに 0.01 m/s 程度増加(種別による) |
| X | 後退(速度ダウン) | 押すたびに速度減少 |
| A / D | 左旋回 / 右旋回 | 角速度を段階的に変更 |
| S / Space | 停止 | 速度ゼロへ |
Step 4: RViz2 で LiDAR はどう見る?
ホストPCのRViz2でTurtleBot3のLiDARデータや姿勢をリアルタイム可視化します。
4-1. RViz2の起動
ホストPC側の新しいターミナルで実行します。
ros2 launch turtlebot3_bringup rviz2.launch.py 4-2. RViz2の表示内容
- 赤い点群: LiDARが検出した障害物・壁
- TurtleBot3の3Dモデル: ロボットの現在姿勢
- 座標軸: ロボットの向き(赤=X軸、緑=Y軸、青=Z軸)
TurtleBot3を操縦しながらRViz2を見ると、LiDARの点群が部屋の壁や障害物を検出し、ロボットの移動に合わせてリアルタイムで更新されるのがわかります。
4-3. 追加表示の設定
RViz2の「Add」ボタンから追加できます:
- LaserScan → Topic: /scan(LiDAR点群)
- Odometry → Topic: /odom(走行距離推定)
- Imu → Topic: /imu(加速度・角速度)
Step 5: センサーデータはどう確認する?
オドメトリ(走行距離センサー)
ros2 topic echo /odom --once header:
frame_id: odom
pose:
pose:
position:
x: 0.12
y: 0.0
z: 0.0
orientation:
z: 0.045
w: 0.999 バッテリー残量
ros2 topic echo /battery_state --once
# voltage: 11.8
# percentage: 0.85 ← 85% LiDARデータの動作中周波数
ros2 topic hz /scan
# average rate: 5.000 ← 5Hz(LDS-02の仕様) よく使うコマンドは?
# ===== TurtleBot3側(SSH接続) =====
ros2 launch turtlebot3_bringup robot.launch.py
# ===== ホストPC側 =====
# キーボード操縦
ros2 run turtlebot3_teleop teleop_keyboard
# RViz2可視化
ros2 launch turtlebot3_bringup rviz2.launch.py
# センサー確認
ros2 topic echo /scan --once
ros2 topic echo /battery_state --once
ros2 topic echo /odom --once
# ノード・トピック確認
ros2 node list
ros2 topic list bringup・teleop で困ったら?
bringupで /dev/ttyACM0 エラーが出る
# パーミッションの確認
ls -la /dev/ttyACM0
# パーミッション変更(一時的)
sudo chmod 777 /dev/ttyACM0
# 永続化(推奨)
sudo usermod -aG dialout ubuntu /dev/ttyUSB0 が見つからない(LiDARエラー)
ls /dev/ttyUSB*
# LiDARのUSBケーブルを確認
dmesg | tail -20 | grep tty teleop_keyboardでTurtleBot3が動かない
# /cmd_velが届いているか確認
ros2 topic echo /cmd_vel
# teleop_keyboardでキーを押して値が変わるか確認 /cmd_vel が届いているのに動かない場合は、bringupのターミナルを確認してください。
TurtleBot3が急に止まった
バッテリー電圧低下が最も一般的な原因です。
ros2 topic echo /battery_state --once
# voltage: が 10.8V以下なら要充電
初回起動・操縦の要点は?
- 電源投入の正しい順序(OpenCR → RPi4)を理解した
- ros2 launch turtlebot3_bringup robot.launch.py でロボットのセンサー・モーターを起動した
- ros2 run turtlebot3_teleop teleop_keyboard でキーボード操縦ができた
- RViz2でLiDARデータをリアルタイム可視化した
- バッテリー・オドメトリ・LiDARデータをコマンドで確認できた
- 次回はslam_toolboxを使ったSLAM(同時自己位置推定と地図生成)に挑戦します。