Skip to content

feat: Fold climbable-infantry into maintained steering-infantry - #82

Merged
qzhhhi merged 2 commits into
mainfrom
dev/steering-infantry
Jun 10, 2026
Merged

feat: Fold climbable-infantry into maintained steering-infantry#82
qzhhhi merged 2 commits into
mainfrom
dev/steering-infantry

Conversation

@qzhhhi

@qzhhhiqzhhhi commented Jun 10, 2026

Copy link
Copy Markdown
Member
  • Convert the active climbable-infantry line into the maintained steering-infantry variant. Remove the stair-climbing control chain and dedicated climber motors, revert the temporary VT13 / merged-remote stack back to pure DR16, and rename the cleaned result back to steering-infantry because the historical steering-infantry is no longer maintained.
  • Update SteeringInfantry to the rmcs-board-lite split top/bottom board path and refresh its bringup config for the current robot. Also restore the original /gimbal/calibrate and /steers/calibrate semantics, remove the temporary yaw watchdog path, make pitch control explicitly use LK velocity commands, and recover accidentally removed mainline content while keeping only the required steering-infantry merge delta.

Update librmcs from v3.2.0b0 to v3.2.0 for the required board-lite SDK.

变更概览

本 PR 将活跃的 climbable-infantry 行合并为维护分支 steering-infantry,保留 steering-infantry 的实现路径并折叠 climbable-infantry 的改动。目标是简化硬件/控制栈、恢复主线遥控栈并迁移到 board-lite SDK。主要变更包括配置、依赖与硬件实现重构,并恢复若干控制语义。

核心目标(来自 PR 描述)

  • 将 climbable-infantry 的改动折叠入 maintained steering-infantry。
  • 移除爬梯(stair-climbing)控制链与专用爬梯电机。
  • 将临时 VT13/merged-remote 堆栈还原为纯 DR16。
  • 将清理后的结果命名回 steering-infantry(原历史 steering-infantry 已不再维护)。
  • 使 SteeringInfantry 采用 rmcs-board-lite 的 top/bottom 分离板路径,并刷新当前机器的 bringup 配置。
  • 恢复原始 /gimbal/calibrate 与 /steers/calibrate 语义。
  • 移除临时的 yaw 看门狗路径。
  • 使 pitch 控制明确使用 LK 速度命令。
  • 恢复意外被移除的主线内容,仅保留 steering-infantry 合并的差异。
  • 将 librmcs 从 v3.2.0b0 升级到 v3.2.0,以获得 board-lite SDK。

主要文件变更摘要

  1. rmcs_ws/src/rmcs_bringup/config/steering-infantry.yaml
  • 组件别名与 rmcs_executor 映射调整:将 SteeringInfantry 硬件别名改为 infantry_hardware;启用 referee_ui_infantry 的映射等。
  • 云台/舵机 PID 与话题路径调整:更新 pitch_angle_pid_controller、yaw_angle_pid_controller 的测量/控制/设定话题与 PID 参数,新增并启用 yaw_velocity_pid_controller(用于偏航速度控制)。
  • 硬件序列号、电机零点、gimbal_controller 限值更新;摩擦轮目标速度从 600.0 调整为 590.0,软启动/停止时间从 1.0 调为 0.3。
  • 射击子系统参数调整:bullet_feeder_controller 的 bullets_per_feeder_turn 与 shot_frequency 变更;shooting_recorder 的 friction_wheel_count 与 log_mode 更新;bullet_feeder_velocity_pid_controller、steering_wheel_controller 的若干参数(kp/ki/kd、mess、moment_of_inertia、vehicle_radius)被修改。
  • 恢复并重组交互/裁判相关映射(Interaction/Ui/Command 等)。
  1. rmcs_ws/src/rmcs_core/CMakeLists.txt
  • 将 FetchContent 中的 librmcs 版本从 v3.2.0-beta.0 切换到 v3.2.0,并更新对应的下载哈希(SHA256),以获取 board-lite SDK 支持。
  1. rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp
  • 将板基类从 CBoard 切换为 RmcsBoardLite,重构 TopBoard/BottomBoard 的实现以匹配 board-lite 分离式上/下板设计。
  • TopBoard 调整:
    • 统一使用 imu_ 命名并更新 IMU 输出引用(仍使用 device::Bmi088 作为 IMU)。
    • 修改 CAN 命令/接收映射:俯仰相关 CAN ID 切换到 0x143,摩擦舵机接收 ID 从 0x203/0x204 改为 0x201/0x202。
    • command_update 中的 CAN 打包/发送顺序与速度命令生成逻辑被重写。
    • 校准回调中 steers 零点日志改为引用 BottomBoard 重组后的前/后舵机分组结构。
  • BottomBoard 调整:
    • 移除基于 can_transmission_mode_ 的分支发送逻辑,改为固定多 CAN 通道发送:can0(后轮/后舵机/超容)、can1(前轮/前舵机)、can2(云台 yaw 扭矩,ID 0x142)、can3(弹丸供弹,ID 0x1FF)。
    • 接收回调按 can0/can1/can2/can3 映射回填对应电机/供电/云台状态;uart0 收到数据写入 referee_ring_buffer_receive_,DBus 数据写入 dr16_。
    • 成员结构重组:移除外层模式/功率计输出成员,电机数组由较大数组收敛为前/后分组的更小数组,yaw 速度从 imu_.gy() 改为 imu_.gz() 写入 chassis_yaw_velocity_imu_,并将 dr16_ 与相关回调内聚到 BottomBoard。
  • 整体上对 CAN ID、发送/接收映射、成员命名与数据流做了广泛重构以适配 board-lite 与 DR16 恢复。

