Skip to content

cyhkbl/RoverMind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

RoverMind โ€” ROS 2 ๅ…ท่บซๆ™บ่ƒฝๆœบๅ™จไบบๆผ”็คบ

ๅŸบไบŽ 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๏ผˆๆŽจ่๏ผ‰

# ๆž„ๅปบ
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/

ๅฏ้…็ฝฎๅ‚ๆ•ฐ

SequenceRunnerNode

ๅ‚ๆ•ฐ ้ป˜่ฎคๅ€ผ ่ฏดๆ˜Ž
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

ObstacleAvoiderNode

ๅ‚ๆ•ฐ ้ป˜่ฎคๅ€ผ ่ฏดๆ˜Ž
scan_topic /scan ๆฟ€ๅ…‰้›ท่พพ topic
obstacle_distance 0.5 ้šœ็ข็‰ฉ่งฆๅ‘่ท็ฆป (m)

IntentParserNode

ๅ‚ๆ•ฐ ้ป˜่ฎคๅ€ผ ่ฏดๆ˜Ž
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 ๅŽ็ซ‹ๅณ้›ถ้€Ÿๅœๆญข

Roadmap

  • ้—ญ็Žฏ้‡Œ็จ‹่ฎกๆŽงๅˆถ (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

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors