From 2c59a6ca314ade995e4ec40a337e838f260f4399 Mon Sep 17 00:00:00 2001 From: chyoo Date: Tue, 22 Sep 2026 09:48:23 +0900 Subject: [PATCH] feat: add Yahboom agent module for LMS --- .autonomy-studio-module.json | 8 ++++++++ .gitignore | 4 ++++ README.md | 18 ++++++++++++++++++ build.sh | 7 +++++++ run.sh | 12 ++++++++++++ src/yahboom_agent/CMakeLists.txt | 5 +++++ src/yahboom_agent/launch/agent.launch.py | 15 +++++++++++++++ src/yahboom_agent/package.xml | 11 +++++++++++ stop.sh | 10 ++++++++++ 9 files changed, 90 insertions(+) create mode 100644 .autonomy-studio-module.json create mode 100644 .gitignore create mode 100644 README.md create mode 100755 build.sh create mode 100755 run.sh create mode 100644 src/yahboom_agent/CMakeLists.txt create mode 100644 src/yahboom_agent/launch/agent.launch.py create mode 100644 src/yahboom_agent/package.xml create mode 100755 stop.sh diff --git a/.autonomy-studio-module.json b/.autonomy-studio-module.json new file mode 100644 index 0000000..c93041f --- /dev/null +++ b/.autonomy-studio-module.json @@ -0,0 +1,8 @@ +{ + "sourceType": "GIT", + "name": "NAV2-Yahboom-Agent", + "category": "System", + "dockerImage": "future-nav2:humble-yahboom-agent", + "packageName": "yahboom_agent", + "launchFile": "agent.launch.py" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ecbae9e --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +build/ +install/ +log/ +__pycache__/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..a4975b4 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +# NAV2-Yahboom-Agent + +LMS 전용 템플릿 저장소입니다. 설치 폴더: `[lms-nav2-yahboom-agent]yahboom_agent_v1.0.0_ws` + +- 패키지: `yahboom_agent` +- 런치: `agent.launch.py` +- 이미지: `future-nav2:humble-yahboom-agent` +- 앱의 야붐 실행기 지원이 반영되어야 합니다. +- 서버 과정의 야붐 전용 환경에 이 모듈과 이미지 아티팩트를 등록한 후 + LMS에서 설치 -> 빌드 -> 실행합니다. +- ROS_DOMAIN_ID는 ESP32 설정과 일치시킵니다. GPU 가속은 끕니다. +- 컨테이너 장치: serial_device (기본 /dev/ttyUSB0) +- SLAM과 Localization은 동시에 실행하지 않습니다. +- 실차 검증 전 소스입니다. 바퀴를 띄우고 비상정지와 명령 타임아웃을 확인하세요. + +원본 소스: https://github.com/KingKiser/hkit_yahboom_ws +작성자 박승휘, 원본 package.xml 저작자 Leo Cho, 원본 라이선스 표기 Apache 2.0. +재배포 전 자산 라이선스를 확인하세요. diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..ac2a213 --- /dev/null +++ b/build.sh @@ -0,0 +1,7 @@ +#!/usr/bin/env bash +set -euo pipefail +MODULE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +RUNTIME_ROOT="${AUTONOMY_STUDIO_RUNTIME_ROOT:-$HOME/autonomy-studio/runtime/nav2}" +FOLDER_NAME="$(basename "$MODULE_PATH")" +IMAGE="${NAV2_DOCKER_IMAGE:-future-nav2:humble-yahboom-agent}" +exec bash "$RUNTIME_ROOT/docker/docker_build_nav2.sh" "$(dirname "$MODULE_PATH")" "$FOLDER_NAME" "$IMAGE" "${ROS_DOMAIN_ID:-20}" diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..7f56354 --- /dev/null +++ b/run.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +set -euo pipefail +MODULE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +RUNTIME_ROOT="${AUTONOMY_STUDIO_RUNTIME_ROOT:-$HOME/autonomy-studio/runtime/nav2}" +FOLDER_NAME="$(basename "$MODULE_PATH")" +IMAGE="${NAV2_DOCKER_IMAGE:-future-nav2:humble-yahboom-agent}" +ROS_PARAM='serial_device:=/dev/ttyUSB0 baudrate:=921600' +CONTAINER_NAME="${FOLDER_NAME#\[}" +CONTAINER_NAME="${CONTAINER_NAME/\]/-}" +CONTAINER_NAME="${CONTAINER_NAME%_ws}" +read -r -a DEFAULT_ARGS <<< "$ROS_PARAM" +exec bash "$RUNTIME_ROOT/docker/docker_run_nav2.sh" "$CONTAINER_NAME" "$(dirname "$MODULE_PATH")" "$FOLDER_NAME" "$IMAGE" "${ROS_DOMAIN_ID:-20}" "${GPU_ENABLED:-false}" "${DEFAULT_ARGS[@]}" "$@" diff --git a/src/yahboom_agent/CMakeLists.txt b/src/yahboom_agent/CMakeLists.txt new file mode 100644 index 0000000..2be5cc2 --- /dev/null +++ b/src/yahboom_agent/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.8) +project(yahboom_agent) +find_package(ament_cmake REQUIRED) +install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) +ament_package() diff --git a/src/yahboom_agent/launch/agent.launch.py b/src/yahboom_agent/launch/agent.launch.py new file mode 100644 index 0000000..1d05344 --- /dev/null +++ b/src/yahboom_agent/launch/agent.launch.py @@ -0,0 +1,15 @@ +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument +from launch.substitutions import LaunchConfiguration +from launch_ros.actions import Node + + +def generate_launch_description(): + return LaunchDescription([ + DeclareLaunchArgument("serial_device", default_value="/dev/ttyUSB0"), + DeclareLaunchArgument("baudrate", default_value="921600"), + Node(package="micro_ros_agent", executable="micro_ros_agent", + name="yahboom_agent", output="screen", + arguments=["serial", "--dev", LaunchConfiguration("serial_device"), + "-b", LaunchConfiguration("baudrate"), "-v4"]), + ]) diff --git a/src/yahboom_agent/package.xml b/src/yahboom_agent/package.xml new file mode 100644 index 0000000..2e157ce --- /dev/null +++ b/src/yahboom_agent/package.xml @@ -0,0 +1,11 @@ + + + yahboom_agent1.0.0 + Yahboom serial micro-ROS Agent for LMS + FutureDrive + Apache-2.0 + ament_cmake + launchlaunch_ros + micro_ros_agent + ament_cmake + diff --git a/stop.sh b/stop.sh new file mode 100755 index 0000000..710403b --- /dev/null +++ b/stop.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -euo pipefail +MODULE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +RUNTIME_ROOT="${AUTONOMY_STUDIO_RUNTIME_ROOT:-$HOME/autonomy-studio/runtime/nav2}" +FOLDER_NAME="$(basename "$MODULE_PATH")" +IMAGE="${NAV2_DOCKER_IMAGE:-future-nav2:humble-yahboom-agent}" +CONTAINER_NAME="${FOLDER_NAME#\[}" +CONTAINER_NAME="${CONTAINER_NAME/\]/-}" +CONTAINER_NAME="${CONTAINER_NAME%_ws}" +docker stop -t 10 "$CONTAINER_NAME"