Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
2fdab68
refactor(deformable-chassis): merge refactored implementation and cle…
Yukikaze2233 May 8, 2026
e33df49
feat(ui): integrate pitch HUD into deformable infantry referee display
Yukikaze2233 May 10, 2026
b9acd1f
feat: add omni-b variant, unify calibration and CAN strategy across 3…
Yukikaze2233 May 10, 2026
ddf8478
feat: add suspension toggle functionality and adjust leg radius param…
ZGZ713912 May 10, 2026
78c6d39
feat: rename prone override method and update suspension toggle logic
ZGZ713912 May 11, 2026
b660087
feat:supercup fixed
eye-on May 11, 2026
32bb48b
feat: remove suspension mode and torque parameters from joint control…
ZGZ713912 May 11, 2026
0103ef7
feat: fix the correct supercap boost mode
eye-on May 11, 2026
eeb2099
Refactor deformable chassis and joint controller configurations
ZGZ713912 May 12, 2026
fdd0ae0
feat:supercup fixed v2
eye-on May 11, 2026
2faf36e
feat: update build scripts and configurations for cross-compilation s…
ZGZ713912 May 12, 2026
a8e6014
feat: update configuration and controller parameters for deformable i…
ZGZ713912 May 13, 2026
068ac33
feat: remove unused build and install scripts, update CMakeLists and …
ZGZ713912 May 14, 2026
5ac6824
feat: update supercap command transmission in deformable infantry har…
ZGZ713912 May 14, 2026
ac7aaae
Refactor Deformable Infantry UI and Remove Pitch HUD
ZGZ713912 May 16, 2026
b654d65
feat: update CAN transmission logic in deformable infantry hardware
ZGZ713912 May 16, 2026
d04e252
feat: add submodule configurations for hikcamera and auto_aim_v2
ZGZ713912 May 18, 2026
234fe73
feat: remove unused inputs and simplify toggle logic in deformable ch…
ZGZ713912 May 18, 2026
1827c98
feat: enhance auto-aim logic in bullet feeder controller
ZGZ713912 May 18, 2026
ce5893a
feat: update joint target state management and fallback radius handli…
ZGZ713912 May 19, 2026
eb21d27
feat: update yaw motor zero point in deformable infantry configuration
ZGZ713912 May 20, 2026
fa7676c
feat: update serial filter for top board and enhance top board functi…
ZGZ713912 May 20, 2026
ed1ade5
vt13 test
qzhhhi May 20, 2026
e241d44
add joystick
qzhhhi May 20, 2026
0a63de8
feat: integrate Vt13 and remote control into deformable infantry comp…
ZGZ713912 May 20, 2026
6317815
feat: enhance remote control functionality with timeout check in Vt13
ZGZ713912 May 20, 2026
1be6b3b
strange
ZGZ713912 May 20, 2026
95c7168
feat: add fault handling and remote control invalidation in VT13 device
ZGZ713912 May 21, 2026
b46fda5
feat: update .gitmodules to include rmcs_auto_aim_v2 and serial submo…
ZGZ713912 May 22, 2026
9bf1a98
feat: update .gitmodules to remove serial submodules
ZGZ713912 May 22, 2026
c191f10
feat: update transform parameters and enhance chassis output status h…
ZGZ713912 May 22, 2026
6f18293
feat:add kSport default mode in remote_control
ZGZ713912 May 22, 2026
d74f7d9
feat: update serial filter for IMU and modify chassis direction indic…
qzhhhi May 22, 2026
2e0034a
vt13 fixfixfix
qzhhhi May 22, 2026
88f2e51
feat: simplify chassis direction indicator angle calculation
ZGZ713912 May 22, 2026
d454db3
feat: update deformable infantry configuration and UI angle settings
ZGZ713912 May 22, 2026
b49a308
feat:add heat controller
eye-on May 22, 2026
f913c32
feat:add info logger
eye-on May 22, 2026
e494a6c
feat: enhance friction wheel controller and UI with working velocity …
ZGZ713912 May 22, 2026
49890c8
feat;heat parameter fixed
eye-on May 22, 2026
09fd6f2
feat: update heat controller parameters and adjust friction wheel spe…
ZGZ713912 May 22, 2026
cf29bdc
feat: adjust status ring parameters for improved accuracy
ZGZ713912 May 23, 2026
c09ea57
feat: increase excess power limit for virtual buffer energy
ZGZ713912 May 23, 2026
78b2cc4
feat: increase reserved heat parameter for heat controller and adjust…
ZGZ713912 May 23, 2026
2fb483b
feat: adjust gimbal upper limit and friction wheel velocities for imp…
ZGZ713912 May 23, 2026
cd036d4
feat:fixed supercup
eye-on May 23, 2026
3f67501
feat:friction applied in omni-b
eye-on May 23, 2026
1e08647
feat:update virtual_buffer_energy_limit_ value
ZGZ713912 May 23, 2026
52b8e2d
calibrate yaw
ZGZ713912 May 23, 2026
bb7f172
calibrate yaw
ZGZ713912 May 23, 2026
83d6163
feat: add armor priority
heyeuu May 24, 2026
2fdad58
feat: update reserved heat value for heat controller
ZGZ713912 May 24, 2026
70c0688
fix: move supercap_cutoff_voltage constant to class scope
ZGZ713912 May 31, 2026
02bc000
feat(gimbal): add ctrl pitch recenter
eye-on Jun 2, 2026
b8a0efc
feat: update wheel radius for deformable chassis controller
ZGZ713912 Jun 3, 2026
cd521cb
feat(gimbal): add feedforward gains for yaw and pitch control
ZGZ713912 Jun 6, 2026
7990df0
feat: add IMU support and refactor gimbal controller parameters
ZGZ713912 Jun 9, 2026
1a90a1d
feat(gimbal): add control hold parameters and manual yaw velocity ove…
ZGZ713912 Jun 9, 2026
cd088fd
feat(gimbal): reset yaw and pitch control angles to NaN on disable
ZGZ713912 Jun 9, 2026
dc181e7
feat: update gimbal control parameters and remove unused librmcs files
ZGZ713912 Jun 11, 2026
235f08f
feat: update heat controller parameters and add shooter heat output
ZGZ713912 Jun 11, 2026
d3f741f
feat:fix pitch lock command
eye-on Jun 12, 2026
15c61ea
feat:delate .codex
eye-on Jun 27, 2026
f502448
Refactor chassis control code for modularity and maintainability
ZGZ713912 Jul 3, 2026
afed676
Refactor Deformable Infantry Hardware and Remove IMU Board
ZGZ713912 Jul 3, 2026
a973e70
fix(gimbal): preserve yaw hold control and unify infantry IMU handling
ZGZ713912 Jul 4, 2026
512d61b
fix(chassis): merge active suspension back into deformable_chassis an…
ZGZ713912 Jul 4, 2026
65a8480
feat(chassis): enhance active suspension control with inner and outer…
ZGZ713912 Jul 5, 2026
bec3e2c
Remove DeformableChassisController implementation
ZGZ713912 Jul 6, 2026
074a373
feat(chassis): update active suspension parameters and integrate mous…
ZGZ713912 Jul 6, 2026
0abad5f
Refactor Deformable Infantry Code and UI Components
ZGZ713912 Jul 6, 2026
1eb6bf9
Squashed commit of the following:
ZGZ713912 Jul 7, 2026
5efbff5
Squashed commit of the following:
ZGZ713912 Jul 7, 2026
90ceab4
chore(plugins): remove DeformableInfantryV2 class
ZGZ713912 Jul 7, 2026
3f419b8
chore(plugins): remove DeformableInfantryV2 class
ZGZ713912 Jul 7, 2026
166addb
Squashed commit of the following:
ZGZ713912 Jul 7, 2026
af88564
Squashed commit of the following:
ZGZ713912 Jul 7, 2026
f0e7022
fix: update dr16 initialization and store_status call
ZGZ713912 Jul 7, 2026
9523181
feat(gimbal): add pitch gravity feedforward
paleJoker Jul 7, 2026
9437147
style: format code for consistency and readability
ZGZ713912 Jul 7, 2026
e5a7469
feat(gimbal): add pitch gravity feedforward
paleJoker Jul 7, 2026
4f1a7dc
refactor(chassis): rename mode manager and update state
ZGZ713912 Jul 8, 2026
610dea3
feat(hardware): connect auto-aim interfaces to deformable infantry
eye-on Jul 8, 2026
ae839bc
Squashed commit of the following:
ZGZ713912 Jul 8, 2026
7e03c4d
feat(hardware): connect auto-aim interfaces to deformable infantry
eye-on Jul 8, 2026
491dfd7
fix(gimbal): update gimbal yaw velocity source
ZGZ713912 Jul 9, 2026
57cbf82
feat(chassis): add low prone toggle functionality
ZGZ713912 Jul 9, 2026
e391f78
fix(chassis): adjust min_angle and add rate filter
ZGZ713912 Jul 9, 2026
3fb1407
refactor(chassis): remove passive suspension parameters
ZGZ713912 Jul 9, 2026
e94aa87
merge: sync deformable-infantry into feat branch
ZGZ713912 Jul 9, 2026
264b36a
fix(gimbal): tighten deformable yaw limit handling
ZGZ713912 Jul 9, 2026
50ecdf2
feat(ui): add auto aim feedback functionality
ZGZ713912 Jul 10, 2026
96030d3
fix(chassis): adjust min_angle and max_angle values
ZGZ713912 Jul 11, 2026
16e4b1a
feat: add CSV writer and thread configuration classes
ZGZ713912 Jul 27, 2026
8996357
fix(chassis): update wireless charging offset values
ZGZ713912 Jul 27, 2026
f067a17
feat: Refactor steering wheel controller and add Px4 vision bridge
ZGZ713912 Jul 31, 2026
4f83641
feat: Enhance auto-aim and chassis control parameters
ZGZ713912 Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .devcontainer/scripts/bootstrap-tools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,71 @@ installed_tools=""
skipped_tools=""
manifest_path="/workspaces/RMCS/.devcontainer/.generated/host-tools.manifest"

