SCOUT(roller_eye)
Teach & Repeat を PC(ROS Noetic)から制御する手順書
0. 目的とゴール
目的
- SCOUT(roller_eye 系)を PC から ROS 経由で制御・観測できるようにする
- 公式の Teach & Repeat(NavPathNode)を PC から開始・停止・状態取得する
最終ゴール
- PC から以下が可能になること
- Teach 済みルート一覧の取得
- Repeat(nav_path_start)の開始・停止
- 状態取得(nav_get_status)
- teleop_twist_keyboard が 条件付きで使える状態になる
1. 前提環境
ハード
- SCOUT(roller_eye ベース)
- PC(Ubuntu 20.04 推奨)
ソフト
- SCOUT 側:ROS Melodic(メーカー標準)
- PC 側:ROS Noetic
- ネットワーク:PC ↔ SCOUT が同一 LAN
2. ネットワーク・ROS 接続設定
2.1 ROS_MASTER_URI の確認(PC 側)
echo $ROS_MASTER_URI
例:
http://192.168.11.7:11311
2.2 名前解決(推奨)
PC の/etc/hosts に SCOUT を登録:
sudo nano /etc/hosts
追記例:
192.168.11.7 linaro-alip
確認:
ping linaro-alip
3. PC 側に roller_eye メッセージ・サービスを用意する
3.1 ワークスペース準備
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash
3.2 roller_eye パッケージを配置
SCOUT 側/opt/ros/melodic/share/roller_eye を参考に、
PC 側 ~/catkin_ws/src/roller_eye に以下を配置:
msg/srv/CMakeLists.txtpackage.xml
4. CMakeLists.txt の修正(最重要)
4.1 正しい CMakeLists.txt 例
cmake_minimum_required(VERSION 3.0.2)
project(roller_eye)
find_package(catkin REQUIRED COMPONENTS
std_msgs
sensor_msgs
message_generation
)
add_message_files(
FILES
alexskill.msg
contour.msg
detect.msg
frame.msg
patrol_status.msg
point.msg
record.msg
status.msg
task.msg
wifi_config_info.msg
wifi_info.msg
)
add_service_files(
FILES
nav_get_status.srv
nav_list_path.srv
nav_path_start.srv
nav_cancel.srv
nav_exit.srv
algo_move.srv
# ※必要に応じて他 srv を追加
)
generate_messages(
DEPENDENCIES
std_msgs
sensor_msgs
)
catkin_package(
CATKIN_DEPENDS
message_runtime
std_msgs
sensor_msgs
)
include_directories(
${catkin_INCLUDE_DIRS}
)
⚠️ 注意
.msgはadd_message_files.srvはadd_service_files- 混ぜるとビルドエラーになる
5. ビルド
cd ~/catkin_ws
rm -rf build devel
catkin_make
source devel/setup.bash
5.1 型が見えるか確認
rossrv show roller_eye/nav_get_status
rossrv show roller_eye/algo_move
6. NavPathNode を PC から操作する
6.1 現在状態の取得
rosservice call /NavPathNode/nav_get_status
例:
status: 0 # アイドル
6.2 Teach 済みルート一覧取得
rosservice call /NavPathNode/nav_list_path
例:
name_list:
- table
- test
- table2
6.3 Repeat(走行)開始
※ 引数形式は必ず確認することrossrv show roller_eye/nav_path_start
例(name 指定型の場合):
rosservice call /NavPathNode/nav_path_start "name: 'table'"
6.4 停止(安全用・重要)
rosservice call /NavPathNode/nav_cancel
rosservice call /NavPathNode/nav_exit
7. teleop_twist_keyboard についての扱い
7.1 重要な理解
- SCOUT は cmd_vel 直結ロボットではない
- 以下が同時に
/cmd_velを publish する:- AppNode
- CoreNode
- NavPathNode
- CloudNode など
- そのため teleop は常に効くわけではない
7.2 teleop が効く条件
nav_cancel / nav_exitで公式制御を止める- 他ノードが
/cmd_velを出していない - その状態で teleop を起動
rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=/cmd_vel
確認:
rostopic echo /cmd_vel
8. 推奨運用(研究・実験向け)
教示(Teach)
- 公式アプリ or nav_path_save
再現(Repeat)
- PC から nav_path_start
PC 側の役割
- 画像取得
- odom ログ
- Nav 状態監視
- 必要時のみ介入(nav_cancel / algo_move)
9. トラブルシューティング
srv が見えない
catkin_makeが通っているかsource devel/setup.bashを実行したか
teleop が効かない
- Nav / App が動いていないか確認
/cmd_velの Publisher 数を確認
rostopic info /cmd_vel
10. まとめ(重要)
- SCOUT は NavPathNode を正面から使えるようになった時点で勝ち
- teleop は「補助操作」
- Teach & Repeat + PC 監視が最も安定
この手順書で再現できる状態
✅ PC から公式 Repeat を制御 ✅ ルート管理・状態取得 ✅ 将来 VPR・自律制御を重ねられる構成必要であれば次は
- README.md 形式
- 社内Wiki向け
- 研究論文の実験環境章向け