风险与审查要点(从改动体量与性质推断)

  • 大量 CAN ID 与发送/接收路径变更,需在实际硬件上验证电机/云台/供电的 CAN 映射与方向是否正确。
  • board-lite 基类切换与成员重组可能影响原先其它模块对 SteeringInfantry 成员或话题的假设(注意外部接口兼容性)。
  • PID 与控制器话题的变更需要在闭环下进行调参验证,尤其 yaw_velocity_pid 的新增与 friction wheel、feeder 的参数修改。
  • 依赖版本变更(librmcs v3.2.0)需在 CI/构建环境中验证下载校验与编译兼容性。

其他元信息

  • 作者:qzhhhi 请求 @coderabbitai 审核;CodeRabbit 机器人触发了自动回复,当前无人工审阅评论。
  • 提交信息较简短(单条 commit message:"fix naming"),PR 描述提供了意图和要点。

- Convert the active climbable-infantry line into the maintained steering-infantry variant. Remove the stair-climbing control chain and dedicated climber motors, revert the temporary VT13 / merged-remote stack back to pure DR16, and rename the cleaned result back to steering-infantry because the historical steering-infantry is no longer maintained.
- Update SteeringInfantry to the rmcs-board-lite split top/bottom board path and refresh its bringup config for the current robot. Also restore the original /gimbal/calibrate and /steers/calibrate semantics, remove the temporary yaw watchdog path, make pitch control explicitly use LK velocity commands, and recover accidentally removed mainline content while keeping only the required steering-infantry merge delta.
Update librmcs from v3.2.0b0 to v3.2.0 for the required board-lite SDK.
Co-authored-by: Palejoker <2797572751@qq.com>
Co-authored-by: Fin_Resect <chenchengyue201@126.com>
@coderabbitai

coderabbitaiBot commented Jun 10, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 27343a95-35d1-4539-acf3-f766142e22d7

📥 Commits

Reviewing files that changed from the base of the PR and between 78d0ed2 and 841eda7.

📒 Files selected for processing (2)
  • rmcs_ws/src/rmcs_bringup/config/steering-infantry.yaml
  • rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp
🚧 Files skipped from review as they are similar to previous changes (2)
  • rmcs_ws/src/rmcs_bringup/config/steering-infantry.yaml
  • rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp

Walkthrough

更新 bringup 配置(组件别名、PID 路由与参数、射击与摩擦轮参数)、升级 librmcs 依赖;将 SteeringInfantry 的 TopBoard 迁移到 RmcsBoardLite 并重写 CAN 收发;BottomBoard 重构为多 CAN 通道与前/后电机分组,状态封装与接收路径迁移。

变更清单

硬件架构迁移与配置更新