ensure_mvsusb3core_cmake_package() {
if [ -f /opt/mvs-usb3-core/lib/cmake/MVSUSB3Core/MVSUSB3CoreConfig.cmake ]; then
return 0
fi

case "$(uname -m)" in
x86_64)
arch_dir=64
;;
aarch64)
arch_dir=aarch64
;;
*)
printf 'Warning: unsupported architecture for MVSUSB3Core bootstrap: %s\n' "$(uname -m)" >&2
return 0
;;
esac

sudo mkdir -p /opt/mvs-usb3-core/lib/cmake/MVSUSB3Core
sudo tee /opt/mvs-usb3-core/lib/cmake/MVSUSB3Core/MVSUSB3CoreConfig.cmake >/dev/null <<EOF
get_filename_component(MVSUSB3Core_ROOT "\${CMAKE_CURRENT_LIST_DIR}/../../.." ABSOLUTE)

set(MVSUSB3Core_INCLUDE_DIR "\${MVSUSB3Core_ROOT}/include")
set(MVSUSB3Core_INCLUDE_DIRS "\${MVSUSB3Core_INCLUDE_DIR}")
set(MVSUSB3Core_LIBRARY_DIR "\${MVSUSB3Core_ROOT}/lib/${arch_dir}")
set(MVSUSB3Core_LIBRARY "\${MVSUSB3Core_LIBRARY_DIR}/libMvCameraControl.so")
set(MVSUSB3Core_LIBRARIES "\${MVSUSB3Core_LIBRARY}")

