Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
87254f7
Optimize exception message of components analysis
creeper5820 Aug 1, 2025
c75f55d
Update docker compose yaml and add .env
creeper5820 Aug 13, 2025
de06098
Modify submodule url and update scripts
creeper5820 Sep 12, 2025
1e70030
Add workflow for updating docker images
creeper5820 Oct 24, 2025
a7d319d
Add id_rsa setup for image building
creeper5820 Oct 24, 2025
26dfdf2
Update workflows: change ssh secrets path
creeper5820 Oct 24, 2025
f0393d9
Update develop scripts and add env param
creeper5820 Oct 30, 2025
3075307
Add autoaim visualization script
creeper5820 Nov 1, 2025
d0fabc6
Update develop script
creeper5820 Nov 1, 2025
a6ca16a
Update develop script
creeper5820 Nov 1, 2025
b4c8ed6
Add gstreamer dependency to dockerfile
creeper5820 Nov 1, 2025
fa6cec6
Add device::forcesensor
floatpigeon Nov 4, 2025
a760bd8
Add scripts autocomplete support for zsh
creeper5820 Nov 4, 2025
a38c4af
Add dart control framework
floatpigeon Nov 18, 2025
3fa41f6
Add launch_controller
floatpigeon Nov 22, 2025
f0f4d68
Add device::TriggerServo
floatpigeon Nov 29, 2025
201574f
Supplementary trigger_servo example and test program
floatpigeon Nov 29, 2025
576d3e6
Optimized launch control
floatpigeon Nov 29, 2025
26400cd
Modified force_sensor, testing zero drift
floatpigeon Dec 2, 2025
b3b6fa5
LaunchController test AC
floatpigeon Dec 3, 2025
8188d4c
完成了yaw与pitch的简单控制
hyperle Dec 3, 2025
41aab29
already done pitch yaw control
hyperle Dec 3, 2025
9a6b290
Add device::ForceSensor and device::TriggerServo
floatpigeon Dec 8, 2025
4f1b3ff
Pick basic controllers from dart branch
floatpigeon Dec 8, 2025
99372c3
Add torque limit for resetting stage
floatpigeon Dec 10, 2025
57efe92
Add force sensor calibrate
floatpigeon Dec 10, 2025
b7349c1
sensor loop to be done
hyperle Dec 14, 2025
2482524
an update before pull
hyperle Jan 3, 2026
3193ad3
next step i'll do some encapsulation
hyperle Jan 10, 2026
9d6b11b
developing filling system :refactor servo protocol
hyperle Feb 25, 2026
8b3ab9e
developing filling system :refactor servo protocol
hyperle Feb 25, 2026
c074473
removed rmcs_dart_guidance,will submit as submodule
hyperle Mar 8, 2026
494dbf0
add rmcs_dart_guidance as submodule
hyperle Mar 8, 2026
c685b54
Partial transplant librmcs v3.1.0
floatpigeon Mar 10, 2026
535fa82
Add device: pwm servo and Modify force sensor
floatpigeon Mar 10, 2026
13b5746
Add new hardware for librmcs v3.1.0 and servo test
floatpigeon Mar 10, 2026
61425ca
Clear codes and run success without real motor
floatpigeon Mar 10, 2026
db05722
tested manager passed
hyperle Mar 13, 2026
766dd09
develop 1to4shots dealing
hyperle Mar 15, 2026
5a2295f
developing special handling for 2-4 launches.v1 means handling withou…
hyperle Mar 15, 2026
685bb42
launch process with two visions
hyperle Mar 16, 2026
d709d92
launch process with filling
hyperle Mar 16, 2026
521fd89
launch process with filling and cleaned diffs
hyperle Mar 16, 2026
0105ab3
Stable version
floatpigeon Mar 17, 2026
b4d20c3
Vison dev
floatpigeon Mar 18, 2026
74b1e35
Configure dart guidance for auto aim testing
floatpigeon Mar 18, 2026
2b2b753
Update dart integration and detach rmcs_dart_guidance
floatpigeon Mar 18, 2026
b32509d
Adjust dart force sensor calibration
floatpigeon Mar 18, 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
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-existing-dockerfile
{
"name": "rmcs-develop",
"image": "qzhhhi/rmcs-develop:latest",
"image": "qzhhhi/rmcs- :latest",
"privileged": true,
"mounts": [
{
Expand Down
3 changes: 3 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
CONTAINER_USER=ubuntu
CONTAINER_HOME=/home/${CONTAINER_USER}
HOST_NVIM_DIR=${HOME}/.config/nvim
49 changes: 49 additions & 0 deletions .github/workflows/update-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Build and Push RMCS Images

on:
workflow_dispatch:
push:
paths:
- 'Dockerfile'
branches:
- main

jobs:
build-and-push:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Set up SSH keys
run: |
echo "${{ secrets.CONTAINER_ID_RSA }}" > .ssh/id_rsa
echo "${{ secrets.CONTAINER_ID_RSA_PUB }}" > .ssh/id_rsa.pub
chmod 600 .ssh/id_rsa
chmod 644 .ssh/id_rsa.pub

- name: Build and push rmcs-develop:latest
uses: docker/build-push-action@v6
with:
context: .
push: true
target: rmcs-develop
tags: qzhhhi/rmcs-develop:latest

- name: Build and push rmcs-runtime:latest
uses: docker/build-push-action@v6
with:
context: .
push: true
target: rmcs-runtime
tags: qzhhhi/rmcs-runtime:latest
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,7 @@ id_rsa.pub
record/

# For temperary development
develop_ws
develop_ws

# Keep nested standalone repos out of the RMCS index.
rmcs_ws/src/rmcs_dart_guidance/
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
url = https://github.com/Alliance-Algorithm/ros2-hikcamera.git
[submodule "rmcs_ws/src/serial"]
path = rmcs_ws/src/serial
url = git@github.com:Alliance-Algorithm/ros2-serial.git
url = https://github.com/Alliance-Algorithm/ros2-serial.git
4 changes: 2 additions & 2 deletions .script/build-rmcs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@

source /opt/ros/jazzy/setup.bash

cd /workspaces/RMCS/rmcs_ws
cd ${RMCS_PATH}/rmcs_ws

colcon build --symlink-install --merge-install
colcon build --symlink-install --merge-install $@
3 changes: 2 additions & 1 deletion .script/clean-rmcs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
#! /bin/bash

rm -rf /workspaces/RMCS/rmcs_ws/build /workspaces/RMCS/rmcs_ws/install /workspaces/RMCS/rmcs_ws/log
rm -rf ${RMCS_PATH}/rmcs_ws/build ${RMCS_PATH}/rmcs_ws/install ${RMCS_PATH}/rmcs_ws/log

6 changes: 6 additions & 0 deletions .script/complete/_play-autoaim
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#compdef play-autoaim

_arguments \
'--user[指定远程用户名]:用户名:' \
'--remote[从设备拉取 SDP 到容器]' \
'--no-copy[跳过容器到宿主机的拷贝]'
22 changes: 22 additions & 0 deletions .script/complete/_set-remote
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#compdef set-remote

_remote_hosts() {
local hosts=(
"169.254.233.233"
"alliance-sentry.local"
"alliance-infantry.local"
"alliance-hero.local"
)

# 从 ~/.ssh/config 提取最近使用的 HostName
if [[ -f ~/.ssh/config ]]; then
local extracted
extracted=(${(f)"$(grep -A1 'Host remote' ~/.ssh/config | grep HostName | awk '{print $2}')"})
hosts+=(${extracted})
fi

compadd -- $hosts
}

_arguments \
'1:远程主机地址:_remote_hosts'
69 changes: 69 additions & 0 deletions .script/play-autoaim
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/sh

set -e

MONITOR_USER=""
MONITOR_PLAYER="vlc"
MONITOR_HOST="localhost"

SDP_PATH="/tmp/auto_aim.sdp"

USE_REMOTE=false
SKIP_COPY=false

# 参数解析
while [ "$#" -gt 0 ]; do
case "$1" in
--user)
shift
[ -z "$1" ] && echo "❌ --user 参数缺失" && exit 1
MONITOR_USER="$1"
;;
--remote)
USE_REMOTE=true
;;
--no-copy)
SKIP_COPY=true
;;
*)
echo "未知参数: $1"
echo "用法: $0 --user <用户名> [--remote] [--no-copy]"
exit 1
;;
esac
shift
done

