ๅบไบ ROS 2 Humble + Gazebo Ignition๏ผ้่ฟ JSON ๅจไฝๅบๅ / ่ช็ถ่ฏญ่จๆไปค้ฉฑๅจๆบๅจไบบ่ฟๅจๆงๅถไธ่ฏญ้ณๆญๆฅ๏ผๆฏๆ้ญ็ฏๅฏผ่ชไธ้็ข็ฉ่ง้ฟใ
โโโโโโโโโโโโโโโโโโโโโโโโ
โ ่ช็ถ่ฏญ่จๆไปค โ
โ "ๅ่ฟ2็ฑณ็ถๅๅทฆ่ฝฌ" โ
โโโโโโโโโโโโฌโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโ
โ IntentParserNode โ walk_talk_run_llm
โ Claude API โ JSON โ
โโโโโโโโโโโโฌโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ config/sequence.json โ
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ โ motion_distance โโโ speech โโโ motion_angle โโโฆ โ
โ โ ๅ่ฟ2m @0.3m/s โ โ "ๅฐ่พพ1" โ โ ๅทฆ่ฝฌ90ยฐ @0.5ยฐ/s โ โ
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ SequenceRunnerNode โ walk_talk_run_core
โ โโโโโโโโโโโโโโโโโ โ
โ ยท ้ญ็ฏ้็จ่ฎกๆงๅถ โ โ /odom feedback
โ ยท ้็ข็ฉ่ง้ฟๆๅ โ โ /scan โ ObstacleAvoider
โ ยท ้ๅบฆๅฎๅ
จๆ ก้ช โ
โ ยท ไผ้
ไธญๆญๅๆญข โ
โโโโโโโโฌโโโโโโโฌโโโโโโโ
โ โ
cmd_vel โ โ speech_cue
(Twist) โ โ (String)
โผ โผ
โโโโโโโโโโโโโโโโโโโโโ
โ Gazebo ไปฟ็ โ walk_talk_run_sim
โ /odom + /scan โ
โ ๅทฎ้ๅบ็ + LiDAR โ
โโโโโโโโโโโโโโโโโโโโโ
| ็ฑปๅ | ๆงๅถๆนๅผ | ๅ ณ้ฎๅๆฐ | ่ฏดๆ |
|---|---|---|---|
motion_distance |
้ญ็ฏ (odom) | distance, speed |
ๅบไบ้็จ่ฎกๅ้ฆ็งปๅจๆๅฎ่ท็ฆป (็ฑณ) |
motion_angle |
้ญ็ฏ (odom) | angle, speed |
ๅบไบ้็จ่ฎกๅ้ฆๆ่ฝฌๆๅฎ่งๅบฆ (ๅผงๅบฆ) |
motion |
ๅผ็ฏ (ๆถ้ด) | linear_x/y, angular_z, duration |
ๆๅบๅฎ้ๅบฆ่ฟ่กๆๅฎๆถ้ฟ (ๅ ผๅฎนๆง็) |
speech |
โ | text, pause_after_sec |
่ฏญ้ณ/ๆฅๅฟๆญๆฅ |
pause |
โ | duration |
้้ป็ญๅพ |
้ญ็ฏๆงๅถไฝฟ็จ P ๆงๅถๅจ (Proportional)๏ผ้่ฟ /odom ่ฏ้ขๅฎๆถๅ้ฆๆบๅจไบบไฝ็ฝฎไธ่ชๅใ้ๅบฆๆไปค็ป max_linear_speed / max_angular_speed ็กฌ้ๅน
ใ
# ๆๅปบ
docker compose build
# ่ฟ่ก Gazebo ไปฟ็ + ้ญ็ฏๅบๅ
docker compose run --rm sim
# ่ฟ่ก LLM ่ช็ถ่ฏญ่จๆงๅถ๏ผ้่ฎพ็ฝฎ API Key๏ผ
export ANTHROPIC_API_KEY=sk-ant-...
docker compose up llm
# ๅฆไธ็ป็ซฏๅ้ๆไปค
docker compose run --rm test-command# ไพ่ต
sudo apt install ros-humble-ros-gz-sim ros-humble-ros-gz-bridge \
ros-humble-robot-state-publisher ros-humble-xacro
pip install anthropic
# ๆๅปบ
source /opt/ros/humble/setup.bash
colcon build
source install/setup.bash
# ไปฟ็ๆจกๅผ
ros2 launch walk_talk_run_sim sim.launch.py
# ็บฏๅบๅ่ฟ่ก๏ผๆ Gazebo๏ผ
ros2 launch walk_talk_run_core sequence_runner.launch.py[
{"type": "motion_distance", "distance": 2.0, "speed": 0.3},
{"type": "speech", "text": "ๅฐ่พพๆฃๆฅ็นไธ", "pause_after_sec": 1.0},
{"type": "motion_angle", "angle": -1.57, "speed": 0.5},
{"type": "motion_distance", "distance": 1.5, "speed": 0.3},
{"type": "speech", "text": "ๅฐ่พพๆฃๆฅ็นไบ", "pause_after_sec": 1.0},
{"type": "pause", "duration": 0.5}
]RoverMind/
โโโ docker/
โ โโโ Dockerfile # ROS 2 Humble + Gazebo ็ฏๅข
โ โโโ entrypoint.sh
โโโ docker-compose.yml # ไธ้ฎๅฏๅจ
โโโ pyproject.toml # ruff + mypy ้
็ฝฎ
โโโ .pre-commit-config.yaml
โโโ src/
โโโ walk_talk_run_core/ # ๆ ธๅฟๅ
๏ผๅบๅๆงๅถ + ้ญ็ฏ + ้ฟ้
โ โโโ walk_talk_run_core/
โ โ โโโ sequence_model.py # ๅบๅ่งฃๆ + ๆ ก้ช (5็ง็ฑปๅ)
โ โ โโโ sequence_runner.py # ROS 2 ่็น๏ผๆง่กๅบๅ
โ โ โโโ closed_loop.py # ้ญ็ฏๆงๅถๅจ (Pๆงๅถ)
โ โ โโโ obstacle_avoider.py # ้็ข็ฉๆฃๆต่็น
โ โโโ config/default_sequence.json
โ โโโ launch/
โ โโโ test/
โ
โโโ walk_talk_run_sim/ # ไปฟ็ๅ
๏ผGazebo + URDF
โ โโโ urdf/diff_drive.urdf.xacro # ๅทฎ้ๅบ็ URDF
โ โโโ world/indoor.sdf # ๅฎคๅ
ไปฟ็ไธ็
โ โโโ config/default_sequence_sim.json
โ โโโ launch/sim.launch.py # ไธ้ฎๅฏๅจไปฟ็
โ
โโโ walk_talk_run_llm/ # LLM ๅ
๏ผ่ช็ถ่ฏญ่จ โ ๅจไฝๅบๅ
โโโ walk_talk_run_llm/
โ โโโ intent_parser.py # Claude API ๆๅพ่งฃๆ
โโโ launch/intent_parser.launch.py
โโโ test/
| ๅๆฐ | ้ป่ฎคๅผ | ่ฏดๆ |
|---|---|---|
cmd_vel_topic |
/cmd_vel |
้ๅบฆๆไปค topic |
speech_topic |
"" |
่ฏญ้ณ topic๏ผ็ฉบ=ไป ๆฅๅฟ๏ผ |
sequence_file |
ๅ ๅ ้ป่ฎค | JSON ๅบๅๆไปถ่ทฏๅพ |
publish_hz |
20.0 |
้ๅบฆๅๅธ้ข็ (Hz) |
max_linear_speed |
1.0 |
็บฟ้ๅบฆไธ้ (m/s) |
max_angular_speed |
1.0 |
่ง้ๅบฆไธ้ (rad/s) |
obstacle_topic |
/obstacle_detected |
้็ข็ฉ็ถๆ topic |
| ๅๆฐ | ้ป่ฎคๅผ | ่ฏดๆ |
|---|---|---|
scan_topic |
/scan |
ๆฟๅ ้ท่พพ topic |
obstacle_distance |
0.5 |
้็ข็ฉ่งฆๅ่ท็ฆป (m) |
| ๅๆฐ | ้ป่ฎคๅผ | ่ฏดๆ |
|---|---|---|
input_topic |
/nl_command |
่ช็ถ่ฏญ่จ่พๅ ฅ topic |
output_topic |
/parsed_sequence |
่งฃๆ็ปๆ่พๅบ topic |
model |
claude-sonnet-4-20250514 |
Claude ๆจกๅ็ๆฌ |
colcon test --packages-select walk_talk_run_core walk_talk_run_llm
colcon test-result --verbose- ้ญ็ฏ > ๅผ็ฏ๏ผ
motion_distance/motion_angleๅบไบ/odomๅ้ฆๆงๅถ๏ผๆฏ็บฏๆถ้ดๆงๅถๆด็ฒพ็กฎใๆดๅฎๅ จ - JSON ้ฉฑๅจ๏ผ่ฟๅจ้ป่พไธไปฃ็ ่งฃ่ฆ๏ผๆ ้้็ผ่ฏๅณๅฏ่ฐๆด่กไธบ
- ๆจกๅๅๅคๅ ๏ผcore / sim / llm ่งฃ่ฆ๏ผๅฏ็ฌ็ซไฝฟ็จ
- Docker ๅ๏ผไธ้ฎๅค็ฐ๏ผ่ทจๅนณๅฐไธ่ดไฝ้ช
- ้ๅบฆ็กฌ้ๅน + ้ฟ้๏ผๅ้ๅฎๅ จๆบๅถ๏ผ้ฒๆญข้ ็ฝฎ้่ฏฏๆ็ฏๅขๅๅๅฏผ่ด็ขฐๆ
- ไผ้ ๅๆญข๏ผSIGINT/SIGTERM ๅ็ซๅณ้ถ้ๅๆญข
- ้ญ็ฏ้็จ่ฎกๆงๅถ (motion_distance / motion_angle)
- ้็ข็ฉ่ง้ฟ (LiDAR scan โ ่ชๅจๆๅ)
- Gazebo Ignition ไปฟ็ (ๅทฎ้ๅบ็ + LiDAR)
- LLM ่ช็ถ่ฏญ่จๆๅพ่งฃๆ (Claude API)
- Docker ๅฎนๅจๅ้จ็ฝฒ
- CI ๆต่ฏๆตๆฐด็บฟ (GitHub Actions)
- Nav2 ๅฏผ่ชๆ ้ๆ (NavigateToPose Action)
- ่กไธบๆ ้ๆ (py_trees_ros)
- Lifecycle Node (ๅทฅไธ็บง่็น็ฎก็)
- ็ๆบ้้ (ๆบๆบ็ต็X2)
ๆฅๅ ฅ็ๆบๅ่ฏท็กฎ่ฎค๏ผๅบๅฐๅฎๅ จใๆฅๅๅฏ็จใ้้ๅ็ใๅจๅดๆ ้็ข็ฉใ
Apache-2.0