Layer / File(s)Summary
配置与依赖更新
rmcs_ws/src/rmcs_bringup/config/steering-infantry.yaml, rmcs_ws/src/rmcs_core/CMakeLists.txt
更新 rmcs_executor 组件别名(steeringInfantry_hardware -> infantry_hardware)、启用 referee_ui_infantry、新增/调整 yaw_velocity_pid_controller 的映射与 PID 参数;调整 friction wheel、bullet feeder 与 shooting_recorder 参数;将 librmcs SDK 版本由 v3.2.0-beta.0 -> v3.2.0 并更新 URL_HASH。
TopBoard 基类迁移与收发逻辑重写
rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp (头部、构造与 TopBoard 相关段落)
TopBoard 基类从 CBoard 改为 RmcsBoardLite,IMU 状态变量统一为 imu_,重写 command_update() 以更改 can1 打包顺序与 can2 俯仰命令 CAN ID(0x143),并修改接收回调以使用新 CAN ID 集合;校准回调读取 BottomBoard 前/后舵机分组成员。
BottomBoard 重构:多 CAN 通道与成员重组
rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp (BottomBoard 构造、update、command_update、成员声明段落)
移除基于 can_transmission_mode_ 的分支,固定使用 can0/can1/can2/can3 发送(后/前轮、后/前舵机、yaw 扭矩 (0x142)、弹丸供弹器 (0x1FF));接收按 can0..can3 分派回填电机与电源、将 uart0 的 referee 数据写入 referee_ring_buffer_receive_,dbus 数据写入 dr16_;将 imu_dr16_ 等状态封装进 BottomBoard,电机数组按前/后各 [2] 重组,yaw 速度来源改为 imu_.gz()

Sequence Diagram(s)

sequenceDiagram
participant SteeringInfantry
participant TopBoard
participant CAN0
participant CAN1
participant CAN2
participant CAN3
participant BottomBoard
participant IMU
SteeringInfantry->>TopBoard: call command_update()
TopBoard->>CAN1: send friction motor cmds (packed order)
TopBoard->>CAN2: send pitch motor cmd (CAN ID 0x143)
CAN1->>BottomBoard: motor status frames (0x201/0x202)
CAN2->>BottomBoard: pitch status frames (0x143)
BottomBoard->>IMU: read imu_ (accel/gyro -> imu_.gz())
BottomBoard->>CAN0: send rear wheel & rear steering cmds
BottomBoard->>CAN3: send bullet feeder cmds (0x1FF)
BottomBoard->>SteeringInfantry: update dr16_/state outputs
Loading

估计代码审查工作量

🎯 4 (Complex) | ⏱️ ~45 minutes

诗·兔语祝福

舵板换新装,线缆轻声唱,
CAN 路径分明,前后列队忙;
imu 细声数,电机步伐稳,
兔儿跳一跃,硬件焕新光。 🐇

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check nameStatusExplanationResolution
Docstring Coverage⚠️ WarningDocstring coverage is 0.00% which is insufficient. The required threshold is 80.00%.Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedPR标题清晰准确地总结了主要变更内容:将climbable-infantry功能整合到maintained steering-infantry中,这与所有文件修改(配置更新、CMakeLists.txt依赖升级、硬件实现重构)的核心目标相符。
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev/steering-infantry

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 Infer (1.2.0)
rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp

rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp:10:10: fatal error: 'eigen3/Eigen/Dense' file not found
10 | #include <eigen3/Eigen/Dense>
| ^~~~~~~~~~~~~~~~~~~~
1 error generated.
rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp:177:31-196:9: ERROR translating statement 'CompoundStmt'
Aborting translation of method 'rmcs_core::hardware::SteeringInfantry::TopBoard::command_update' in file 'rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp': "Assert_failure src/clang/cAst_utils.ml:249:53"
Uncaught Internal Error: "Assert_failure src/clang/cAst_utils.ml:249:53"
Error backtrace:
Raised at ClangFrontend__CAst_utils.get_decl_from_typ_ptr in file "src/clang/cAst_utils.ml", line 249, characters 53-65
Called from ClangFrontend__CTrans.CTrans_funct.get_destructor_decl_ref in file "src/clang/cTrans.ml", line 658, characters 12-59
Called from ClangFrontend__CTrans.CTrans_funct.destructor_calls.(fun) in file "src/clang/cTrans.ml", line 2048, characters 12-

... [truncated 2200 characters] ...