if [ -z "$MONITOR_USER" ]; then
echo "❌ 缺少 --user 参数"
echo "用法: play-autoaim --user <用户名> [--remote] [--no-copy]"
exit 1
fi

if [ "$USE_REMOTE" = true ]; then
scp remote:${SDP_PATH} ${SDP_PATH}
if [ $? -ne 0 ]; then
echo " 从 remote 拷贝失败。是否继续?(y/n)"
read -r answer
case "$answer" in
[Yy]*) echo " 继续执行后续操作…" ;;
*)
echo " 已取消。"
exit 1
;;
esac
fi
fi

if [ "$SKIP_COPY" = false ]; then
scp "${SDP_PATH}" "${MONITOR_USER}@${MONITOR_HOST}:${SDP_PATH}"
if [ $? -ne 0 ]; then
echo " scp 拷贝失败"
exit 1
fi
echo " 文件已拷贝到宿主机:${SDP_PATH}"
else
echo " 跳过拷贝,直接打开远程 SDP"
fi

ssh -f "${MONITOR_USER}@${MONITOR_HOST}" "DISPLAY=:0 ${MONITOR_PLAYER} '${SDP_PATH}' --network-caching=50"
2 changes: 1 addition & 1 deletion .script/sync-remote
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import subprocess
from colorama import Fore, Style