if(NOT EXISTS "\${MVSUSB3Core_INCLUDE_DIR}/MvCameraControl.h")
set(MVSUSB3Core_FOUND FALSE)
message(FATAL_ERROR "MVSUSB3Core headers not found under \${MVSUSB3Core_INCLUDE_DIR}")
endif()

if(NOT EXISTS "\${MVSUSB3Core_LIBRARY}")
set(MVSUSB3Core_FOUND FALSE)
message(FATAL_ERROR "MVSUSB3Core library libMvCameraControl.so not found under \${MVSUSB3Core_LIBRARY_DIR}")
endif()

if(NOT TARGET MVSUSB3Core::MVSUSB3Core)
add_library(MVSUSB3Core::MVSUSB3Core SHARED IMPORTED GLOBAL)
set_target_properties(MVSUSB3Core::MVSUSB3Core PROPERTIES
IMPORTED_LOCATION "\${MVSUSB3Core_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "\${MVSUSB3Core_INCLUDE_DIR}"
)
endif()

set(MVSUSB3Core_FOUND TRUE)
EOF
}

ensure_ros_mavlink_headers() {
if [ -f /opt/ros/jazzy/include/mavlink/v2.0/common/mavlink.h ]; then
return 0
fi

printf 'Installing ros-jazzy-mavlink for rmcs_core...\n'
sudo apt-get update
sudo apt-get install -y --no-install-recommends ros-jazzy-mavlink
sudo apt-get clean
sudo rm -rf /var/lib/apt/lists/*
}

ensure_mvsusb3core_cmake_package
ensure_ros_mavlink_headers

if [ ! -f "$manifest_path" ]; then
printf 'Warning: host tools manifest not found at %s\n' "$manifest_path" >&2
fi
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/update-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ on:
paths:
- Dockerfile
- .github/workflows/update-image.yml
- .script/template/
- .script/build-rmcs-cross
- rmcs_ws/toolchain.cmake

Expand Down
14 changes: 10 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,6 @@ srv/_*.py
qtcreator-*
*.user

/planning/cfg
/planning/docs
/planning/src

*~

# Emacs
Expand All @@ -71,5 +67,15 @@ id_rsa.pub
# Recording files
record/

# Docker Compose override (personal config)
docker-compose.override.yml

# For temperary development
develop_ws

# For Agent Development
.opencode/
.claude/
.codex/
.mimo/
CLAUDE.md
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[submodule "rmcs_ws/src/fast_tf"]
path = rmcs_ws/src/fast_tf
url = https://github.com/qzhhhi/FastTF.git
[submodule "rmcs_ws/src/rmcs_auto_aim_v2"]
path = rmcs_ws/src/rmcs_auto_aim_v2
url = https://github.com/Alliance-Algorithm/rmcs_auto_aim_v2.git
71 changes: 71 additions & 0 deletions .script/autoaim-debug
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env bash

set -euo pipefail

SESSION="autoaim-debug"

usage() {
cat <<'EOF'
Usage: autoaim-debug <local|remote>

local Start autoaim debug tmux session locally.
remote Start autoaim debug tmux session on ssh remote.
EOF
}

write_start_script() {
local path="$1"
cat >"${path}" <<'SCRIPT'
set -euo pipefail

SESSION="autoaim-debug"

if [[ -f "${HOME}/env_setup.bash" ]]; then
ENV_SETUP="${HOME}/env_setup.bash"
elif [[ -f "/root/env_setup.bash" ]]; then
ENV_SETUP="/root/env_setup.bash"
else
echo "env_setup.bash not found in \$HOME or /root" >&2
exit 1
fi

tmux kill-session -t "${SESSION}" 2>/dev/null || true

tmux new-session -d -s "${SESSION}" -n "foxglove" \
"bash -lc 'source \"${ENV_SETUP}\" && ros2 launch foxglove_bridge foxglove_bridge_launch.xml'"

tmux new-window -t "${SESSION}" -n "streamer" \
"bash -lc '/opt/autoaim/bin/start-streamer'"
SCRIPT
chmod +x "${path}"
}

if [[ $# -ne 1 ]]; then
usage
exit 1
fi

case "$1" in
local)
tmp=$(mktemp)
trap 'rm -f "${tmp}"' EXIT
write_start_script "${tmp}"
bash "${tmp}"
tmux has-session -t "${SESSION}"
echo "autoaim-debug local started in tmux session: ${SESSION}"
echo "Attach with: tmux attach -t ${SESSION}"
;;
remote)
tmp=$(mktemp)
trap 'rm -f "${tmp}"' EXIT
write_start_script "${tmp}"
scp -q "${tmp}" remote:/tmp/autoaim-debug-start.sh
ssh-remote "bash /tmp/autoaim-debug-start.sh && rm -f /tmp/autoaim-debug-start.sh && tmux has-session -t ${SESSION}"
echo "autoaim-debug remote started in tmux session: ${SESSION}"
echo "Attach with: ssh-remote \"tmux attach -t ${SESSION}\""
;;
*)
usage
exit 1
;;
esac
22 changes: 22 additions & 0 deletions .script/complete/_local-context
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#compdef local-context

_arguments \
'1:key:(game_stage robot_health robot_bullet)' \
'2:value:->value'

case "$state" in
value)
case "${words[2]}" in
game_stage)
_values 'game stage' \
not_start \
preparation \
referee_check \
countdown \
started \
settling \
unknown
;;
esac
;;
esac
22 changes: 22 additions & 0 deletions .script/complete/_remote-context
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#compdef remote-context

_arguments \
'1:key:(game_stage robot_health robot_bullet)' \
'2:value:->value'

case "$state" in
value)
case "${words[2]}" in
game_stage)
_values 'game stage' \
not_start \
preparation \
referee_check \
countdown \
started \
settling \
unknown
;;
esac
;;
esac
33 changes: 29 additions & 4 deletions .script/host/rmcs
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,24 @@ readonly DEVELOPER_NAME="ubuntu"
readonly NVIM_PATH="/opt/nvim/bin/nvim"
readonly NVIM_PORT=6666
readonly NVIM_HOST="localhost"
readonly RMCS_PATH="/workspaces/RMCS/"

function show_help() {
local project_dir="$1"
local service="$2"
echo "Usage: $(basename "$0") [path] [zsh|n|nvim|neovide|vim|ide]"
echo "Usage: $(basename "$0") [path] [zsh|recreate|n|nvim|neovide|vim|ide|ai]"
echo " Project dir: $project_dir"
echo " Service: $service"
}

function setup_container() {
docker compose up -d --no-recreate
}

function rmcs_zsh() {
local service="$1"
echo "Starting and entering container..."
docker compose up -d
setup_container
docker compose exec "$service" zsh
}

Expand All @@ -29,7 +34,7 @@ function rmcs_nvim() {
local port=$NVIM_PORT

echo "Starting container..."
docker compose up -d
setup_container

echo "Checking available port and starting nvim headless server..."
while nc -z "$NVIM_HOST" "$port" 2>/dev/null; do
Expand All @@ -38,7 +43,7 @@ function rmcs_nvim() {
done

echo "Starting nvim server on port $port..."
docker compose exec -u "$DEVELOPER_NAME" -d "$service" \
docker compose exec -u "$DEVELOPER_NAME" -w "$RMCS_PATH" -d "$service" \
"$NVIM_PATH" --headless --listen "$NVIM_HOST:$port"

for i in $(seq 1 $timeout); do
Expand All @@ -60,6 +65,20 @@ function rmcs_nvim() {
fi
}

function rmcs_recreate() {
echo "Recreating container..."
docker compose up -d --force-recreate
}

function rmcs_ai() {
local service="$1"
local agent="${RMCS_AGENT:-opencode}"
echo "Starting container and launching Agent ($agent)..."
setup_container
docker compose exec -u "$DEVELOPER_NAME" -w "$RMCS_PATH" "$service" \
zsh -ic "exec ${agent}"
}

function main() {
local project_dir command

Expand All @@ -84,9 +103,15 @@ function main() {
zsh)
rmcs_zsh "$service"
;;
recreate)
rmcs_recreate
;;
n | nvim | neovide | vim | ide)
rmcs_nvim "$service"
;;
ai)
rmcs_ai "$service"
;;
*)
show_help "$project_dir" "$service"
;;
Expand Down
Loading