e 48, characters 6-141
Called from ClangFrontend__CFrontend_decl.CFrontend_decl_funct.add_method in file "src/clang/cFrontend_decl.ml" (inlined), line 54, characters 4-52
Called from ClangFrontend__CFrontend_decl.CFrontend_decl_funct.process_method_decl.add_method_if_create_procdesc in file "src/clang/cFrontend_decl.ml" (inlined), line 123, characters 16-158
Called from ClangFrontend__CFrontend_decl.CFrontend_decl_funct.process_method_decl in file "src/clang/cFrontend_decl.ml", line 126, characters 17-97
Called from ClangFrontend__CFrontend_decl.CFrontend_decl_funct.process_methods in file "src/clang/cFrontend_decl.ml" (inlined), line 270, characters 8-122
Called from Stdlib__List.iter in file "list.ml" (inlined), line 110, characters 12-15
Called from Stdlib__List.iter in file "list.ml" (


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp (1)

122-123: 💤 Low value

参数命名建议:climbable_infantry 应更名为 steering_infantry

构造函数参数名 climbable_infantry 与类名 SteeringInfantry 不一致。根据 PR 目标,climbable-infantry 已被合并到 steering-infantry 中,建议统一命名以提高代码可读性。

♻️ 建议修改
- explicit TopBoard(- SteeringInfantry& climbable_infantry,- SteeringInfantryCommand& climbable_infantry_command, std::string_view board_serial = {})+ explicit TopBoard(+ SteeringInfantry& steering_infantry,+ SteeringInfantryCommand& steering_infantry_command, std::string_view board_serial = {})

同样适用于 BottomBoard 构造函数。

Also applies to: 245-246

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp` around lines 122 -
123, Rename the constructor parameters that still use "climbable_infantry" to
match the class naming: change the parameter name climbable_infantry to
steering_infantry (and similarly climbable_infantry_command to
steering_infantry_command) in the SteeringInfantry constructor and any other
affected constructors (e.g., BottomBoard) so parameter names align with the
class SteeringInfantry; update all references inside the constructor body and
any delegating calls to use the new parameter names to avoid compilation errors.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp`:
- Around line 122-123: Rename the constructor parameters that still use
"climbable_infantry" to match the class naming: change the parameter name
climbable_infantry to steering_infantry (and similarly
climbable_infantry_command to steering_infantry_command) in the SteeringInfantry
constructor and any other affected constructors (e.g., BottomBoard) so parameter
names align with the class SteeringInfantry; update all references inside the
constructor body and any delegating calls to use the new parameter names to
avoid compilation errors.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5c266750-0b91-4337-a932-8248c2f90424

📥 Commits

Reviewing files that changed from the base of the PR and between b5ae6cb and 78d0ed2.

📒 Files selected for processing (3)
  • rmcs_ws/src/rmcs_bringup/config/steering-infantry.yaml
  • rmcs_ws/src/rmcs_core/CMakeLists.txt
  • rmcs_ws/src/rmcs_core/src/hardware/steering-infantry.cpp

@qzhhhi

Copy link
Copy Markdown
MemberAuthor

@coderabbitai review

@coderabbitai

coderabbitaiBot commented Jun 10, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@qzhhhi
qzhhhi merged commit c0ab658 into mainJun 10, 2026
1 check passed
@qzhhhi
qzhhhi deleted the dev/steering-infantry branch June 10, 2026 10:00
@github-project-automationgithub-project-automationBot moved this from Todo to Done in RMCSJun 10, 2026
noskillzheng pushed a commit that referenced this pull request Jun 18, 2026
- Convert the active climbable-infantry line into the maintained steering-infantry variant. Remove the stair-climbing control chain and dedicated climber motors, revert the temporary VT13 / merged-remote stack back to pure DR16, and rename the cleaned result back to steering-infantry because the historical steering-infantry is no longer maintained.
- Update SteeringInfantry to the rmcs-board-lite split top/bottom board path and refresh its bringup config for the current robot. Also restore the original /gimbal/calibrate and /steers/calibrate semantics, remove the temporary yaw watchdog path, make pitch control explicitly use LK velocity commands, and recover accidentally removed mainline content while keeping only the required steering-infantry merge delta.
Update librmcs from v3.2.0b0 to v3.2.0 for the required board-lite SDK.
Co-authored-by: Palejoker <2797572751@qq.com>
Co-authored-by: Fin_Resect <chenchengyue201@126.com>
noskillzheng pushed a commit that referenced this pull request Jul 4, 2026
- Convert the active climbable-infantry line into the maintained steering-infantry variant. Remove the stair-climbing control chain and dedicated climber motors, revert the temporary VT13 / merged-remote stack back to pure DR16, and rename the cleaned result back to steering-infantry because the historical steering-infantry is no longer maintained.
- Update SteeringInfantry to the rmcs-board-lite split top/bottom board path and refresh its bringup config for the current robot. Also restore the original /gimbal/calibrate and /steers/calibrate semantics, remove the temporary yaw watchdog path, make pitch control explicitly use LK velocity commands, and recover accidentally removed mainline content while keeping only the required steering-infantry merge delta.
Update librmcs from v3.2.0b0 to v3.2.0 for the required board-lite SDK.
Co-authored-by: Palejoker <2797572751@qq.com>
Co-authored-by: Fin_Resect <chenchengyue201@126.com>
ZGZ713912 added a commit that referenced this pull request Jul 7, 2026
commit 1e99fd9
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Fri Jun 12 11:48:28 2026 +0800
feat: Add event interfaces and board-clocked IMU pipeline (#83)
This commit lays the groundwork for upcoming IMU-camera hardware synchronization.
- Add event input/output support to rmcs_executor
- Add board clock, IMU snapshot, and raw camera frame message types
- Integrate board-timestamped BMI088 EKF outputs in OmniInfantry
- Add utility primitives used by the sync pipeline
Known limitation:
- OmniInfantry does not preserve the old BMI088 body-to-sensor mapping. This is intentional because that platform is retired and its original mechanical layout no longer exists. It is kept only as the remaining single-board hardware target for sync pipeline testing, so preserving its legacy IMU axis alignment is no longer necessary.
commit c0ab658
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Wed Jun 10 18:00:35 2026 +0800
feat: Fold climbable-infantry into maintained steering-infantry (#82)
- Convert the active climbable-infantry line into the maintained steering-infantry variant. Remove the stair-climbing control chain and dedicated climber motors, revert the temporary VT13 / merged-remote stack back to pure DR16, and rename the cleaned result back to steering-infantry because the historical steering-infantry is no longer maintained.
- Update SteeringInfantry to the rmcs-board-lite split top/bottom board path and refresh its bringup config for the current robot. Also restore the original /gimbal/calibrate and /steers/calibrate semantics, remove the temporary yaw watchdog path, make pitch control explicitly use LK velocity commands, and recover accidentally removed mainline content while keeping only the required steering-infantry merge delta.
Update librmcs from v3.2.0b0 to v3.2.0 for the required board-lite SDK.
Co-authored-by: Palejoker <2797572751@qq.com>
Co-authored-by: Fin_Resect <chenchengyue201@126.com>
commit b5ae6cb
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Tue Jun 9 22:20:27 2026 +0800
feat: Integrate steering-hero support (#80)
Add support for steering-hero and steering-hero-little, including hardware drivers, chassis control, gimbal control, shooting control, Hero UI integration, corresponding bringup configs, and plugin registration.
Also correct LK motor torque constants:
- kMG5010Ei10: 0.90909 -> 0.1
- kMG6012Ei8: 1.09 -> 1.09 / 8.0
To keep mainline vehicle control output unchanged, also retune:
- omni-infantry yaw velocity PID parameters
- sentry bottom yaw velocity PID / viscous FF parameters
Also remove the unmaintained mecanum-hero config.
Known issues (not blocking this merge):
- The Hero UI shooter condition / state_word path is still leftover debug wiring and is not connected to the current active runtime path
- HeroFrictionWheelController still preserves the historical friction-wheel index convention; for now this is only documented with a TODO and should later be replaced by an explicit first-stage mapping
- steering-hero-little still has a mismatch between PlayerViewer limit parameters and control logic, which requires follow-up calibration
- HeroChassisPowerController inherits the existing ChassisPowerController risk of reading uninitialized members / propagating non-finite values; this is a pre-existing shared issue, not newly introduced by this merge
- steering-hero-little uses different vehicle_radius values in steering_wheel_status and steering_wheel_controller
- HeroFrictionWheelController does not clear its jam fault counter after recovery, and Ctrl+F currently triggers a double profile toggle
- PutterController does not reset putter_timeout_count_ during normal stage transitions
- ChassisClimberController repeatedly resets back_climber_recover_count during auto-climb
- The Hero UI Ctrl+E bottom-yaw tracking toggle is currently level-triggered, so holding the keys causes repeated flipping
Co-authored-by: floatpigeon <floatpigeon@proton.me>
Co-authored-by: dwx5 <1591215786@qq.com>
Co-authored-by: zhzy-star <2807406212@qq.com>
commit 8407c1d
Author: qzhhhi <zihanqin2048@gmail.com>
Date: Sat May 30 23:17:41 2026 +0800
style: Apply clang-format across all C++ source files
ZGZ713912 added a commit that referenced this pull request Jul 7, 2026
commit 1e99fd9
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Fri Jun 12 11:48:28 2026 +0800
feat: Add event interfaces and board-clocked IMU pipeline (#83)
This commit lays the groundwork for upcoming IMU-camera hardware synchronization.
- Add event input/output support to rmcs_executor
- Add board clock, IMU snapshot, and raw camera frame message types
- Integrate board-timestamped BMI088 EKF outputs in OmniInfantry
- Add utility primitives used by the sync pipeline
Known limitation:
- OmniInfantry does not preserve the old BMI088 body-to-sensor mapping. This is intentional because that platform is retired and its original mechanical layout no longer exists. It is kept only as the remaining single-board hardware target for sync pipeline testing, so preserving its legacy IMU axis alignment is no longer necessary.
commit c0ab658
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Wed Jun 10 18:00:35 2026 +0800
feat: Fold climbable-infantry into maintained steering-infantry (#82)
- Convert the active climbable-infantry line into the maintained steering-infantry variant. Remove the stair-climbing control chain and dedicated climber motors, revert the temporary VT13 / merged-remote stack back to pure DR16, and rename the cleaned result back to steering-infantry because the historical steering-infantry is no longer maintained.
- Update SteeringInfantry to the rmcs-board-lite split top/bottom board path and refresh its bringup config for the current robot. Also restore the original /gimbal/calibrate and /steers/calibrate semantics, remove the temporary yaw watchdog path, make pitch control explicitly use LK velocity commands, and recover accidentally removed mainline content while keeping only the required steering-infantry merge delta.
Update librmcs from v3.2.0b0 to v3.2.0 for the required board-lite SDK.
Co-authored-by: Palejoker <2797572751@qq.com>
Co-authored-by: Fin_Resect <chenchengyue201@126.com>
commit b5ae6cb
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Tue Jun 9 22:20:27 2026 +0800
feat: Integrate steering-hero support (#80)
Add support for steering-hero and steering-hero-little, including hardware drivers, chassis control, gimbal control, shooting control, Hero UI integration, corresponding bringup configs, and plugin registration.
Also correct LK motor torque constants:
- kMG5010Ei10: 0.90909 -> 0.1
- kMG6012Ei8: 1.09 -> 1.09 / 8.0
To keep mainline vehicle control output unchanged, also retune:
- omni-infantry yaw velocity PID parameters
- sentry bottom yaw velocity PID / viscous FF parameters
Also remove the unmaintained mecanum-hero config.
Known issues (not blocking this merge):
- The Hero UI shooter condition / state_word path is still leftover debug wiring and is not connected to the current active runtime path
- HeroFrictionWheelController still preserves the historical friction-wheel index convention; for now this is only documented with a TODO and should later be replaced by an explicit first-stage mapping
- steering-hero-little still has a mismatch between PlayerViewer limit parameters and control logic, which requires follow-up calibration
- HeroChassisPowerController inherits the existing ChassisPowerController risk of reading uninitialized members / propagating non-finite values; this is a pre-existing shared issue, not newly introduced by this merge
- steering-hero-little uses different vehicle_radius values in steering_wheel_status and steering_wheel_controller
- HeroFrictionWheelController does not clear its jam fault counter after recovery, and Ctrl+F currently triggers a double profile toggle
- PutterController does not reset putter_timeout_count_ during normal stage transitions
- ChassisClimberController repeatedly resets back_climber_recover_count during auto-climb
- The Hero UI Ctrl+E bottom-yaw tracking toggle is currently level-triggered, so holding the keys causes repeated flipping
Co-authored-by: floatpigeon <floatpigeon@proton.me>
Co-authored-by: dwx5 <1591215786@qq.com>
Co-authored-by: zhzy-star <2807406212@qq.com>
commit 8407c1d
Author: qzhhhi <zihanqin2048@gmail.com>
Date: Sat May 30 23:17:41 2026 +0800
style: Apply clang-format across all C++ source files
ZGZ713912 added a commit that referenced this pull request Jul 7, 2026
commit 2c63c7d
Author: creeper5820 <131014151+creeper5820@users.noreply.github.com>
Date: Tue Jul 7 00:03:30 2026 +0800
feat: Integrate flight support (#85)
- Add flight.yaml parameter config for Flight hardware, gimbal, friction wheels, feeder, referee interaction, auto-aim, and odin_ros_driver.
- Add rmcs_core::hardware::Flight hardware plugin supporting flight controller, IMU, remote control, CAN/UART comms, TF, and referee serial.
- Add rmcs_core::referee::app::ui::Flight UI plugin for ammo, friction wheel status, and auto-aim mode display.
- Replace/add Flight-related hardware, controller, and UI components in plugin registry; remove some legacy chassis/controller registrations.
- Add auto-aim toggle, yaw limit support, and direction clamping based on current angle to gimbal control.
- Switch shooting control to /auto_aim/should_shoot input and refine auto/manual shooting logic.
- Add kMHF7015 motor type support.
- Add supercap/battery display toggle to StatusRing.
- Minor CMake, description file, and export formatting/cleanup.
Co-authored-by: heyeuu <2829004293@qq.com>
Co-authored-by: zlq040222 <1542498005@qq.com>
commit 1e99fd9
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Fri Jun 12 11:48:28 2026 +0800
feat: Add event interfaces and board-clocked IMU pipeline (#83)
This commit lays the groundwork for upcoming IMU-camera hardware synchronization.
- Add event input/output support to rmcs_executor
- Add board clock, IMU snapshot, and raw camera frame message types
- Integrate board-timestamped BMI088 EKF outputs in OmniInfantry
- Add utility primitives used by the sync pipeline
Known limitation:
- OmniInfantry does not preserve the old BMI088 body-to-sensor mapping. This is intentional because that platform is retired and its original mechanical layout no longer exists. It is kept only as the remaining single-board hardware target for sync pipeline testing, so preserving its legacy IMU axis alignment is no longer necessary.
commit c0ab658
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Wed Jun 10 18:00:35 2026 +0800
feat: Fold climbable-infantry into maintained steering-infantry (#82)
- Convert the active climbable-infantry line into the maintained steering-infantry variant. Remove the stair-climbing control chain and dedicated climber motors, revert the temporary VT13 / merged-remote stack back to pure DR16, and rename the cleaned result back to steering-infantry because the historical steering-infantry is no longer maintained.
- Update SteeringInfantry to the rmcs-board-lite split top/bottom board path and refresh its bringup config for the current robot. Also restore the original /gimbal/calibrate and /steers/calibrate semantics, remove the temporary yaw watchdog path, make pitch control explicitly use LK velocity commands, and recover accidentally removed mainline content while keeping only the required steering-infantry merge delta.
Update librmcs from v3.2.0b0 to v3.2.0 for the required board-lite SDK.
Co-authored-by: Palejoker <2797572751@qq.com>
Co-authored-by: Fin_Resect <chenchengyue201@126.com>
commit b5ae6cb
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Tue Jun 9 22:20:27 2026 +0800
feat: Integrate steering-hero support (#80)
Add support for steering-hero and steering-hero-little, including hardware drivers, chassis control, gimbal control, shooting control, Hero UI integration, corresponding bringup configs, and plugin registration.
Also correct LK motor torque constants:
- kMG5010Ei10: 0.90909 -> 0.1
- kMG6012Ei8: 1.09 -> 1.09 / 8.0
To keep mainline vehicle control output unchanged, also retune:
- omni-infantry yaw velocity PID parameters
- sentry bottom yaw velocity PID / viscous FF parameters
Also remove the unmaintained mecanum-hero config.
Known issues (not blocking this merge):
- The Hero UI shooter condition / state_word path is still leftover debug wiring and is not connected to the current active runtime path
- HeroFrictionWheelController still preserves the historical friction-wheel index convention; for now this is only documented with a TODO and should later be replaced by an explicit first-stage mapping
- steering-hero-little still has a mismatch between PlayerViewer limit parameters and control logic, which requires follow-up calibration
- HeroChassisPowerController inherits the existing ChassisPowerController risk of reading uninitialized members / propagating non-finite values; this is a pre-existing shared issue, not newly introduced by this merge
- steering-hero-little uses different vehicle_radius values in steering_wheel_status and steering_wheel_controller
- HeroFrictionWheelController does not clear its jam fault counter after recovery, and Ctrl+F currently triggers a double profile toggle
- PutterController does not reset putter_timeout_count_ during normal stage transitions
- ChassisClimberController repeatedly resets back_climber_recover_count during auto-climb
- The Hero UI Ctrl+E bottom-yaw tracking toggle is currently level-triggered, so holding the keys causes repeated flipping
Co-authored-by: floatpigeon <floatpigeon@proton.me>
Co-authored-by: dwx5 <1591215786@qq.com>
Co-authored-by: zhzy-star <2807406212@qq.com>
commit 8407c1d
Author: qzhhhi <zihanqin2048@gmail.com>
Date: Sat May 30 23:17:41 2026 +0800
style: Apply clang-format across all C++ source files
ZGZ713912 added a commit that referenced this pull request Jul 7, 2026
commit 2c63c7d
Author: creeper5820 <131014151+creeper5820@users.noreply.github.com>
Date: Tue Jul 7 00:03:30 2026 +0800
feat: Integrate flight support (#85)
- Add flight.yaml parameter config for Flight hardware, gimbal, friction wheels, feeder, referee interaction, auto-aim, and odin_ros_driver.
- Add rmcs_core::hardware::Flight hardware plugin supporting flight controller, IMU, remote control, CAN/UART comms, TF, and referee serial.
- Add rmcs_core::referee::app::ui::Flight UI plugin for ammo, friction wheel status, and auto-aim mode display.
- Replace/add Flight-related hardware, controller, and UI components in plugin registry; remove some legacy chassis/controller registrations.
- Add auto-aim toggle, yaw limit support, and direction clamping based on current angle to gimbal control.
- Switch shooting control to /auto_aim/should_shoot input and refine auto/manual shooting logic.
- Add kMHF7015 motor type support.
- Add supercap/battery display toggle to StatusRing.
- Minor CMake, description file, and export formatting/cleanup.
Co-authored-by: heyeuu <2829004293@qq.com>
Co-authored-by: zlq040222 <1542498005@qq.com>
commit 1e99fd9
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Fri Jun 12 11:48:28 2026 +0800
feat: Add event interfaces and board-clocked IMU pipeline (#83)
This commit lays the groundwork for upcoming IMU-camera hardware synchronization.
- Add event input/output support to rmcs_executor
- Add board clock, IMU snapshot, and raw camera frame message types
- Integrate board-timestamped BMI088 EKF outputs in OmniInfantry
- Add utility primitives used by the sync pipeline
Known limitation:
- OmniInfantry does not preserve the old BMI088 body-to-sensor mapping. This is intentional because that platform is retired and its original mechanical layout no longer exists. It is kept only as the remaining single-board hardware target for sync pipeline testing, so preserving its legacy IMU axis alignment is no longer necessary.
commit c0ab658
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Wed Jun 10 18:00:35 2026 +0800
feat: Fold climbable-infantry into maintained steering-infantry (#82)
- Convert the active climbable-infantry line into the maintained steering-infantry variant. Remove the stair-climbing control chain and dedicated climber motors, revert the temporary VT13 / merged-remote stack back to pure DR16, and rename the cleaned result back to steering-infantry because the historical steering-infantry is no longer maintained.
- Update SteeringInfantry to the rmcs-board-lite split top/bottom board path and refresh its bringup config for the current robot. Also restore the original /gimbal/calibrate and /steers/calibrate semantics, remove the temporary yaw watchdog path, make pitch control explicitly use LK velocity commands, and recover accidentally removed mainline content while keeping only the required steering-infantry merge delta.
Update librmcs from v3.2.0b0 to v3.2.0 for the required board-lite SDK.
Co-authored-by: Palejoker <2797572751@qq.com>
Co-authored-by: Fin_Resect <chenchengyue201@126.com>
commit b5ae6cb
Author: Zihan Qin <zihanqin2048@gmail.com>
Date: Tue Jun 9 22:20:27 2026 +0800
feat: Integrate steering-hero support (#80)
Add support for steering-hero and steering-hero-little, including hardware drivers, chassis control, gimbal control, shooting control, Hero UI integration, corresponding bringup configs, and plugin registration.
Also correct LK motor torque constants:
- kMG5010Ei10: 0.90909 -> 0.1
- kMG6012Ei8: 1.09 -> 1.09 / 8.0
To keep mainline vehicle control output unchanged, also retune:
- omni-infantry yaw velocity PID parameters
- sentry bottom yaw velocity PID / viscous FF parameters
Also remove the unmaintained mecanum-hero config.
Known issues (not blocking this merge):
- The Hero UI shooter condition / state_word path is still leftover debug wiring and is not connected to the current active runtime path
- HeroFrictionWheelController still preserves the historical friction-wheel index convention; for now this is only documented with a TODO and should later be replaced by an explicit first-stage mapping
- steering-hero-little still has a mismatch between PlayerViewer limit parameters and control logic, which requires follow-up calibration
- HeroChassisPowerController inherits the existing ChassisPowerController risk of reading uninitialized members / propagating non-finite values; this is a pre-existing shared issue, not newly introduced by this merge
- steering-hero-little uses different vehicle_radius values in steering_wheel_status and steering_wheel_controller
- HeroFrictionWheelController does not clear its jam fault counter after recovery, and Ctrl+F currently triggers a double profile toggle
- PutterController does not reset putter_timeout_count_ during normal stage transitions
- ChassisClimberController repeatedly resets back_climber_recover_count during auto-climb
- The Hero UI Ctrl+E bottom-yaw tracking toggle is currently level-triggered, so holding the keys causes repeated flipping
Co-authored-by: floatpigeon <floatpigeon@proton.me>
Co-authored-by: dwx5 <1591215786@qq.com>
Co-authored-by: zhzy-star <2807406212@qq.com>
commit 8407c1d
Author: qzhhhi <zihanqin2048@gmail.com>
Date: Sat May 30 23:17:41 2026 +0800
style: Apply clang-format across all C++ source files
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant

@qzhhhi