SRC_DIR = "/workspaces/RMCS/rmcs_ws/install"
SRC_DIR = os.getenv("RMCS_PATH") + "/rmcs_ws/install"
DST_DIR = "ssh://remote//rmcs_install"
SOCKET_PATH = "/tmp/sync-remote"

Expand Down
6 changes: 4 additions & 2 deletions .script/template/env_setup.bash
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
#!/bin/bash

export ROS_LOCALHOST_ONLY=1
export RCUTILS_COLORIZED_OUTPUT=1
export RMCS_PATH="/workspaces/RMCS"

source /opt/ros/jazzy/setup.bash

if [ -f "/rmcs_install/local_setup.bash" ]; then
source /rmcs_install/local_setup.bash
elif [ -f "/workspaces/RMCS/rmcs_ws/install/local_setup.bash" ]; then
source /workspaces/RMCS/rmcs_ws/install/local_setup.bash
elif [ -f "${RMCS_PATH}/rmcs_ws/install/local_setup.bash" ]; then
source ${RMCS_PATH}/rmcs_ws/install/local_setup.bash
fi

export RMCS_ROBOT_TYPE=""
10 changes: 8 additions & 2 deletions .script/template/env_setup.zsh
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
#!/bin/bash

export RCUTILS_COLORIZED_OUTPUT=1
export ROS_LOCALHOST_ONLY=1
export RMCS_PATH="/workspaces/RMCS"

source /opt/ros/jazzy/setup.zsh

if [ -f "/rmcs_install/local_setup.zsh" ]; then
source /rmcs_install/local_setup.zsh
elif [ -f "/workspaces/RMCS/rmcs_ws/install/local_setup.zsh" ]; then
source /workspaces/RMCS/rmcs_ws/install/local_setup.zsh
elif [ -f "${RMCS_PATH}/rmcs_ws/install/local_setup.zsh" ]; then
source ${RMCS_PATH}/rmcs_ws/install/local_setup.zsh
fi

eval "$(register-python-argcomplete ros2)"
eval "$(register-python-argcomplete colcon)"

export RMCS_ROBOT_TYPE=""

fpath=(${RMCS_PATH}/.script/complete $fpath)
autoload -Uz compinit
compinit
8 changes: 4 additions & 4 deletions .vscode/settings.default.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
"--header-insertion=never"
],
"python.autoComplete.extraPaths": [
"/opt/ros/humble/lib/python3.10/site-packages",
"/opt/ros/humble/local/lib/python3.10/dist-packages"
"/opt/ros/jazzy/lib/python3.10/site-packages",
"/opt/ros/jazzy/local/lib/python3.10/dist-packages"
],
"python.analysis.extraPaths": [
"/opt/ros/humble/lib/python3.10/site-packages",
"/opt/ros/humble/local/lib/python3.10/dist-packages"
"/opt/ros/jazzy/lib/python3.10/site-packages",
"/opt/ros/jazzy/local/lib/python3.10/dist-packages"
],
"cSpell.words": [
"ahrs",
Expand Down
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
vim wget curl unzip \
zsh screen tmux \
usbutils net-tools iputils-ping \
gstreamer1.0-tools gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
ripgrep htop fzf \
libusb-1.0-0-dev \
libeigen3-dev \
Expand Down Expand Up @@ -123,7 +124,7 @@ RUN sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools
sed -i 's/ZSH_THEME=\"[a-z0-9\-]*\"/ZSH_THEME="af-magic"/g' ~/.zshrc && \
echo 'source ~/env_setup.zsh' >> ~/.zshrc && \
echo 'export PATH="${PATH}:/opt/nvim-linux-x86_64/bin"' >> ~/.zshrc && \
echo 'export PATH=${PATH}:/workspaces/RMCS/.script' >> ~/.zshrc
echo 'export PATH="${PATH}:${RMCS_PATH}/.script"' >> ~/.zshrc

# Copy environment setup scripts
COPY --chown=1000:1000 .script/template/env_setup.bash env_setup.bash
Expand Down
11 changes: 7 additions & 4 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
services:
rmcs-develop:
image: qzhhhi/rmcs-develop:latest
container_name: rmcs-develop
user: "developer"
hostname: "developer"
user: "${CONTAINER_USER}"
privileged: true
command: >
bash -c "
sudo chown -R ${CONTAINER_USER}:${CONTAINER_USER} ${CONTAINER_HOME}/.config
exec bash
"
volumes:
- /dev:/dev:bind
- /tmp/.X11-unix:/tmp/.X11-unix:bind
- /run/user/1000/wayland-0:/run/user/1000/wayland-0
- ~/.config/nvim/:/home/developer/.config/nvim/:bind
- ${HOST_NVIM_DIR}:${CONTAINER_HOME}/.config/nvim/:bind
- .:/workspaces/RMCS:bind
environment:
- DISPLAY=${DISPLAY}
Expand Down
Loading