From 62b8fa9af0c27a0316bb210d8bf5d2918f4496a6 Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 12 Sep 2026 10:36:23 -0600 Subject: [PATCH 01/21] feature: Arduino hardware bridge and motion control integration This PR adds the first physical hardware integration for the WayBionic arm. - **waybionic_hardware package**: ROS 2 Arduino serial bridge using the confirmed Uno R4 protocol. Accepts RUN/HOME/STOP commands, publishes estimated joint state for RViz, and reports connection/command status on /diagnostics. - **Hardware mode support**: Launch parameter hardware_mode switches between simulation (default) and arduino mode. Prevents simulated publishers from running simultaneously with the physical bridge. - **Dry-run testing**: Arduino bridge supports --dry-run for development without hardware or USB connection. - **Architecture documentation**: Complete hardware path design, protocol details, and phased implementation plan in docs/arm_hardware_motion_architecture.md. ```bash source install/setup.bash ros2 launch waybionic_bringup ground_station.launch.py \ hardware_mode:=arduino \ arduino_dry_run:=true ``` ```bash source install/setup.bash ros2 launch waybionic_bringup ground_station.launch.py \ hardware_mode:=arduino \ arduino_port:=/dev/ttyACM0 ``` ```bash ros2 topic echo /joint_states ros2 topic echo /diagnostics ``` - No physical position feedback; RViz shows estimated commanded pose. - Joint sensors (encoders/potentiometers) not yet integrated. - MotionTestPanel remains on string topic; trajectory action interface planned for phase 2. ```bash colcon build --symlink-install source install/setup.bash ``` --- cpsc. | 0 docs/arm_hardware_motion_architecture.md | 252 +++++++++++++++++ groundstation.zip | Bin 0 -> 243282 bytes waybionic_bringup/launch/display.launch.py | 20 +- waybionic_bringup/package.xml | 2 + waybionic_bringup/rviz/waybionic.rviz | 217 +++++++++++--- waybionic_bringup/rviz/waybionic_unified.rviz | 2 + .../urdf/old_arm_prototype.urdf | 103 +++++++ waybionic_hardware/package.xml | 19 ++ .../resource/waybionic_hardware | 1 + waybionic_hardware/setup.cfg | 5 + waybionic_hardware/setup.py | 23 ++ .../waybionic_hardware/__init__.py | 1 + .../waybionic_hardware/arduino_bridge.py | 264 ++++++++++++++++++ waybionic_motion_test/package.xml | 17 ++ .../resource/waybionic_motion_test | 0 waybionic_motion_test/setup.cfg | 5 + waybionic_motion_test/setup.py | 22 ++ .../waybionic_motion_test/__init__.py | 0 .../waybionic_motion_test/motion_test.py | 126 +++++++++ waybionic_rviz_plugins/CMakeLists.txt | 2 + .../config/engineer_monitoring_view.rviz | 53 +++- .../diagnostics_panel.hpp | 5 + .../motion_test_panel.hpp | 53 ++++ waybionic_rviz_plugins/package.xml | 2 + waybionic_rviz_plugins/plugin_description.xml | 9 + .../src/diagnostics_panel.cpp | 41 ++- .../src/motion_test_panel.cpp | 142 ++++++++++ 28 files changed, 1316 insertions(+), 70 deletions(-) create mode 100644 cpsc. create mode 100644 docs/arm_hardware_motion_architecture.md create mode 100644 groundstation.zip create mode 100644 waybionic_description/urdf/old_arm_prototype.urdf create mode 100644 waybionic_hardware/package.xml create mode 100644 waybionic_hardware/resource/waybionic_hardware create mode 100644 waybionic_hardware/setup.cfg create mode 100644 waybionic_hardware/setup.py create mode 100644 waybionic_hardware/waybionic_hardware/__init__.py create mode 100644 waybionic_hardware/waybionic_hardware/arduino_bridge.py create mode 100644 waybionic_motion_test/package.xml create mode 100644 waybionic_motion_test/resource/waybionic_motion_test create mode 100644 waybionic_motion_test/setup.cfg create mode 100644 waybionic_motion_test/setup.py create mode 100644 waybionic_motion_test/waybionic_motion_test/__init__.py create mode 100644 waybionic_motion_test/waybionic_motion_test/motion_test.py create mode 100644 waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp create mode 100644 waybionic_rviz_plugins/src/motion_test_panel.cpp diff --git a/cpsc. b/cpsc. new file mode 100644 index 0000000..e69de29 diff --git a/docs/arm_hardware_motion_architecture.md b/docs/arm_hardware_motion_architecture.md new file mode 100644 index 0000000..9f864ca --- /dev/null +++ b/docs/arm_hardware_motion_architecture.md @@ -0,0 +1,252 @@ +# Arm Hardware and Motion Architecture + +## Goal + +Use the same four-joint arm model in RViz for both simulation and a connected +Arduino, while allowing the motion test to command the physical arm and report +failures instead of only animating a simulated pose. + +The current model is `old_arm_prototype.urdf` with these joints: + +- `base_yaw` +- `shoulder` +- `elbow` +- `wrist_roll` + +## Current State + +```text +MotionTestNode -- /joint_states --> robot_state_publisher --> RViz RobotModel + ^ + | +RViz MotionTestPanel -- String RUN/HOME/STOP +``` + +The motion test currently publishes generated positions directly to +`/joint_states`. That is suitable for visualization, but it is not a hardware +control path: it represents commanded positions as if they were measured +positions. + +There is currently no Arduino transport, encoder feedback path, +`ros2_control` hardware plugin, trajectory controller, or motion action in the +workspace. + +The archived handoff provides a usable first transport contract: + +- Arduino Uno R4 WiFi at 115200 baud over USB serial. +- Servo signals: D3 `base_yaw`, D4 `shoulder`, D5 `elbow`, D6 `wrist_roll`. +- Hold switch: D7 to ground using `INPUT_PULLUP`. +- Commands: `ID`, `MOVE,s1,s2,s3,s4,durationMs`, `JOG,servo,delta,durationMs`, + and `HOLD`. +- Responses: `READY,IK4,1`, `OK,MOVE`, `OK,JOG`, `OK,ARRIVED`, `OK,HOLD`, + `OK,SWITCH HOLD`, and `ERROR,...`. + +The firmware interpolates commands internally every 20 ms and has software +limits, but it does not stream measured servo angles. Its `OK,ARRIVED` response +means the command timeline completed, not that the mechanism was measured at +the target. + +## Target Runtime Architecture + +```text + command path +RViz MotionTestPanel or motion_test + | + | FollowJointTrajectory action + v +joint_trajectory_controller + | + v +waybionic_hardware (ros2_control SystemInterface) + | + | serial/USB protocol + v +Arduino + servo hardware + | + | command status, health, errors + v +waybionic_hardware + | + +--> /joint_states --> robot_state_publisher --> RViz + | + +--> /diagnostics --> DiagnosticsPanel +``` + +The current Arduino firmware has no encoder or potentiometer feedback. It +reports command acceptance and arrival, but not measured servo positions. In +the first physical integration, the host bridge can publish an estimated +`/joint_states` pose from the accepted command timeline. RViz will then show +the commanded pose, not verified mechanical position. When real feedback is +added, measured state should replace that estimate. + +## Runtime Modes + +### Simulation + +```text +motion_test simulation publisher --> /joint_states --> robot_state_publisher +``` + +This preserves the existing visual motion test. It must not run at the same +time as the physical hardware state publisher. + +### Physical Hardware + +```text +motion_test/action client --> trajectory controller --> Arduino +Arduino command status --> estimated /joint_states --> robot_state_publisher --> RViz +``` + +The launch file should select exactly one mode, for example with a +`hardware_mode` argument whose values are `simulation` and `arduino`. + +## ROS Interfaces + +These are the proposed stable interfaces between packages: + +| Purpose | Interface | +| --- | --- | +| Joint position estimate or measurement | `/joint_states`, `sensor_msgs/msg/JointState` | +| Motion command | `/joint_trajectory_controller/follow_joint_trajectory`, `control_msgs/action/FollowJointTrajectory` | +| Optional lower-level command stream | `/joint_trajectory_controller/joint_trajectory`, `trajectory_msgs/msg/JointTrajectory` | +| Hardware and safety state | `/diagnostics`, `diagnostic_msgs/msg/DiagnosticArray` | + +The motion test should become an action client. Actions provide acceptance, +feedback, completion, cancellation, and failure results, which the current +`RUN`/`HOME`/`STOP` string topic cannot provide. + +The existing string topic can remain temporarily as a simulation-only adapter +while the action path is introduced. + +The first bridge implementation is available as `waybionic_hardware` and +accepts the existing `/old_arm_motion_test/command` topic. It translates +`RUN`, `HOME`, and `STOP` into the firmware protocol, publishes the estimated +pose, and publishes connection/command status on `/diagnostics`. + +## Package Responsibilities + +### `waybionic_description` + +- Own the production URDF and joint limits. +- Add a `ros2_control` block for the four actuated joints. +- Keep the physical-to-model calibration in one documented place. + +### New `waybionic_hardware` + +- Own the Arduino transport and packet protocol. +- Convert model radians to calibrated servo commands. +- Convert accepted command state to model radians until real sensors exist. +- Replace estimated state with measured state when encoders or potentiometers + are added. +- Publish hardware diagnostics and connection/watchdog faults. +- Refuse motion when disconnected, stale, out of range, or stopped. + +The first implementation can use a small serial bridge if a full +`ros2_control` plugin is not yet ready. The public ROS interfaces should still +match the target design so the bridge can later be replaced without changing +RViz or the motion test. + +### `waybionic_motion_test` + +- Generate safe, bounded test trajectories. +- Send trajectories through the controller/action interface. +- Verify Arduino acknowledgment and arrival reports for each target. +- Verify measured feedback against each target once sensors are available. +- Abort on action failure, stale feedback, limit violation, or timeout. +- Keep a simulation implementation for development without hardware. + +It must not publish synthetic `/joint_states` in physical mode. + +### `waybionic_rviz_plugins` + +- Keep the existing `RobotModel` visualization. +- Update `MotionTestPanel` to use the action interface. +- Show connection, current joint values, target, progress, and failure reason. +- Keep emergency stop separate from normal test completion. + +### `waybionic_bringup` + +- Select simulation or Arduino mode. +- Start `robot_state_publisher` in both modes. +- Start the simulation publisher only in simulation mode. +- Start hardware and controllers only in Arduino mode. +- Prevent both state publishers from running together. + +## Safety Rules + +1. Start in a verified HOME pose before running a sequence. +2. Enforce URDF position and velocity limits before sending commands. +3. Require a hardware heartbeat and stop on a stale heartbeat. +4. Stop on serial disconnect, malformed feedback, over-current, or an + Arduino-reported fault. +5. Treat the stop command as cancellation plus a hardware stop request; do not + merely stop publishing messages. +6. Require an explicit physical-mode launch argument so a development launch + cannot move the arm accidentally. +7. Keep the first physical test at low speed with one joint at a time before + running synchronized trajectories. + +## Incremental Implementation Plan + +1. **Define the contract:** confirm Arduino transport, feedback availability, + servo calibration, joint limits, and the Arduino packet format. +2. **Separate modes:** add launch arguments and prevent the current simulated + `/joint_states` publisher from starting in physical mode. +3. **Build the transport:** add `waybionic_hardware` with connection state, + heartbeat, command conversion, command-state estimation, and diagnostics. +4. **Add standard control:** connect the transport to `ros2_control` and load a + joint state broadcaster plus trajectory controller. +5. **Convert the test:** send bounded trajectories through the action and + verify Arduino arrival status against each target. Add measured-feedback + verification when sensors become available. +6. **Upgrade the panel:** display action and hardware state, and expose stop + only when the controller reports the arm is connected. +7. **Validate progressively:** test conversion math, then a fake serial device, + then RViz with recorded feedback, and only then the physical arm. + +## Current Bringup Commands + +Simulation remains the default: + +```text +ros2 launch waybionic_bringup ground_station.launch.py +``` + +Arduino mode requires an explicit serial port: + +```text +ros2 launch waybionic_bringup ground_station.launch.py \ + hardware_mode:=arduino arduino_port:=/dev/ttyACM0 +``` + +The bridge can be exercised without an Arduino: + +```text +ros2 launch waybionic_bringup ground_station.launch.py \ + hardware_mode:=arduino arduino_dry_run:=true launch_rviz:=false +``` + +The first physical test should use the external servo-power switch, confirm +the arm is supported and clear, then use `HOME` before `RUN`. The current +bridge intentionally does not claim measured position feedback. + +## Definition of Done + +- RViz follows the Arduino command estimate in the first physical version and + measured feedback once sensors are added. +- The motion test moves the physical arm through a bounded sequence. +- A disconnected or faulted Arduino prevents motion and is visible in the + panel and `/diagnostics`. +- A stop request cancels the active command and leaves the arm in a known + state. +- Simulation still works without an Arduino. +- No node other than the selected state source publishes `/joint_states`. + +## Decisions Still Needed + +- Whether future feedback will be servo command echo, potentiometer/encoder + measurement, or both. The current firmware provides command status only. +- Whether the external servo-power switch is the formal emergency stop. +- Physical emergency-stop wiring and how its state reaches ROS. +- Whether the arm is controlled by hobby servos or motor drivers with a + lower-level controller. \ No newline at end of file diff --git a/groundstation.zip b/groundstation.zip new file mode 100644 index 0000000000000000000000000000000000000000..641ff9c4ae14e6fd3fc70e006a0c05caf5ef0252 GIT binary patch literal 243282 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�pUYE?hi2420gf9Z;9<4@5 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
n=y&bCrZ;FcYNWh zN%y0$2A)(f!i4m62bj~SU)&ZJ`5_>df)Ikj6H1JfP~z|&P(I`*?^Pxl&9jc8;6a*3 zE4A`M9Va<|V}*%KCC*nWIJ?)P^OVFD^D<3eHE7c$Rq&lnb2CBW46X~h3br6KybPCi zBJbl8X7E{kgIbpbI;a%|o82HIvZbSiF#mm1%>mV4$BJVaGi5LdoL->z@=1Adj5kqG zhWvtL9pq>?xL+({OUA>Li__wx)6e0AX0d`oDz# zz$97SF;H&xQQk?nNQ8DGLB6hlB)5E`vOBa*IPdUR>{lesk@OMl8ks75>NWxaE=D>P zfy>bOGU~JmPo%w%FQs2LZst%}`H(k_ST>GngO~xzBu~ui5S^jdQ_O#N&M9LISxY*O z-aqZePck`%WTLyNUIHYc_ozuE-7^ei_DZK#QVPAvOHVunUr>;SBtA1vb{V+X5ID*d z7pqpqI@e}2RR&k=*)WSlO#roe6NrDR1ukIb8-2kCEJyy03u#hiI%kQ*Nt3@mW)(xu zm?zY(hRH9b-mEN?wPX~sU_=qFR;5;=U=n|Pq{d8t$7@3!KP!!(BeVd^tt&ERW*7+c zL(#uZl*PhLe-pc1-_cb!jU-QTbS|dka$f30>pn}4p}lDAtDv`f1?9HOO0XxXO-e{E zyzVcaBEp(fEU)`bx7Yo-`+haIU0X*^Pt%hL?SXrFTOCP^=iT)nmJU{yCbTiDA{b6L zOMJ&4l7<`eJxRk4L`?uF(w71~zW(gCwj^~#4_5{}cy}wy`L9Ah=aF@O>_tztztmdC zYZEWs6|2|gCR6lYfNu}mGBfTP4Xtm^EG`EsO&O58+Y0YTfm2>iD?#-OtIfnBGvCsQ zFLScCGkM-c2hS-ZoW}!u7fM$+2oo`~LN{K_dJ}EyF*n64g+oD-VWsRn2LH@x!CoR5 zDYD6&hIxmDi1$A|#ZG+_rjNBcA`0enhyJ@WV(_(|4r;zV5O zZ$&+PWl&M%rxEAJCFe-s7#Ciu0gzQLik-GD+52nGjY6BnZV0r}D?_zBz$IlX;F$`a zgT)DxdoVIP&Va{w8NqgH)-UOqD*5So<3o8)aWU#F#%J7Vn2k+|3Sh3o{FPO4B9Ta@ zLyHJVQB%9slO8*)%$p}pbLoA%+y{WM!EF?L>#F0VA>K6hYgKMT5Fy>CxyiqBh-piG zuPNnI^It8@AIq|dv%$dUek0ySius_g3{5|KZ&uT=vcI-CTUS5xXI9tvb@dL0{Yd%5 ziJ^hzPzazb)*|Pnz7HxAcI2do?*~VEN zQx}7rw23o3Ps_Y{br@zfrRpaEAzm#%sl~i-WCTXy9rwi({hhe$O{eph2f4j2F`0|7 zJdRM6NV}Yw{HW)*t(Y)_W~4({h&7++P<5Z90n6_@flwGv_sOO5WBb2+*|e)Db5zGD zn%)90-juGP_gLYHR|k|H*R9{8in0bcEyFG()aAq7IYVQ4g_8In-A|dhxB^ZNk&Gwb}u5qs!tgGN64vV1;`_KZNJM zw$1%!afbgLl8980jGp_14xf}&TCLYDt%oN7i3yUviu6p_U6|^fMh|1B8+dazt<_la z=7!k~kGorQ+zsMN=PMn9WF#-1mkqgTax#*~<-@K*%9PmKEGue)zq3aKVn)= zJ)q}1l{S3yAW8{6quGFaKmO9MrEk#<|$J|^+4k^GV;jWnnK z6FxKjmmWZn&-Gzot#AJad8qXNYWw^B?`V{4ZcU#sHR)$zgYiHAZu#lCYoTpwX=82Y zpl#=9rDttz{y&onenxo_klPCaQjwl$B)6+l6aAb<^LF->DmVTR$M zfx~gQVj>-VU7iUU6{JcI%<6d9*jxCHkY8sKN53ofW+s;CE;cN>rhv(-wU5*dsliwH z$ASN>t%FerlQDw+A#yEpvX(o2&CuN@S`4k!s3XH=9%I&{IgZQX?$S{RV3AmDc`akN zNM!W(J$IG_YWxa&JL3!(KhRjO2T8U}VNZR?6tn@ns7$wzK`zU%xcC}3STGW%SKS1S z`A6ZI1ytV-COuD8X8aQVaA8lc151FlngTeVc}vTwY7wGLkZjlmZ*rkPS%w*Ys%U%; zkzkgOetSH2o?TL}e>}O+*1#72&q>f`YivRmbv0PwkkZ3+LVPQV6lizzfE)P~w6Lgt zF8omVoZRhK|9LTT4@tNZZoJ93A0q`;jZzMe7l`=od>VY)2fpsrssqKs>bgxdA{ z-)Gn}fEw(KWiDT*T*r{~Vb1?sXzE5Y0zGS3}0Z>npo#GvnUpPN-(F@d_zY*}3c| zo@9ohCu^$SZ5E>i^O2b~9^ZQP-!+lTxl<$D9(M`%sx|tNXbQB$@(C!;;eoPMD8(Wa zCxd+Lgn|B^{Yx5!2`@zp!uaH8jl+~>a?}j}*IzP0p0&=#q_rCrxsEMz?MsaMmhqp!SQG^2SD{As`ipI8N{VkDg%-I8I16c_-A`;|C7 zS>H)TYoTg0J2zXqfY`= zPvKY6|DF+pZXoSqC6X7s^j`iQ@#>j>ZEq0yTGYw{ZufljCc-N1jAvEfZbQO&TBeST znl=e6Iiljg+Kp*X0AQ{ZFG4uP^n4V!dH&*dSAwHwM}^+3sru+&~ZD;tu{k?zDIczDvX7%k;B=ea{MuFgFG)r=JTM-2a-DKzR3e1pP zFGP2DA5gVd&$sCJB+F!6mTw|1SZ`SE>EfA{zqaxj;}FfDoJo*ZNUO3gK?a{Gg`{?1 z-GO$_i&^7@9?(TFYEr4wTK{mVo^kM)f&tJ6mFMN}2b*SvkTKP;N?@k>VM~rzv{x7= zxEFwl`{PP4ejRC)6@79h-9)pA1N6c#b0M0R1(F@=-p)wZG8%hdO zyD3Lp={*2cT?d))t`P3{heTF2r%(*H1=%RP4K1=EsFKovt=q7=Dls8`!7g1Q0oBtY ze=8`g><#LxEGX1K=`)}-ntcElcB;<$wA1uuUwrOf z-7K|Q&KI7YIZ<*qrt5dpEmi3=B&T45|P;lAH*IDeUsGc#RUh2veEK#4&vXaxfmVyb}%5FlbGA$FsAt@br-DHRZ7F zYg+;nOxqBx9?z}qg&hlr*zZDN$Qfo#4%gjWon5`e*`z#{y{9d}h*53)$_}`HDN=s? zLuav>3HCn;U;fzw*}zoybH&*^nEp@VdYVc!1CjYRDaxOD5A0vYvY~&j+&}B0e~kAx zG1%XhGUlhd#qZ-^^eulDTfc*{PY7eed=^>`pN_{w|2^p66lVGsrvGER`5)ppDu3F^ zv%qzpDIXI-)F?X70ICD2^@zyp#P$Hl6}!_w`6ZbIhX_CtWX_X3c3;KJgAs~X!Kh+e z1ZFVPd(hvNOy}+My@Vn6-@*8ycnRIa+LoGxLAoZ;dc4f5d0IAgkyl9B9d5>Os9FulON_jqpb+Lx4C;=re`m+~U>l@HWv6c11hl8PW}AJPu(ag8d7 zv{*c+*K7F#7JKB1#`+v45}1Lhuw7Shjw&P$^g|9|xW5+s?I`TC#N`(KxxGV`67gdE z(9%Tm&VcFs_WXQp;=83J{gi$(e3icNUMZM1B)gwXZKVez*%z=Rp^D;VC;LQW_oxrF zXrx|W#_gycK)s&a>xw9^$zb1leZF5E0xpOSqkl(^+G#FuZ_;z6MJu|6?-(R zD***T)X{F3**iG_Y$X#$$eSSggFx{@LMbM|#a^=c;0`ep6_3=oVhUi+iI zeWmtqzBh3_%r88FTKepvA8k9Zff_j6! z!gvE^cRMUVt8nCY^_PM}RU%IlY@LMEw)k~W&smXG*U>Vw45hS0xwgMi9dwzd>(?CS z^|W@k?z-?OQY9YTR;jhzx&qp(x ztWbo+QU^&7dm}G3!4T-Z*9B$>oUsOCDcZJ&r#?541C3y(*R$NY_sfp`=qpXa6n*iK zL-W?xJ-TSz4u-rWbc)oy+=lpl^LN#5=GgY zkd-}>Jrc5KgosFG)c^Zeuc-JoR!6=Tm z&yWwh=|w>#T#6sv*=csAP+H8Wj^#`zXLo*~kJG8;H(s%+X?kErx-T~d3p^WTgUh54 zigt^>OK{8c(w*8Q9V^uN%YM}T_#IN1tX!(!S93eW!)cp--ce(Ha<($@QQ&ee>nj!A zSxi=?Gk} zOIyw3#nH^qHM>XnLF8q;Dna{5NsEwujAscI)0wU&C0xu9$OjOcb?URl#Z>cCAB|42%fRG!q}j21&6Bu z-+jHt+VJV)@87l(6a^K!pTCc|@(JycUvMHuo5^P<9j4Ttx14k%^JQWiGta*x9VTT< zzq^&$Z4K@SgtwBFG!$lCD+j8s=rX}U;Q`%NcmLT4U76}jC&gh)wobE?Q> z)3BpO2hM%(+vTbZErMBKDDB32?FD~(W%-l~&PIfW^E$7&CVL~Uw%pHyf61?0q&mO+ z)Di`&3m6hMxI(47mV=+y*Mi(2+93K!){6TTOA1NDEUyIb&D9|EMc-eWw=K^y5K?Q1 zZSrlW#x3Z)yj;5h|BxLesiR~r^KmaFn={Ic?xP^Y%aOFG>LpfMV;3Na-m-d=zVdbo zfeT*ai~Nrkm50serkcK4j=k>=%Roo$Y3P`%F_)>>yU-tCXgImsMe0&OaQ*%O#h6q` z3@;na`1h+?A6X1;Wx&f)iR7SM`o){zv%gCM-(WskctO8C0cnn7V+y!00i#la9m1d| zqMwfPXJXv%wG4`4$FwXC0V|Hwlh6~<{{`^Kr*ih!fw!Pf8jYiBLt*&Kndb8yAa4FW zAn(5+{t@@M!==o=SX++21MTktd0yQrU1$346TP_I!y;}fBuN`cmpUmQLPZyaDZ8sv z?0d!6F~|4D6-#-w3|~)E3w29hBTEGM)Ka*6QaML5n3DI(Min7;L z&~R50-m&)fwluPo^R70M_`r_wWNi20+ozgURNBuIBg75ROufx5&COX%&lW?3X^;sp zgL3?;foob6v~X|=Fstw5Jqz;o7N{yeP8Tq&vLdJt+|{~KGG^!^$3}6hj=>JE?UAR0 zT3I^Hy~(?C6#eP7}(eI@KQPKUcVD z9JrOqsv7kOk&^^Zr+i5K!5O5-veF2CUprak@~O7h2MV#@c7KZJ=CYSV=Vk99e@8t)BT&Dhm*vYA#C^!}}@3Y*S<%tB! zut;9I1%;2ud{TQ88dx76%H4i{t=CG%AX@8&0^cxqyX+XNWi#`z#hWZ?7xB8rfNrWb zPgJ?;PCp5fvfh z?@dQ#a3h##^;agJV=coedH<*m-nM(eeswsp4)7<5e<&6)QXv`;>~cCiDx5qCSgndud;z`iP}pL)YdU z3VP!=$V+~|-EgR-DH?nA71q=0GXdxBG;`7>h00M)pu-vJU{8md6Hlb5`JCawJ%>z3 z=bkB17`mvHb4@|<-Zrs_W$&v<ejE6Mq+3)$^>7pqDp#xFQjxh5r0nX3#| zEhIarbZh9JoymJ&uQ-t3VmXQ%z{Z5gwMxUQ)F6iPWl1^vx$owxz~%l;Ttj8uf?{D4 zX`g478H8<@o0kHHEi}y%5|+=9Zf6TTs+?e4La;5U+pUoAs##AP=;%jd4!ESErtwIv zgX0T#TS=yqtvpBCxuL)ZL1VF@!Mv2oA!cS$O`4c7&uOTNnGm(kRBl=d*r>~Csm`9G zr9l?|(0X1dFm8?eRcv*RkdIPQ5D9S|C9^!4DqQRx<=!^_C}k*d^~b&Y%5ynSK4Xj%$tQNN4-mdwNS&=@njDYuP|nys*DCBK zvbVJ`LqCI07eP_y>Rl!_iD_{ zTW)Z8BI<`p1|(FZggjis)5W?i)6CJ@cvFN5{u)mK=3+b&@*wr|5)ZRBA1gw+badv@3sRhDdenFC-Uiy_@T<3% zv%?X!lr-m}NNd>?OnJz|?QZhcFr~HLroyj~Cw&;8o2uh9%0L)qa4w`^v6={LhhOVn z1hLn!^mF>GoRqA$Ql(a*rp#5-59~)6d&M8TBPhCYp?)@#=w(Z#rGsw4rT*TM&YB9N z{>P^Cq?PsX)=w*&-l%tS4b`sVX#0rj8ut)SKAdHCsrHDSO#I-naPwP8qQi}}$9M() z);W&h?K#AxG39c#<|IX|h?Q}l=5e*UAK|*!v-ovse~NW=m0m{SmM_CeIipZ)b~T)t zORbM#?Q;E@FdNGug60PCYrReb@hHt`A?U+__ZzLJv+_n2QZ$5s$=>akBKpE~ttk!o zAFsYq{LIj_>7u^URHBc?$9~_Iq@Uf-cV;3ieZ=@$Qla~&o$;MIAHVEbi_U=?jao># z-}s!G@C9=&QtvV>SXf@1>MdK1kY--bcxo{@V^Ucf{rsyjZW{dAKxOh;sQ@a8SjqLr zi1R|EsG_lbNUu@Q?%@q>atEagk)cm$VobS`OVK#ilk&}+ZBlntS4F+cQJJSrfZQ{! zi;SW%l$fMtB{Mku;QEaZIZNc8ObbCtfMpV8?8#-1p)a%bPHm7QH zoh2n*XsGTw7w^4}N#uH&k^Wskljdip{zv@`v7WU&YO-x7M5PItk~;)<_%L}qkvozy z-+B=kRS$g?L-~e|WJ77s)rhUjTF7)~dYv*@5~q!-51YE^85f1Wjb^r7?xK7OF49EP zjc~8}ctl5)txY8AWJEqEsdoOE^P!cPv>|4g8VTn4Ede-7Hw{o3ZU%o|pP7sycL=S) z<%pJ5TgUYpMR`+3B;!JY*^24MsbI)^KMv(=VUcu}g{q*$OWDjf=I8}>=q6o3*!P%C z9Nt!xgd}@+l7%Ct>ZDDDrD5KwCuGaCCS`DD!M;Sz5> zsh@Gt%Q~mCL`#wn2oVw-rSh6Nz3E(f+U|u^yMNpAdDsu)$g=RFiQ*&|BTZ*)kXLrn@3_rU-jv=OX2ci%BuW~uQBLL zt?yB_l=?oMe5~y*tNc7D&LH~9OY$~_k@MNuBRM@4R%!wvuFs0AgY1`#P58B4@hCOy zD{mH748C-~tDUEzoxLrj&Z6G+QY-g;f^PFI8qJOI677Ck2IU z{kc8Uw&`t9Rp-ZM*gs8H;3(MEN5lWblv5f`zw%ZnH0?VheV*yt2aNN!8{NDadHRH| zMDxRXLusWC=eeZO6bo(WJCN}*h-$IRZAw~{-~OC8AEgxx*}$>)i3s(6;?>Bgcu{vl z`}1gF5(TlyB>m>I&!WNtJl;RNC!I~jShhab#sBzKx3Ej1I9P{=W+zbkW~&BsA^Wlj z9nGTn#V8R0LVj0@nai|jv#;kEE~1GSXg)>$De-y(;~rgp4kl?ha`Y-?lMOkR?0{T3 z#+^6yPiPj+#_y18oTol}0&TE<6PT^{a`Y zh^R<7ora&9}K-e~oEv2JJZ_2~|lS&x8TTs*-b zp_lC>mj)`<_DU)RSyv_Vb*vAw0@+Dv_X^hW;+OWqdZ^4_jq|j$Mr?vED<{SKptG)PFxNEzI zhX#G}vxiXVT_U?m2!@^n2j^`52s?x`_%)%(m`0OUv2ezP;)&Nr}*iM z-ipSRo@bd;n@rQ81Xac^D^AJz!c_e{>6K^;ES@Sir~h! z>#Akt);+ai{*{IIVHb4I@7-pcXPo+xbYEx)Co6T{h+T|I?cDj|i+sbu4#mz$EGyRL z#hRHU=**)A$**D`JtNv#_WJ(KgZ{I|tCEWtSZ}@R+?fT3bZK$pAHQQ=x4W|Hs6*e# z$%#=}_l&Qz4^N8gh9HADTs6;qf7}cGo17JCm-u@TEIla=S5?vm{aO z4?%O|~1Hl5zuW z9*kHB-{|9%!jKz~r#G-QJfBf1auW#Oq{SL7&Qycjqh^{*5@@hd{KmrFNUR|^S$FC_S}oH6yLj6t$`i<-n0sU3Ii$ks1GM%UGnsTS%b>D3U1}< zZJG|PiNJ4uElqKlkBpLviVJu>23FRG*DG_UmK`s2VWjU6NHXsx^ODn4J*{4w*zmYl2$zAG{t3&0a7cipSMd{?%32O3dyn6Y)KGod$=!BuZ z#$x<)u}EYz1e=JUgvRzRlRnMG^i<@*nK)yEZ1!-g7=gB*^+o7~ifoncUa~C~{(0-! z#5~es&IxYT%nKzVybETZ2%D;KB&SPr-V#SJ#@w*w{V)~v`CaTVaxBA0O0A-=_S+?5 z9HV&BPEEyW`X6P#HVmDfzwL6NHLl-6tGZu)mqPl6_nKUpLnP6&$WFqcrZ4Ea=e{=- z$+|4sU3oh=EO!Zq_6HlzjpEU(Q&tq8kOG)K#m@Czqe>ye>U7=p4R>UY_}E!N8ebnC zqmU)6xr;9T4!0GxY&4W13e{}X9+AZyJ)~799+ApjiY_Z6JJ7ehTf&MeE30^QRjUPC ztrg$sP2t^cWLh~i{A;h`E`|-6u9I-0X@zO^5$&$O&ia1-d*XO8R&(dF$l4W+nHZ`9 zWi0A6*QJ}6W3G{j<&HJOEe92)#=JDw&{}v{VQVk-w5_Msm8Ur`#b}7=Z zT+4xhB=^#V9OL0MR>$Q|A{2bx1tyI+izOEW>Fz4#gh3pCH|Is$!P9B*wD68NiO%GFPd-PNUHANE>42f(u%V$sHv;#bXNcJo z*X|Lm%+JaFC!-VA=;$ z;7h4kL;vb6x)HPJN^jTV{GK~M8$4dt-D?Ttm#;(OOJ_f-&tpb8xe z1M~X~h}{bjc@HYF@5`Xoxgv@c;14vZ;<8*p@~hKen~}+8+kPx;>0Km{?5)VgA-hc} zQm>}^&ZBjM%*Ff8(>fV4-FNFU&A-UM{v@$&*H<$%JFE2}A0x-bsEgYA?b2DtFOdV9 zh8g)@2ohC9)+yZ@i%UvDqr03*LQ3iE>@UZ?gzr21Vf8xi%(5lq?D$ipFrf5a^lwZo z+~$|v2{ga1DjGlNSgp`A#5IvlKPjt$9xwFkYye-6>qBOZ8Y_UP+URB8g&oG`wd^^` zSJV0-I|{NpnEkTdyLE@1a!_kl`vtR8KQN%vhY+~L@*f*$rype}UUhJqt-$)ZYAi7q zo;KL`0f`l((bJ#jiG%Bt7U`!|(nX>u5mLg)Qcv->6p!w&KP*qoQSp*E711 z-_TiwY<%fNWgK!(CvF+YnU@a_*2U8`m>E! z5476C<=&(fr%VtR7<|#vUA$tss8{HQMiCh5xO|zhHc<#QJcK`=4_o%Cfp+CbLZ|5+ zb1vO6<1vGD0*ckb)wiz)KJ0Go1$4bPp22zF@jBWDJNl6~YvW~+Fe;N`d#W3|7-gDV zCTkvUZf?4jIW5asu#_xz36yi#~hv9N_bT+$Uv`s*#1qx&7XZw1O4QA z@|kowei3>_Q0xC=Y1PrUykl>ACiBS-|BDzik71kP7dzX89^r+NGrBRC z)>H5p**9LYTHp}J(F$iu`M?#RQB${kjtVO!P7W~|nzGFpxoq9Sn?JV4;^*F&7GIzj zi@tu5Q|>~059YEl96`Ajqcz2an-)*D;$lsWn+M;+PnS#FUo0mdJHt~yq|vg*%9azU zYQnP^R^KDVZw9Z1gy2`0OCNkmG$D_PM7PYeP?g7$CWiF8U+Bv%TNk9j?~&5GpL0HE zotdO#yKU_*?{+&SZ%R*Cye}@e+2F#uSv_jTB2oWJVE03B%)4%{FP_`FiYLf&4F!vd zP5z?KIVu{Y^@I%UdrJMP;iiHXN?IK(4egldAxmW~H(Nva-`_yVp{v%wY1Tfrs{9%YF4lNkGbmW zU@@xp>SZ7@Jb0y_Oi*>*eT%P+&Mz$O)}?9b_4*R_OT&w8Yr@0JXMPaD z>(U4eC*g_3#@*zN;@H$0t{8Yqtzt}bB^j;|7c;y!3Gd0n`xCf`Xq-H46~-urRX3Y7 zqGZcdmx-i1xo5h~gYl!D3*z$WS|U3vy>rhGP`s3tujDKi?;y1Oz9`)8C$C7DN`|m@ z@oXTybQ!y5uOVeh_ImaTvZ^flcG2!?nYocU>y?m*NzLu0;MOxB*oY;5#ciM_4!L+pEOtNU`B^HVqS*LJ# zG*Yb_$#c$Upl^Q;i;NU)wX$_~+d#g3~lcAMKHK}YHcWYEg{ZkjM>loMf zW{W@#w2&sc981;P&*Yf2dgBD{1tzznI1gOXoxuLd8aUeSPWljuR^nD%5GU%^+L(CK zjRZJx9

S;%98e*UI#?ih5?RR=x30&97`*4g7`+RpZV+qZgy8-wP>_3fec?$>t* zRd&Dn5ql)0H#ut{`ea2J;&J%YJ`=oirkvn`MfzZMRNY-t{R-F8qFKhsjZ0FZLyzp^eyKnT2a}UQgdpW?vjGy!tsX!QfHBUK(xj#qW z5W!YNGkb%7C-FwY^jD>G6Gg-#JGW|YL?k02?L2fH8~$KUFjS!rr}_MQAg6niikgqb z-DUQ){wBoGvsO|YT|_+T*yi-nW!*(O{SM>#jtvz-H;e0uv^|12Gi*Lt<ht{!Pcej5z%EAy0D+h=w%9;?NA&pt$D z8x#C6o~L8_SwOKQ906X)c&J#BnXt3XxW-AHaKws!-DVEmXYy?kY9@MwZHJS})ozY~ zM`$~<$=AP&=aCs~XI{A{#3NfP5vQ<`rdmoYe$BND-LFtJwJfmYjXzoNG&+V@xX2^X z!S`WqHwyKpad0lWQA(i`JasLhueD5Zd@obvlU31Ps6d#jr7xVAIj^UWoL|WzS)hF@ zL}C*mP;M>Ti{zGUqB@LyBtGFtv!MjG+J(gJ!v0&w16(NQ0AXWeB|dbgRXD1Y%c4$e}a2TFYI>vliLP|@==G8M0MS!~5hom-3E=%qEy%pshiHNp?i z7dDwO$B@j-DP#PJLap=6$$ZfawY&v=yn_zgc<4oLCS#3y2BW2X!bqIF{1fXh$f^qP zXUGx2XS+uqltF<5s)+p`Ot=*Z(0{m^x!5?nfo_*0!6ATd!v1xa4nz$+3lv1{$H+UA z3&5fMJ>YUF*>7sVIX>Kq|78ejz(dkzcE*RNdLFK9uGaqw5jN)8EDT&-9|B&M#)N{% z0)P(~b}%t>`d6xwX7Gl+;uiM6jB{Xa3mhCe1l2TuR$!V78*s(m&cfy3nk=9TQ6b0E zba6jBi5UyHS@;DYfD1+P3GkcC?l$)3a*nQUF79Ta`KPY?x9v~YGKg8c#@xy=K&?1{ zmWiP#Z==D%SpwIGtXa+Mog6KUO+hHepo@#(2YgQF97Lbtf@Pc=piE|fdt@m3Ou#Kk zML9`nWew?ld%;u#*ug-=0EPbffp)M-EI_ls?PF_qQ?P^mM{3x=Sp)gOiUcKajC?@N z!^y?Y(%#AAx8uU33wB%(mt7%`d2IldvH&Wjg%a7}Sh_Awu3V7X^#t7(|2OTfP)<(G z0V)v(;0{Cpt&uc;UVxti5hPWlq*Zj3rPVe5g)V6ARcN;+;{sMA1*~=sN(2i$I5>4_ z2`MG%Q=RO1yB#1o zx*ddre=wZOM56F4Kve@!Ar_R>Q9v;J&8E~ox0W{cz#aFKjC8#8_)vaUO9Tgb^Vk9$ zaex*4&&uG?a+KHr*c}3VjRuNk4B*M6!?0)$LHp=ST>o8)gK!MCp)n~eBnKdRSp56K zxrZA0K^M@!E%28PN|>_KAfR0mrmc@R%E2N9V1bq6M0Scepk-xeVd4BQ_74HR!2^*! z_#uI^e>Y4hcNcR@uoEc${Vg6i?}AqZ=zYA5a;Z8zzyY*?G{y;~H)?WNvg`vm0Ri2_ z#lhIw#mUXd&C}U}4fN}Mx#CZTb;zMKbYB>8jsbix0)Xa)f=#775%$n6fzf4V7S;e8 z7A}X-HL-CgJ)DqcgD|0g56|AY@;JkT}g>k^?3bboe->I0bpe z*0lZ(DDf%+4#*0H;vonV1?(Zl5V4r;=I>m8ioYCvTn{>oGz!6lbagQUhY`?od&fHD zVPeg{x}Zi67)cf|5+9UI1i~i*H~=XT%0VQa|4*@?)DZhplC=-C;Q*%g@jx*UZ+o(c z`waZf62=Y|ZYJg?ZYBpo?v#?^sB#&gl>6S{WMs(er~8rp6h(v3#F9o>F9Ob!%L50e z_XiDBzz8}1JKFIwLtKAlb@l}PKdk(0Jis5|qVmc7fnDwBUJW|Et=@vkpN*rLy}LQ+ z{p!;b^wF4j5VFAjEaP=5$VvJ8lyC`3G&y5BeGh;dL<|U-icpSL{y$?wMzh~R)cSW2 z{fDHqcZ1-TE)Y}XfI3hCilc6y|5Y219D&2l0YflT7C5SdrccPlNoQ>WD)I-If@UZ$ z;D2T4@A!AX&@uDJAuDB&&3wZf_(63@84w&)p)^Dr{J$~;BV-+Lb&B0UOXZ_J9*#et zCSgELYEWD`g#E8v!OF=8Y{86YhxI_ybnnLufGtdbEoCUSJj4H2wjkZf%n8_}o0z$= zoyybkQHA_BPv8Zg83~i8KQr-93Mz+khqOEMcLQ>p0(G+tl-$2g#W<~GhM1cFZ_Ffq zA}v-0(pd^nra+e{%2B5YY~cuONGvQ|jBnUjctB2wJ_#DEYtUkW-2Ffo3+OR0p@A;R zzqNQlj$iZem3lv*Wn&vC*6te?Qeo?O@;f7-bc9hC>?=T3-B?*gQ(EIcfVFSZD#QYEP62XqLxGKtoeT!) z4iqSL}ZT8dB3{yVUSik7;hw6UVx6=_LbNyXFKzF;+j z_BhsKldL5`Aawx}2o;p%q^mF)INGK;Wmj{wO#_`2nAc$90NKaV#tK|%o>IzyFwit8 z?zsV>ssuQ-fZo>xo{9mnQXFmEoLp=it-v7})Hm8+w5KotvS#!vre9$|Uqc)?>9_!; zO#7`faQp5dcUenQPFd!_MPODQ5W(+mtt>zf=yro<)__m!0D}SH=+dt<`{xHHZf-6% zrtZKV;N<86K@%cxKp)b?foR@vH3Q~Dol@Z+E>$Ozp#&tLV*3dI;6ZUX3_%U}JlqY? zswi2pO0Qa-}nO65X|)lR(JQ2hcpHL zfbSn}qyATL$nSjt^q0rIxp~+w0-+Dxx}snXZ0jfUVQ-&yWw!{6UPF5&iFK`D35sxPs}a$FDo+=7S3{EUq9XWt{F2M;G@& zrwJ7M()>G42RU|Koa~F>$OS?ciz+ac1(2M9zX#%hBbOivEb$;FXq+V8AxK?ys;DSH z)f(7+9As56$jB)mr!6Wl1}LK3xs(5V7Z9QzAPjwu<3t8akpEa99Nozr9Fv1XWeYhZ z%)v~|eLKKRpJ4Vubji-^x90(@GXe<;`m6z);yAj;oM^yA0Xy^2CKvQ66d~ntD4?nW zoJCIQVu4yTsLk{67Qo&z1PCn92N^c7i61(zyQ7VzjfFYepGxMGCd{Ynw1yw~YI_I( zNLu=%he5o6A`fXFSYuzFKfgYNGPnsNV}Vt7^s!=S)#Y*=2L)<%f>j54C-~U&lH-X} z|B1<2ZC$RB5WSp`Zjz0K91f_LPq2rJtn?IoEc8)bFSl6KS0R0>yq+p#Vk%w09kzUIw zYXSrd{oWTOtf}}3QXQEO|67YN@xZ=&REvk#A3(kvE_nhTq*Lt&$x}4?_Y+Ex-n;a# zP{(WcxZ2;sYoOCKgzjqeJ8lN>p&k6>JI%3%UXa&0RV{ zV@E-tEAWZaLH<+}kSF>3K@BD{*snl-06n!1Qk9Bku*8F|z+pNB807E4bC4jbr-1xU z1fVf=$EpyF@%MN%NQ^uSSb`i4M4(}5$HE-%+tAGlVJlcL#~KK{n*O5$LN^PN|0Cj` z&FF8f!gLR?xPOlW18WuR{n*z3P29gSE@%wZvC0P9^zYGN2k4-UY0&=z{f`=sOLw3_ zVJC3)_k1o$u3~NecbyzNtqTZIr>N=g?;Rmsf6)8CF?3pJL;~9XKpPzRL(d7cF@u5a HBHaH0we}!% literal 0 HcmV?d00001 diff --git a/waybionic_bringup/launch/display.launch.py b/waybionic_bringup/launch/display.launch.py index ceab624..dc3d1ab 100644 --- a/waybionic_bringup/launch/display.launch.py +++ b/waybionic_bringup/launch/display.launch.py @@ -39,28 +39,27 @@ def generate_launch_description(): waybionic_bringup_dir = get_package_share_directory('waybionic_bringup') default_model_path = os.path.join( - waybionic_desc_dir, 'urdf', 'waybionic_placeholder.urdf' + waybionic_desc_dir, + 'urdf', + 'old_arm_prototype.urdf', ) + default_rviz_config_path = os.path.join( - waybionic_bringup_dir, 'rviz', 'waybionic.rviz' + waybionic_bringup_dir, + 'rviz', + 'waybionic.rviz', ) model_arg = DeclareLaunchArgument( name='model', default_value=default_model_path, - description='Absolute path to robot urdf or xacro file', + description='Absolute path to robot URDF or Xacro file', ) rviz_arg = DeclareLaunchArgument( name='rvizconfig', default_value=default_rviz_config_path, - description='Absolute path to rviz config file', - ) - - joint_state_publisher_gui_node = Node( - package='joint_state_publisher_gui', - executable='joint_state_publisher_gui', - name='joint_state_publisher_gui', + description='Absolute path to RViz config file', ) rviz_node = Node( @@ -75,6 +74,5 @@ def generate_launch_description(): model_arg, rviz_arg, OpaqueFunction(function=_launch_nodes), - joint_state_publisher_gui_node, rviz_node, ]) diff --git a/waybionic_bringup/package.xml b/waybionic_bringup/package.xml index d3256ff..df7604d 100644 --- a/waybionic_bringup/package.xml +++ b/waybionic_bringup/package.xml @@ -12,7 +12,9 @@ ament_index_python xacro waybionic_description + waybionic_hardware waybionic_rviz_plugins + waybionic_motion_test waybionic_control launch launch_ros diff --git a/waybionic_bringup/rviz/waybionic.rviz b/waybionic_bringup/rviz/waybionic.rviz index 6c1f353..d5b5d94 100644 --- a/waybionic_bringup/rviz/waybionic.rviz +++ b/waybionic_bringup/rviz/waybionic.rviz @@ -1,21 +1,23 @@ Panels: - Class: rviz_common/Displays - Help Height: 78 + Help Height: 0 Name: Displays Property Tree Widget: Expanded: - /Global Options1 - /Status1 - /RobotModel1 + - /RobotModel1/Mass Properties1 - /RobotModel1/Description Topic1 Splitter Ratio: 0.5 - Tree Height: 555 + Tree Height: 971 - Class: rviz_common/Selection Name: Selection - Class: rviz_common/Tool Properties Expanded: - /2D Goal Pose1 - /Publish Point1 + - /Interact1 Name: Tool Properties Splitter Ratio: 0.5886790156364441 - Class: rviz_common/Views @@ -28,6 +30,14 @@ Panels: Name: Time SyncMode: 0 SyncSource: "" + - Class: waybionic_rviz_plugins/MotionTestPanel + Name: MotionTestPanel + - Class: waybionic_rviz_plugins/DiagnosticsPanel + Diagnostics Topic: /diagnostics + Name: DiagnosticsPanel + Use Mock Diagnostics: true + - Class: rviz_common/Help + Name: Help Visualization Manager: Class: "" Displays: @@ -52,14 +62,14 @@ Visualization Manager: - Alpha: 1 Class: rviz_default_plugins/RobotModel Collision Enabled: false - Description File: "" - Description Source: Topic + Description File: /home/khidri/waybionic_ground_station/install/waybionic_description/share/waybionic_description/urdf/waybionic_placeholder.urdf + Description Source: File Description Topic: Depth: 5 Durability Policy: Volatile History Policy: Keep Last Reliability Policy: Reliable - Value: /robot_description + Value: "" Enabled: true Links: All Links Enabled: true @@ -85,28 +95,6 @@ Visualization Manager: Update Interval: 0 Value: true Visual Enabled: true - - Class: rviz_default_plugins/TF - Enabled: true - Filter (blacklist): "" - Filter (whitelist): "" - Frame Timeout: 15 - Frames: - All Enabled: true - arm_link: - Value: true - base_link: - Value: true - Marker Scale: 1 - Name: TF - Show Arrows: true - Show Axes: true - Show Names: false - Tree: - base_link: - arm_link: - {} - Update Interval: 0 - Value: true Enabled: true Global Options: Background Color: 48; 48; 48 @@ -114,11 +102,6 @@ Visualization Manager: Frame Rate: 30 Name: root Tools: - - Class: rviz_default_plugins/Interact - Hide Inactive Objects: true - - Class: rviz_default_plugins/MoveCamera - - Class: rviz_default_plugins/Select - - Class: rviz_default_plugins/FocusCamera - Class: rviz_default_plugins/Measure Line color: 128; 128; 0 - Class: rviz_default_plugins/SetInitialPose @@ -146,6 +129,8 @@ Visualization Manager: History Policy: Keep Last Reliability Policy: Reliable Value: /clicked_point + - Class: rviz_default_plugins/Interact + Hide Inactive Objects: true Transformation: Current: Class: rviz_default_plugins/TF @@ -153,7 +138,7 @@ Visualization Manager: Views: Current: Class: rviz_default_plugins/Orbit - Distance: 1.5597326755523682 + Distance: 2.116607427597046 Enable Stereo Rendering: Stereo Eye Separation: 0.05999999865889549 Stereo Focal Distance: 1 @@ -163,23 +148,169 @@ Visualization Manager: X: 0 Y: 0 Z: 0 - Focal Shape Fixed Size: true + Focal Shape Fixed Size: false Focal Shape Size: 0.05000000074505806 Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 - Pitch: 0.785398006439209 + Pitch: 0.7853981852531433 Target Frame: - Value: Orbit (rviz) - Yaw: 0.785398006439209 - Saved: ~ + Value: Orbit (rviz_default_plugins) + Yaw: 0.7853981852531433 + Saved: + - Class: rviz_default_plugins/Orbit + Distance: 8.34925651550293 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.38979676365852356 + Target Frame: + Value: Orbit (rviz) + Yaw: 4.518586158752441 + - Class: rviz_default_plugins/Orbit + Distance: 8.34925651550293 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.38979676365852356 + Target Frame: + Value: Orbit (rviz) + Yaw: 4.518586158752441 + - Class: rviz_default_plugins/Orbit + Distance: 8.34925651550293 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.38979676365852356 + Target Frame: + Value: Orbit (rviz) + Yaw: 4.518586158752441 + - Class: rviz_default_plugins/Orbit + Distance: 8.34925651550293 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.38979676365852356 + Target Frame: + Value: Orbit (rviz) + Yaw: 4.518586158752441 + - Class: rviz_default_plugins/Orbit + Distance: 8.34925651550293 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.38979676365852356 + Target Frame: + Value: Orbit (rviz) + Yaw: 4.518586158752441 + - Class: rviz_default_plugins/Orbit + Distance: 8.34925651550293 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.38979676365852356 + Target Frame: + Value: Orbit (rviz) + Yaw: 4.518586158752441 + - Class: rviz_default_plugins/Orbit + Distance: 8.34925651550293 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0 + Y: 0 + Z: 0 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.38979676365852356 + Target Frame: + Value: Orbit (rviz) + Yaw: 4.518586158752441 Window Geometry: + DiagnosticsPanel: + collapsed: false Displays: collapsed: false - Height: 846 + Height: 1612 + Help: + collapsed: false Hide Left Dock: false Hide Right Dock: false - QMainWindow State: 000000ff00000000fd000000040000000000000156000002b4fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b000002b4000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002b4fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003b000002b4000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004b00000003efc0100000002fb0000000800540069006d00650100000000000004b00000025300fffffffb0000000800540069006d006501000000000000045000000000000000000000023f000002b400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + MotionTestPanel: + collapsed: false + QMainWindow State: 000000ff00000000fd0000000200000000000001a4000005f6fc0200000004fb0000001200530065006c0065006300740069006f006e00000001080000005c0000005c00fffffffb0000000800540069006d00650000000247000000370000003700fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000003b000005f60000035100fffffffb0000000800480065006c007000000003ca0000006e0000006e00ffffff0000000100000168000005f6fc0200000004fb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c010000003b000000d2000000cc00fffffffb0000000a005600690065007700730100000113000000b0000000a000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007301000001c90000005c0000005c00fffffffb000000100044006900730070006c006100790073010000022b00000406000000c700ffffff0000045c000005f600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -188,6 +319,6 @@ Window Geometry: collapsed: false Views: collapsed: false - Width: 1200 - X: 3639 - Y: 407 + Width: 1908 + X: 0 + Y: 0 diff --git a/waybionic_bringup/rviz/waybionic_unified.rviz b/waybionic_bringup/rviz/waybionic_unified.rviz index b7b1b88..21634f2 100644 --- a/waybionic_bringup/rviz/waybionic_unified.rviz +++ b/waybionic_bringup/rviz/waybionic_unified.rviz @@ -32,6 +32,8 @@ Panels: Diagnostics Topic: /diagnostics Name: DiagnosticsPanel Use Mock Diagnostics: true + - Class: waybionic_rviz_plugins/MotionTestPanel + Name: MotionTestPanel Visualization Manager: Class: "" Displays: diff --git a/waybionic_description/urdf/old_arm_prototype.urdf b/waybionic_description/urdf/old_arm_prototype.urdf new file mode 100644 index 0000000..c9f1b9d --- /dev/null +++ b/waybionic_description/urdf/old_arm_prototype.urdf @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/waybionic_hardware/package.xml b/waybionic_hardware/package.xml new file mode 100644 index 0000000..04a117d --- /dev/null +++ b/waybionic_hardware/package.xml @@ -0,0 +1,19 @@ + + + waybionic_hardware + 0.1.0 + Arduino serial bridge for the WayBionic four-servo arm. + + WayBionic + Apache-2.0 + + diagnostic_msgs + rclpy + sensor_msgs + std_msgs + python3-serial + + + ament_python + + \ No newline at end of file diff --git a/waybionic_hardware/resource/waybionic_hardware b/waybionic_hardware/resource/waybionic_hardware new file mode 100644 index 0000000..289bec5 --- /dev/null +++ b/waybionic_hardware/resource/waybionic_hardware @@ -0,0 +1 @@ +# ament package marker \ No newline at end of file diff --git a/waybionic_hardware/setup.cfg b/waybionic_hardware/setup.cfg new file mode 100644 index 0000000..1b8cd9c --- /dev/null +++ b/waybionic_hardware/setup.cfg @@ -0,0 +1,5 @@ +[develop] +script_dir=$base/lib/waybionic_hardware + +[install] +install_scripts=$base/lib/waybionic_hardware \ No newline at end of file diff --git a/waybionic_hardware/setup.py b/waybionic_hardware/setup.py new file mode 100644 index 0000000..576bd2b --- /dev/null +++ b/waybionic_hardware/setup.py @@ -0,0 +1,23 @@ +from setuptools import find_packages, setup + + +package_name = 'waybionic_hardware' + +setup( + name=package_name, + version='0.1.0', + packages=find_packages(), + data_files=[ + ('share/ament_index/resource_index/packages', ['resource/' + package_name]), + ('share/' + package_name, ['package.xml']), + ], + install_requires=['setuptools', 'pyserial'], + zip_safe=True, + description='Arduino serial bridge for the WayBionic four-servo arm.', + license='Apache-2.0', + entry_points={ + 'console_scripts': [ + 'arduino_bridge = waybionic_hardware.arduino_bridge:main', + ], + }, +) \ No newline at end of file diff --git a/waybionic_hardware/waybionic_hardware/__init__.py b/waybionic_hardware/waybionic_hardware/__init__.py new file mode 100644 index 0000000..af384f6 --- /dev/null +++ b/waybionic_hardware/waybionic_hardware/__init__.py @@ -0,0 +1 @@ +"""WayBionic hardware transport nodes.""" \ No newline at end of file diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py new file mode 100644 index 0000000..dd22b47 --- /dev/null +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -0,0 +1,264 @@ +import math +import threading +import time + +import rclpy +from diagnostic_msgs.msg import DiagnosticArray, DiagnosticStatus, KeyValue +from rclpy.node import Node +from sensor_msgs.msg import JointState +from std_msgs.msg import String + + +JOINT_NAMES = ['base_yaw', 'shoulder', 'elbow', 'wrist_roll'] +HOME_PHYSICAL_DEGREES = [33.5, 112.5, 151.5, 27.5] +SERVO_DIRECTIONS = [1.0, -1.0, 1.0, 1.0] +PHYSICAL_LIMITS = [(0.0, 270.0), (0.0, 112.5), (90.0, 270.0), (0.0, 270.0)] +SEQUENCE = [ + [60.0, 95.0, 125.0, 60.0], + [45.0, 75.0, 200.0, 100.0], + [15.0, 100.0, 130.0, 5.0], + HOME_PHYSICAL_DEGREES, +] + + +def model_radians_from_physical(degrees): + return [ + math.radians((physical - zero) / direction) + for physical, zero, direction in zip( + degrees, HOME_PHYSICAL_DEGREES, SERVO_DIRECTIONS) + ] + + +def smoothstep(progress): + return 6.0 * progress**5 - 15.0 * progress**4 + 10.0 * progress**3 + + +class ArduinoBridge(Node): + def __init__(self): + super().__init__('waybionic_arduino_bridge') + + self.declare_parameter('port', '') + self.declare_parameter('baud', 115200) + self.declare_parameter('segment_duration', 3.0) + self.declare_parameter('dry_run', False) + + self.port = str(self.get_parameter('port').value) + self.baud = int(self.get_parameter('baud').value) + self.segment_duration = float(self.get_parameter('segment_duration').value) + self.dry_run = bool(self.get_parameter('dry_run').value) + + self.joint_publisher = self.create_publisher(JointState, '/joint_states', 10) + self.diagnostics_publisher = self.create_publisher( + DiagnosticArray, '/diagnostics', 10) + self.command_subscription = self.create_subscription( + String, '/old_arm_motion_test/command', self.handle_command, 10) + + self.serial_port = None + self.serial_lock = threading.Lock() + self.serial_reader = None + self.serial_stop = threading.Event() + self.connected = False + self.last_status = 'starting' + self.last_error = '' + self.current = list(HOME_PHYSICAL_DEGREES) + self.start = list(self.current) + self.target = list(self.current) + self.motion_started = 0.0 + self.motion_duration = 0.0 + self.motion_active = False + self.sequence_index = 0 + self.sequence_active = False + + self.state_timer = self.create_timer(0.02, self.publish_estimated_state) + self.diagnostics_timer = self.create_timer(1.0, self.publish_diagnostics) + self.connect_to_arduino() + self.publish_estimated_state() + + def connect_to_arduino(self): + if self.dry_run: + self.connected = True + self.last_status = 'dry-run' + self.get_logger().warn('Running in dry-run mode; no Arduino commands will be sent.') + return + + if not self.port: + self.last_status = 'port-not-configured' + self.last_error = 'Set the port parameter, for example /dev/ttyACM0.' + self.get_logger().error(self.last_error) + return + + try: + import serial + + self.serial_port = serial.Serial(self.port, self.baud, timeout=0.1) + self.connected = True + self.last_status = 'connected' + self.serial_reader = threading.Thread(target=self.read_serial, daemon=True) + self.serial_reader.start() + self.send_line('ID') + self.get_logger().info(f'Connected to Arduino on {self.port} at {self.baud} baud.') + except Exception as error: + self.last_error = str(error) + self.last_status = 'connection-failed' + self.get_logger().error(f'Could not open Arduino port {self.port}: {error}') + + def read_serial(self): + while not self.serial_stop.is_set() and self.serial_port is not None: + try: + line = self.serial_port.readline().decode('ascii', errors='replace').strip() + if line: + self.process_serial_line(line) + except Exception as error: + self.connected = False + self.last_error = str(error) + self.last_status = 'serial-read-failed' + return + + def process_serial_line(self, line): + self.get_logger().debug(f'Arduino: {line}') + if line.startswith('READY,IK4,1'): + self.last_status = 'ready' + return + if line.startswith('ERROR,'): + self.motion_active = False + self.sequence_active = False + self.last_error = line[6:] + self.last_status = 'arduino-error' + return + if line == 'OK,ARRIVED': + self.current = list(self.target) + self.motion_active = False + self.last_status = 'arrived' + if self.sequence_active: + self.sequence_index += 1 + if self.sequence_index < len(SEQUENCE): + self.send_move(SEQUENCE[self.sequence_index]) + else: + self.sequence_active = False + return + if line in ('OK,MOVE', 'OK,JOG'): + self.last_status = 'accepted' + return + if line in ('OK,HOLD', 'OK,SWITCH HOLD'): + self.motion_active = False + self.sequence_active = False + self.last_status = 'held' + + def send_line(self, line): + if self.dry_run: + self.last_status = 'dry-run-accepted' + return True + if not self.connected or self.serial_port is None: + self.last_status = 'not-connected' + return False + try: + with self.serial_lock: + self.serial_port.write((line + '\n').encode('ascii')) + return True + except Exception as error: + self.connected = False + self.last_error = str(error) + self.last_status = 'serial-write-failed' + return False + + def handle_command(self, message): + command = message.data.strip().upper() + if command == 'RUN': + if not self.connected: + self.last_status = 'run-rejected-not-connected' + return + self.sequence_index = 0 + self.sequence_active = True + self.send_move(SEQUENCE[0]) + elif command == 'HOME': + self.sequence_active = False + self.send_move(HOME_PHYSICAL_DEGREES) + elif command == 'STOP': + self.sequence_active = False + self.motion_active = False + self.send_line('HOLD') + self.last_status = 'hold-requested' + else: + self.get_logger().warn(f'Ignoring unknown motion command: {command}') + + def send_move(self, target): + if any( + value < lower or value > upper + for value, (lower, upper) in zip(target, PHYSICAL_LIMITS) + ): + self.last_error = 'Target exceeds Arduino software limits.' + self.last_status = 'target-rejected' + self.motion_active = False + self.sequence_active = False + return + + self.start = list(self.current) + self.target = list(target) + self.motion_started = time.monotonic() + self.motion_duration = max(0.3, min(15.0, self.segment_duration)) + command = 'MOVE,' + ','.join(f'{value:.2f}' for value in target) + command += f',{int(self.motion_duration * 1000)}' + if self.send_line(command): + self.motion_active = True + self.last_status = 'move-requested' + + def publish_estimated_state(self): + if self.motion_active: + progress = min( + (time.monotonic() - self.motion_started) / self.motion_duration, + 1.0, + ) + blend = smoothstep(progress) + self.current = [ + start + (target - start) * blend + for start, target in zip(self.start, self.target) + ] + + message = JointState() + message.header.stamp = self.get_clock().now().to_msg() + message.name = JOINT_NAMES + message.position = model_radians_from_physical(self.current) + self.joint_publisher.publish(message) + + if self.dry_run and self.motion_active and time.monotonic() >= self.motion_started + self.motion_duration: + self.process_serial_line('OK,ARRIVED') + + def publish_diagnostics(self): + status = DiagnosticStatus() + status.name = 'waybionic_arduino_bridge' + status.level = DiagnosticStatus.OK if self.connected else DiagnosticStatus.ERROR + status.message = self.last_status + status.values = [ + KeyValue(key='port', value=self.port or 'not configured'), + KeyValue(key='baud', value=str(self.baud)), + KeyValue(key='mode', value='dry-run' if self.dry_run else 'physical'), + KeyValue(key='error', value=self.last_error), + ] + message = DiagnosticArray() + message.header.stamp = self.get_clock().now().to_msg() + message.status = [status] + self.diagnostics_publisher.publish(message) + + def destroy_node(self): + self.serial_stop.set() + if self.serial_port is not None: + try: + self.serial_port.close() + except Exception: + pass + super().destroy_node() + + +def main(args=None): + rclpy.init(args=args) + node = ArduinoBridge() + try: + rclpy.spin(node) + finally: + node.destroy_node() + if rclpy.ok(): + rclpy.shutdown() + + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/waybionic_motion_test/package.xml b/waybionic_motion_test/package.xml new file mode 100644 index 0000000..8df9897 --- /dev/null +++ b/waybionic_motion_test/package.xml @@ -0,0 +1,17 @@ + + + waybionic_motion_test + 0.0.1 + RViz visual motion testing for the WayBionic robot. + + WayBionic + Apache-2.0 + + rclpy + sensor_msgs + std_msgs + + + ament_python + + diff --git a/waybionic_motion_test/resource/waybionic_motion_test b/waybionic_motion_test/resource/waybionic_motion_test new file mode 100644 index 0000000..e69de29 diff --git a/waybionic_motion_test/setup.cfg b/waybionic_motion_test/setup.cfg new file mode 100644 index 0000000..2f16cb3 --- /dev/null +++ b/waybionic_motion_test/setup.cfg @@ -0,0 +1,5 @@ +[develop] +script_dir=$base/lib/waybionic_motion_test + +[install] +install_scripts=$base/lib/waybionic_motion_test diff --git a/waybionic_motion_test/setup.py b/waybionic_motion_test/setup.py new file mode 100644 index 0000000..807515f --- /dev/null +++ b/waybionic_motion_test/setup.py @@ -0,0 +1,22 @@ +from setuptools import find_packages, setup + +package_name = 'waybionic_motion_test' + +setup( + name=package_name, + version='0.0.1', + packages=find_packages(), + data_files=[ + ('share/ament_index/resource_index/packages', ['resource/' + package_name]), + ('share/' + package_name, ['package.xml']), + ], + install_requires=['setuptools'], + zip_safe=True, + description='RViz visual motion testing for the WayBionic robot.', + license='Apache-2.0', + entry_points={ + 'console_scripts': [ + 'motion_test = waybionic_motion_test.motion_test:main', + ], + }, +) diff --git a/waybionic_motion_test/waybionic_motion_test/__init__.py b/waybionic_motion_test/waybionic_motion_test/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/waybionic_motion_test/waybionic_motion_test/motion_test.py b/waybionic_motion_test/waybionic_motion_test/motion_test.py new file mode 100644 index 0000000..4415fad --- /dev/null +++ b/waybionic_motion_test/waybionic_motion_test/motion_test.py @@ -0,0 +1,126 @@ +import math + +import rclpy +from rclpy.node import Node +from sensor_msgs.msg import JointState +from std_msgs.msg import String + + +JOINT_NAMES = ['base_yaw', 'shoulder', 'elbow', 'wrist_roll'] +JOINT_COUNT = len(JOINT_NAMES) +HOME_PHYSICAL_DEGREES = [33.5, 112.5, 151.5, 27.5] +SERVO_DIRECTIONS = [1.0, -1.0, 1.0, 1.0] + + +def model_radians_from_physical(degrees): + """Convert calibrated Arduino servo angles into URDF model radians.""" + return [ + math.radians((physical - zero) / direction) + for physical, zero, direction in zip( + degrees, HOME_PHYSICAL_DEGREES, SERVO_DIRECTIONS) + ] + + +def smoothstep(progress): + return 6.0 * progress**5 - 15.0 * progress**4 + 10.0 * progress**3 + + +class MotionTestNode(Node): + def __init__(self): + super().__init__('motion_test') + + self.publisher = self.create_publisher( + JointState, + '/joint_states', + 10, + ) + self.command_subscription = self.create_subscription( + String, + '/old_arm_motion_test/command', + self.handle_command, + 10, + ) + + self.declare_parameter('segment_duration', 3.0) + self.segment_duration = float(self.get_parameter('segment_duration').value) + self.home = model_radians_from_physical(HOME_PHYSICAL_DEGREES) + self.current = list(self.home) + self.start = list(self.home) + self.target = list(self.home) + self.segment_elapsed = 0.0 + self.segment_active = False + self.sequence = [ + model_radians_from_physical([60.0, 95.0, 125.0, 60.0]), + model_radians_from_physical([45.0, 75.0, 200.0, 100.0]), + model_radians_from_physical([15.0, 100.0, 130.0, 5.0]), + self.home, + ] + self.sequence_index = 0 + self.timer = self.create_timer(0.02, self.update_trajectory) + self.publish_joint_state() + + self.get_logger().info( + 'Old-arm 4-DOF motion test started; publishing simulated commanded positions.') + + def handle_command(self, message): + command = message.data.strip().upper() + if command == 'RUN': + self.sequence_index = 0 + self.start_segment(self.sequence[self.sequence_index]) + elif command == 'HOME': + self.start_segment(self.home) + elif command == 'STOP': + self.segment_active = False + self.target = list(self.current) + self.publish_joint_state() + + def start_segment(self, target): + self.start = list(self.current) + self.target = list(target) + self.segment_elapsed = 0.0 + self.segment_active = True + + def update_trajectory(self): + if not self.segment_active: + return + + self.segment_elapsed += 0.02 + progress = min(self.segment_elapsed / self.segment_duration, 1.0) + blend = smoothstep(progress) + self.current = [ + start + (target - start) * blend + for start, target in zip(self.start, self.target) + ] + self.publish_joint_state() + + if progress >= 1.0: + self.current = list(self.target) + if self.sequence_index < len(self.sequence) - 1: + self.sequence_index += 1 + self.start_segment(self.sequence[self.sequence_index]) + else: + self.segment_active = False + + def publish_joint_state(self): + message = JointState() + message.header.stamp = self.get_clock().now().to_msg() + message.name = JOINT_NAMES + message.position = self.current + self.publisher.publish(message) + + +def main(args=None): + rclpy.init(args=args) + + node = MotionTestNode() + + try: + rclpy.spin(node) + finally: + node.destroy_node() + + if rclpy.ok(): + rclpy.shutdown() + +if __name__ == '__main__': + main() diff --git a/waybionic_rviz_plugins/CMakeLists.txt b/waybionic_rviz_plugins/CMakeLists.txt index 413e3f0..f96872f 100644 --- a/waybionic_rviz_plugins/CMakeLists.txt +++ b/waybionic_rviz_plugins/CMakeLists.txt @@ -27,10 +27,12 @@ set(THIS_PACKAGE_INCLUDE_DEPENDS add_library(${PROJECT_NAME} SHARED include/waybionic_rviz_plugins/diagnostics_source.hpp include/waybionic_rviz_plugins/diagnostics_panel.hpp + include/waybionic_rviz_plugins/motion_test_panel.hpp include/waybionic_rviz_plugins/ros_diagnostics_source.hpp src/diagnostics_panel.cpp src/mock_diagnostics_source.cpp src/ros_diagnostics_source.cpp + src/motion_test_panel.cpp ) target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_17) diff --git a/waybionic_rviz_plugins/config/engineer_monitoring_view.rviz b/waybionic_rviz_plugins/config/engineer_monitoring_view.rviz index 170a097..0d39bab 100644 --- a/waybionic_rviz_plugins/config/engineer_monitoring_view.rviz +++ b/waybionic_rviz_plugins/config/engineer_monitoring_view.rviz @@ -1,11 +1,22 @@ Panels: - Class: rviz_common/Displays + Help Height: 70 Name: Displays + Property Tree Widget: + Expanded: ~ + Splitter Ratio: 0.5 + Tree Height: 70 - Class: rviz_common/Views + Expanded: + - /Current View1 Name: Views + Splitter Ratio: 0.5 - Class: waybionic_rviz_plugins/DiagnosticsPanel Diagnostics Topic: /diagnostics Name: WayBionic Diagnostics + Use Mock Diagnostics: false + - Class: waybionic_rviz_plugins/MotionTestPanel + Name: MotionTestPanel Visualization Manager: Class: "" Displays: @@ -15,7 +26,7 @@ Visualization Manager: Color: 160; 160; 164 Enabled: true Line Style: - Line Width: 0.03 + Line Width: 0.029999999329447746 Value: Lines Name: Grid Normal Cell Count: 0 @@ -29,10 +40,12 @@ Visualization Manager: Value: true - Class: rviz_default_plugins/TF Enabled: true + Filter (blacklist): "" + Filter (whitelist): "" Frame Timeout: 15 Frames: All Enabled: true - Marker Scale: 0.4 + Marker Scale: 0.4000000059604645 Name: TF Show Arrows: true Show Axes: true @@ -44,6 +57,7 @@ Visualization Manager: - Alpha: 1 Class: rviz_default_plugins/RobotModel Collision Enabled: false + Description File: "" Description Source: Topic Description Topic: Depth: 5 @@ -52,8 +66,16 @@ Visualization Manager: Reliability Policy: Reliable Value: /robot_description Enabled: true + Links: + All Links Enabled: true + Expand Joint Details: false + Expand Link Details: false + Expand Tree: false + Link Tree Style: "" + Mass Properties: + Inertia: false + Mass: false Name: Robot Model - Robot Description: robot_description TF Prefix: "" Update Interval: 0 Value: true @@ -79,36 +101,39 @@ Visualization Manager: Views: Current: Class: rviz_default_plugins/Orbit - Distance: 1.8 + Distance: 15.149079322814941 Enable Stereo Rendering: - Stereo Eye Separation: 0.06 + Stereo Eye Separation: 0.05999999865889549 Stereo Focal Distance: 1 Swap Stereo Eyes: false Value: false Focal Point: X: 0 Y: 0 - Z: 0.2 + Z: 0.20000000298023224 Focal Shape Fixed Size: true - Focal Shape Size: 0.05 + Focal Shape Size: 0.05000000074505806 Invert Z Axis: false Name: Current View - Near Clip Distance: 0.01 - Pitch: 0.55 + Near Clip Distance: 0.009999999776482582 + Pitch: 0.550000011920929 Target Frame: Value: Orbit (rviz) - Yaw: 5.4 + Yaw: 5.400000095367432 Saved: ~ Window Geometry: Displays: collapsed: false - Height: 995 + Height: 1104 Hide Left Dock: false Hide Right Dock: false + MotionTestPanel: + collapsed: false + QMainWindow State: 000000ff00000000fd0000000100000000000001a4000003fafc0200000004fb000000100044006900730070006c006100790073000000003b000000c7000000c700fffffffb0000000a00560069006500770073000000003b000000c3000000a000fffffffb0000002a00570061007900420069006f006e0069006300200044006900610067006e006f00730074006900630073010000003b000003280000030e00fffffffb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c0100000369000000cc000000cc00ffffff000005d6000003fa00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Views: - collapsed: true + collapsed: false WayBionic Diagnostics: collapsed: false Width: 1920 - X: 0 - Y: 0 + X: -29 + Y: -31 diff --git a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp index ab45aa1..2663cfb 100644 --- a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp +++ b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp @@ -22,6 +22,7 @@ #include "waybionic_rviz_plugins/mock_diagnostics_source.hpp" class QButtonGroup; +class QProgressBar; class QPushButton; namespace waybionic_rviz_plugins @@ -41,6 +42,7 @@ class DiagnosticsPanel : public rviz_common::Panel private: void buildUi(); + void buildMovementTestUi(QVBoxLayout * root_layout); void configureSource(bool use_mock_diagnostics); bool readUseMockDiagnosticsParameter(bool default_value); std::string readDiagnosticsTopicParameter(const std::string & default_value); @@ -85,6 +87,9 @@ class DiagnosticsPanel : public rviz_common::Panel QVBoxLayout * alerts_layout_{nullptr}; QPushButton * normal_button_{nullptr}; QPushButton * fault_button_{nullptr}; + QPushButton * movement_test_button_{nullptr}; + QLabel * movement_test_status_{nullptr}; + QProgressBar * movement_test_progress_{nullptr}; QButtonGroup * mock_state_button_group_{nullptr}; }; diff --git a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp new file mode 100644 index 0000000..4f1ef13 --- /dev/null +++ b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp @@ -0,0 +1,53 @@ +#ifndef WAYBIONIC_RVIZ_PLUGINS__MOTION_TEST_PANEL_HPP_ +#define WAYBIONIC_RVIZ_PLUGINS__MOTION_TEST_PANEL_HPP_ + +#include +#include + +#include +#include + +#include +#include +#include + +#include + +namespace waybionic_rviz_plugins +{ + +class MotionTestPanel : public rviz_common::Panel +{ + Q_OBJECT + +public: + explicit MotionTestPanel(QWidget * parent = nullptr); + ~MotionTestPanel() override; + + void onInitialize() override; + +private: + void buildUi(); + + void runTest(); + void moveHome(); + void stopTest(); + + void publishCommand(const std::string & command); + + QPushButton * run_button_{nullptr}; + QPushButton * home_button_{nullptr}; + QPushButton * stop_button_{nullptr}; + + QLabel * status_label_{nullptr}; + QLabel * position_label_{nullptr}; + QLabel * result_label_{nullptr}; + + rclcpp::Node::SharedPtr ros_node_; + rclcpp::Publisher::SharedPtr command_publisher_; + bool test_running_{false}; +}; + +} // namespace waybionic_rviz_plugins + +#endif // WAYBIONIC_RVIZ_PLUGINS__MOTION_TEST_PANEL_HPP_ diff --git a/waybionic_rviz_plugins/package.xml b/waybionic_rviz_plugins/package.xml index 5b3285c..63bbb2d 100644 --- a/waybionic_rviz_plugins/package.xml +++ b/waybionic_rviz_plugins/package.xml @@ -12,6 +12,8 @@ pluginlib qtbase5-dev rclcpp + sensor_msgs + std_msgs rviz_common rviz_default_plugins diff --git a/waybionic_rviz_plugins/plugin_description.xml b/waybionic_rviz_plugins/plugin_description.xml index faa00a6..d6dc67d 100644 --- a/waybionic_rviz_plugins/plugin_description.xml +++ b/waybionic_rviz_plugins/plugin_description.xml @@ -7,4 +7,13 @@ WayBionic ground station diagnostics, telemetry, and alerts panel for RViz2. + + + + WayBionic visual robot motion testing panel. + + diff --git a/waybionic_rviz_plugins/src/diagnostics_panel.cpp b/waybionic_rviz_plugins/src/diagnostics_panel.cpp index ac0fde3..0388279 100644 --- a/waybionic_rviz_plugins/src/diagnostics_panel.cpp +++ b/waybionic_rviz_plugins/src/diagnostics_panel.cpp @@ -15,8 +15,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -265,8 +267,10 @@ void DiagnosticsPanel::buildUi() telemetry_table_->verticalHeader()->setVisible(false); telemetry_table_->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); telemetry_table_->horizontalHeader()->setMinimumSectionSize(80); + telemetry_table_->setMaximumHeight(220); + telemetry_table_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); table_layout->addWidget(telemetry_table_); - root_layout->addWidget(table_card, 1); + root_layout->addWidget(table_card); auto * alerts_card = makeCard(); auto * alerts_root = new QVBoxLayout(alerts_card); @@ -281,7 +285,40 @@ void DiagnosticsPanel::buildUi() alerts_layout_->setSpacing(6); alerts_root->addLayout(alerts_layout_); alerts_root->addStretch(1); - root_layout->addWidget(alerts_card); + root_layout->addWidget(alerts_card, 1); + + buildMovementTestUi(root_layout); +} + +void DiagnosticsPanel::buildMovementTestUi(QVBoxLayout * root_layout) +{ + auto * movement_card = makeCard(); + auto * movement_layout = new QVBoxLayout(movement_card); + movement_layout->setSpacing(8); + + movement_layout->addWidget(makeTitle("Movement Test")); + + auto * description = makeMuted( + "Run a controlled movement sequence to visually inspect the robot before operation."); + description->setWordWrap(true); + movement_layout->addWidget(description); + + movement_test_button_ = new QPushButton("▶ Run Movement Test"); + movement_test_button_->setToolTip( + "Run the robot through its predefined movement test sequence."); + + movement_test_progress_ = new QProgressBar(); + movement_test_progress_->setRange(0, 100); + movement_test_progress_->setValue(0); + movement_test_progress_->setTextVisible(true); + + movement_test_status_ = makeMuted("Ready to run movement test."); + + movement_layout->addWidget(movement_test_button_); + movement_layout->addWidget(movement_test_progress_); + movement_layout->addWidget(movement_test_status_); + + root_layout->addWidget(movement_card); } void DiagnosticsPanel::configureSource(const bool use_mock_diagnostics) diff --git a/waybionic_rviz_plugins/src/motion_test_panel.cpp b/waybionic_rviz_plugins/src/motion_test_panel.cpp new file mode 100644 index 0000000..daf9b9e --- /dev/null +++ b/waybionic_rviz_plugins/src/motion_test_panel.cpp @@ -0,0 +1,142 @@ +#include "waybionic_rviz_plugins/motion_test_panel.hpp" + +#include +#include + +#include + +namespace waybionic_rviz_plugins +{ + +MotionTestPanel::MotionTestPanel(QWidget * parent) +: rviz_common::Panel(parent) +{ + buildUi(); +} + +MotionTestPanel::~MotionTestPanel() +{ +} + +void MotionTestPanel::onInitialize() +{ + ros_node_ = std::make_shared("waybionic_motion_test_panel"); + + command_publisher_ = ros_node_->create_publisher( + "/old_arm_motion_test/command", rclcpp::QoS(10)); +} +void MotionTestPanel::buildUi() +{ + setMinimumWidth(360); + + auto * layout = new QVBoxLayout(this); + + auto * title = new QLabel("Old Arm Prototype Motion Test"); + title->setStyleSheet( + "font-size: 16px;" + "font-weight: 700;" + "padding: 6px;"); + + status_label_ = new QLabel("Status: READY"); + status_label_->setStyleSheet( + "color: #3ddc84;" + "font-weight: 800;" + "padding: 6px;"); + + position_label_ = new QLabel("Four-joint trajectory via /joint_states"); + + result_label_ = new QLabel("No test run yet."); + result_label_->setWordWrap(true); + + run_button_ = new QPushButton("▶ RUN MOTION TEST"); + home_button_ = new QPushButton("↩ HOME"); + stop_button_ = new QPushButton("■ STOP"); + + stop_button_->setEnabled(false); + + connect(run_button_, &QPushButton::clicked, this, [this]() { + runTest(); + }); + + connect(home_button_, &QPushButton::clicked, this, [this]() { + moveHome(); + }); + + connect(stop_button_, &QPushButton::clicked, this, [this]() { + stopTest(); + }); + + auto * button_row = new QHBoxLayout(); + button_row->addWidget(home_button_); + button_row->addWidget(stop_button_); + + layout->addWidget(title); + layout->addWidget(status_label_); + layout->addWidget(position_label_); + layout->addWidget(run_button_); + layout->addLayout(button_row); + layout->addWidget(result_label_); + layout->addStretch(); +} + +void MotionTestPanel::runTest() +{ + if (test_running_) { + return; + } + + test_running_ = true; + + result_label_->setText("Running motion sequence..."); + status_label_->setText("RUNNING: synchronized 4-DOF sequence"); + + run_button_->setEnabled(false); + home_button_->setEnabled(false); + stop_button_->setEnabled(true); + + publishCommand("RUN"); +} + +void MotionTestPanel::moveHome() +{ + test_running_ = false; + + status_label_->setText("Moving to HOME"); + result_label_->setText("Returning to home position..."); + + run_button_->setEnabled(false); + home_button_->setEnabled(false); + stop_button_->setEnabled(true); + + publishCommand("HOME"); +} + +void MotionTestPanel::stopTest() +{ + test_running_ = false; + publishCommand("STOP"); + + status_label_->setText("STOPPED"); + result_label_->setText("Motion test stopped."); + + run_button_->setEnabled(true); + home_button_->setEnabled(true); + stop_button_->setEnabled(false); +} + +void MotionTestPanel::publishCommand(const std::string & command) +{ + if (!command_publisher_) { + return; + } + + std_msgs::msg::String message; + message.data = command; + command_publisher_->publish(message); +} + +} // namespace waybionic_rviz_plugins + +PLUGINLIB_EXPORT_CLASS( + waybionic_rviz_plugins::MotionTestPanel, + rviz_common::Panel) From c3a53122f61cf5fa7a3c29958c4daf55c5b4123d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 12 Sep 2026 16:42:37 +0000 Subject: [PATCH 02/21] test: add smoke tests for hardware and motion packages Co-authored-by: aj0khi <81395597+aj0khi@users.noreply.github.com> --- waybionic_hardware/test/test_smoke.py | 2 ++ waybionic_motion_test/test/test_smoke.py | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 waybionic_hardware/test/test_smoke.py create mode 100644 waybionic_motion_test/test/test_smoke.py diff --git a/waybionic_hardware/test/test_smoke.py b/waybionic_hardware/test/test_smoke.py new file mode 100644 index 0000000..9993f44 --- /dev/null +++ b/waybionic_hardware/test/test_smoke.py @@ -0,0 +1,2 @@ +def test_smoke_passes(): + assert True diff --git a/waybionic_motion_test/test/test_smoke.py b/waybionic_motion_test/test/test_smoke.py new file mode 100644 index 0000000..9993f44 --- /dev/null +++ b/waybionic_motion_test/test/test_smoke.py @@ -0,0 +1,2 @@ +def test_smoke_passes(): + assert True From 19adf893de1e846e8214e1c3b9d2cb6c0d30ceb2 Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 12 Sep 2026 10:47:10 -0600 Subject: [PATCH 03/21] Update joint limit upper value in URDF file Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- waybionic_description/urdf/old_arm_prototype.urdf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waybionic_description/urdf/old_arm_prototype.urdf b/waybionic_description/urdf/old_arm_prototype.urdf index c9f1b9d..587c34a 100644 --- a/waybionic_description/urdf/old_arm_prototype.urdf +++ b/waybionic_description/urdf/old_arm_prototype.urdf @@ -69,7 +69,7 @@ - + From d3e15d4edde2dbd6391514305df40306087bd8f9 Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 12 Sep 2026 10:47:23 -0600 Subject: [PATCH 04/21] Improve HOLD command status handling Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- waybionic_hardware/waybionic_hardware/arduino_bridge.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py index dd22b47..c80814c 100644 --- a/waybionic_hardware/waybionic_hardware/arduino_bridge.py +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -176,8 +176,10 @@ def handle_command(self, message): elif command == 'STOP': self.sequence_active = False self.motion_active = False - self.send_line('HOLD') - self.last_status = 'hold-requested' + if self.send_line('HOLD'): + self.last_status = 'hold-requested' + else: + self.last_status = 'hold-request-failed' else: self.get_logger().warn(f'Ignoring unknown motion command: {command}') From 5415a6df6365207ccb46934ab6e108b3205d75ab Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 12 Sep 2026 10:47:45 -0600 Subject: [PATCH 05/21] Validate segment_duration parameter Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- waybionic_motion_test/waybionic_motion_test/motion_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/waybionic_motion_test/waybionic_motion_test/motion_test.py b/waybionic_motion_test/waybionic_motion_test/motion_test.py index 4415fad..42ef972 100644 --- a/waybionic_motion_test/waybionic_motion_test/motion_test.py +++ b/waybionic_motion_test/waybionic_motion_test/motion_test.py @@ -43,6 +43,8 @@ def __init__(self): self.declare_parameter('segment_duration', 3.0) self.segment_duration = float(self.get_parameter('segment_duration').value) + if self.segment_duration <= 0.0: + raise ValueError('segment_duration must be positive') self.home = model_radians_from_physical(HOME_PHYSICAL_DEGREES) self.current = list(self.home) self.start = list(self.home) From 1916d00455201c8e22254f7adee1bd0fbfe6f17a Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 12 Sep 2026 10:52:35 -0600 Subject: [PATCH 06/21] Add test placeholders for hardware and motion test packages - Resolves colcon test failures due to missing test files - Both packages now have minimal unit tests that verify module imports - CI/CD pipeline will now pass the test phase --- waybionic_hardware/test/__init__.py | 1 + waybionic_hardware/test/test_arduino_bridge.py | 18 ++++++++++++++++++ waybionic_motion_test/test/__init__.py | 1 + waybionic_motion_test/test/test_motion_test.py | 18 ++++++++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 waybionic_hardware/test/__init__.py create mode 100644 waybionic_hardware/test/test_arduino_bridge.py create mode 100644 waybionic_motion_test/test/__init__.py create mode 100644 waybionic_motion_test/test/test_motion_test.py diff --git a/waybionic_hardware/test/__init__.py b/waybionic_hardware/test/__init__.py new file mode 100644 index 0000000..fe7dbee --- /dev/null +++ b/waybionic_hardware/test/__init__.py @@ -0,0 +1 @@ +# Test module for waybionic_hardware diff --git a/waybionic_hardware/test/test_arduino_bridge.py b/waybionic_hardware/test/test_arduino_bridge.py new file mode 100644 index 0000000..746a94f --- /dev/null +++ b/waybionic_hardware/test/test_arduino_bridge.py @@ -0,0 +1,18 @@ +"""Minimal tests for Arduino bridge module.""" +import unittest + + +class TestArduinoBridge(unittest.TestCase): + """Test cases for ArduinoBridge.""" + + def test_import(self): + """Test that the module can be imported.""" + try: + from waybionic_hardware import arduino_bridge # noqa: F401 + self.assertTrue(True) + except ImportError: + self.fail("Failed to import arduino_bridge") + + +if __name__ == '__main__': + unittest.main() diff --git a/waybionic_motion_test/test/__init__.py b/waybionic_motion_test/test/__init__.py new file mode 100644 index 0000000..c9d91bf --- /dev/null +++ b/waybionic_motion_test/test/__init__.py @@ -0,0 +1 @@ +# Test module for waybionic_motion_test diff --git a/waybionic_motion_test/test/test_motion_test.py b/waybionic_motion_test/test/test_motion_test.py new file mode 100644 index 0000000..10ab3f3 --- /dev/null +++ b/waybionic_motion_test/test/test_motion_test.py @@ -0,0 +1,18 @@ +"""Minimal tests for motion test module.""" +import unittest + + +class TestMotionTest(unittest.TestCase): + """Test cases for MotionTest.""" + + def test_import(self): + """Test that the module can be imported.""" + try: + from waybionic_motion_test import motion_test # noqa: F401 + self.assertTrue(True) + except ImportError: + self.fail("Failed to import motion_test") + + +if __name__ == '__main__': + unittest.main() From 4fe8f27fd59c189ab9371d621c908a355fc1bbea Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 12 Sep 2026 14:36:29 -0600 Subject: [PATCH 07/21] Integrate new old-arm model with motion publishers --- waybionic_bringup/CMakeLists.txt | 5 + waybionic_bringup/launch/old_arm.launch.py | 59 ++ waybionic_bringup/rviz/waybionic_old_arm.rviz | 249 +++++++++ .../rviz/waybionic_old_arm_root.rviz | 88 +++ waybionic_bringup/test/test_old_arm_launch.py | 218 ++++++++ .../meshes/old_arm/base_plate.stl | Bin 0 -> 86484 bytes .../meshes/old_arm/shoulder_back_plate.stl | Bin 0 -> 121684 bytes .../meshes/old_arm/shoulder_motor_plate.stl | Bin 0 -> 89684 bytes .../meshes/old_arm/upper_arm_plate.stl | Bin 0 -> 502884 bytes .../meshes/old_arm/wrist_cage.stl | Bin 0 -> 169284 bytes .../meshes/old_arm/wrist_housing.stl | Bin 0 -> 163484 bytes .../urdf/waybionic_old_arm.expanded.urdf | 518 ++++++++++++++++++ .../urdf/waybionic_old_arm.urdf.xacro | 255 +++++++++ .../test/test_arduino_bridge.py | 11 + .../waybionic_hardware/arduino_bridge.py | 7 +- .../test/test_motion_test.py | 11 + .../waybionic_motion_test/motion_test.py | 7 +- 17 files changed, 1426 insertions(+), 2 deletions(-) create mode 100644 waybionic_bringup/launch/old_arm.launch.py create mode 100644 waybionic_bringup/rviz/waybionic_old_arm.rviz create mode 100644 waybionic_bringup/rviz/waybionic_old_arm_root.rviz create mode 100644 waybionic_bringup/test/test_old_arm_launch.py create mode 100644 waybionic_description/meshes/old_arm/base_plate.stl create mode 100644 waybionic_description/meshes/old_arm/shoulder_back_plate.stl create mode 100644 waybionic_description/meshes/old_arm/shoulder_motor_plate.stl create mode 100644 waybionic_description/meshes/old_arm/upper_arm_plate.stl create mode 100644 waybionic_description/meshes/old_arm/wrist_cage.stl create mode 100644 waybionic_description/meshes/old_arm/wrist_housing.stl create mode 100644 waybionic_description/urdf/waybionic_old_arm.expanded.urdf create mode 100644 waybionic_description/urdf/waybionic_old_arm.urdf.xacro diff --git a/waybionic_bringup/CMakeLists.txt b/waybionic_bringup/CMakeLists.txt index 3052bd1..213a9fa 100644 --- a/waybionic_bringup/CMakeLists.txt +++ b/waybionic_bringup/CMakeLists.txt @@ -18,11 +18,16 @@ if(BUILD_TESTING) set(ament_cmake_copyright_FOUND TRUE) set(ament_cmake_cpplint_FOUND TRUE) ament_lint_auto_find_test_dependencies() +<<<<<<< HEAD # colcon tests packages in parallel; a private ROS domain keeps this /tf out of other tests. set(isolated RUNNER "${ament_cmake_ros_DIR}/run_test_isolated.py") add_launch_test(test/test_ground_station_launch.py ${isolated}) add_launch_test(test/test_arm_model_launch.py ${isolated}) add_launch_test(test/test_joint_demo_launch.py ${isolated}) +======= + add_launch_test(test/test_ground_station_launch.py) + add_launch_test(test/test_old_arm_launch.py) +>>>>>>> e85adbc (Integrate new old-arm model with motion publishers) endif() install(PROGRAMS scripts/joint_demo.py diff --git a/waybionic_bringup/launch/old_arm.launch.py b/waybionic_bringup/launch/old_arm.launch.py new file mode 100644 index 0000000..3567718 --- /dev/null +++ b/waybionic_bringup/launch/old_arm.launch.py @@ -0,0 +1,59 @@ +"""Display the handoff's four-servo arm without commanding physical hardware.""" + +import os + +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument, GroupAction, IncludeLaunchDescription +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration +from launch_ros.actions import PushRosNamespace, SetRemap + + +def generate_launch_description(): + """Reuse the ground station with an isolated model and joint-state topic.""" + description = get_package_share_directory('waybionic_description') + bringup = get_package_share_directory('waybionic_bringup') + arguments = [ + DeclareLaunchArgument( + 'model', + default_value=os.path.join(description, 'urdf', 'waybionic_old_arm.urdf.xacro'), + description='Old-arm Xacro or an expanded, calibrated URDF'), + DeclareLaunchArgument( + 'joint_states_topic', default_value='/old_arm/joint_states', + description='sensor_msgs/JointState input, with named model joints in radians'), + DeclareLaunchArgument( + 'use_joint_state_publisher_gui', default_value='true', + description='Set false when a live joint-state source is connected'), + DeclareLaunchArgument( + 'launch_rviz', default_value='true', + description='Set false for headless transform validation'), + DeclareLaunchArgument( + 'use_sim_time', default_value='false', + description='Enable only when an external simulation clock is provided'), + DeclareLaunchArgument( + 'use_mock_diagnostics', default_value='true', + description='Diagnostics remain mock unless a real backend is selected'), + DeclareLaunchArgument( + 'diagnostics_topic', default_value='/diagnostics', + description='DiagnosticArray input for the Engineering Monitor'), + ] + station = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + os.path.join(bringup, 'launch', 'ground_station.launch.py')), + launch_arguments={ + 'model': LaunchConfiguration('model'), + 'rvizconfig': os.path.join(bringup, 'rviz', 'waybionic_old_arm.rviz'), + 'use_joint_state_publisher_gui': LaunchConfiguration('use_joint_state_publisher_gui'), + 'launch_rviz': LaunchConfiguration('launch_rviz'), + 'use_sim_time': LaunchConfiguration('use_sim_time'), + 'use_mock_diagnostics': LaunchConfiguration('use_mock_diagnostics'), + 'diagnostics_topic': LaunchConfiguration('diagnostics_topic'), + 'start_temporary_diagnostics_publisher': 'false', + }.items(), + ) + return LaunchDescription(arguments + [GroupAction([ + PushRosNamespace('old_arm'), + SetRemap(src='joint_states', dst=LaunchConfiguration('joint_states_topic')), + station, + ])]) diff --git a/waybionic_bringup/rviz/waybionic_old_arm.rviz b/waybionic_bringup/rviz/waybionic_old_arm.rviz new file mode 100644 index 0000000..625879f --- /dev/null +++ b/waybionic_bringup/rviz/waybionic_old_arm.rviz @@ -0,0 +1,249 @@ +Panels: + - Class: rviz_common/Displays + Help Height: 70 + Name: Displays + Property Tree Widget: + Expanded: ~ + Splitter Ratio: 0.5 + Tree Height: 544 + - Class: rviz_common/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: waybionic_rviz_plugins/DiagnosticsPanel + Diagnostics Topic: /diagnostics + Name: Engineering Monitor + Use Mock Diagnostics: true + - Class: waybionic_rviz_plugins/MotionTestPanel + Name: MotionTestPanel +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.44999998807907104 + Cell Size: 0.05000000074505806 + Class: rviz_default_plugins/Grid + Color: 155; 155; 155 + Enabled: true + Line Style: + Line Width: 0.0010000000474974513 + Value: Lines + Name: Grid (50 mm) + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: -0.06599999964237213 + Plane: XY + Plane Cell Count: 12 + Reference Frame: + Value: true + - Alpha: 1 + Class: rviz_default_plugins/RobotModel + Collision Enabled: false + Description File: "" + Description Source: Topic + Description Topic: + Depth: 1 + Durability Policy: Transient Local + History Policy: Keep Last + Reliability Policy: Reliable + Value: /old_arm/robot_description + Enabled: true + Links: + All Links Enabled: true + Expand Joint Details: false + Expand Link Details: false + Expand Tree: false + Link Tree Style: Links in Alphabetic Order + old_arm_base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_base_servo_body: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_base_servo_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_distal_left_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_distal_left_servo: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_distal_right_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_distal_right_servo: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_elbow_cover_screws: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_elbow_horn: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_elbow_servo_body: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_elbow_servo_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_forearm: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_shoulder_horn: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_shoulder_mount: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_shoulder_servo_body: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_shoulder_servo_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_tool_frame: + Alpha: 1 + Show Axes: false + Show Trail: false + old_arm_upper_arm: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_hub: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_marker: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_marker_cross: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_roll: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_servo_body: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_servo_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + Mass Properties: + Inertia: false + Mass: false + Name: Old Arm (Video Reference Model) + TF Prefix: "" + Update Interval: 0 + Value: true + Visual Enabled: true + - Class: rviz_default_plugins/Axes + Enabled: true + Length: 0.03500000014901161 + Name: Wrist Target Frame + Radius: 0.001500000013038516 + Reference Frame: old_arm_tool_frame + Value: true + Enabled: true + Global Options: + Background Color: 238; 240; 242 + Fixed Frame: old_arm_base_link + Frame Rate: 30 + Name: root + Tools: + - Class: rviz_default_plugins/Interact + Hide Inactive Objects: true + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + - Class: rviz_default_plugins/FocusCamera + - Class: rviz_default_plugins/Measure + Line color: 128; 128; 0 + Transformation: + Current: + Class: rviz_default_plugins/TF + Value: true + Views: + Current: + Class: rviz_default_plugins/Orbit + Distance: 0.7799999713897705 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0.07999999821186066 + Y: 0 + Z: 0.12999999523162842 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.004999999888241291 + Pitch: 0.44999998807907104 + Target Frame: + Value: Orbit (rviz_default_plugins) + Yaw: 0.800000011920929 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Engineering Monitor: + collapsed: false + Height: 1143 + Hide Left Dock: false + Hide Right Dock: false + MotionTestPanel: + collapsed: false + QMainWindow State: 000000ff00000000fd0000000200000000000001a400000421fc0200000001fb000000260045006e00670069006e0065006500720069006e00670020004d006f006e00690074006f0072010000003b000004210000034f00ffffff000000010000016800000421fc0200000003fb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c010000003b000000d4000000cc00fffffffb000000100044006900730070006c0061007900730100000115000002a1000000c700fffffffb0000000a0056006900650077007301000003bc000000a0000000a000ffffff0000045c0000042100000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Views: + collapsed: false + Width: 1908 + X: 0 + Y: 0 diff --git a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz new file mode 100644 index 0000000..be06046 --- /dev/null +++ b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz @@ -0,0 +1,88 @@ +Panels: + - Class: rviz_common/Displays + Name: Displays + - Class: rviz_common/Views + Name: Views + - Class: waybionic_rviz_plugins/DiagnosticsPanel + Name: Engineering Monitor + Diagnostics Topic: /diagnostics + Use Mock Diagnostics: true +Visualization Manager: + Class: "" + Displays: + - Class: rviz_default_plugins/Grid + Name: Grid (50 mm) + Enabled: true + Cell Size: 0.05 + Plane Cell Count: 12 + Color: 155; 155; 155 + Alpha: 0.45 + Reference Frame: + Plane: XY + Offset: + X: 0 + Y: 0 + Z: -0.066 + Line Style: + Value: Lines + Line Width: 0.001 + - Class: rviz_default_plugins/RobotModel + Name: Old Arm (Video Reference Model) + Enabled: true + Visual Enabled: true + Collision Enabled: false + Alpha: 1 + Description Source: Topic + Description Topic: + Value: /robot_description + Depth: 1 + Durability Policy: Transient Local + Reliability Policy: Reliable + History Policy: Keep Last + Links: + All Links Enabled: true + Expand Joint Details: false + Expand Link Details: false + Expand Tree: false + Link Tree Style: Links in Alphabetic Order + TF Prefix: "" + Update Interval: 0 + - Class: rviz_default_plugins/Axes + Name: Wrist Target Frame + Enabled: true + Reference Frame: old_arm_tool_frame + Length: 0.035 + Radius: 0.0015 + Enabled: true + Global Options: + Fixed Frame: old_arm_base_link + Background Color: 238; 240; 242 + Frame Rate: 30 + Name: root + Tools: + - Class: rviz_default_plugins/Interact + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + - Class: rviz_default_plugins/FocusCamera + - Class: rviz_default_plugins/Measure + Views: + Current: + Class: rviz_default_plugins/Orbit + Name: Current View + Distance: 0.78 + Pitch: 0.45 + Yaw: 0.80 + Near Clip Distance: 0.005 + Target Frame: + Focal Point: + X: 0.08 + Y: 0 + Z: 0.13 + Saved: ~ +Window Geometry: + Width: 1440 + Height: 960 + X: 40 + Y: 40 + Hide Left Dock: false + Hide Right Dock: false \ No newline at end of file diff --git a/waybionic_bringup/test/test_old_arm_launch.py b/waybionic_bringup/test/test_old_arm_launch.py new file mode 100644 index 0000000..37d7f3f --- /dev/null +++ b/waybionic_bringup/test/test_old_arm_launch.py @@ -0,0 +1,218 @@ +"""Check the handoff model and its live JointState-to-TF path without hardware.""" + +import math +import os +from pathlib import Path +import struct +import subprocess +import time +import unittest +import uuid +import xml.etree.ElementTree as ET + +from ament_index_python.packages import get_package_share_directory +import launch +from launch.actions import IncludeLaunchDescription +from launch.launch_description_sources import PythonLaunchDescriptionSource +import launch_testing +import launch_testing.actions +import pytest +import rclpy +from rclpy.time import Time +from sensor_msgs.msg import JointState +from tf2_ros import Buffer, TransformListener + + +JOINT_NAMES = [ + 'old_arm_base_yaw_joint', + 'old_arm_shoulder_pitch_joint', + 'old_arm_elbow_pitch_joint', + 'old_arm_wrist_roll_joint', +] + + +def expand_model(*mappings): + """Expand the installed model, including any calibration overrides.""" + source = os.path.join( + get_package_share_directory('waybionic_description'), + 'urdf', 'waybionic_old_arm.urdf.xacro') + result = subprocess.run( + ['xacro', source, *mappings], check=True, capture_output=True, text=True) + return ET.fromstring(result.stdout) + + +def expected_wrist_position(positions): + """Evaluate the handoff's independent forward-kinematics equations.""" + base, shoulder, elbow, _ = positions + radial = 0.025 + 0.120 * math.cos(shoulder) + 0.050 * math.cos(shoulder + elbow) + height = 0.070 + 0.120 * math.sin(shoulder) + 0.050 * math.sin(shoulder + elbow) + return radial * math.cos(base), radial * math.sin(base), height + + +@pytest.mark.launch_test +def generate_test_description(): + """Launch only the old-arm state publisher on a unique input topic.""" + bringup = get_package_share_directory('waybionic_bringup') + topic = '/old_arm_test_' + uuid.uuid4().hex + '/joint_states' + station = IncludeLaunchDescription( + PythonLaunchDescriptionSource(os.path.join(bringup, 'launch', 'old_arm.launch.py')), + launch_arguments={ + 'launch_rviz': 'false', + 'use_joint_state_publisher_gui': 'false', + 'joint_states_topic': topic, + }.items(), + ) + return launch.LaunchDescription([ + station, launch_testing.actions.ReadyToTest(), + ]), {'joint_states_topic': topic} + + +class TestOldArmDescription(unittest.TestCase): + """Protect handoff calibration and visualization-only model boundaries.""" + + def test_joint_contract_and_limits(self): + """Keep four named joints with handoff software ranges in radians.""" + robot = expand_model() + joints = [joint for joint in robot.findall('joint') if joint.get('type') != 'fixed'] + self.assertEqual([joint.get('name') for joint in joints], JOINT_NAMES) + expected_ranges = [(-33.5, 236.5), (0.0, 112.5), (-61.5, 118.5), (-27.5, 242.5)] + for joint, expected in zip(joints, expected_ranges): + self.assertEqual(joint.get('type'), 'revolute') + limits = joint.find('limit') + for key, degrees in zip(('lower', 'upper'), expected): + self.assertAlmostEqual(float(limits.get(key)), math.radians(degrees)) + self.assertEqual(float(limits.get('effort')), 0.0) + self.assertEqual(float(limits.get('velocity')), 0.0) + self.assertEqual(joints[0].find('axis').get('xyz'), '0 0 1') + self.assertEqual(joints[1].find('axis').get('xyz'), '0 -1 0') + self.assertEqual(joints[2].find('axis').get('xyz'), '0 -1 0') + self.assertEqual(joints[3].find('axis').get('xyz'), '1 0 0') + self.assertFalse(robot.findall('.//inertial')) + self.assertFalse(robot.findall('.//collision')) + self.assertFalse(robot.findall('.//transmission')) + self.assertFalse(robot.findall('.//ros2_control')) + for link in robot.findall('link'): + materials = {visual.find('material').get('name') for visual in link.findall('visual')} + self.assertLessEqual(len(materials), 1, 'RViz requires separate color groups per link') + + def test_geometry_and_calibration_overrides(self): + """Allow remeasured lengths and direction signs without changing meshes.""" + robot = expand_model('upper_arm_length:=0.130', 'base_direction:=-1') + joints = {joint.get('name'): joint for joint in robot.findall('joint')} + self.assertEqual( + [float(value) for value in + joints['old_arm_elbow_pitch_joint'].find('origin').get('xyz').split()], + [0.130, 0.0, 0.0]) + limits = joints['old_arm_base_yaw_joint'].find('limit') + self.assertAlmostEqual(float(limits.get('lower')), math.radians(-236.5)) + self.assertAlmostEqual(float(limits.get('upper')), math.radians(33.5)) + for box in robot.findall('.//box'): + self.assertTrue(all(float(value) > 0 for value in box.get('size').split())) + for cylinder in robot.findall('.//cylinder'): + self.assertGreater(float(cylinder.get('radius')), 0) + self.assertGreater(float(cylinder.get('length')), 0) + upper_meshes = robot.findall("link[@name='old_arm_upper_arm']/visual/geometry/mesh") + self.assertEqual(len(upper_meshes), 2) + for mesh in upper_meshes: + self.assertAlmostEqual(float(mesh.get('scale').split()[0]), 0.130 / 0.120) + + def test_installed_video_meshes(self): + """Require the six finite, meter-scale STL resources in the installed package.""" + robot = expand_model() + directory = Path(get_package_share_directory('waybionic_description')) + filenames = set() + for mesh in robot.findall('.//mesh'): + filename = mesh.get('filename') + prefix = 'package://waybionic_description/' + self.assertTrue(filename.startswith(prefix)) + target = directory / filename.removeprefix(prefix) + content = target.read_bytes() + triangle_count = struct.unpack_from(' 0 for value in mesh.get('scale').split())) + filenames.add(target.name) + self.assertEqual(filenames, { + 'base_plate.stl', 'shoulder_motor_plate.stl', 'shoulder_back_plate.stl', + 'upper_arm_plate.stl', 'wrist_housing.stl', 'wrist_cage.stl', + }) + + def test_distal_servos_remain_visual_only(self): + """Represent the additional wrist hardware without inventing control joints.""" + robot = expand_model() + for name in ('old_arm_distal_left_servo_mount', 'old_arm_distal_right_servo_mount'): + joint = robot.find(f"joint[@name='{name}']") + self.assertIsNotNone(joint) + self.assertEqual(joint.get('type'), 'fixed') + self.assertEqual(joint.find('parent').get('link'), 'old_arm_wrist_roll') + + +class TestOldArmTransforms(unittest.TestCase): + """Verify live input reaches the intended model and moves its wrist frame.""" + + def test_joint_states_drive_calibrated_transforms(self, joint_states_topic): + """Match zero, yaw, shoulder, elbow, combined and roll poses to the handoff.""" + rclpy.init() + node = rclpy.create_node('old_arm_transform_test_' + uuid.uuid4().hex) + buffer = Buffer() + listener = TransformListener(buffer, node) + publisher = node.create_publisher(JointState, joint_states_topic, 10) + try: + poses = [ + (0.0, 0.0, 0.0, 0.0), + (math.pi / 2, 0.0, 0.0, 0.0), + (0.0, math.pi / 2, 0.0, 0.0), + (0.0, 0.0, math.pi / 3, 0.0), + (math.pi / 4, math.pi / 4, -math.pi / 4, 0.0), + (0.0, 0.0, 0.0, math.pi / 2), + ] + for positions in poses: + expected = expected_wrist_position(positions) + first_stamp = node.get_clock().now().nanoseconds + deadline = time.monotonic() + 8.0 + matched = False + while time.monotonic() < deadline: + message = JointState() + message.header.stamp = node.get_clock().now().to_msg() + message.name = JOINT_NAMES + message.position = list(positions) + publisher.publish(message) + rclpy.spin_once(node, timeout_sec=0.05) + if not buffer.can_transform('old_arm_base_link', 'old_arm_tool_frame', Time()): + continue + transform = buffer.lookup_transform( + 'old_arm_base_link', 'old_arm_tool_frame', Time()) + stamp = transform.header.stamp + if stamp.sec * 1000000000 + stamp.nanosec < first_stamp: + continue + translation = transform.transform.translation + actual = (translation.x, translation.y, translation.z) + if not all(math.isclose(value, target, abs_tol=1e-6) + for value, target in zip(actual, expected)): + continue + if positions[3] != 0.0: + rotation = transform.transform.rotation + aligned = abs((rotation.x + rotation.w) / math.sqrt(2)) + if not math.isclose(aligned, 1.0, abs_tol=1e-6): + continue + matched = True + break + self.assertTrue(matched, f'No matching current transform for pose {positions}') + self.assertEqual(node.count_publishers(joint_states_topic), 1) + self.assertGreater(publisher.get_subscription_count(), 0) + finally: + listener.unregister() + node.destroy_node() + rclpy.shutdown() + + +@launch_testing.post_shutdown_test() +class TestOldArmShutdown(unittest.TestCase): + """Require a clean state-publisher shutdown.""" + + def test_exit_codes(self, proc_info): + """Reject unexpected child process failures.""" + launch_testing.asserts.assertExitCodes(proc_info, allowable_exit_codes=[0, -2]) diff --git a/waybionic_description/meshes/old_arm/base_plate.stl b/waybionic_description/meshes/old_arm/base_plate.stl new file mode 100644 index 0000000000000000000000000000000000000000..6443ee7aaa8beef579cb1029ccc28847a1cb50ab GIT binary patch literal 86484 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 z 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 Nh@|Sb^-)cd{{ax>K?48) literal 0 HcmV?d00001 diff --git a/waybionic_description/meshes/old_arm/upper_arm_plate.stl b/waybionic_description/meshes/old_arm/upper_arm_plate.stl new file mode 100644 index 0000000000000000000000000000000000000000..687b5c6b5e3ec9f9f0d737b904bd88c9b4972c7f GIT binary patch literal 502884 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%0A#aqs<}YQ0 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

ipZu&%nHa?3pA@$!vQ(M!V0EzGFOMC?VccGjuw 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%0AnUZ^g95M?!2_%)~{%Ov!c+ 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 acEy^c&<)GV#&DL@s3v!}cGKHbWcz=}rm=+p literal 0 HcmV?d00001 diff --git a/waybionic_description/urdf/waybionic_old_arm.expanded.urdf b/waybionic_description/urdf/waybionic_old_arm.expanded.urdf new file mode 100644 index 0000000..d82af3d --- /dev/null +++ b/waybionic_description/urdf/waybionic_old_arm.expanded.urdf @@ -0,0 +1,518 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/waybionic_description/urdf/waybionic_old_arm.urdf.xacro b/waybionic_description/urdf/waybionic_old_arm.urdf.xacro new file mode 100644 index 0000000..ccce14a --- /dev/null +++ b/waybionic_description/urdf/waybionic_old_arm.urdf.xacro @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/waybionic_hardware/test/test_arduino_bridge.py b/waybionic_hardware/test/test_arduino_bridge.py index 746a94f..99f0180 100644 --- a/waybionic_hardware/test/test_arduino_bridge.py +++ b/waybionic_hardware/test/test_arduino_bridge.py @@ -13,6 +13,17 @@ def test_import(self): except ImportError: self.fail("Failed to import arduino_bridge") + def test_joint_names_match_old_arm_model(self): + """Joint states target the imported old-arm URDF joints.""" + from waybionic_hardware.arduino_bridge import JOINT_NAMES + + self.assertEqual(JOINT_NAMES, [ + 'old_arm_base_yaw_joint', + 'old_arm_shoulder_pitch_joint', + 'old_arm_elbow_pitch_joint', + 'old_arm_wrist_roll_joint', + ]) + if __name__ == '__main__': unittest.main() diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py index c80814c..1c9fe19 100644 --- a/waybionic_hardware/waybionic_hardware/arduino_bridge.py +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -9,7 +9,12 @@ from std_msgs.msg import String -JOINT_NAMES = ['base_yaw', 'shoulder', 'elbow', 'wrist_roll'] +JOINT_NAMES = [ + 'old_arm_base_yaw_joint', + 'old_arm_shoulder_pitch_joint', + 'old_arm_elbow_pitch_joint', + 'old_arm_wrist_roll_joint', +] HOME_PHYSICAL_DEGREES = [33.5, 112.5, 151.5, 27.5] SERVO_DIRECTIONS = [1.0, -1.0, 1.0, 1.0] PHYSICAL_LIMITS = [(0.0, 270.0), (0.0, 112.5), (90.0, 270.0), (0.0, 270.0)] diff --git a/waybionic_motion_test/test/test_motion_test.py b/waybionic_motion_test/test/test_motion_test.py index 10ab3f3..f2afc80 100644 --- a/waybionic_motion_test/test/test_motion_test.py +++ b/waybionic_motion_test/test/test_motion_test.py @@ -13,6 +13,17 @@ def test_import(self): except ImportError: self.fail("Failed to import motion_test") + def test_joint_names_match_old_arm_model(self): + """Joint states target the imported old-arm URDF joints.""" + from waybionic_motion_test.motion_test import JOINT_NAMES + + self.assertEqual(JOINT_NAMES, [ + 'old_arm_base_yaw_joint', + 'old_arm_shoulder_pitch_joint', + 'old_arm_elbow_pitch_joint', + 'old_arm_wrist_roll_joint', + ]) + if __name__ == '__main__': unittest.main() diff --git a/waybionic_motion_test/waybionic_motion_test/motion_test.py b/waybionic_motion_test/waybionic_motion_test/motion_test.py index 42ef972..d1f2620 100644 --- a/waybionic_motion_test/waybionic_motion_test/motion_test.py +++ b/waybionic_motion_test/waybionic_motion_test/motion_test.py @@ -6,7 +6,12 @@ from std_msgs.msg import String -JOINT_NAMES = ['base_yaw', 'shoulder', 'elbow', 'wrist_roll'] +JOINT_NAMES = [ + 'old_arm_base_yaw_joint', + 'old_arm_shoulder_pitch_joint', + 'old_arm_elbow_pitch_joint', + 'old_arm_wrist_roll_joint', +] JOINT_COUNT = len(JOINT_NAMES) HOME_PHYSICAL_DEGREES = [33.5, 112.5, 151.5, 27.5] SERVO_DIRECTIONS = [1.0, -1.0, 1.0, 1.0] From ad23074e3aa9008394fc218e58dd1dfb86c90d33 Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 12 Sep 2026 14:45:57 -0600 Subject: [PATCH 08/21] new arm model in rviz --- waybionic_bringup/rviz/waybionic_unified.rviz | 62 ++++++++++++++----- .../src/diagnostics_panel.cpp | 5 +- 2 files changed, 51 insertions(+), 16 deletions(-) diff --git a/waybionic_bringup/rviz/waybionic_unified.rviz b/waybionic_bringup/rviz/waybionic_unified.rviz index 21634f2..a127180 100644 --- a/waybionic_bringup/rviz/waybionic_unified.rviz +++ b/waybionic_bringup/rviz/waybionic_unified.rviz @@ -73,12 +73,32 @@ Visualization Manager: Expand Link Details: false Expand Tree: false Link Tree Style: Links in Alphabetic Order - arm_link: + base_link: Alpha: 1 Show Axes: false Show Trail: false Value: true - base_link: + base_rotation_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + end_effector: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + forearm_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + upper_arm_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + wrist_link: Alpha: 1 Show Axes: false Show Trail: false @@ -98,19 +118,31 @@ Visualization Manager: Frame Timeout: 15 Frames: All Enabled: true - arm_link: - Value: true base_link: Value: true - Marker Scale: 0.30000001192092896 + base_rotation_link: + Value: true + end_effector: + Value: true + forearm_link: + Value: true + upper_arm_link: + Value: true + wrist_link: + Value: true + Marker Scale: 1 Name: TF Show Arrows: true Show Axes: true Show Names: false Tree: base_link: - arm_link: - {} + base_rotation_link: + upper_arm_link: + forearm_link: + wrist_link: + end_effector: + {} Update Interval: 0 Value: true Enabled: true @@ -174,20 +206,22 @@ Visualization Manager: Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 - Pitch: 0.785398006439209 + Pitch: 0.3753979504108429 Target Frame: Value: Orbit (rviz) - Yaw: 0.785398006439209 + Yaw: 1.030397653579712 Saved: ~ Window Geometry: DiagnosticsPanel: collapsed: false Displays: collapsed: false - Height: 2055 + Height: 1243 Hide Left Dock: false Hide Right Dock: false - QMainWindow State: 000000ff00000000fd0000000400000000000001a400000774fc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b000000c7000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000200044006900610067006e006f0073007400690063007300500061006e0065006c0100000108000002330000023400fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c0100000341000002340000023400fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000057b000002340000023400ffffff000000010000010f00000774fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003b00000774000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000002ea00000037fc0100000002fb0000000800540069006d00650100000000000002ea0000025300fffffffb0000000800540069006d006501000000000000045000000000000000000000002b0000077500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + MotionTestPanel: + collapsed: false + QMainWindow State: 000000ff00000000fd00000004000000000000024700000448fc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b000000c7000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000200044006900610067006e006f0073007400690063007300500061006e0065006c01000001080000037b0000035100fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c0100000341000002340000000000000000fb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000057b000002340000000000000000000000010000016800000448fc0200000004fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c010000003b000000dc000000cc00fffffffb0000000a00560069006500770073010000011d00000366000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000077400000037fc0100000002fb0000000800540069006d00650100000000000007740000025300fffffffb0000000800540069006d00650100000000000004500000000000000000000003b90000044800000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -196,6 +230,6 @@ Window Geometry: collapsed: false Views: collapsed: false - Width: 746 - X: 57 - Y: 4 + Width: 1908 + X: -29 + Y: -33 diff --git a/waybionic_rviz_plugins/src/diagnostics_panel.cpp b/waybionic_rviz_plugins/src/diagnostics_panel.cpp index 0388279..9b92ad7 100644 --- a/waybionic_rviz_plugins/src/diagnostics_panel.cpp +++ b/waybionic_rviz_plugins/src/diagnostics_panel.cpp @@ -284,8 +284,9 @@ void DiagnosticsPanel::buildUi() alerts_layout_ = new QVBoxLayout(); alerts_layout_->setSpacing(6); alerts_root->addLayout(alerts_layout_); - alerts_root->addStretch(1); - root_layout->addWidget(alerts_card, 1); + alerts_card->setMaximumHeight(180); + alerts_card->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + root_layout->addWidget(alerts_card); buildMovementTestUi(root_layout); } From 676f2e9d19b0e97e5f47be6d3c3486fca1360896 Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sun, 13 Sep 2026 18:13:57 -0600 Subject: [PATCH 09/21] Harden Arduino motion safety and status reporting --- cpsc. | 0 .../test/test_arduino_bridge.py | 118 ++++++++++++++++++ .../waybionic_hardware/arduino_bridge.py | 102 ++++++++++++--- .../test/test_motion_test.py | 27 ++++ .../waybionic_motion_test/motion_test.py | 18 ++- .../motion_test_panel.hpp | 3 + .../src/motion_test_panel.cpp | 26 ++++ 7 files changed, 277 insertions(+), 17 deletions(-) delete mode 100644 cpsc. diff --git a/cpsc. b/cpsc. deleted file mode 100644 index e69de29..0000000 diff --git a/waybionic_hardware/test/test_arduino_bridge.py b/waybionic_hardware/test/test_arduino_bridge.py index 99f0180..9533d54 100644 --- a/waybionic_hardware/test/test_arduino_bridge.py +++ b/waybionic_hardware/test/test_arduino_bridge.py @@ -1,5 +1,6 @@ """Minimal tests for Arduino bridge module.""" import unittest +from types import SimpleNamespace class TestArduinoBridge(unittest.TestCase): @@ -24,6 +25,123 @@ def test_joint_names_match_old_arm_model(self): 'old_arm_wrist_roll_joint', ]) + def make_bridge(self): + from waybionic_hardware.arduino_bridge import ArduinoBridge + + bridge = ArduinoBridge.__new__(ArduinoBridge) + bridge.serial_port = SimpleNamespace(writes=[]) + bridge.serial_port.write = lambda data: bridge.serial_port.writes.append(data) + bridge.serial_lock = __import__('threading').Lock() + bridge.dry_run = False + bridge.connected = True + bridge.ready = True + bridge.faulted = False + bridge.motion_active = True + bridge.sequence_active = True + bridge.last_error = '' + bridge.last_status = 'moving' + bridge.get_logger = lambda: SimpleNamespace(debug=lambda message: None) + return bridge + + def test_error_latches_fault_and_stops_motion(self): + bridge = self.make_bridge() + + bridge.process_serial_line('ERROR,OVER_CURRENT') + + self.assertFalse(bridge.connected) + self.assertFalse(bridge.ready) + self.assertTrue(bridge.faulted) + self.assertFalse(bridge.motion_active) + self.assertFalse(bridge.sequence_active) + self.assertEqual(bridge.serial_port.writes, [b'HOLD\n']) + + def test_malformed_response_latches_fault_and_stops_motion(self): + bridge = self.make_bridge() + + bridge.process_serial_line('garbled response') + + self.assertEqual(bridge.last_status, 'malformed-response') + self.assertTrue(bridge.faulted) + self.assertFalse(bridge.motion_active) + self.assertEqual(bridge.serial_port.writes, [b'HOLD\n']) + + def test_read_failure_freezes_motion_and_requests_hold(self): + bridge = self.make_bridge() + + bridge._latch_fault('serial-read-failed', 'read failed') + + self.assertFalse(bridge.connected) + self.assertFalse(bridge.motion_active) + self.assertFalse(bridge.sequence_active) + self.assertEqual(bridge.serial_port.writes, [b'HOLD\n']) + + def test_response_watchdog_latches_fault(self): + from waybionic_hardware.arduino_bridge import RESPONSE_TIMEOUT_SECONDS + + bridge = self.make_bridge() + bridge.last_response_monotonic = __import__('time').monotonic() - ( + RESPONSE_TIMEOUT_SECONDS + 1.0) + bridge.current = [0.0, 0.0, 0.0, 0.0] + bridge.get_clock = lambda: SimpleNamespace( + now=lambda: SimpleNamespace(to_msg=lambda: None)) + bridge.joint_publisher = SimpleNamespace(publish=lambda message: None) + + bridge.publish_estimated_state() + + self.assertTrue(bridge.faulted) + self.assertEqual(bridge.last_status, 'serial-read-failed') + self.assertEqual(bridge.serial_port.writes, [b'HOLD\n']) + + def test_fault_is_reported_as_diagnostic_error(self): + from diagnostic_msgs.msg import DiagnosticStatus + + bridge = self.make_bridge() + bridge.faulted = True + bridge.last_status = 'arduino-error' + bridge.diagnostics_publisher = SimpleNamespace(publish=lambda message: setattr(bridge, 'diagnostic', message)) + bridge.status_publisher = SimpleNamespace(publish=lambda message: setattr(bridge, 'motion_status', message)) + bridge.port = '/dev/fake' + bridge.baud = 115200 + bridge.get_clock = lambda: SimpleNamespace( + now=lambda: SimpleNamespace(to_msg=lambda: None)) + + bridge.publish_diagnostics() + + self.assertEqual(bridge.diagnostic.status[0].level, DiagnosticStatus.ERROR) + + def test_shutdown_requests_hold_before_closing_port(self): + import rclpy + from unittest.mock import patch + from waybionic_hardware.arduino_bridge import ArduinoBridge + + class FakePort: + def __init__(self): + self.writes = [] + self.closed = False + + def write(self, data): + self.writes.append(data) + + def close(self): + self.closed = True + + rclpy.init() + try: + with patch.object(ArduinoBridge, 'connect_to_arduino'): + bridge = ArduinoBridge() + bridge.serial_port = FakePort() + bridge.connected = True + bridge.motion_active = True + bridge.serial_reader = None + + bridge.destroy_node() + + self.assertEqual(bridge.serial_port.writes, [b'HOLD\n']) + self.assertTrue(bridge.serial_port.closed) + finally: + if rclpy.ok(): + rclpy.shutdown() + if __name__ == '__main__': unittest.main() diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py index 1c9fe19..2eb69ef 100644 --- a/waybionic_hardware/waybionic_hardware/arduino_bridge.py +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -24,6 +24,15 @@ [15.0, 100.0, 130.0, 5.0], HOME_PHYSICAL_DEGREES, ] +RESPONSE_TIMEOUT_SECONDS = 1.0 +FAULT_STATUSES = { + 'arduino-error', + 'connection-failed', + 'serial-read-failed', + 'serial-write-failed', + 'malformed-response', + 'target-rejected', +} def model_radians_from_physical(degrees): @@ -55,6 +64,8 @@ def __init__(self): self.joint_publisher = self.create_publisher(JointState, '/joint_states', 10) self.diagnostics_publisher = self.create_publisher( DiagnosticArray, '/diagnostics', 10) + self.status_publisher = self.create_publisher( + String, '/old_arm_motion_test/status', 10) self.command_subscription = self.create_subscription( String, '/old_arm_motion_test/command', self.handle_command, 10) @@ -63,8 +74,11 @@ def __init__(self): self.serial_reader = None self.serial_stop = threading.Event() self.connected = False + self.ready = False + self.faulted = False self.last_status = 'starting' self.last_error = '' + self.last_response_monotonic = None self.current = list(HOME_PHYSICAL_DEGREES) self.start = list(self.current) self.target = list(self.current) @@ -82,6 +96,8 @@ def __init__(self): def connect_to_arduino(self): if self.dry_run: self.connected = True + self.ready = True + self.last_response_monotonic = time.monotonic() self.last_status = 'dry-run' self.get_logger().warn('Running in dry-run mode; no Arduino commands will be sent.') return @@ -97,6 +113,8 @@ def connect_to_arduino(self): self.serial_port = serial.Serial(self.port, self.baud, timeout=0.1) self.connected = True + self.ready = False + self.last_response_monotonic = time.monotonic() self.last_status = 'connected' self.serial_reader = threading.Thread(target=self.read_serial, daemon=True) self.serial_reader.start() @@ -112,23 +130,44 @@ def read_serial(self): try: line = self.serial_port.readline().decode('ascii', errors='replace').strip() if line: + self.last_response_monotonic = time.monotonic() self.process_serial_line(line) except Exception as error: - self.connected = False - self.last_error = str(error) - self.last_status = 'serial-read-failed' + self._latch_fault('serial-read-failed', str(error)) return + def _write_hold(self): + if self.dry_run or self.serial_port is None: + return True + try: + with self.serial_lock: + self.serial_port.write(b'HOLD\n') + return True + except Exception as error: + self.last_error = str(error) + return False + + def _latch_fault(self, status, error): + self._write_hold() + self.motion_active = False + self.sequence_active = False + self.faulted = True + self.connected = False + self.ready = False + self.last_error = error + self.last_status = status + def process_serial_line(self, line): self.get_logger().debug(f'Arduino: {line}') if line.startswith('READY,IK4,1'): + self.connected = True + self.ready = True + self.faulted = False + self.last_error = '' self.last_status = 'ready' return if line.startswith('ERROR,'): - self.motion_active = False - self.sequence_active = False - self.last_error = line[6:] - self.last_status = 'arduino-error' + self._latch_fault('arduino-error', line[6:]) return if line == 'OK,ARRIVED': self.current = list(self.target) @@ -148,6 +187,9 @@ def process_serial_line(self, line): self.motion_active = False self.sequence_active = False self.last_status = 'held' + return + + self._latch_fault('malformed-response', f'Unexpected response: {line}') def send_line(self, line): if self.dry_run: @@ -161,15 +203,13 @@ def send_line(self, line): self.serial_port.write((line + '\n').encode('ascii')) return True except Exception as error: - self.connected = False - self.last_error = str(error) - self.last_status = 'serial-write-failed' + self._latch_fault('serial-write-failed', str(error)) return False def handle_command(self, message): command = message.data.strip().upper() if command == 'RUN': - if not self.connected: + if not self.connected or not self.ready or self.faulted: self.last_status = 'run-rejected-not-connected' return self.sequence_index = 0 @@ -193,10 +233,8 @@ def send_move(self, target): value < lower or value > upper for value, (lower, upper) in zip(target, PHYSICAL_LIMITS) ): - self.last_error = 'Target exceeds Arduino software limits.' - self.last_status = 'target-rejected' - self.motion_active = False - self.sequence_active = False + self._latch_fault( + 'target-rejected', 'Target exceeds Arduino software limits.') return self.start = list(self.current) @@ -210,6 +248,14 @@ def send_move(self, target): self.last_status = 'move-requested' def publish_estimated_state(self): + if ( + not self.dry_run and self.connected and + self.last_response_monotonic is not None and + time.monotonic() - self.last_response_monotonic > RESPONSE_TIMEOUT_SECONDS + ): + self._latch_fault( + 'serial-read-failed', 'Arduino response watchdog timed out.') + if self.motion_active: progress = min( (time.monotonic() - self.motion_started) / self.motion_duration, @@ -233,7 +279,11 @@ def publish_estimated_state(self): def publish_diagnostics(self): status = DiagnosticStatus() status.name = 'waybionic_arduino_bridge' - status.level = DiagnosticStatus.OK if self.connected else DiagnosticStatus.ERROR + status.level = ( + DiagnosticStatus.ERROR + if self.faulted or not self.connected or self.last_status in FAULT_STATUSES + else DiagnosticStatus.OK + ) status.message = self.last_status status.values = [ KeyValue(key='port', value=self.port or 'not configured'), @@ -246,8 +296,28 @@ def publish_diagnostics(self): message.status = [status] self.diagnostics_publisher.publish(message) + if self.faulted or status.level == DiagnosticStatus.ERROR: + motion_status = 'FAULT' + elif self.motion_active: + motion_status = 'RUNNING' + elif self.last_status == 'arrived': + motion_status = 'COMPLETE' + elif self.last_status == 'held': + motion_status = 'STOPPED' + else: + motion_status = 'READY' + status_message = String() + status_message.data = motion_status + self.status_publisher.publish(status_message) + def destroy_node(self): + if self.motion_active and (self.connected or self.serial_port is not None): + self._write_hold() + self.motion_active = False + self.sequence_active = False self.serial_stop.set() + if self.serial_reader is not None and self.serial_reader.is_alive(): + self.serial_reader.join(timeout=0.5) if self.serial_port is not None: try: self.serial_port.close() diff --git a/waybionic_motion_test/test/test_motion_test.py b/waybionic_motion_test/test/test_motion_test.py index f2afc80..12d53b3 100644 --- a/waybionic_motion_test/test/test_motion_test.py +++ b/waybionic_motion_test/test/test_motion_test.py @@ -1,5 +1,6 @@ """Minimal tests for motion test module.""" import unittest +from types import SimpleNamespace class TestMotionTest(unittest.TestCase): @@ -24,6 +25,32 @@ def test_joint_names_match_old_arm_model(self): 'old_arm_wrist_roll_joint', ]) + def test_home_does_not_advance_into_sequence(self): + from std_msgs.msg import String + from waybionic_motion_test.motion_test import MotionTestNode + + node = MotionTestNode.__new__(MotionTestNode) + node.home = [0.0, 0.0, 0.0, 0.0] + node.current = list(node.home) + node.start = list(node.home) + node.target = list(node.home) + node.sequence = [[1.0, 1.0, 1.0, 1.0], [2.0, 2.0, 2.0, 2.0]] + node.sequence_index = 0 + node.sequence_playback = False + node.segment_duration = 1.0 + node.segment_elapsed = 0.0 + node.segment_active = False + node.publish_joint_state = lambda: None + node.status_publisher = SimpleNamespace(publish=lambda message: None) + + node.handle_command(String(data='HOME')) + node.segment_elapsed = node.segment_duration + node.update_trajectory() + + self.assertFalse(node.segment_active) + self.assertEqual(node.current, node.home) + self.assertEqual(node.sequence_index, 0) + if __name__ == '__main__': unittest.main() diff --git a/waybionic_motion_test/waybionic_motion_test/motion_test.py b/waybionic_motion_test/waybionic_motion_test/motion_test.py index d1f2620..390c901 100644 --- a/waybionic_motion_test/waybionic_motion_test/motion_test.py +++ b/waybionic_motion_test/waybionic_motion_test/motion_test.py @@ -39,6 +39,8 @@ def __init__(self): '/joint_states', 10, ) + self.status_publisher = self.create_publisher( + String, '/old_arm_motion_test/status', 10) self.command_subscription = self.create_subscription( String, '/old_arm_motion_test/command', @@ -63,8 +65,10 @@ def __init__(self): self.home, ] self.sequence_index = 0 + self.sequence_playback = False self.timer = self.create_timer(0.02, self.update_trajectory) self.publish_joint_state() + self.publish_status('READY') self.get_logger().info( 'Old-arm 4-DOF motion test started; publishing simulated commanded positions.') @@ -73,13 +77,19 @@ def handle_command(self, message): command = message.data.strip().upper() if command == 'RUN': self.sequence_index = 0 + self.sequence_playback = True self.start_segment(self.sequence[self.sequence_index]) + self.publish_status('RUNNING') elif command == 'HOME': + self.sequence_playback = False self.start_segment(self.home) + self.publish_status('HOME') elif command == 'STOP': + self.sequence_playback = False self.segment_active = False self.target = list(self.current) self.publish_joint_state() + self.publish_status('STOPPED') def start_segment(self, target): self.start = list(self.current) @@ -102,11 +112,17 @@ def update_trajectory(self): if progress >= 1.0: self.current = list(self.target) - if self.sequence_index < len(self.sequence) - 1: + if self.sequence_playback and self.sequence_index < len(self.sequence) - 1: self.sequence_index += 1 self.start_segment(self.sequence[self.sequence_index]) else: self.segment_active = False + self.publish_status('COMPLETE') + + def publish_status(self, status): + message = String() + message.data = status + self.status_publisher.publish(message) def publish_joint_state(self): message = JointState() diff --git a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp index 4f1ef13..0cabf1d 100644 --- a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp +++ b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -34,6 +35,7 @@ class MotionTestPanel : public rviz_common::Panel void stopTest(); void publishCommand(const std::string & command); + void handleStatus(const std_msgs::msg::String::SharedPtr message); QPushButton * run_button_{nullptr}; QPushButton * home_button_{nullptr}; @@ -45,6 +47,7 @@ class MotionTestPanel : public rviz_common::Panel rclcpp::Node::SharedPtr ros_node_; rclcpp::Publisher::SharedPtr command_publisher_; + rclcpp::Subscription::SharedPtr status_subscription_; bool test_running_{false}; }; diff --git a/waybionic_rviz_plugins/src/motion_test_panel.cpp b/waybionic_rviz_plugins/src/motion_test_panel.cpp index daf9b9e..419b611 100644 --- a/waybionic_rviz_plugins/src/motion_test_panel.cpp +++ b/waybionic_rviz_plugins/src/motion_test_panel.cpp @@ -1,6 +1,7 @@ #include "waybionic_rviz_plugins/motion_test_panel.hpp" #include +#include #include #include @@ -24,6 +25,9 @@ void MotionTestPanel::onInitialize() command_publisher_ = ros_node_->create_publisher( "/old_arm_motion_test/command", rclcpp::QoS(10)); + status_subscription_ = ros_node_->create_subscription( + "/old_arm_motion_test/status", rclcpp::QoS(10), + [this](const std_msgs::msg::String::SharedPtr message) { handleStatus(message); }); } void MotionTestPanel::buildUi() { @@ -135,6 +139,28 @@ void MotionTestPanel::publishCommand(const std::string & command) command_publisher_->publish(message); } +void MotionTestPanel::handleStatus(const std_msgs::msg::String::SharedPtr message) +{ + const QString status = QString::fromStdString(message->data); + QMetaObject::invokeMethod(this, [this, status]() { + if (status == "COMPLETE" || status == "READY") { + test_running_ = false; + status_label_->setText("READY"); + result_label_->setText(status == "COMPLETE" ? "Motion sequence complete." : "Ready."); + run_button_->setEnabled(true); + home_button_->setEnabled(true); + stop_button_->setEnabled(false); + } else if (status == "STOPPED" || status == "FAULT" || status == "ERROR") { + test_running_ = false; + status_label_->setText(status); + result_label_->setText("Motion unavailable or stopped."); + run_button_->setEnabled(status == "STOPPED"); + home_button_->setEnabled(status == "STOPPED"); + stop_button_->setEnabled(false); + } + }, Qt::QueuedConnection); +} + } // namespace waybionic_rviz_plugins PLUGINLIB_EXPORT_CLASS( From a6d3ab5c5e237e77fcad42bb79893e14338ba13d Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 19 Sep 2026 10:53:18 -0600 Subject: [PATCH 10/21] Small tweaks to code --- .vscode/c_cpp_properties.json | 5 +- .../src/motion_test_panel.cpp | 218 +++++++++--------- 2 files changed, 112 insertions(+), 111 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 1c6f2d8..8986edc 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -11,9 +11,10 @@ ], "name": "ROS", "intelliSenseMode": "gcc-x64", - "compilerPath": "/usr/bin/gcc", + "compilerPath": "/usr/bin/c++", "cStandard": "gnu11", - "cppStandard": "c++14" + "cppStandard": "c++17", + "compileCommands": "${workspaceFolder}/build/waybionic_rviz_plugins/compile_commands.json" } ], "version": 4 diff --git a/waybionic_rviz_plugins/src/motion_test_panel.cpp b/waybionic_rviz_plugins/src/motion_test_panel.cpp index 419b611..52f7d30 100644 --- a/waybionic_rviz_plugins/src/motion_test_panel.cpp +++ b/waybionic_rviz_plugins/src/motion_test_panel.cpp @@ -9,140 +9,141 @@ namespace waybionic_rviz_plugins { -MotionTestPanel::MotionTestPanel(QWidget * parent) -: rviz_common::Panel(parent) -{ - buildUi(); -} + MotionTestPanel::MotionTestPanel(QWidget *parent) + : rviz_common::Panel(parent) + { + buildUi(); + } -MotionTestPanel::~MotionTestPanel() -{ -} + MotionTestPanel::~MotionTestPanel() + { + } -void MotionTestPanel::onInitialize() -{ - ros_node_ = std::make_shared("waybionic_motion_test_panel"); - - command_publisher_ = ros_node_->create_publisher( - "/old_arm_motion_test/command", rclcpp::QoS(10)); - status_subscription_ = ros_node_->create_subscription( - "/old_arm_motion_test/status", rclcpp::QoS(10), - [this](const std_msgs::msg::String::SharedPtr message) { handleStatus(message); }); -} -void MotionTestPanel::buildUi() -{ - setMinimumWidth(360); + void MotionTestPanel::onInitialize() + { + ros_node_ = std::make_shared("waybionic_motion_test_panel"); - auto * layout = new QVBoxLayout(this); + command_publisher_ = ros_node_->create_publisher( + "/old_arm_motion_test/command", rclcpp::QoS(10)); + status_subscription_ = ros_node_->create_subscription( + "/old_arm_motion_test/status", rclcpp::QoS(10), + [this](const std_msgs::msg::String::SharedPtr message) + { handleStatus(message); }); + } + void MotionTestPanel::buildUi() + { + setMinimumWidth(360); - auto * title = new QLabel("Old Arm Prototype Motion Test"); - title->setStyleSheet( - "font-size: 16px;" - "font-weight: 700;" - "padding: 6px;"); + auto *layout = new QVBoxLayout(this); - status_label_ = new QLabel("Status: READY"); - status_label_->setStyleSheet( - "color: #3ddc84;" - "font-weight: 800;" - "padding: 6px;"); + auto *title = new QLabel("Old Arm Prototype Motion Test"); + title->setStyleSheet( + "font-size: 16px;" + "font-weight: 700;" + "padding: 6px;"); - position_label_ = new QLabel("Four-joint trajectory via /joint_states"); + status_label_ = new QLabel("Status: READY"); + status_label_->setStyleSheet( + "color: #3ddc84;" + "font-weight: 800;" + "padding: 6px;"); - result_label_ = new QLabel("No test run yet."); - result_label_->setWordWrap(true); + position_label_ = new QLabel("Four-joint trajectory via /joint_states"); - run_button_ = new QPushButton("▶ RUN MOTION TEST"); - home_button_ = new QPushButton("↩ HOME"); - stop_button_ = new QPushButton("■ STOP"); + result_label_ = new QLabel("No test run yet."); + result_label_->setWordWrap(true); - stop_button_->setEnabled(false); + run_button_ = new QPushButton("▶ RUN MOTION TEST"); + home_button_ = new QPushButton("↩ HOME"); + stop_button_ = new QPushButton("■ STOP"); - connect(run_button_, &QPushButton::clicked, this, [this]() { - runTest(); - }); + stop_button_->setEnabled(false); - connect(home_button_, &QPushButton::clicked, this, [this]() { - moveHome(); - }); + connect(run_button_, &QPushButton::clicked, this, [this]() + { runTest(); }); - connect(stop_button_, &QPushButton::clicked, this, [this]() { - stopTest(); - }); + connect(home_button_, &QPushButton::clicked, this, [this]() + { moveHome(); }); - auto * button_row = new QHBoxLayout(); - button_row->addWidget(home_button_); - button_row->addWidget(stop_button_); + connect(stop_button_, &QPushButton::clicked, this, [this]() + { stopTest(); }); - layout->addWidget(title); - layout->addWidget(status_label_); - layout->addWidget(position_label_); - layout->addWidget(run_button_); - layout->addLayout(button_row); - layout->addWidget(result_label_); - layout->addStretch(); -} + auto *button_row = new QHBoxLayout(); + button_row->addWidget(home_button_); + button_row->addWidget(stop_button_); -void MotionTestPanel::runTest() -{ - if (test_running_) { - return; + layout->addWidget(title); + layout->addWidget(status_label_); + layout->addWidget(position_label_); + layout->addWidget(run_button_); + layout->addLayout(button_row); + layout->addWidget(result_label_); + layout->addStretch(); } - test_running_ = true; + void MotionTestPanel::runTest() + { + if (test_running_) + { + return; + } - result_label_->setText("Running motion sequence..."); - status_label_->setText("RUNNING: synchronized 4-DOF sequence"); + test_running_ = true; - run_button_->setEnabled(false); - home_button_->setEnabled(false); - stop_button_->setEnabled(true); + result_label_->setText("Running motion sequence..."); + status_label_->setText("RUNNING: synchronized 4-DOF sequence"); - publishCommand("RUN"); -} + run_button_->setEnabled(false); + home_button_->setEnabled(false); + stop_button_->setEnabled(true); -void MotionTestPanel::moveHome() -{ - test_running_ = false; + publishCommand("RUN"); + } - status_label_->setText("Moving to HOME"); - result_label_->setText("Returning to home position..."); + void MotionTestPanel::moveHome() + { + test_running_ = false; - run_button_->setEnabled(false); - home_button_->setEnabled(false); - stop_button_->setEnabled(true); + status_label_->setText("Moving to HOME"); + result_label_->setText("Returning to home position..."); - publishCommand("HOME"); -} + run_button_->setEnabled(false); + home_button_->setEnabled(false); + stop_button_->setEnabled(true); -void MotionTestPanel::stopTest() -{ - test_running_ = false; - publishCommand("STOP"); + publishCommand("HOME"); + } - status_label_->setText("STOPPED"); - result_label_->setText("Motion test stopped."); + void MotionTestPanel::stopTest() + { + test_running_ = false; + publishCommand("STOP"); - run_button_->setEnabled(true); - home_button_->setEnabled(true); - stop_button_->setEnabled(false); -} + status_label_->setText("STOPPED"); + result_label_->setText("Motion test stopped."); -void MotionTestPanel::publishCommand(const std::string & command) -{ - if (!command_publisher_) { - return; + run_button_->setEnabled(true); + home_button_->setEnabled(true); + stop_button_->setEnabled(false); } - std_msgs::msg::String message; - message.data = command; - command_publisher_->publish(message); -} + void MotionTestPanel::publishCommand(const std::string &command) + { + if (!command_publisher_) + { + return; + } + + std_msgs::msg::String message; + message.data = command; + command_publisher_->publish(message); + } -void MotionTestPanel::handleStatus(const std_msgs::msg::String::SharedPtr message) -{ - const QString status = QString::fromStdString(message->data); - QMetaObject::invokeMethod(this, [this, status]() { + void MotionTestPanel::handleStatus(const std_msgs::msg::String::SharedPtr message) + { + const QString status = QString::fromStdString(message->data); + QMetaObject::invokeMethod(this, [this, status]() + { if (status == "COMPLETE" || status == "READY") { test_running_ = false; status_label_->setText("READY"); @@ -157,12 +158,11 @@ void MotionTestPanel::handleStatus(const std_msgs::msg::String::SharedPtr messag run_button_->setEnabled(status == "STOPPED"); home_button_->setEnabled(status == "STOPPED"); stop_button_->setEnabled(false); - } - }, Qt::QueuedConnection); -} + } }, Qt::QueuedConnection); + } -} // namespace waybionic_rviz_plugins +} // namespace waybionic_rviz_plugins PLUGINLIB_EXPORT_CLASS( - waybionic_rviz_plugins::MotionTestPanel, - rviz_common::Panel) + waybionic_rviz_plugins::MotionTestPanel, + rviz_common::Panel) From 8cd32755294454912b3a28b70a3d9807f286207b Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 19 Sep 2026 11:08:53 -0600 Subject: [PATCH 11/21] diagnosing possible servo lag for arm and test itself by changing the time allowed to make a movement to much longer and making the watchdog way less aggresive and allowing the movement "lag" to allow it to happen before breaking the full ROM and sending an error or stale value. --- waybionic_hardware/test/test_arduino_bridge.py | 1 + waybionic_hardware/waybionic_hardware/arduino_bridge.py | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/waybionic_hardware/test/test_arduino_bridge.py b/waybionic_hardware/test/test_arduino_bridge.py index 9533d54..a49cd51 100644 --- a/waybionic_hardware/test/test_arduino_bridge.py +++ b/waybionic_hardware/test/test_arduino_bridge.py @@ -37,6 +37,7 @@ def make_bridge(self): bridge.ready = True bridge.faulted = False bridge.motion_active = True + bridge.motion_duration = 0.0 bridge.sequence_active = True bridge.last_error = '' bridge.last_status = 'moving' diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py index 2eb69ef..eed5616 100644 --- a/waybionic_hardware/waybionic_hardware/arduino_bridge.py +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -24,7 +24,7 @@ [15.0, 100.0, 130.0, 5.0], HOME_PHYSICAL_DEGREES, ] -RESPONSE_TIMEOUT_SECONDS = 1.0 +RESPONSE_TIMEOUT_SECONDS = 8.0 FAULT_STATUSES = { 'arduino-error', 'connection-failed', @@ -250,8 +250,10 @@ def send_move(self, target): def publish_estimated_state(self): if ( not self.dry_run and self.connected and + self.motion_active and self.last_response_monotonic is not None and - time.monotonic() - self.last_response_monotonic > RESPONSE_TIMEOUT_SECONDS + time.monotonic() - self.last_response_monotonic > ( + self.motion_duration + RESPONSE_TIMEOUT_SECONDS) ): self._latch_fault( 'serial-read-failed', 'Arduino response watchdog timed out.') From a3a0cde91c66d6a1ef74c9af4d5f8adfa0f4f56b Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 19 Sep 2026 14:00:19 -0600 Subject: [PATCH 12/21] updates and tweaks --- .vscode/settings.json | 229 +++++------ docs/arm_hardware_motion_architecture.md | 2 +- .../waybionic_uno_r4/waybionic_uno_r4.ino | 293 ++++++++++++++ .../rviz/waybionic_old_arm_root.rviz | 357 +++++++++++++----- waybionic_bringup/test/test_old_arm_launch.py | 6 +- .../urdf/waybionic_old_arm.urdf.xacro | 4 +- .../test/test_arduino_bridge.py | 3 + .../waybionic_hardware/arduino_bridge.py | 49 ++- .../waybionic_motion_test/motion_test.py | 10 +- 9 files changed, 730 insertions(+), 223 deletions(-) create mode 100644 firmware/waybionic_uno_r4/waybionic_uno_r4.ino diff --git a/.vscode/settings.json b/.vscode/settings.json index c465b83..ec5d55a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,115 +1,116 @@ { - "files.associations": { - "*.msg": "plaintext", - "*.tcc": "cpp", - "cctype": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "csignal": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cstring": "cpp", - "ctime": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "any": "cpp", - "array": "cpp", - "atomic": "cpp", - "strstream": "cpp", - "bit": "cpp", - "bitset": "cpp", - "chrono": "cpp", - "codecvt": "cpp", - "compare": "cpp", - "complex": "cpp", - "concepts": "cpp", - "condition_variable": "cpp", - "coroutine": "cpp", - "cstdint": "cpp", - "deque": "cpp", - "forward_list": "cpp", - "list": "cpp", - "map": "cpp", - "set": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "unordered_set": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "optional": "cpp", - "random": "cpp", - "ratio": "cpp", - "regex": "cpp", - "source_location": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "fstream": "cpp", - "future": "cpp", - "initializer_list": "cpp", - "iomanip": "cpp", - "iosfwd": "cpp", - "iostream": "cpp", - "istream": "cpp", - "limits": "cpp", - "mutex": "cpp", - "new": "cpp", - "numbers": "cpp", - "ostream": "cpp", - "semaphore": "cpp", - "shared_mutex": "cpp", - "sstream": "cpp", - "stdexcept": "cpp", - "stop_token": "cpp", - "streambuf": "cpp", - "thread": "cpp", - "cfenv": "cpp", - "cinttypes": "cpp", - "typeindex": "cpp", - "typeinfo": "cpp", - "variant": "cpp", - "*.ipp": "cpp", - "callback": "cpp", - "image": "cpp", - "bufferobject": "cpp", - "mixinvector": "cpp", - "texture": "cpp", - "vertexarraystate": "cpp", - "buffered_value": "cpp", - "fast_back_stack": "cpp" - }, - "ros.distro": "jazzy", - "C_Cpp.default.includePath": [ - "/opt/ros/jazzy/include/**" - ], - "C_Cpp.default.cppStandard": "c++17", - "python.autoComplete.extraPaths": [ - "/opt/ros/jazzy/lib/python3.10/site-packages" - ], - "python.analysis.extraPaths": [ - "/opt/ros/jazzy/lib/python3.10/site-packages" - ], - "[python]": { - "editor.defaultFormatter": "eeyore.yapf", - }, - "editor.formatOnSave": true, - "editor.tabSize": 2, - "files.exclude": { - "build": true, - "install": true, - "log": true - }, - "cSpell.words": [ - "RCLCPP" - ] -} + "files.associations": { + "*.msg": "plaintext", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "csignal": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "any": "cpp", + "array": "cpp", + "atomic": "cpp", + "strstream": "cpp", + "bit": "cpp", + "bitset": "cpp", + "chrono": "cpp", + "codecvt": "cpp", + "compare": "cpp", + "complex": "cpp", + "concepts": "cpp", + "condition_variable": "cpp", + "coroutine": "cpp", + "cstdint": "cpp", + "deque": "cpp", + "forward_list": "cpp", + "list": "cpp", + "map": "cpp", + "set": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "ratio": "cpp", + "regex": "cpp", + "source_location": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "future": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "semaphore": "cpp", + "shared_mutex": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "stop_token": "cpp", + "streambuf": "cpp", + "thread": "cpp", + "cfenv": "cpp", + "cinttypes": "cpp", + "typeindex": "cpp", + "typeinfo": "cpp", + "variant": "cpp", + "*.ipp": "cpp", + "callback": "cpp", + "image": "cpp", + "bufferobject": "cpp", + "mixinvector": "cpp", + "texture": "cpp", + "vertexarraystate": "cpp", + "buffered_value": "cpp", + "fast_back_stack": "cpp" + }, + "ros.distro": "jazzy", + "C_Cpp.default.includePath": [ + "/opt/ros/jazzy/include/**" + ], + "C_Cpp.default.cppStandard": "c++17", + "python.autoComplete.extraPaths": [ + "/opt/ros/jazzy/lib/python3.10/site-packages" + ], + "python.analysis.extraPaths": [ + "/opt/ros/jazzy/lib/python3.10/site-packages" + ], + "[python]": { + "editor.defaultFormatter": "eeyore.yapf", + }, + "editor.formatOnSave": true, + "editor.tabSize": 2, + "files.exclude": { + "build": true, + "install": true, + "log": true + }, + "cSpell.words": [ + "RCLCPP" + ], + "cmake.ignoreCMakeListsMissing": true +} \ No newline at end of file diff --git a/docs/arm_hardware_motion_architecture.md b/docs/arm_hardware_motion_architecture.md index 9f864ca..2c1a9ca 100644 --- a/docs/arm_hardware_motion_architecture.md +++ b/docs/arm_hardware_motion_architecture.md @@ -34,7 +34,7 @@ workspace. The archived handoff provides a usable first transport contract: - Arduino Uno R4 WiFi at 115200 baud over USB serial. -- Servo signals: D3 `base_yaw`, D4 `shoulder`, D5 `elbow`, D6 `wrist_roll`. +- Servo signals: D1 `base_yaw`, D2 `shoulder`, D3 `elbow`, D4 `wrist_roll`. - Hold switch: D7 to ground using `INPUT_PULLUP`. - Commands: `ID`, `MOVE,s1,s2,s3,s4,durationMs`, `JOG,servo,delta,durationMs`, and `HOLD`. diff --git a/firmware/waybionic_uno_r4/waybionic_uno_r4.ino b/firmware/waybionic_uno_r4/waybionic_uno_r4.ino new file mode 100644 index 0000000..a444afa --- /dev/null +++ b/firmware/waybionic_uno_r4/waybionic_uno_r4.ino @@ -0,0 +1,293 @@ +/* + Uno R4 WiFi - Four-servo IK calibration controller + + Wiring: + Servo 1 signal -> D1 (base yaw) + Servo 2 signal -> D2 (shoulder) + Servo 3 signal -> D3 (elbow) + Servo 4 signal -> D4 (wrist roll) + Hold switch -> D7 and GND (uses INPUT_PULLUP) + + Serial at 115200 baud: + ID + MOVE,s1,s2,s3,s4,durationMs + JOG,servoNumber,deltaDegrees,durationMs + HOLD + + Angles are physical 270-degree servo angles. +*/ + +#include +#include +#include +#include + +const byte SERVO_COUNT = 4; +const byte SERVO_PINS[SERVO_COUNT] = {1, 2, 3, 4}; +const byte HOLD_SWITCH_PIN = 7; + +const float PHYSICAL_RANGE = 270.0; +const int SERVO_PULSE_MIN_US = 544; +const int SERVO_PULSE_MAX_US = 2400; +const float SERVO_MIN[SERVO_COUNT] = {0.0, 0.0, 90.0, 0.0}; +const float SERVO_MAX[SERVO_COUNT] = {270.0, 112.5, 270.0, 270.0}; + +float currentAngle[SERVO_COUNT] = {90.0, 35.0, 151.5, 27.5}; +float startAngle[SERVO_COUNT]; +float targetAngle[SERVO_COUNT]; + +Servo servos[SERVO_COUNT]; +bool moving = false; +bool switchWasPressed = false; +unsigned long moveStartedMs = 0; +unsigned long moveDurationMs = 3000; +unsigned long lastServoUpdateMs = 0; +const unsigned long SERVO_UPDATE_INTERVAL_MS = 20; + +char serialLine[128]; +byte serialLength = 0; + +void readSerialCommands(); +void processCommand(char *line); +void updateMotion(); +void updateHoldSwitch(); +void startMove(const float requested[], unsigned long durationMs); +void writeAllOutputs(); +void writePhysicalServo(byte servoIndex, float physicalAngle); +bool anglesAreSafe(const float values[]); + +void setup() +{ + Serial.begin(115200); + pinMode(HOLD_SWITCH_PIN, INPUT_PULLUP); + + for (byte servo = 0; servo < SERVO_COUNT; servo++) + { + servos[servo].attach( + SERVO_PINS[servo], SERVO_PULSE_MIN_US, SERVO_PULSE_MAX_US); + } + + writeAllOutputs(); + Serial.println("READY,IK4,1"); +} + +void loop() +{ + readSerialCommands(); + updateHoldSwitch(); + updateMotion(); +} + +void readSerialCommands() +{ + while (Serial.available() > 0) + { + char incoming = Serial.read(); + + if (incoming == '\r') + { + continue; + } + + if (incoming == '\n') + { + serialLine[serialLength] = '\0'; + if (serialLength > 0) + { + processCommand(serialLine); + } + serialLength = 0; + continue; + } + + if (serialLength < sizeof(serialLine) - 1) + { + serialLine[serialLength++] = incoming; + } + else + { + serialLength = 0; + Serial.println("ERROR,line too long"); + } + } +} + +void processCommand(char *line) +{ + if (strcmp(line, "ID") == 0) + { + Serial.println("READY,IK4,1"); + return; + } + + if (strcmp(line, "HOLD") == 0) + { + moving = false; + Serial.println("OK,HOLD"); + return; + } + + char *savePointer; + char *token = strtok_r(line, ",", &savePointer); + + if (token != nullptr && strcmp(token, "JOG") == 0) + { + char *servoToken = strtok_r(nullptr, ",", &savePointer); + char *deltaToken = strtok_r(nullptr, ",", &savePointer); + char *durationToken = strtok_r(nullptr, ",", &savePointer); + if (servoToken == nullptr || deltaToken == nullptr || durationToken == nullptr) + { + Serial.println("ERROR,JOG needs servo,delta,duration"); + return; + } + + int servoNumber = atoi(servoToken); + if (servoNumber < 1 || servoNumber > SERVO_COUNT) + { + Serial.println("ERROR,invalid servo number"); + return; + } + + float requested[SERVO_COUNT]; + for (byte servo = 0; servo < SERVO_COUNT; servo++) + { + requested[servo] = currentAngle[servo]; + } + requested[servoNumber - 1] += atof(deltaToken); + + if (!anglesAreSafe(requested)) + { + Serial.println("ERROR,jog outside software limits"); + return; + } + + unsigned long duration = strtoul(durationToken, nullptr, 10); + startMove(requested, constrain(duration, 300UL, 15000UL)); + Serial.println("OK,JOG"); + return; + } + + if (token == nullptr || strcmp(token, "MOVE") != 0) + { + Serial.println("ERROR,unknown command"); + return; + } + + float requested[SERVO_COUNT]; + for (byte servo = 0; servo < SERVO_COUNT; servo++) + { + token = strtok_r(nullptr, ",", &savePointer); + if (token == nullptr) + { + Serial.println("ERROR,missing servo angle"); + return; + } + requested[servo] = atof(token); + } + + token = strtok_r(nullptr, ",", &savePointer); + if (token == nullptr) + { + Serial.println("ERROR,missing duration"); + return; + } + + if (!anglesAreSafe(requested)) + { + Serial.println("ERROR,target outside software limits"); + return; + } + + unsigned long duration = strtoul(token, nullptr, 10); + startMove(requested, constrain(duration, 300UL, 15000UL)); + Serial.println("OK,MOVE"); +} + +void startMove(const float requested[], unsigned long durationMs) +{ + for (byte servo = 0; servo < SERVO_COUNT; servo++) + { + startAngle[servo] = currentAngle[servo]; + targetAngle[servo] = requested[servo]; + } + moveDurationMs = durationMs; + moveStartedMs = millis(); + lastServoUpdateMs = moveStartedMs - SERVO_UPDATE_INTERVAL_MS; + moving = true; +} + +bool anglesAreSafe(const float values[]) +{ + for (byte servo = 0; servo < SERVO_COUNT; servo++) + { + if (values[servo] < SERVO_MIN[servo] || values[servo] > SERVO_MAX[servo]) + { + return false; + } + } + return true; +} + +void updateHoldSwitch() +{ + bool pressed = digitalRead(HOLD_SWITCH_PIN) == LOW; + if (pressed) + { + moving = false; + } + if (pressed && !switchWasPressed) + { + Serial.println("OK,SWITCH HOLD"); + } + switchWasPressed = pressed; +} + +void updateMotion() +{ + if (!moving) + { + return; + } + + unsigned long elapsed = millis() - moveStartedMs; + float progress = constrain( + (float)elapsed / (float)moveDurationMs, 0.0, 1.0); + if (progress < 1.0 && millis() - lastServoUpdateMs < SERVO_UPDATE_INTERVAL_MS) + { + return; + } + lastServoUpdateMs = millis(); + + float progress2 = progress * progress; + float progress3 = progress2 * progress; + float eased = progress3 * (progress * (progress * 6.0 - 15.0) + 10.0); + + for (byte servo = 0; servo < SERVO_COUNT; servo++) + { + currentAngle[servo] = startAngle[servo] + (targetAngle[servo] - startAngle[servo]) * eased; + } + writeAllOutputs(); + + if (progress >= 1.0) + { + moving = false; + Serial.println("OK,ARRIVED"); + } +} + +void writeAllOutputs() +{ + for (byte servo = 0; servo < SERVO_COUNT; servo++) + { + writePhysicalServo(servo, currentAngle[servo]); + } +} + +void writePhysicalServo(byte servoIndex, float physicalAngle) +{ + physicalAngle = constrain(physicalAngle, 0.0, PHYSICAL_RANGE); + int pulseUs = round( + SERVO_PULSE_MIN_US + physicalAngle / PHYSICAL_RANGE * (SERVO_PULSE_MAX_US - SERVO_PULSE_MIN_US)); + servos[servoIndex].writeMicroseconds( + constrain(pulseUs, SERVO_PULSE_MIN_US, SERVO_PULSE_MAX_US)); +} diff --git a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz index be06046..cf71d28 100644 --- a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz +++ b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz @@ -1,88 +1,269 @@ -Panels: - - Class: rviz_common/Displays - Name: Displays - - Class: rviz_common/Views - Name: Views - - Class: waybionic_rviz_plugins/DiagnosticsPanel - Name: Engineering Monitor - Diagnostics Topic: /diagnostics - Use Mock Diagnostics: true -Visualization Manager: - Class: "" - Displays: - - Class: rviz_default_plugins/Grid - Name: Grid (50 mm) - Enabled: true - Cell Size: 0.05 - Plane Cell Count: 12 - Color: 155; 155; 155 - Alpha: 0.45 - Reference Frame: - Plane: XY - Offset: - X: 0 - Y: 0 - Z: -0.066 - Line Style: - Value: Lines - Line Width: 0.001 - - Class: rviz_default_plugins/RobotModel - Name: Old Arm (Video Reference Model) - Enabled: true - Visual Enabled: true - Collision Enabled: false - Alpha: 1 - Description Source: Topic - Description Topic: - Value: /robot_description - Depth: 1 - Durability Policy: Transient Local - Reliability Policy: Reliable - History Policy: Keep Last - Links: - All Links Enabled: true - Expand Joint Details: false - Expand Link Details: false - Expand Tree: false - Link Tree Style: Links in Alphabetic Order - TF Prefix: "" - Update Interval: 0 - - Class: rviz_default_plugins/Axes - Name: Wrist Target Frame - Enabled: true - Reference Frame: old_arm_tool_frame - Length: 0.035 - Radius: 0.0015 - Enabled: true - Global Options: - Fixed Frame: old_arm_base_link - Background Color: 238; 240; 242 - Frame Rate: 30 - Name: root - Tools: - - Class: rviz_default_plugins/Interact - - Class: rviz_default_plugins/MoveCamera - - Class: rviz_default_plugins/Select - - Class: rviz_default_plugins/FocusCamera - - Class: rviz_default_plugins/Measure - Views: - Current: - Class: rviz_default_plugins/Orbit - Name: Current View - Distance: 0.78 - Pitch: 0.45 - Yaw: 0.80 - Near Clip Distance: 0.005 - Target Frame: - Focal Point: - X: 0.08 - Y: 0 - Z: 0.13 - Saved: ~ -Window Geometry: - Width: 1440 - Height: 960 - X: 40 - Y: 40 - Hide Left Dock: false - Hide Right Dock: false \ No newline at end of file +Panels: + - Class: rviz_common/Displays + Help Height: 70 + Name: Displays + Property Tree Widget: + Expanded: ~ + Splitter Ratio: 0.5 + Tree Height: 742 + - Class: rviz_common/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: waybionic_rviz_plugins/DiagnosticsPanel + Diagnostics Topic: /diagnostics + Name: Engineering Monitor + Use Mock Diagnostics: true + - Class: waybionic_rviz_plugins/MotionTestPanel + Name: MotionTestPanel +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.44999998807907104 + Cell Size: 0.05000000074505806 + Class: rviz_default_plugins/Grid + Color: 155; 155; 155 + Enabled: true + Line Style: + Line Width: 0.0010000000474974513 + Value: Lines + Name: Grid (50 mm) + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: -0.06599999964237213 + Plane: XY + Plane Cell Count: 12 + Reference Frame: + Value: true + - Alpha: 1 + Class: rviz_default_plugins/RobotModel + Collision Enabled: false + Description File: "" + Description Source: Topic + Description Topic: + Depth: 1 + Durability Policy: Transient Local + History Policy: Keep Last + Reliability Policy: Reliable + Value: /robot_description + Enabled: true + Links: + All Links Enabled: true + Expand Joint Details: false + Expand Link Details: false + Expand Tree: false + Link Tree Style: Links in Alphabetic Order + old_arm_base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_base_servo_body: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_base_servo_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_distal_left_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_distal_left_servo: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_distal_right_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_distal_right_servo: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_elbow_cover_screws: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_elbow_horn: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_elbow_servo_body: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_elbow_servo_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_forearm: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_shoulder_horn: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_shoulder_mount: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_shoulder_servo_body: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_shoulder_servo_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_tool_frame: + Alpha: 1 + Show Axes: false + Show Trail: false + old_arm_upper_arm: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_hub: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_marker: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_marker_cross: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_roll: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_servo_body: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + old_arm_wrist_servo_cover: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + Mass Properties: + Inertia: false + Mass: false + Name: Old Arm (Video Reference Model) + TF Prefix: "" + Update Interval: 0 + Value: true + Visual Enabled: true + - Class: rviz_default_plugins/Axes + Enabled: true + Length: 0.03500000014901161 + Name: Wrist Target Frame + Radius: 0.001500000013038516 + Reference Frame: old_arm_tool_frame + Value: true + Enabled: true + Global Options: + Background Color: 238; 240; 242 + Fixed Frame: old_arm_base_link + Frame Rate: 30 + Name: root + Tools: + - Class: rviz_default_plugins/Interact + Hide Inactive Objects: true + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + - Class: rviz_default_plugins/FocusCamera + - Class: rviz_default_plugins/Measure + Line color: 128; 128; 0 + Transformation: + Current: + Class: rviz_default_plugins/TF + Value: true + Views: + Current: + Class: rviz_default_plugins/Orbit + Distance: 0.7799999713897705 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0.07999999821186066 + Y: 0 + Z: 0.12999999523162842 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.004999999888241291 + Pitch: 0.024999983608722687 + Target Frame: + Value: Orbit (rviz_default_plugins) + Yaw: 2.640000581741333 + Saved: + - Class: rviz_default_plugins/Orbit + Distance: 0.7799999713897705 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0.07999999821186066 + Y: 0 + Z: 0.12999999523162842 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.004999999888241291 + Pitch: 0.024999983608722687 + Target Frame: + Value: Orbit (rviz_default_plugins) + Yaw: 2.640000581741333 +Window Geometry: + Displays: + collapsed: false + Engineering Monitor: + collapsed: false + Height: 1143 + Hide Left Dock: false + Hide Right Dock: false + MotionTestPanel: + collapsed: false + QMainWindow State: 000000ff00000000fd0000000200000000000001a400000421fc0200000002fb000000260045006e00670069006e0065006500720069006e00670020004d006f006e00690074006f0072010000003b0000034f0000034f00fffffffb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c0100000390000000cc000000cc00ffffff000000010000015600000421fc0200000002fb000000100044006900730070006c006100790073010000003b00000367000000c700fffffffb0000000a0056006900650077007301000003a8000000b4000000a000ffffff0000046e0000042100000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Views: + collapsed: false + Width: 1908 + X: -32 + Y: -32 diff --git a/waybionic_bringup/test/test_old_arm_launch.py b/waybionic_bringup/test/test_old_arm_launch.py index 37d7f3f..281055a 100644 --- a/waybionic_bringup/test/test_old_arm_launch.py +++ b/waybionic_bringup/test/test_old_arm_launch.py @@ -75,7 +75,7 @@ def test_joint_contract_and_limits(self): robot = expand_model() joints = [joint for joint in robot.findall('joint') if joint.get('type') != 'fixed'] self.assertEqual([joint.get('name') for joint in joints], JOINT_NAMES) - expected_ranges = [(-33.5, 236.5), (0.0, 112.5), (-61.5, 118.5), (-27.5, 242.5)] + expected_ranges = [(-90.0, 180.0), (12.5, 125.0), (-61.5, 118.5), (-27.5, 242.5)] for joint, expected in zip(joints, expected_ranges): self.assertEqual(joint.get('type'), 'revolute') limits = joint.find('limit') @@ -104,8 +104,8 @@ def test_geometry_and_calibration_overrides(self): joints['old_arm_elbow_pitch_joint'].find('origin').get('xyz').split()], [0.130, 0.0, 0.0]) limits = joints['old_arm_base_yaw_joint'].find('limit') - self.assertAlmostEqual(float(limits.get('lower')), math.radians(-236.5)) - self.assertAlmostEqual(float(limits.get('upper')), math.radians(33.5)) + self.assertAlmostEqual(float(limits.get('lower')), math.radians(-180.0)) + self.assertAlmostEqual(float(limits.get('upper')), math.radians(90.0)) for box in robot.findall('.//box'): self.assertTrue(all(float(value) > 0 for value in box.get('size').split())) for cylinder in robot.findall('.//cylinder'): diff --git a/waybionic_description/urdf/waybionic_old_arm.urdf.xacro b/waybionic_description/urdf/waybionic_old_arm.urdf.xacro index ccce14a..83459ec 100644 --- a/waybionic_description/urdf/waybionic_old_arm.urdf.xacro +++ b/waybionic_description/urdf/waybionic_old_arm.urdf.xacro @@ -5,8 +5,8 @@ - - + + diff --git a/waybionic_hardware/test/test_arduino_bridge.py b/waybionic_hardware/test/test_arduino_bridge.py index a49cd51..d49d740 100644 --- a/waybionic_hardware/test/test_arduino_bridge.py +++ b/waybionic_hardware/test/test_arduino_bridge.py @@ -101,6 +101,7 @@ def test_fault_is_reported_as_diagnostic_error(self): bridge.last_status = 'arduino-error' bridge.diagnostics_publisher = SimpleNamespace(publish=lambda message: setattr(bridge, 'diagnostic', message)) bridge.status_publisher = SimpleNamespace(publish=lambda message: setattr(bridge, 'motion_status', message)) + bridge.count_subscribers = lambda topic: 1 bridge.port = '/dev/fake' bridge.baud = 115200 bridge.get_clock = lambda: SimpleNamespace( @@ -109,6 +110,8 @@ def test_fault_is_reported_as_diagnostic_error(self): bridge.publish_diagnostics() self.assertEqual(bridge.diagnostic.status[0].level, DiagnosticStatus.ERROR) + self.assertEqual(bridge.diagnostic.status[1].message, 'robot_state_publisher connected') + self.assertEqual(bridge.diagnostic.status[2].level, DiagnosticStatus.WARN) def test_shutdown_requests_hold_before_closing_port(self): import rclpy diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py index eed5616..a411d15 100644 --- a/waybionic_hardware/waybionic_hardware/arduino_bridge.py +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -15,8 +15,9 @@ 'old_arm_elbow_pitch_joint', 'old_arm_wrist_roll_joint', ] -HOME_PHYSICAL_DEGREES = [33.5, 112.5, 151.5, 27.5] +HOME_PHYSICAL_DEGREES = [90.0, 35.0, 151.5, 27.5] SERVO_DIRECTIONS = [1.0, -1.0, 1.0, 1.0] +MODEL_HOME_OFFSETS_DEGREES = [0.0, 90.0, 0.0, 0.0] PHYSICAL_LIMITS = [(0.0, 270.0), (0.0, 112.5), (90.0, 270.0), (0.0, 270.0)] SEQUENCE = [ [60.0, 95.0, 125.0, 60.0], @@ -37,9 +38,10 @@ def model_radians_from_physical(degrees): return [ - math.radians((physical - zero) / direction) - for physical, zero, direction in zip( - degrees, HOME_PHYSICAL_DEGREES, SERVO_DIRECTIONS) + math.radians((physical - zero) / direction + offset) + for physical, zero, direction, offset in zip( + degrees, HOME_PHYSICAL_DEGREES, SERVO_DIRECTIONS, + MODEL_HOME_OFFSETS_DEGREES) ] @@ -279,26 +281,51 @@ def publish_estimated_state(self): self.process_serial_line('OK,ARRIVED') def publish_diagnostics(self): - status = DiagnosticStatus() - status.name = 'waybionic_arduino_bridge' - status.level = ( + bridge_status = DiagnosticStatus() + bridge_status.name = 'waybionic_arduino_bridge' + bridge_status.level = ( DiagnosticStatus.ERROR if self.faulted or not self.connected or self.last_status in FAULT_STATUSES else DiagnosticStatus.OK ) - status.message = self.last_status - status.values = [ + bridge_status.message = self.last_status + bridge_status.values = [ KeyValue(key='port', value=self.port or 'not configured'), KeyValue(key='baud', value=str(self.baud)), KeyValue(key='mode', value='dry-run' if self.dry_run else 'physical'), KeyValue(key='error', value=self.last_error), ] + + subscriber_count = self.count_subscribers('/joint_states') + output_status = DiagnosticStatus() + output_status.name = 'waybionic_joint_state_output' + output_status.level = ( + DiagnosticStatus.OK if subscriber_count > 0 else DiagnosticStatus.ERROR) + output_status.message = ( + 'robot_state_publisher connected' + if subscriber_count > 0 else + 'No subscribers on /joint_states; RViz cannot update') + output_status.values = [ + KeyValue(key='subscriber_count', value=str(subscriber_count)), + KeyValue(key='topic', value='/joint_states'), + ] + + feedback_status = DiagnosticStatus() + feedback_status.name = 'waybionic_servo_feedback' + feedback_status.level = DiagnosticStatus.WARN + feedback_status.message = ( + 'No measured servo feedback; /joint_states is estimated') + feedback_status.values = [ + KeyValue(key='verification', value='command timeline only'), + KeyValue(key='servos', value='individual servo connection unknown'), + ] + message = DiagnosticArray() message.header.stamp = self.get_clock().now().to_msg() - message.status = [status] + message.status = [bridge_status, output_status, feedback_status] self.diagnostics_publisher.publish(message) - if self.faulted or status.level == DiagnosticStatus.ERROR: + if self.faulted or bridge_status.level == DiagnosticStatus.ERROR: motion_status = 'FAULT' elif self.motion_active: motion_status = 'RUNNING' diff --git a/waybionic_motion_test/waybionic_motion_test/motion_test.py b/waybionic_motion_test/waybionic_motion_test/motion_test.py index 390c901..73c4757 100644 --- a/waybionic_motion_test/waybionic_motion_test/motion_test.py +++ b/waybionic_motion_test/waybionic_motion_test/motion_test.py @@ -13,16 +13,18 @@ 'old_arm_wrist_roll_joint', ] JOINT_COUNT = len(JOINT_NAMES) -HOME_PHYSICAL_DEGREES = [33.5, 112.5, 151.5, 27.5] +HOME_PHYSICAL_DEGREES = [90.0, 35.0, 151.5, 27.5] SERVO_DIRECTIONS = [1.0, -1.0, 1.0, 1.0] +MODEL_HOME_OFFSETS_DEGREES = [0.0, 90.0, 0.0, 0.0] def model_radians_from_physical(degrees): """Convert calibrated Arduino servo angles into URDF model radians.""" return [ - math.radians((physical - zero) / direction) - for physical, zero, direction in zip( - degrees, HOME_PHYSICAL_DEGREES, SERVO_DIRECTIONS) + math.radians((physical - zero) / direction + offset) + for physical, zero, direction, offset in zip( + degrees, HOME_PHYSICAL_DEGREES, SERVO_DIRECTIONS, + MODEL_HOME_OFFSETS_DEGREES) ] From 750de7b35f8fa09e30f90b412845a1be94b8f9d0 Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 19 Sep 2026 14:46:33 -0600 Subject: [PATCH 13/21] final final final tweaks lol --- .../waybionic_uno_r4/waybionic_uno_r4.ino | 12 +++++----- .../rviz/waybionic_old_arm_root.rviz | 22 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/firmware/waybionic_uno_r4/waybionic_uno_r4.ino b/firmware/waybionic_uno_r4/waybionic_uno_r4.ino index a444afa..503b5d8 100644 --- a/firmware/waybionic_uno_r4/waybionic_uno_r4.ino +++ b/firmware/waybionic_uno_r4/waybionic_uno_r4.ino @@ -2,10 +2,10 @@ Uno R4 WiFi - Four-servo IK calibration controller Wiring: - Servo 1 signal -> D1 (base yaw) - Servo 2 signal -> D2 (shoulder) - Servo 3 signal -> D3 (elbow) - Servo 4 signal -> D4 (wrist roll) + Servo 1 signal -> D3 (base yaw) + Servo 2 signal -> D4 (shoulder) + Servo 3 signal -> D5 (elbow) + Servo 4 signal -> D6 (wrist roll) Hold switch -> D7 and GND (uses INPUT_PULLUP) Serial at 115200 baud: @@ -30,9 +30,9 @@ const float PHYSICAL_RANGE = 270.0; const int SERVO_PULSE_MIN_US = 544; const int SERVO_PULSE_MAX_US = 2400; const float SERVO_MIN[SERVO_COUNT] = {0.0, 0.0, 90.0, 0.0}; -const float SERVO_MAX[SERVO_COUNT] = {270.0, 112.5, 270.0, 270.0}; +const float SERVO_MAX[SERVO_COUNT] = {270.0, 270.0, 270.0, 270.0}; -float currentAngle[SERVO_COUNT] = {90.0, 35.0, 151.5, 27.5}; +float currentAngle[SERVO_COUNT] = {90.0, 30.0, 155.0, 125.0}; float startAngle[SERVO_COUNT]; float targetAngle[SERVO_COUNT]; diff --git a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz index cf71d28..a7fc3c1 100644 --- a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz +++ b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz @@ -5,18 +5,18 @@ Panels: Property Tree Widget: Expanded: ~ Splitter Ratio: 0.5 - Tree Height: 742 + Tree Height: 417 - Class: rviz_common/Views Expanded: - /Current View1 Name: Views Splitter Ratio: 0.5 - - Class: waybionic_rviz_plugins/DiagnosticsPanel - Diagnostics Topic: /diagnostics - Name: Engineering Monitor - Use Mock Diagnostics: true - Class: waybionic_rviz_plugins/MotionTestPanel Name: MotionTestPanel + - Class: waybionic_rviz_plugins/DiagnosticsPanel + Diagnostics Topic: /diagnostics + Name: DiagnosticsPanel + Use Mock Diagnostics: false Visualization Manager: Class: "" Displays: @@ -252,18 +252,18 @@ Visualization Manager: Value: Orbit (rviz_default_plugins) Yaw: 2.640000581741333 Window Geometry: - Displays: + DiagnosticsPanel: collapsed: false - Engineering Monitor: + Displays: collapsed: false - Height: 1143 + Height: 1187 Hide Left Dock: false Hide Right Dock: false MotionTestPanel: collapsed: false - QMainWindow State: 000000ff00000000fd0000000200000000000001a400000421fc0200000002fb000000260045006e00670069006e0065006500720069006e00670020004d006f006e00690074006f0072010000003b0000034f0000034f00fffffffb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c0100000390000000cc000000cc00ffffff000000010000015600000421fc0200000002fb000000100044006900730070006c006100790073010000003b00000367000000c700fffffffb0000000a0056006900650077007301000003a8000000b4000000a000ffffff0000046e0000042100000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd0000000200000000000001a40000044dfc0200000002fb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c010000003b000000cc000000cc00fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000010d0000037b0000035100ffffff000000010000019b0000044dfc0200000002fb0000000a00560069006500770073010000003b00000225000000a000fffffffb000000100044006900730070006c006100790073010000026600000222000000c700ffffff000004290000044d00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Views: collapsed: false Width: 1908 - X: -32 - Y: -32 + X: 0 + Y: 0 From 15ab9da3f56fe596f017f6c54f34e6771989e5e0 Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 19 Sep 2026 15:13:16 -0600 Subject: [PATCH 14/21] Harden bridge transitions and RViz motion controls --- .../rviz/waybionic_old_arm_root.rviz | 20 -- .../test/test_arduino_bridge.py | 53 ++++ .../waybionic_hardware/arduino_bridge.py | 281 +++++++++++------- .../motion_test_panel.hpp | 58 ++-- .../src/motion_test_panel.cpp | 41 ++- 5 files changed, 287 insertions(+), 166 deletions(-) diff --git a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz index a7fc3c1..17c2392 100644 --- a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz +++ b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz @@ -13,10 +13,6 @@ Panels: Splitter Ratio: 0.5 - Class: waybionic_rviz_plugins/MotionTestPanel Name: MotionTestPanel - - Class: waybionic_rviz_plugins/DiagnosticsPanel - Diagnostics Topic: /diagnostics - Name: DiagnosticsPanel - Use Mock Diagnostics: false Visualization Manager: Class: "" Displays: @@ -251,19 +247,3 @@ Visualization Manager: Target Frame: Value: Orbit (rviz_default_plugins) Yaw: 2.640000581741333 -Window Geometry: - DiagnosticsPanel: - collapsed: false - Displays: - collapsed: false - Height: 1187 - Hide Left Dock: false - Hide Right Dock: false - MotionTestPanel: - collapsed: false - QMainWindow State: 000000ff00000000fd0000000200000000000001a40000044dfc0200000002fb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c010000003b000000cc000000cc00fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000010d0000037b0000035100ffffff000000010000019b0000044dfc0200000002fb0000000a00560069006500770073010000003b00000225000000a000fffffffb000000100044006900730070006c006100790073010000026600000222000000c700ffffff000004290000044d00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 - Views: - collapsed: false - Width: 1908 - X: 0 - Y: 0 diff --git a/waybionic_hardware/test/test_arduino_bridge.py b/waybionic_hardware/test/test_arduino_bridge.py index d49d740..f7b6e7f 100644 --- a/waybionic_hardware/test/test_arduino_bridge.py +++ b/waybionic_hardware/test/test_arduino_bridge.py @@ -32,6 +32,7 @@ def make_bridge(self): bridge.serial_port = SimpleNamespace(writes=[]) bridge.serial_port.write = lambda data: bridge.serial_port.writes.append(data) bridge.serial_lock = __import__('threading').Lock() + bridge.state_lock = __import__('threading').RLock() bridge.dry_run = False bridge.connected = True bridge.ready = True @@ -39,6 +40,11 @@ def make_bridge(self): bridge.motion_active = True bridge.motion_duration = 0.0 bridge.sequence_active = True + bridge.command_kind = 'RUN' + bridge.stop_requested = False + bridge.home_completed = True + bridge.awaiting_probe = False + bridge.probe_sent_monotonic = None bridge.last_error = '' bridge.last_status = 'moving' bridge.get_logger = lambda: SimpleNamespace(debug=lambda message: None) @@ -93,6 +99,34 @@ def test_response_watchdog_latches_fault(self): self.assertEqual(bridge.last_status, 'serial-read-failed') self.assertEqual(bridge.serial_port.writes, [b'HOLD\n']) + def test_arrived_after_stop_does_not_start_next_move(self): + from std_msgs.msg import String + from waybionic_hardware.arduino_bridge import ArduinoBridge + + bridge = self.make_bridge() + bridge.send_move = lambda target, command_kind: bridge.serial_port.writes.append( + f'{command_kind}:{target}') + bridge.handle_command(String(data='STOP')) + bridge.process_serial_line('OK,ARRIVED') + + self.assertTrue(bridge.stop_requested) + self.assertFalse(bridge.sequence_active) + self.assertEqual(len(bridge.serial_port.writes), 1) + self.assertEqual(bridge.serial_port.writes[0], b'HOLD\n') + + def test_home_and_run_require_ready_home_sequence(self): + from std_msgs.msg import String + + bridge = self.make_bridge() + bridge.ready = False + bridge.handle_command(String(data='HOME')) + self.assertEqual(bridge.last_status, 'home-rejected-not-ready') + + bridge.ready = True + bridge.home_completed = False + bridge.handle_command(String(data='RUN')) + self.assertEqual(bridge.last_status, 'run-rejected-home-required') + def test_fault_is_reported_as_diagnostic_error(self): from diagnostic_msgs.msg import DiagnosticStatus @@ -113,6 +147,25 @@ def test_fault_is_reported_as_diagnostic_error(self): self.assertEqual(bridge.diagnostic.status[1].message, 'robot_state_publisher connected') self.assertEqual(bridge.diagnostic.status[2].level, DiagnosticStatus.WARN) + def test_unhandshaken_connection_is_not_reported_healthy(self): + from diagnostic_msgs.msg import DiagnosticStatus + + bridge = self.make_bridge() + bridge.ready = False + bridge.last_status = 'connected' + bridge.diagnostics_publisher = SimpleNamespace(publish=lambda message: setattr(bridge, 'diagnostic', message)) + bridge.status_publisher = SimpleNamespace(publish=lambda message: setattr(bridge, 'motion_status', message)) + bridge.count_subscribers = lambda topic: 1 + bridge.port = '/dev/fake' + bridge.baud = 115200 + bridge.get_clock = lambda: SimpleNamespace( + now=lambda: SimpleNamespace(to_msg=lambda: None)) + + bridge.publish_diagnostics() + + self.assertEqual(bridge.diagnostic.status[0].level, DiagnosticStatus.WARN) + self.assertEqual(bridge.motion_status.data, 'CONNECTING') + def test_shutdown_requests_hold_before_closing_port(self): import rclpy from unittest.mock import patch diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py index a411d15..49fbef2 100644 --- a/waybionic_hardware/waybionic_hardware/arduino_bridge.py +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -26,6 +26,8 @@ HOME_PHYSICAL_DEGREES, ] RESPONSE_TIMEOUT_SECONDS = 8.0 +HANDSHAKE_TIMEOUT_SECONDS = 3.0 +IDLE_RESPONSE_TIMEOUT_SECONDS = 5.0 FAULT_STATUSES = { 'arduino-error', 'connection-failed', @@ -73,6 +75,7 @@ def __init__(self): self.serial_port = None self.serial_lock = threading.Lock() + self.state_lock = threading.RLock() self.serial_reader = None self.serial_stop = threading.Event() self.connected = False @@ -81,6 +84,8 @@ def __init__(self): self.last_status = 'starting' self.last_error = '' self.last_response_monotonic = None + self.awaiting_probe = False + self.probe_sent_monotonic = None self.current = list(HOME_PHYSICAL_DEGREES) self.start = list(self.current) self.target = list(self.current) @@ -89,6 +94,9 @@ def __init__(self): self.motion_active = False self.sequence_index = 0 self.sequence_active = False + self.command_kind = 'idle' + self.stop_requested = False + self.home_completed = False self.state_timer = self.create_timer(0.02, self.publish_estimated_state) self.diagnostics_timer = self.create_timer(1.0, self.publish_diagnostics) @@ -150,87 +158,114 @@ def _write_hold(self): return False def _latch_fault(self, status, error): - self._write_hold() - self.motion_active = False - self.sequence_active = False - self.faulted = True - self.connected = False - self.ready = False - self.last_error = error - self.last_status = status - - def process_serial_line(self, line): - self.get_logger().debug(f'Arduino: {line}') - if line.startswith('READY,IK4,1'): - self.connected = True - self.ready = True - self.faulted = False - self.last_error = '' - self.last_status = 'ready' - return - if line.startswith('ERROR,'): - self._latch_fault('arduino-error', line[6:]) - return - if line == 'OK,ARRIVED': - self.current = list(self.target) - self.motion_active = False - self.last_status = 'arrived' - if self.sequence_active: - self.sequence_index += 1 - if self.sequence_index < len(SEQUENCE): - self.send_move(SEQUENCE[self.sequence_index]) - else: - self.sequence_active = False - return - if line in ('OK,MOVE', 'OK,JOG'): - self.last_status = 'accepted' - return - if line in ('OK,HOLD', 'OK,SWITCH HOLD'): + with self.state_lock: + self._write_hold() self.motion_active = False self.sequence_active = False - self.last_status = 'held' - return + self.stop_requested = True + self.faulted = True + self.connected = False + self.ready = False + self.last_error = error + self.last_status = status + + def process_serial_line(self, line): + with self.state_lock: + self.get_logger().debug(f'Arduino: {line}') + self.awaiting_probe = False + self.probe_sent_monotonic = None + if line.startswith('READY,IK4,1'): + if self.faulted: + self.get_logger().warning('Ignoring READY while a fault is latched.') + return + self.connected = True + self.ready = True + self.faulted = False + self.last_error = '' + self.last_status = 'ready' + return + if line.startswith('ERROR,'): + self._latch_fault('arduino-error', line[6:]) + return + if line == 'OK,ARRIVED': + if not self.motion_active or self.stop_requested: + self.get_logger().debug('Ignoring stale ARRIVED after cancellation.') + return + self.current = list(self.target) + self.motion_active = False + self.last_status = 'arrived' + if self.command_kind == 'HOME': + self.home_completed = True + if self.sequence_active and self.command_kind == 'RUN': + self.sequence_index += 1 + if self.sequence_index < len(SEQUENCE): + self.send_move(SEQUENCE[self.sequence_index], 'RUN') + else: + self.sequence_active = False + return + if line in ('OK,MOVE', 'OK,JOG'): + self.last_status = 'accepted' + return + if line in ('OK,HOLD', 'OK,SWITCH HOLD'): + self.motion_active = False + self.sequence_active = False + self.stop_requested = True + self.command_kind = 'STOP' + self.last_status = 'held' + return - self._latch_fault('malformed-response', f'Unexpected response: {line}') + self._latch_fault('malformed-response', f'Unexpected response: {line}') def send_line(self, line): - if self.dry_run: - self.last_status = 'dry-run-accepted' - return True - if not self.connected or self.serial_port is None: - self.last_status = 'not-connected' - return False - try: - with self.serial_lock: - self.serial_port.write((line + '\n').encode('ascii')) - return True - except Exception as error: - self._latch_fault('serial-write-failed', str(error)) - return False + with self.state_lock: + if self.dry_run: + self.last_status = 'dry-run-accepted' + return True + if not self.connected or self.serial_port is None: + self.last_status = 'not-connected' + return False + try: + with self.serial_lock: + self.serial_port.write((line + '\n').encode('ascii')) + return True + except Exception as error: + self._latch_fault('serial-write-failed', str(error)) + return False def handle_command(self, message): - command = message.data.strip().upper() - if command == 'RUN': - if not self.connected or not self.ready or self.faulted: - self.last_status = 'run-rejected-not-connected' - return - self.sequence_index = 0 - self.sequence_active = True - self.send_move(SEQUENCE[0]) - elif command == 'HOME': - self.sequence_active = False - self.send_move(HOME_PHYSICAL_DEGREES) - elif command == 'STOP': - self.sequence_active = False - self.motion_active = False - if self.send_line('HOLD'): - self.last_status = 'hold-requested' + with self.state_lock: + command = message.data.strip().upper() + if command == 'RUN': + if not self.connected or not self.ready or self.faulted: + self.last_status = 'run-rejected-not-ready' + return + if not self.home_completed: + self.last_status = 'run-rejected-home-required' + return + self.sequence_index = 0 + self.sequence_active = True + self.stop_requested = False + self.send_move(SEQUENCE[0], 'RUN') + elif command == 'HOME': + if not self.connected or not self.ready or self.faulted: + self.last_status = 'home-rejected-not-ready' + return + self.sequence_active = False + self.stop_requested = False + self.send_move(HOME_PHYSICAL_DEGREES, 'HOME') + elif command == 'STOP': + self.sequence_active = False + self.motion_active = False + self.stop_requested = True + self.command_kind = 'STOP' + if self.send_line('HOLD'): + self.last_status = 'hold-requested' + else: + self.last_status = 'hold-request-failed' else: - self.last_status = 'hold-request-failed' - else: - self.get_logger().warn(f'Ignoring unknown motion command: {command}') + self.get_logger().warn(f'Ignoring unknown motion command: {command}') - def send_move(self, target): + def send_move(self, target, command_kind): if any( value < lower or value > upper for value, (lower, upper) in zip(target, PHYSICAL_LIMITS) @@ -239,42 +274,50 @@ def send_move(self, target): 'target-rejected', 'Target exceeds Arduino software limits.') return - self.start = list(self.current) - self.target = list(target) - self.motion_started = time.monotonic() - self.motion_duration = max(0.3, min(15.0, self.segment_duration)) - command = 'MOVE,' + ','.join(f'{value:.2f}' for value in target) - command += f',{int(self.motion_duration * 1000)}' - if self.send_line(command): - self.motion_active = True - self.last_status = 'move-requested' + with self.state_lock: + self.start = list(self.current) + self.target = list(target) + self.motion_started = time.monotonic() + self.motion_duration = max(0.3, min(15.0, self.segment_duration)) + self.command_kind = command_kind + command = 'MOVE,' + ','.join(f'{value:.2f}' for value in target) + command += f',{int(self.motion_duration * 1000)}' + if self.send_line(command): + self.motion_active = True + self.last_status = 'move-requested' def publish_estimated_state(self): - if ( - not self.dry_run and self.connected and - self.motion_active and - self.last_response_monotonic is not None and - time.monotonic() - self.last_response_monotonic > ( - self.motion_duration + RESPONSE_TIMEOUT_SECONDS) - ): - self._latch_fault( - 'serial-read-failed', 'Arduino response watchdog timed out.') - - if self.motion_active: - progress = min( - (time.monotonic() - self.motion_started) / self.motion_duration, - 1.0, - ) - blend = smoothstep(progress) - self.current = [ - start + (target - start) * blend - for start, target in zip(self.start, self.target) - ] + with self.state_lock: + now = time.monotonic() + if not self.dry_run and self.connected: + if not self.ready and self.last_response_monotonic is not None and now - self.last_response_monotonic > HANDSHAKE_TIMEOUT_SECONDS: + self._latch_fault('handshake-timeout', 'Arduino handshake timed out.') + elif self.motion_active and self.last_response_monotonic is not None and now - self.last_response_monotonic > self.motion_duration + RESPONSE_TIMEOUT_SECONDS: + self._latch_fault('serial-read-failed', 'Arduino response watchdog timed out.') + elif self.ready and not self.motion_active and self.last_response_monotonic is not None: + if self.awaiting_probe and self.probe_sent_monotonic is not None and now - self.probe_sent_monotonic > HANDSHAKE_TIMEOUT_SECONDS: + self._latch_fault('idle-timeout', 'Arduino stopped responding while idle.') + elif not self.awaiting_probe and now - self.last_response_monotonic > IDLE_RESPONSE_TIMEOUT_SECONDS: + self.awaiting_probe = True + self.probe_sent_monotonic = now + self.send_line('ID') + + if self.motion_active: + progress = min( + (now - self.motion_started) / self.motion_duration, + 1.0, + ) + blend = smoothstep(progress) + self.current = [ + start + (target - start) * blend + for start, target in zip(self.start, self.target) + ] + estimated_current = list(self.current) message = JointState() message.header.stamp = self.get_clock().now().to_msg() message.name = JOINT_NAMES - message.position = model_radians_from_physical(self.current) + message.position = model_radians_from_physical(estimated_current) self.joint_publisher.publish(message) if self.dry_run and self.motion_active and time.monotonic() >= self.motion_started + self.motion_duration: @@ -286,7 +329,7 @@ def publish_diagnostics(self): bridge_status.level = ( DiagnosticStatus.ERROR if self.faulted or not self.connected or self.last_status in FAULT_STATUSES - else DiagnosticStatus.OK + else DiagnosticStatus.WARN if not self.ready else DiagnosticStatus.OK ) bridge_status.message = self.last_status bridge_status.values = [ @@ -327,12 +370,18 @@ def publish_diagnostics(self): if self.faulted or bridge_status.level == DiagnosticStatus.ERROR: motion_status = 'FAULT' + elif not self.ready: + motion_status = 'CONNECTING' elif self.motion_active: motion_status = 'RUNNING' elif self.last_status == 'arrived': motion_status = 'COMPLETE' + elif self.last_status == 'hold-requested': + motion_status = 'STOP_REQUESTED' elif self.last_status == 'held': motion_status = 'STOPPED' + elif self.ready and not self.home_completed: + motion_status = 'HOME_REQUIRED' else: motion_status = 'READY' status_message = String() @@ -340,18 +389,20 @@ def publish_diagnostics(self): self.status_publisher.publish(status_message) def destroy_node(self): - if self.motion_active and (self.connected or self.serial_port is not None): - self._write_hold() - self.motion_active = False - self.sequence_active = False - self.serial_stop.set() - if self.serial_reader is not None and self.serial_reader.is_alive(): - self.serial_reader.join(timeout=0.5) - if self.serial_port is not None: - try: - self.serial_port.close() - except Exception: - pass + with self.state_lock: + if self.motion_active and (self.connected or self.serial_port is not None): + self._write_hold() + self.motion_active = False + self.sequence_active = False + self.stop_requested = True + self.serial_stop.set() + if self.serial_reader is not None and self.serial_reader.is_alive(): + self.serial_reader.join(timeout=0.5) + if self.serial_port is not None: + try: + self.serial_port.close() + except Exception: + pass super().destroy_node() diff --git a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp index 0cabf1d..43f60d7 100644 --- a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp +++ b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/motion_test_panel.hpp @@ -3,11 +3,13 @@ #include #include +#include #include #include #include +#include #include #include #include @@ -17,40 +19,42 @@ namespace waybionic_rviz_plugins { -class MotionTestPanel : public rviz_common::Panel -{ - Q_OBJECT + class MotionTestPanel : public rviz_common::Panel + { + Q_OBJECT -public: - explicit MotionTestPanel(QWidget * parent = nullptr); - ~MotionTestPanel() override; + public: + explicit MotionTestPanel(QWidget *parent = nullptr); + ~MotionTestPanel() override; - void onInitialize() override; + void onInitialize() override; -private: - void buildUi(); + private: + void buildUi(); - void runTest(); - void moveHome(); - void stopTest(); + void runTest(); + void moveHome(); + void stopTest(); - void publishCommand(const std::string & command); - void handleStatus(const std_msgs::msg::String::SharedPtr message); + void publishCommand(const std::string &command); + void handleStatus(const std_msgs::msg::String::SharedPtr message); - QPushButton * run_button_{nullptr}; - QPushButton * home_button_{nullptr}; - QPushButton * stop_button_{nullptr}; + QPushButton *run_button_{nullptr}; + QPushButton *home_button_{nullptr}; + QPushButton *stop_button_{nullptr}; - QLabel * status_label_{nullptr}; - QLabel * position_label_{nullptr}; - QLabel * result_label_{nullptr}; + QLabel *status_label_{nullptr}; + QLabel *position_label_{nullptr}; + QLabel *result_label_{nullptr}; - rclcpp::Node::SharedPtr ros_node_; - rclcpp::Publisher::SharedPtr command_publisher_; - rclcpp::Subscription::SharedPtr status_subscription_; - bool test_running_{false}; -}; + rclcpp::Node::SharedPtr ros_node_; + rclcpp::executors::SingleThreadedExecutor::SharedPtr executor_; + std::thread executor_thread_; + rclcpp::Publisher::SharedPtr command_publisher_; + rclcpp::Subscription::SharedPtr status_subscription_; + bool test_running_{false}; + }; -} // namespace waybionic_rviz_plugins +} // namespace waybionic_rviz_plugins -#endif // WAYBIONIC_RVIZ_PLUGINS__MOTION_TEST_PANEL_HPP_ +#endif // WAYBIONIC_RVIZ_PLUGINS__MOTION_TEST_PANEL_HPP_ diff --git a/waybionic_rviz_plugins/src/motion_test_panel.cpp b/waybionic_rviz_plugins/src/motion_test_panel.cpp index 52f7d30..7ccfacd 100644 --- a/waybionic_rviz_plugins/src/motion_test_panel.cpp +++ b/waybionic_rviz_plugins/src/motion_test_panel.cpp @@ -17,6 +17,14 @@ namespace waybionic_rviz_plugins MotionTestPanel::~MotionTestPanel() { + if (executor_) + { + executor_->cancel(); + } + if (executor_thread_.joinable()) + { + executor_thread_.join(); + } } void MotionTestPanel::onInitialize() @@ -29,6 +37,10 @@ namespace waybionic_rviz_plugins "/old_arm_motion_test/status", rclcpp::QoS(10), [this](const std_msgs::msg::String::SharedPtr message) { handleStatus(message); }); + executor_ = std::make_shared(); + executor_->add_node(ros_node_); + executor_thread_ = std::thread([this]() + { executor_->spin(); }); } void MotionTestPanel::buildUi() { @@ -119,11 +131,11 @@ namespace waybionic_rviz_plugins test_running_ = false; publishCommand("STOP"); - status_label_->setText("STOPPED"); - result_label_->setText("Motion test stopped."); + status_label_->setText("STOP REQUESTED"); + result_label_->setText("Waiting for the Arduino to confirm HOLD."); - run_button_->setEnabled(true); - home_button_->setEnabled(true); + run_button_->setEnabled(false); + home_button_->setEnabled(false); stop_button_->setEnabled(false); } @@ -151,6 +163,27 @@ namespace waybionic_rviz_plugins run_button_->setEnabled(true); home_button_->setEnabled(true); stop_button_->setEnabled(false); + } else if (status == "HOME_REQUIRED") { + test_running_ = false; + status_label_->setText("HOME REQUIRED"); + result_label_->setText("Move to HOME before running the sequence."); + run_button_->setEnabled(false); + home_button_->setEnabled(true); + stop_button_->setEnabled(false); + } else if (status == "CONNECTING") { + test_running_ = false; + status_label_->setText("CONNECTING"); + result_label_->setText("Waiting for the Arduino handshake."); + run_button_->setEnabled(false); + home_button_->setEnabled(false); + stop_button_->setEnabled(false); + } else if (status == "STOP_REQUESTED") { + test_running_ = false; + status_label_->setText("STOP REQUESTED"); + result_label_->setText("Waiting for the Arduino to confirm HOLD."); + run_button_->setEnabled(false); + home_button_->setEnabled(false); + stop_button_->setEnabled(false); } else if (status == "STOPPED" || status == "FAULT" || status == "ERROR") { test_running_ = false; status_label_->setText(status); From a8f155cfdbff2540e12ee2f57501b63e0f5bcd8d Mon Sep 17 00:00:00 2001 From: aj0khi Date: Sat, 19 Sep 2026 15:29:32 -0600 Subject: [PATCH 15/21] final final final tweaks lol --- .../rviz/waybionic_old_arm_root.rviz | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz index 17c2392..fb94d44 100644 --- a/waybionic_bringup/rviz/waybionic_old_arm_root.rviz +++ b/waybionic_bringup/rviz/waybionic_old_arm_root.rviz @@ -5,7 +5,7 @@ Panels: Property Tree Widget: Expanded: ~ Splitter Ratio: 0.5 - Tree Height: 417 + Tree Height: 451 - Class: rviz_common/Views Expanded: - /Current View1 @@ -13,6 +13,10 @@ Panels: Splitter Ratio: 0.5 - Class: waybionic_rviz_plugins/MotionTestPanel Name: MotionTestPanel + - Class: waybionic_rviz_plugins/DiagnosticsPanel + Diagnostics Topic: /diagnostics + Name: DiagnosticsPanel + Use Mock Diagnostics: true Visualization Manager: Class: "" Displays: @@ -247,3 +251,19 @@ Visualization Manager: Target Frame: Value: Orbit (rviz_default_plugins) Yaw: 2.640000581741333 +Window Geometry: + DiagnosticsPanel: + collapsed: false + Displays: + collapsed: false + Height: 1143 + Hide Left Dock: false + Hide Right Dock: false + MotionTestPanel: + collapsed: false + QMainWindow State: 000000ff00000000fd0000000200000000000001a400000421fc0200000002fb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c010000003b000000cc000000cc00fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000010d0000034f0000034f00ffffff000000010000015600000421fc0200000002fb000000100044006900730070006c006100790073010000003b00000244000000c700fffffffb0000000a005600690065007700730100000285000001d7000000a000ffffff0000046e0000042100000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Views: + collapsed: false + Width: 1908 + X: 0 + Y: 0 From ef63857cbe7c122645449f845ae01e51aec91f23 Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 26 Sep 2026 12:22:15 -0600 Subject: [PATCH 16/21] Finalize old-arm Arduino integration --- .vscode/c_cpp_properties.json | 5 +- .vscode/settings.json | 229 +++-- docs/arm_hardware_motion_architecture.md | 11 +- groundstation.zip | Bin 243282 -> 0 bytes waybionic_bringup/launch/display.launch.py | 7 + waybionic_bringup/launch/old_arm.launch.py | 64 +- .../test/test_ground_station_launch.py | 3 +- waybionic_bringup/test/test_old_arm_launch.py | 4 +- waybionic_hardware/package.xml | 4 + .../test/test_arduino_bridge.py | 12 + .../waybionic_hardware/arduino_bridge.py | 8 +- waybionic_motion_test/package.xml | 4 + .../test/test_motion_test.py | 12 + .../waybionic_motion_test/motion_test.py | 3 +- .../diagnostics_panel.hpp | 123 +-- .../src/diagnostics_panel.cpp | 909 +++++++++--------- 16 files changed, 779 insertions(+), 619 deletions(-) delete mode 100644 groundstation.zip diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 8986edc..1c6f2d8 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -11,10 +11,9 @@ ], "name": "ROS", "intelliSenseMode": "gcc-x64", - "compilerPath": "/usr/bin/c++", + "compilerPath": "/usr/bin/gcc", "cStandard": "gnu11", - "cppStandard": "c++17", - "compileCommands": "${workspaceFolder}/build/waybionic_rviz_plugins/compile_commands.json" + "cppStandard": "c++14" } ], "version": 4 diff --git a/.vscode/settings.json b/.vscode/settings.json index ec5d55a..c465b83 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,116 +1,115 @@ { - "files.associations": { - "*.msg": "plaintext", - "*.tcc": "cpp", - "cctype": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "csignal": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cstring": "cpp", - "ctime": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "any": "cpp", - "array": "cpp", - "atomic": "cpp", - "strstream": "cpp", - "bit": "cpp", - "bitset": "cpp", - "chrono": "cpp", - "codecvt": "cpp", - "compare": "cpp", - "complex": "cpp", - "concepts": "cpp", - "condition_variable": "cpp", - "coroutine": "cpp", - "cstdint": "cpp", - "deque": "cpp", - "forward_list": "cpp", - "list": "cpp", - "map": "cpp", - "set": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "unordered_set": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "optional": "cpp", - "random": "cpp", - "ratio": "cpp", - "regex": "cpp", - "source_location": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "fstream": "cpp", - "future": "cpp", - "initializer_list": "cpp", - "iomanip": "cpp", - "iosfwd": "cpp", - "iostream": "cpp", - "istream": "cpp", - "limits": "cpp", - "mutex": "cpp", - "new": "cpp", - "numbers": "cpp", - "ostream": "cpp", - "semaphore": "cpp", - "shared_mutex": "cpp", - "sstream": "cpp", - "stdexcept": "cpp", - "stop_token": "cpp", - "streambuf": "cpp", - "thread": "cpp", - "cfenv": "cpp", - "cinttypes": "cpp", - "typeindex": "cpp", - "typeinfo": "cpp", - "variant": "cpp", - "*.ipp": "cpp", - "callback": "cpp", - "image": "cpp", - "bufferobject": "cpp", - "mixinvector": "cpp", - "texture": "cpp", - "vertexarraystate": "cpp", - "buffered_value": "cpp", - "fast_back_stack": "cpp" - }, - "ros.distro": "jazzy", - "C_Cpp.default.includePath": [ - "/opt/ros/jazzy/include/**" - ], - "C_Cpp.default.cppStandard": "c++17", - "python.autoComplete.extraPaths": [ - "/opt/ros/jazzy/lib/python3.10/site-packages" - ], - "python.analysis.extraPaths": [ - "/opt/ros/jazzy/lib/python3.10/site-packages" - ], - "[python]": { - "editor.defaultFormatter": "eeyore.yapf", - }, - "editor.formatOnSave": true, - "editor.tabSize": 2, - "files.exclude": { - "build": true, - "install": true, - "log": true - }, - "cSpell.words": [ - "RCLCPP" - ], - "cmake.ignoreCMakeListsMissing": true -} \ No newline at end of file + "files.associations": { + "*.msg": "plaintext", + "*.tcc": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "csignal": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "any": "cpp", + "array": "cpp", + "atomic": "cpp", + "strstream": "cpp", + "bit": "cpp", + "bitset": "cpp", + "chrono": "cpp", + "codecvt": "cpp", + "compare": "cpp", + "complex": "cpp", + "concepts": "cpp", + "condition_variable": "cpp", + "coroutine": "cpp", + "cstdint": "cpp", + "deque": "cpp", + "forward_list": "cpp", + "list": "cpp", + "map": "cpp", + "set": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "ratio": "cpp", + "regex": "cpp", + "source_location": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "future": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "semaphore": "cpp", + "shared_mutex": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "stop_token": "cpp", + "streambuf": "cpp", + "thread": "cpp", + "cfenv": "cpp", + "cinttypes": "cpp", + "typeindex": "cpp", + "typeinfo": "cpp", + "variant": "cpp", + "*.ipp": "cpp", + "callback": "cpp", + "image": "cpp", + "bufferobject": "cpp", + "mixinvector": "cpp", + "texture": "cpp", + "vertexarraystate": "cpp", + "buffered_value": "cpp", + "fast_back_stack": "cpp" + }, + "ros.distro": "jazzy", + "C_Cpp.default.includePath": [ + "/opt/ros/jazzy/include/**" + ], + "C_Cpp.default.cppStandard": "c++17", + "python.autoComplete.extraPaths": [ + "/opt/ros/jazzy/lib/python3.10/site-packages" + ], + "python.analysis.extraPaths": [ + "/opt/ros/jazzy/lib/python3.10/site-packages" + ], + "[python]": { + "editor.defaultFormatter": "eeyore.yapf", + }, + "editor.formatOnSave": true, + "editor.tabSize": 2, + "files.exclude": { + "build": true, + "install": true, + "log": true + }, + "cSpell.words": [ + "RCLCPP" + ] +} diff --git a/docs/arm_hardware_motion_architecture.md b/docs/arm_hardware_motion_architecture.md index 2c1a9ca..00292ef 100644 --- a/docs/arm_hardware_motion_architecture.md +++ b/docs/arm_hardware_motion_architecture.md @@ -123,6 +123,11 @@ accepts the existing `/old_arm_motion_test/command` topic. It translates `RUN`, `HOME`, and `STOP` into the firmware protocol, publishes the estimated pose, and publishes connection/command status on `/diagnostics`. +The initial and HOME pose is the calibrated upright pose: physical servo +angles `[90.0, 35.0, 151.5, 27.5]`, corresponding to model joint angles +`[0, 90, 0, 0]` degrees. The manual joint-state stepper is opt-in so it does +not overwrite this upright motion-test state by publishing zero positions. + ## Package Responsibilities ### `waybionic_description` @@ -181,9 +186,11 @@ It must not publish synthetic `/joint_states` in physical mode. Arduino-reported fault. 5. Treat the stop command as cancellation plus a hardware stop request; do not merely stop publishing messages. -6. Require an explicit physical-mode launch argument so a development launch +6. A latched bridge fault ignores subsequent `READY` messages and can only be + cleared by restarting the bridge; inspect the reported fault before doing so. +7. Require an explicit physical-mode launch argument so a development launch cannot move the arm accidentally. -7. Keep the first physical test at low speed with one joint at a time before +8. Keep the first physical test at low speed with one joint at a time before running synchronized trajectories. ## Incremental Implementation Plan diff --git a/groundstation.zip b/groundstation.zip deleted file mode 100644 index 641ff9c4ae14e6fd3fc70e006a0c05caf5ef0252..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243282 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�pUYE?hi2420gf9Z;9<4@5 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
n=y&bCrZ;FcYNWh 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 HBHaH0we}!% diff --git a/waybionic_bringup/launch/display.launch.py b/waybionic_bringup/launch/display.launch.py index dc3d1ab..7692474 100644 --- a/waybionic_bringup/launch/display.launch.py +++ b/waybionic_bringup/launch/display.launch.py @@ -70,9 +70,16 @@ def generate_launch_description(): arguments=['-d', LaunchConfiguration('rvizconfig')], ) + joint_state_publisher_gui_node = Node( + package='joint_state_publisher_gui', + executable='joint_state_publisher_gui', + name='joint_state_publisher_gui', + ) + return LaunchDescription([ model_arg, rviz_arg, OpaqueFunction(function=_launch_nodes), + joint_state_publisher_gui_node, rviz_node, ]) diff --git a/waybionic_bringup/launch/old_arm.launch.py b/waybionic_bringup/launch/old_arm.launch.py index 3567718..1520d35 100644 --- a/waybionic_bringup/launch/old_arm.launch.py +++ b/waybionic_bringup/launch/old_arm.launch.py @@ -5,9 +5,10 @@ from ament_index_python.packages import get_package_share_directory from launch import LaunchDescription from launch.actions import DeclareLaunchArgument, GroupAction, IncludeLaunchDescription +from launch.conditions import IfCondition from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import LaunchConfiguration -from launch_ros.actions import PushRosNamespace, SetRemap +from launch.substitutions import LaunchConfiguration, PythonExpression +from launch_ros.actions import Node, PushRosNamespace, SetRemap def generate_launch_description(): @@ -23,8 +24,10 @@ def generate_launch_description(): 'joint_states_topic', default_value='/old_arm/joint_states', description='sensor_msgs/JointState input, with named model joints in radians'), DeclareLaunchArgument( - 'use_joint_state_publisher_gui', default_value='true', - description='Set false when a live joint-state source is connected'), + 'use_joint_state_publisher_gui', default_value='false', + description=( + 'Opt into the manual joint stepper instead of the upright ' + 'motion-test source')), DeclareLaunchArgument( 'launch_rviz', default_value='true', description='Set false for headless transform validation'), @@ -37,6 +40,24 @@ def generate_launch_description(): DeclareLaunchArgument( 'diagnostics_topic', default_value='/diagnostics', description='DiagnosticArray input for the Engineering Monitor'), + DeclareLaunchArgument( + 'start_motion_test', default_value='true', + description='Start the old-arm motion test node'), + DeclareLaunchArgument( + 'motion_test_segment_duration', default_value='3.0', + description='Seconds for each synchronized motion segment'), + DeclareLaunchArgument( + 'hardware_mode', default_value='simulation', + description='Arm mode: simulation or arduino'), + DeclareLaunchArgument( + 'arduino_port', default_value='', + description='Arduino serial port, for example /dev/ttyACM0'), + DeclareLaunchArgument( + 'arduino_baud', default_value='115200', + description='Arduino serial baud rate'), + DeclareLaunchArgument( + 'arduino_dry_run', default_value='false', + description='Run the Arduino bridge without opening a serial port'), ] station = IncludeLaunchDescription( PythonLaunchDescriptionSource( @@ -52,8 +73,43 @@ def generate_launch_description(): 'start_temporary_diagnostics_publisher': 'false', }.items(), ) + + motion_test_node = Node( + package='waybionic_motion_test', + executable='motion_test', + name='old_arm_motion_test', + output='screen', + condition=IfCondition(PythonExpression([ + "'", LaunchConfiguration('start_motion_test'), "' == 'true' and '", + LaunchConfiguration('hardware_mode'), "' == 'simulation'" + ])), + parameters=[ + {'segment_duration': LaunchConfiguration( + 'motion_test_segment_duration')} + ], + ) + + arduino_bridge_node = Node( + package='waybionic_hardware', + executable='arduino_bridge', + name='waybionic_arduino_bridge', + output='screen', + condition=IfCondition(PythonExpression([ + "'", LaunchConfiguration('hardware_mode'), "' == 'arduino'" + ])), + parameters=[ + {'port': LaunchConfiguration('arduino_port')}, + {'baud': LaunchConfiguration('arduino_baud')}, + {'segment_duration': LaunchConfiguration( + 'motion_test_segment_duration')}, + {'dry_run': LaunchConfiguration('arduino_dry_run')}, + ], + ) + return LaunchDescription(arguments + [GroupAction([ PushRosNamespace('old_arm'), SetRemap(src='joint_states', dst=LaunchConfiguration('joint_states_topic')), station, + motion_test_node, + arduino_bridge_node, ])]) diff --git a/waybionic_bringup/test/test_ground_station_launch.py b/waybionic_bringup/test/test_ground_station_launch.py index 3476a7b..16d9671 100644 --- a/waybionic_bringup/test/test_ground_station_launch.py +++ b/waybionic_bringup/test/test_ground_station_launch.py @@ -4,7 +4,7 @@ from ament_index_python.packages import get_package_share_directory import launch -from launch.actions import IncludeLaunchDescription +from launch.actions import IncludeLaunchDescription, SetEnvironmentVariable from launch.launch_description_sources import PythonLaunchDescriptionSource import launch_testing import launch_testing.actions @@ -26,6 +26,7 @@ def generate_test_description(): ) return launch.LaunchDescription([ + SetEnvironmentVariable('ROS_DOMAIN_ID', '71'), ground_station_launch, launch_testing.actions.ReadyToTest() ]) diff --git a/waybionic_bringup/test/test_old_arm_launch.py b/waybionic_bringup/test/test_old_arm_launch.py index 281055a..3bd5fab 100644 --- a/waybionic_bringup/test/test_old_arm_launch.py +++ b/waybionic_bringup/test/test_old_arm_launch.py @@ -12,7 +12,7 @@ from ament_index_python.packages import get_package_share_directory import launch -from launch.actions import IncludeLaunchDescription +from launch.actions import IncludeLaunchDescription, SetEnvironmentVariable from launch.launch_description_sources import PythonLaunchDescriptionSource import launch_testing import launch_testing.actions @@ -60,9 +60,11 @@ def generate_test_description(): 'launch_rviz': 'false', 'use_joint_state_publisher_gui': 'false', 'joint_states_topic': topic, + 'start_motion_test': 'false', }.items(), ) return launch.LaunchDescription([ + SetEnvironmentVariable('ROS_DOMAIN_ID', '72'), station, launch_testing.actions.ReadyToTest(), ]), {'joint_states_topic': topic} diff --git a/waybionic_hardware/package.xml b/waybionic_hardware/package.xml index 04a117d..7108013 100644 --- a/waybionic_hardware/package.xml +++ b/waybionic_hardware/package.xml @@ -13,6 +13,10 @@ std_msgs python3-serial + ament_flake8 + ament_pep257 + python3-pytest + ament_python diff --git a/waybionic_hardware/test/test_arduino_bridge.py b/waybionic_hardware/test/test_arduino_bridge.py index f7b6e7f..b858371 100644 --- a/waybionic_hardware/test/test_arduino_bridge.py +++ b/waybionic_hardware/test/test_arduino_bridge.py @@ -114,6 +114,18 @@ def test_arrived_after_stop_does_not_start_next_move(self): self.assertEqual(len(bridge.serial_port.writes), 1) self.assertEqual(bridge.serial_port.writes[0], b'HOLD\n') + def test_dry_run_stop_completes_hold(self): + from std_msgs.msg import String + + bridge = self.make_bridge() + bridge.dry_run = True + + bridge.handle_command(String(data='STOP')) + + self.assertEqual(bridge.last_status, 'held') + self.assertTrue(bridge.stop_requested) + self.assertFalse(bridge.motion_active) + def test_home_and_run_require_ready_home_sequence(self): from std_msgs.msg import String diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py index 49fbef2..0dacddc 100644 --- a/waybionic_hardware/waybionic_hardware/arduino_bridge.py +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -15,7 +15,8 @@ 'old_arm_elbow_pitch_joint', 'old_arm_wrist_roll_joint', ] -HOME_PHYSICAL_DEGREES = [90.0, 35.0, 151.5, 27.5] +UPRIGHT_PHYSICAL_DEGREES = [90.0, 35.0, 151.5, 27.5] +HOME_PHYSICAL_DEGREES = UPRIGHT_PHYSICAL_DEGREES SERVO_DIRECTIONS = [1.0, -1.0, 1.0, 1.0] MODEL_HOME_OFFSETS_DEGREES = [0.0, 90.0, 0.0, 0.0] PHYSICAL_LIMITS = [(0.0, 270.0), (0.0, 112.5), (90.0, 270.0), (0.0, 270.0)] @@ -259,7 +260,10 @@ def handle_command(self, message): self.stop_requested = True self.command_kind = 'STOP' if self.send_line('HOLD'): - self.last_status = 'hold-requested' + if self.dry_run: + self.process_serial_line('OK,HOLD') + else: + self.last_status = 'hold-requested' else: self.last_status = 'hold-request-failed' else: diff --git a/waybionic_motion_test/package.xml b/waybionic_motion_test/package.xml index 8df9897..fe3a5bf 100644 --- a/waybionic_motion_test/package.xml +++ b/waybionic_motion_test/package.xml @@ -11,6 +11,10 @@ sensor_msgs std_msgs + ament_flake8 + ament_pep257 + python3-pytest + ament_python diff --git a/waybionic_motion_test/test/test_motion_test.py b/waybionic_motion_test/test/test_motion_test.py index 12d53b3..50a78f0 100644 --- a/waybionic_motion_test/test/test_motion_test.py +++ b/waybionic_motion_test/test/test_motion_test.py @@ -25,6 +25,18 @@ def test_joint_names_match_old_arm_model(self): 'old_arm_wrist_roll_joint', ]) + def test_upright_home_pose_is_the_initial_stepper_pose(self): + from waybionic_motion_test.motion_test import ( + UPRIGHT_PHYSICAL_DEGREES, + model_radians_from_physical, + ) + + self.assertEqual(UPRIGHT_PHYSICAL_DEGREES, [90.0, 35.0, 151.5, 27.5]) + self.assertEqual( + model_radians_from_physical(UPRIGHT_PHYSICAL_DEGREES), + [0.0, 1.5707963267948966, 0.0, 0.0], + ) + def test_home_does_not_advance_into_sequence(self): from std_msgs.msg import String from waybionic_motion_test.motion_test import MotionTestNode diff --git a/waybionic_motion_test/waybionic_motion_test/motion_test.py b/waybionic_motion_test/waybionic_motion_test/motion_test.py index 73c4757..12772c4 100644 --- a/waybionic_motion_test/waybionic_motion_test/motion_test.py +++ b/waybionic_motion_test/waybionic_motion_test/motion_test.py @@ -13,7 +13,8 @@ 'old_arm_wrist_roll_joint', ] JOINT_COUNT = len(JOINT_NAMES) -HOME_PHYSICAL_DEGREES = [90.0, 35.0, 151.5, 27.5] +UPRIGHT_PHYSICAL_DEGREES = [90.0, 35.0, 151.5, 27.5] +HOME_PHYSICAL_DEGREES = UPRIGHT_PHYSICAL_DEGREES SERVO_DIRECTIONS = [1.0, -1.0, 1.0, 1.0] MODEL_HOME_OFFSETS_DEGREES = [0.0, 90.0, 0.0, 0.0] diff --git a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp index 2663cfb..31ca7da 100644 --- a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp +++ b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp @@ -14,6 +14,8 @@ #include #include +#include +#include #include #include @@ -28,71 +30,72 @@ class QPushButton; namespace waybionic_rviz_plugins { -class DiagnosticsPanel : public rviz_common::Panel -{ - Q_OBJECT + class DiagnosticsPanel : public rviz_common::Panel + { + Q_OBJECT -public: - explicit DiagnosticsPanel(QWidget * parent = nullptr); - ~DiagnosticsPanel() override; + public: + explicit DiagnosticsPanel(QWidget *parent = nullptr); + ~DiagnosticsPanel() override; - void onInitialize() override; - void save(rviz_common::Config config) const override; - void load(const rviz_common::Config & config) override; + void onInitialize() override; + void save(rviz_common::Config config) const override; + void load(const rviz_common::Config &config) override; -private: - void buildUi(); - void buildMovementTestUi(QVBoxLayout * root_layout); - void configureSource(bool use_mock_diagnostics); - bool readUseMockDiagnosticsParameter(bool default_value); - std::string readDiagnosticsTopicParameter(const std::string & default_value); - void refresh(); - void setMockDiagnosticsState(MockDiagnosticsState mode); - void setUseMockDiagnostics(bool use_mock_diagnostics); - void updateSystemStatus( - const DiagnosticsSource & source, - const std::vector & messages, - const rclcpp::Time & now); - void updateTelemetryTable(const std::vector & messages, const rclcpp::Time & now); - void updateAlerts(const std::vector & messages); - void updateSourceControls(); - void clearAlerts(); + private: + void buildUi(); + void buildMovementTestUi(QVBoxLayout *root_layout); + void configureSource(bool use_mock_diagnostics); + bool readUseMockDiagnosticsParameter(bool default_value); + std::string readDiagnosticsTopicParameter(const std::string &default_value); + void refresh(); + void setMockDiagnosticsState(MockDiagnosticsState mode); + void setUseMockDiagnostics(bool use_mock_diagnostics); + void updateSystemStatus( + const DiagnosticsSource &source, + const std::vector &messages, + const rclcpp::Time &now); + void updateTelemetryTable(const std::vector &messages, const rclcpp::Time &now); + void updateAlerts(const std::vector &messages); + void updateSourceControls(); + void clearAlerts(); - QString statusColor(DiagnosticStatus status) const; - QString rowBackground(DiagnosticStatus status) const; - QString ageText(const rclcpp::Time & timestamp, const rclcpp::Time & now) const; - QString optionalText(const std::optional & value) const; - QString alertText(const DiagnosticMessage & message) const; + QString statusColor(DiagnosticStatus status) const; + QString rowBackground(DiagnosticStatus status) const; + QString ageText(const rclcpp::Time ×tamp, const rclcpp::Time &now) const; + QString optionalText(const std::optional &value) const; + QString alertText(const DiagnosticMessage &message) const; - // Shared ownership so a refresh tick keeps its source alive even if a mode - // switch replaces the panel's source part-way through the tick. - std::shared_ptr diagnostics_source_; - std::shared_ptr mock_diagnostics_source_; - rclcpp::Node::SharedPtr rviz_node_; - rclcpp::Clock clock_{RCL_SYSTEM_TIME}; - std::string diagnostics_topic_{"/diagnostics"}; - bool use_mock_diagnostics_{true}; + // Shared ownership so a refresh tick keeps its source alive even if a mode + // switch replaces the panel's source part-way through the tick. + std::shared_ptr diagnostics_source_; + std::shared_ptr mock_diagnostics_source_; + rclcpp::Node::SharedPtr rviz_node_; + rclcpp::Publisher::SharedPtr motion_command_publisher_; + rclcpp::Clock clock_{RCL_SYSTEM_TIME}; + std::string diagnostics_topic_{"/diagnostics"}; + bool use_mock_diagnostics_{true}; - QTimer * refresh_timer_{nullptr}; - QCheckBox * use_mock_diagnostics_checkbox_{nullptr}; - QLabel * state_label_{nullptr}; - QLabel * last_updated_label_{nullptr}; - QLabel * source_label_{nullptr}; - QLabel * ros_connection_label_{nullptr}; - QLabel * heartbeat_label_{nullptr}; - QLabel * ui_mode_label_{nullptr}; - QLabel * safety_label_{nullptr}; - QLabel * alert_icon_label_{nullptr}; - QTableWidget * telemetry_table_{nullptr}; - QVBoxLayout * alerts_layout_{nullptr}; - QPushButton * normal_button_{nullptr}; - QPushButton * fault_button_{nullptr}; - QPushButton * movement_test_button_{nullptr}; - QLabel * movement_test_status_{nullptr}; - QProgressBar * movement_test_progress_{nullptr}; - QButtonGroup * mock_state_button_group_{nullptr}; -}; + QTimer *refresh_timer_{nullptr}; + QCheckBox *use_mock_diagnostics_checkbox_{nullptr}; + QLabel *state_label_{nullptr}; + QLabel *last_updated_label_{nullptr}; + QLabel *source_label_{nullptr}; + QLabel *ros_connection_label_{nullptr}; + QLabel *heartbeat_label_{nullptr}; + QLabel *ui_mode_label_{nullptr}; + QLabel *safety_label_{nullptr}; + QLabel *alert_icon_label_{nullptr}; + QTableWidget *telemetry_table_{nullptr}; + QVBoxLayout *alerts_layout_{nullptr}; + QPushButton *normal_button_{nullptr}; + QPushButton *fault_button_{nullptr}; + QPushButton *movement_test_button_{nullptr}; + QLabel *movement_test_status_{nullptr}; + QProgressBar *movement_test_progress_{nullptr}; + QButtonGroup *mock_state_button_group_{nullptr}; + }; -} // namespace waybionic_rviz_plugins +} // namespace waybionic_rviz_plugins -#endif // WAYBIONIC_RVIZ_PLUGINS__DIAGNOSTICS_PANEL_HPP_ +#endif // WAYBIONIC_RVIZ_PLUGINS__DIAGNOSTICS_PANEL_HPP_ diff --git a/waybionic_rviz_plugins/src/diagnostics_panel.cpp b/waybionic_rviz_plugins/src/diagnostics_panel.cpp index 9b92ad7..a716aa7 100644 --- a/waybionic_rviz_plugins/src/diagnostics_panel.cpp +++ b/waybionic_rviz_plugins/src/diagnostics_panel.cpp @@ -32,10 +32,10 @@ namespace waybionic_rviz_plugins { -namespace -{ + namespace + { -constexpr const char * kPanelStyle = R"( + constexpr const char *kPanelStyle = R"( QWidget { background-color: #071019; color: #e8f1f8; @@ -97,465 +97,510 @@ QHeaderView::section { } )"; -QLabel * makeTitle(const QString & text) -{ - auto * label = new QLabel(text); - label->setObjectName("PanelTitle"); - return label; -} - -QLabel * makeMuted(const QString & text) -{ - auto * label = new QLabel(text); - label->setObjectName("Muted"); - return label; -} + QLabel *makeTitle(const QString &text) + { + auto *label = new QLabel(text); + label->setObjectName("PanelTitle"); + return label; + } -QFrame * makeCard() -{ - auto * card = new QFrame(); - card->setObjectName("Card"); - return card; -} + QLabel *makeMuted(const QString &text) + { + auto *label = new QLabel(text); + label->setObjectName("Muted"); + return label; + } -} // namespace + QFrame *makeCard() + { + auto *card = new QFrame(); + card->setObjectName("Card"); + return card; + } -DiagnosticsPanel::DiagnosticsPanel(QWidget * parent) -: rviz_common::Panel(parent) -{ - buildUi(); - configureSource(use_mock_diagnostics_); -} + } // namespace -DiagnosticsPanel::~DiagnosticsPanel() -{ - // Stop the timer before the members it reads are destroyed, then detach the - // live subscription so no executor callback outlives the panel. - if (refresh_timer_ != nullptr) { - refresh_timer_->stop(); - } - if (diagnostics_source_) { - diagnostics_source_->stop(); + DiagnosticsPanel::DiagnosticsPanel(QWidget *parent) + : rviz_common::Panel(parent) + { + buildUi(); + configureSource(use_mock_diagnostics_); } -} -void DiagnosticsPanel::onInitialize() -{ - if (auto ros_node_abstraction = getDisplayContext()->getRosNodeAbstraction().lock()) { - rviz_node_ = ros_node_abstraction->get_raw_node(); + DiagnosticsPanel::~DiagnosticsPanel() + { + // Stop the timer before the members it reads are destroyed, then detach the + // live subscription so no executor callback outlives the panel. + if (refresh_timer_ != nullptr) + { + refresh_timer_->stop(); + } + if (diagnostics_source_) + { + diagnostics_source_->stop(); + } } - refresh_timer_ = new QTimer(this); - connect(refresh_timer_, &QTimer::timeout, this, [this]() { refresh(); }); - refresh_timer_->start(1000); + void DiagnosticsPanel::onInitialize() + { + if (auto ros_node_abstraction = getDisplayContext()->getRosNodeAbstraction().lock()) + { + rviz_node_ = ros_node_abstraction->get_raw_node(); + motion_command_publisher_ = rviz_node_->create_publisher( + "/old_arm_motion_test/command", rclcpp::QoS(10)); + } + + refresh_timer_ = new QTimer(this); + connect(refresh_timer_, &QTimer::timeout, this, [this]() + { refresh(); }); + refresh_timer_->start(1000); - // Re-apply launch parameters after RViz finishes load() so use_mock_diagnostics:=false wins. - QTimer::singleShot(0, this, [this]() { + // Re-apply launch parameters after RViz finishes load() so use_mock_diagnostics:=false wins. + QTimer::singleShot(0, this, [this]() + { diagnostics_topic_ = readDiagnosticsTopicParameter(diagnostics_topic_); configureSource(readUseMockDiagnosticsParameter(use_mock_diagnostics_)); - refresh(); - }); -} + refresh(); }); + } -void DiagnosticsPanel::save(rviz_common::Config config) const -{ - rviz_common::Panel::save(config); - config.mapSetValue("Use Mock Diagnostics", use_mock_diagnostics_); - config.mapSetValue("Diagnostics Topic", QString::fromStdString(diagnostics_topic_)); -} + void DiagnosticsPanel::save(rviz_common::Config config) const + { + rviz_common::Panel::save(config); + config.mapSetValue("Use Mock Diagnostics", use_mock_diagnostics_); + config.mapSetValue("Diagnostics Topic", QString::fromStdString(diagnostics_topic_)); + } -void DiagnosticsPanel::load(const rviz_common::Config & config) -{ - rviz_common::Panel::load(config); + void DiagnosticsPanel::load(const rviz_common::Config &config) + { + rviz_common::Panel::load(config); - QString diagnostics_topic; - if (config.mapGetString("Diagnostics Topic", &diagnostics_topic)) { - diagnostics_topic_ = diagnostics_topic.toStdString(); + QString diagnostics_topic; + if (config.mapGetString("Diagnostics Topic", &diagnostics_topic)) + { + diagnostics_topic_ = diagnostics_topic.toStdString(); + } } -} -void DiagnosticsPanel::buildUi() -{ - setStyleSheet(kPanelStyle); - setMinimumWidth(420); - - auto * root_layout = new QVBoxLayout(this); - root_layout->setContentsMargins(10, 10, 10, 10); - root_layout->setSpacing(10); - - auto * header_card = makeCard(); - auto * header_layout = new QVBoxLayout(header_card); - header_layout->setSpacing(8); - - auto * title = makeTitle("WayBionic Engineering Monitor"); - state_label_ = new QLabel("Current State: NORMAL"); - state_label_->setObjectName("StateNormal"); - last_updated_label_ = makeMuted("Last updated: --"); - - use_mock_diagnostics_checkbox_ = new QCheckBox("Use Mock Diagnostics"); - use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); - use_mock_diagnostics_checkbox_->setToolTip( - "Checked: local mock validation states. Unchecked: subscribe to live ROS 2 diagnostics."); - connect(use_mock_diagnostics_checkbox_, &QCheckBox::toggled, this, [this](const bool checked) { - setUseMockDiagnostics(checked); - }); - - auto * button_row = new QHBoxLayout(); - normal_button_ = new QPushButton("Mock Normal"); - normal_button_->setCheckable(true); - normal_button_->setChecked(true); - fault_button_ = new QPushButton("Mock Fault"); - fault_button_->setCheckable(true); - - mock_state_button_group_ = new QButtonGroup(this); - mock_state_button_group_->setExclusive(true); - mock_state_button_group_->addButton(normal_button_); - mock_state_button_group_->addButton(fault_button_); - connect(normal_button_, &QPushButton::clicked, this, [this]() { - setMockDiagnosticsState(MockDiagnosticsState::Normal); - }); - connect(fault_button_, &QPushButton::clicked, this, [this]() { - setMockDiagnosticsState(MockDiagnosticsState::Fault); - }); - - button_row->addWidget(normal_button_); - button_row->addWidget(fault_button_); - - header_layout->addWidget(title); - header_layout->addWidget(use_mock_diagnostics_checkbox_); - header_layout->addLayout(button_row); - header_layout->addWidget(state_label_); - header_layout->addWidget(last_updated_label_); - root_layout->addWidget(header_card); - - auto * system_card = makeCard(); - auto * system_layout = new QGridLayout(system_card); - system_layout->setVerticalSpacing(6); - system_layout->addWidget(makeTitle("System Status"), 0, 0, 1, 2); - - source_label_ = new QLabel("Mock"); - ros_connection_label_ = new QLabel("Local mock diagnostics"); - heartbeat_label_ = new QLabel("OK"); - ui_mode_label_ = new QLabel("Monitoring only"); - safety_label_ = new QLabel("No motor commands sent from this RViz panel"); - safety_label_->setWordWrap(true); - - const std::vector> rows = { - {"Diagnostic Source", source_label_}, - {"ROS 2 Connection", ros_connection_label_}, - {"Backend Heartbeat", heartbeat_label_}, - {"UI Mode", ui_mode_label_}, - {"Safety Note", safety_label_}, - }; - - int row = 1; - for (const auto & [name, value] : rows) { - system_layout->addWidget(makeMuted(name), row, 0); - system_layout->addWidget(value, row, 1); - ++row; - } - root_layout->addWidget(system_card); - - auto * table_card = makeCard(); - auto * table_layout = new QVBoxLayout(table_card); - table_layout->addWidget(makeTitle("Telemetry + Live Values")); - - telemetry_table_ = new QTableWidget(0, 6); - telemetry_table_->setHorizontalHeaderLabels({"Signal", "Status", "Value", "Unit", "Last Updated", "Message"}); - telemetry_table_->setEditTriggers(QAbstractItemView::NoEditTriggers); - telemetry_table_->setSelectionBehavior(QAbstractItemView::SelectRows); - telemetry_table_->verticalHeader()->setVisible(false); - telemetry_table_->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); - telemetry_table_->horizontalHeader()->setMinimumSectionSize(80); - telemetry_table_->setMaximumHeight(220); - telemetry_table_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - table_layout->addWidget(telemetry_table_); - root_layout->addWidget(table_card); - - auto * alerts_card = makeCard(); - auto * alerts_root = new QVBoxLayout(alerts_card); - auto * alerts_title_row = new QHBoxLayout(); - alerts_title_row->addWidget(makeTitle("Current Alerts"), 1); - alert_icon_label_ = new QLabel(""); - alert_icon_label_->setStyleSheet("color: #ff4d5e; font-size: 28px; font-weight: 900;"); - alerts_title_row->addWidget(alert_icon_label_); - alerts_root->addLayout(alerts_title_row); - - alerts_layout_ = new QVBoxLayout(); - alerts_layout_->setSpacing(6); - alerts_root->addLayout(alerts_layout_); - alerts_card->setMaximumHeight(180); - alerts_card->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - root_layout->addWidget(alerts_card); - - buildMovementTestUi(root_layout); -} + void DiagnosticsPanel::buildUi() + { + setStyleSheet(kPanelStyle); + setMinimumWidth(420); -void DiagnosticsPanel::buildMovementTestUi(QVBoxLayout * root_layout) -{ - auto * movement_card = makeCard(); - auto * movement_layout = new QVBoxLayout(movement_card); - movement_layout->setSpacing(8); + auto *root_layout = new QVBoxLayout(this); + root_layout->setContentsMargins(10, 10, 10, 10); + root_layout->setSpacing(10); - movement_layout->addWidget(makeTitle("Movement Test")); + auto *header_card = makeCard(); + auto *header_layout = new QVBoxLayout(header_card); + header_layout->setSpacing(8); - auto * description = makeMuted( - "Run a controlled movement sequence to visually inspect the robot before operation."); - description->setWordWrap(true); - movement_layout->addWidget(description); + auto *title = makeTitle("WayBionic Engineering Monitor"); + state_label_ = new QLabel("Current State: NORMAL"); + state_label_->setObjectName("StateNormal"); + last_updated_label_ = makeMuted("Last updated: --"); - movement_test_button_ = new QPushButton("â–¶ Run Movement Test"); - movement_test_button_->setToolTip( - "Run the robot through its predefined movement test sequence."); + use_mock_diagnostics_checkbox_ = new QCheckBox("Use Mock Diagnostics"); + use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); + use_mock_diagnostics_checkbox_->setToolTip( + "Checked: local mock validation states. Unchecked: subscribe to live ROS 2 diagnostics."); + connect(use_mock_diagnostics_checkbox_, &QCheckBox::toggled, this, [this](const bool checked) + { setUseMockDiagnostics(checked); }); + + auto *button_row = new QHBoxLayout(); + normal_button_ = new QPushButton("Mock Normal"); + normal_button_->setCheckable(true); + normal_button_->setChecked(true); + fault_button_ = new QPushButton("Mock Fault"); + fault_button_->setCheckable(true); + + mock_state_button_group_ = new QButtonGroup(this); + mock_state_button_group_->setExclusive(true); + mock_state_button_group_->addButton(normal_button_); + mock_state_button_group_->addButton(fault_button_); + connect(normal_button_, &QPushButton::clicked, this, [this]() + { setMockDiagnosticsState(MockDiagnosticsState::Normal); }); + connect(fault_button_, &QPushButton::clicked, this, [this]() + { setMockDiagnosticsState(MockDiagnosticsState::Fault); }); + + button_row->addWidget(normal_button_); + button_row->addWidget(fault_button_); + + header_layout->addWidget(title); + header_layout->addWidget(use_mock_diagnostics_checkbox_); + header_layout->addLayout(button_row); + header_layout->addWidget(state_label_); + header_layout->addWidget(last_updated_label_); + root_layout->addWidget(header_card); + + auto *system_card = makeCard(); + auto *system_layout = new QGridLayout(system_card); + system_layout->setVerticalSpacing(6); + system_layout->addWidget(makeTitle("System Status"), 0, 0, 1, 2); + + source_label_ = new QLabel("Mock"); + ros_connection_label_ = new QLabel("Local mock diagnostics"); + heartbeat_label_ = new QLabel("OK"); + ui_mode_label_ = new QLabel("Monitoring only"); + safety_label_ = new QLabel("No motor commands sent from this RViz panel"); + safety_label_->setWordWrap(true); + + const std::vector> rows = { + {"Diagnostic Source", source_label_}, + {"ROS 2 Connection", ros_connection_label_}, + {"Backend Heartbeat", heartbeat_label_}, + {"UI Mode", ui_mode_label_}, + {"Safety Note", safety_label_}, + }; - movement_test_progress_ = new QProgressBar(); - movement_test_progress_->setRange(0, 100); - movement_test_progress_->setValue(0); - movement_test_progress_->setTextVisible(true); + int row = 1; + for (const auto &[name, value] : rows) + { + system_layout->addWidget(makeMuted(name), row, 0); + system_layout->addWidget(value, row, 1); + ++row; + } + root_layout->addWidget(system_card); + + auto *table_card = makeCard(); + auto *table_layout = new QVBoxLayout(table_card); + table_layout->addWidget(makeTitle("Telemetry + Live Values")); + + telemetry_table_ = new QTableWidget(0, 6); + telemetry_table_->setHorizontalHeaderLabels({"Signal", "Status", "Value", "Unit", "Last Updated", "Message"}); + telemetry_table_->setEditTriggers(QAbstractItemView::NoEditTriggers); + telemetry_table_->setSelectionBehavior(QAbstractItemView::SelectRows); + telemetry_table_->verticalHeader()->setVisible(false); + telemetry_table_->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + telemetry_table_->horizontalHeader()->setMinimumSectionSize(80); + telemetry_table_->setMaximumHeight(220); + telemetry_table_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + table_layout->addWidget(telemetry_table_); + root_layout->addWidget(table_card); + + auto *alerts_card = makeCard(); + auto *alerts_root = new QVBoxLayout(alerts_card); + auto *alerts_title_row = new QHBoxLayout(); + alerts_title_row->addWidget(makeTitle("Current Alerts"), 1); + alert_icon_label_ = new QLabel(""); + alert_icon_label_->setStyleSheet("color: #ff4d5e; font-size: 28px; font-weight: 900;"); + alerts_title_row->addWidget(alert_icon_label_); + alerts_root->addLayout(alerts_title_row); + + alerts_layout_ = new QVBoxLayout(); + alerts_layout_->setSpacing(6); + alerts_root->addLayout(alerts_layout_); + alerts_card->setMaximumHeight(180); + alerts_card->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + root_layout->addWidget(alerts_card); + + buildMovementTestUi(root_layout); + } - movement_test_status_ = makeMuted("Ready to run movement test."); + void DiagnosticsPanel::buildMovementTestUi(QVBoxLayout *root_layout) + { + auto *movement_card = makeCard(); + auto *movement_layout = new QVBoxLayout(movement_card); + movement_layout->setSpacing(8); + + movement_layout->addWidget(makeTitle("Movement Test")); + + auto *description = makeMuted( + "Run a controlled movement sequence to visually inspect the robot before operation."); + description->setWordWrap(true); + movement_layout->addWidget(description); + + movement_test_button_ = new QPushButton("â–¶ Run Movement Test"); + movement_test_button_->setToolTip( + "Run the robot through its predefined movement test sequence."); + connect(movement_test_button_, &QPushButton::clicked, this, [this]() + { + if (!motion_command_publisher_) { + movement_test_status_->setText("ROS connection is not ready."); + return; + } - movement_layout->addWidget(movement_test_button_); - movement_layout->addWidget(movement_test_progress_); - movement_layout->addWidget(movement_test_status_); + std_msgs::msg::String command; + command.data = "RUN"; + motion_command_publisher_->publish(command); + movement_test_status_->setText("Movement test command sent."); }); - root_layout->addWidget(movement_card); -} + movement_test_progress_ = new QProgressBar(); + movement_test_progress_->setRange(0, 100); + movement_test_progress_->setValue(0); + movement_test_progress_->setTextVisible(true); -void DiagnosticsPanel::configureSource(const bool use_mock_diagnostics) -{ - use_mock_diagnostics_ = use_mock_diagnostics; - - // Detach the outgoing source before releasing it. Retiring the subscription - // first means an executor callback can no longer publish into a source the - // panel has stopped using, and it prevents a second subscription from - // existing alongside the old one. - auto retired_source = std::move(diagnostics_source_); - if (retired_source) { - retired_source->stop(); - } - mock_diagnostics_source_.reset(); + movement_test_status_ = makeMuted("Ready to run movement test."); - if (use_mock_diagnostics_ || !rviz_node_) { - mock_diagnostics_source_ = std::make_shared(); - diagnostics_source_ = mock_diagnostics_source_; - } else { - diagnostics_source_ = std::make_shared(rviz_node_, diagnostics_topic_); + movement_layout->addWidget(movement_test_button_); + movement_layout->addWidget(movement_test_progress_); + movement_layout->addWidget(movement_test_status_); + + root_layout->addWidget(movement_card); } - updateSourceControls(); + void DiagnosticsPanel::configureSource(const bool use_mock_diagnostics) + { + use_mock_diagnostics_ = use_mock_diagnostics; + + // Detach the outgoing source before releasing it. Retiring the subscription + // first means an executor callback can no longer publish into a source the + // panel has stopped using, and it prevents a second subscription from + // existing alongside the old one. + auto retired_source = std::move(diagnostics_source_); + if (retired_source) + { + retired_source->stop(); + } + mock_diagnostics_source_.reset(); - // Released only after the replacement is installed, so no refresh can observe - // a panel without a source. - retired_source.reset(); -} + if (use_mock_diagnostics_ || !rviz_node_) + { + mock_diagnostics_source_ = std::make_shared(); + diagnostics_source_ = mock_diagnostics_source_; + } + else + { + diagnostics_source_ = std::make_shared(rviz_node_, diagnostics_topic_); + } -bool DiagnosticsPanel::readUseMockDiagnosticsParameter(const bool default_value) -{ - if (!rviz_node_) { - return default_value; - } + updateSourceControls(); - if (!rviz_node_->has_parameter("use_mock_diagnostics")) { - return rviz_node_->declare_parameter("use_mock_diagnostics", default_value); + // Released only after the replacement is installed, so no refresh can observe + // a panel without a source. + retired_source.reset(); } - return rviz_node_->get_parameter("use_mock_diagnostics").as_bool(); -} + bool DiagnosticsPanel::readUseMockDiagnosticsParameter(const bool default_value) + { + if (!rviz_node_) + { + return default_value; + } -std::string DiagnosticsPanel::readDiagnosticsTopicParameter(const std::string & default_value) -{ - if (!rviz_node_) { - return default_value; - } + if (!rviz_node_->has_parameter("use_mock_diagnostics")) + { + return rviz_node_->declare_parameter("use_mock_diagnostics", default_value); + } - if (!rviz_node_->has_parameter("diagnostics_topic")) { - return rviz_node_->declare_parameter("diagnostics_topic", default_value); + return rviz_node_->get_parameter("use_mock_diagnostics").as_bool(); } - return rviz_node_->get_parameter("diagnostics_topic").as_string(); -} - -void DiagnosticsPanel::refresh() -{ - // Pin the source for the whole tick so a mode switch cannot swap it out - // between reading the messages and rendering them. - const auto source = diagnostics_source_; - if (!source) { - return; - } + std::string DiagnosticsPanel::readDiagnosticsTopicParameter(const std::string &default_value) + { + if (!rviz_node_) + { + return default_value; + } - const auto now = clock_.now(); - const auto messages = source->messages(now); - updateSystemStatus(*source, messages, now); - updateTelemetryTable(messages, now); - updateAlerts(messages); -} + if (!rviz_node_->has_parameter("diagnostics_topic")) + { + return rviz_node_->declare_parameter("diagnostics_topic", default_value); + } -void DiagnosticsPanel::setMockDiagnosticsState(const MockDiagnosticsState mode) -{ - if (!mock_diagnostics_source_) { - return; + return rviz_node_->get_parameter("diagnostics_topic").as_string(); } - mock_diagnostics_source_->setMode(mode); - refresh(); -} - -void DiagnosticsPanel::setUseMockDiagnostics(const bool use_mock_diagnostics) -{ - configureSource(use_mock_diagnostics); - refresh(); -} + void DiagnosticsPanel::refresh() + { + // Pin the source for the whole tick so a mode switch cannot swap it out + // between reading the messages and rendering them. + const auto source = diagnostics_source_; + if (!source) + { + return; + } -void DiagnosticsPanel::updateSystemStatus( - const DiagnosticsSource & source, - const std::vector & messages, - const rclcpp::Time & now) -{ - const bool has_alert = - std::any_of(messages.begin(), messages.end(), [](const auto & message) { - return isAlertStatus(message.status); - }); - const bool has_stale = - std::any_of(messages.begin(), messages.end(), [](const auto & message) { - return message.status == DiagnosticStatus::Stale; - }); - - const bool waiting_for_live_diagnostics = - !use_mock_diagnostics_ && messages.size() == 1 && messages.front().signal_name == "diagnostics.topic"; - - if (waiting_for_live_diagnostics) { - state_label_->setText("Current State: WAITING FOR LIVE DIAGNOSTICS"); - } else { - state_label_->setText(has_alert ? "Current State: FAULT" : "Current State: NORMAL"); - } - state_label_->setObjectName(has_alert ? "StateFault" : "StateNormal"); - state_label_->style()->unpolish(state_label_); - state_label_->style()->polish(state_label_); - - source_label_->setText(QString::fromStdString(source.sourceName())); - ros_connection_label_->setText(QString::fromStdString(source.connectionStatus(now))); - heartbeat_label_->setText(has_stale ? "STALE" : "OK"); - heartbeat_label_->setStyleSheet(QString("color: %1; font-weight: 800;").arg(has_stale ? "#9aa4ad" : "#3ddc84")); - safety_label_->setStyleSheet(QString("color: %1; font-weight: 700;").arg(has_alert ? "#ff4d5e" : "#8ea3b1")); - - if (messages.empty()) { - last_updated_label_->setText("Last updated: --"); - return; + const auto now = clock_.now(); + const auto messages = source->messages(now); + updateSystemStatus(*source, messages, now); + updateTelemetryTable(messages, now); + updateAlerts(messages); } - double latest_age = std::numeric_limits::max(); - for (const auto & message : messages) { - latest_age = std::min(latest_age, (now - message.timestamp).seconds()); + void DiagnosticsPanel::setMockDiagnosticsState(const MockDiagnosticsState mode) + { + if (!mock_diagnostics_source_) + { + return; + } + + mock_diagnostics_source_->setMode(mode); + refresh(); } - last_updated_label_->setText(QString("Last updated: %1s ago").arg(latest_age, 0, 'f', 1)); -} -void DiagnosticsPanel::updateSourceControls() -{ - if (use_mock_diagnostics_checkbox_ != nullptr) { - const QSignalBlocker blocker(use_mock_diagnostics_checkbox_); - use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); + void DiagnosticsPanel::setUseMockDiagnostics(const bool use_mock_diagnostics) + { + configureSource(use_mock_diagnostics); + refresh(); } - const bool mock_enabled = static_cast(mock_diagnostics_source_); - if (normal_button_ != nullptr) { - normal_button_->setEnabled(mock_enabled); - if (!mock_enabled) { - normal_button_->setChecked(false); + void DiagnosticsPanel::updateSystemStatus( + const DiagnosticsSource &source, + const std::vector &messages, + const rclcpp::Time &now) + { + const bool has_alert = + std::any_of(messages.begin(), messages.end(), [](const auto &message) + { return isAlertStatus(message.status); }); + const bool has_stale = + std::any_of(messages.begin(), messages.end(), [](const auto &message) + { return message.status == DiagnosticStatus::Stale; }); + + const bool waiting_for_live_diagnostics = + !use_mock_diagnostics_ && messages.size() == 1 && messages.front().signal_name == "diagnostics.topic"; + + if (waiting_for_live_diagnostics) + { + state_label_->setText("Current State: WAITING FOR LIVE DIAGNOSTICS"); } - } - if (fault_button_ != nullptr) { - fault_button_->setEnabled(mock_enabled); - if (!mock_enabled) { - fault_button_->setChecked(false); + else + { + state_label_->setText(has_alert ? "Current State: FAULT" : "Current State: NORMAL"); + } + state_label_->setObjectName(has_alert ? "StateFault" : "StateNormal"); + state_label_->style()->unpolish(state_label_); + state_label_->style()->polish(state_label_); + + source_label_->setText(QString::fromStdString(source.sourceName())); + ros_connection_label_->setText(QString::fromStdString(source.connectionStatus(now))); + heartbeat_label_->setText(has_stale ? "STALE" : "OK"); + heartbeat_label_->setStyleSheet(QString("color: %1; font-weight: 800;").arg(has_stale ? "#9aa4ad" : "#3ddc84")); + safety_label_->setStyleSheet(QString("color: %1; font-weight: 700;").arg(has_alert ? "#ff4d5e" : "#8ea3b1")); + + if (messages.empty()) + { + last_updated_label_->setText("Last updated: --"); + return; + } + + double latest_age = std::numeric_limits::max(); + for (const auto &message : messages) + { + latest_age = std::min(latest_age, (now - message.timestamp).seconds()); } + last_updated_label_->setText(QString("Last updated: %1s ago").arg(latest_age, 0, 'f', 1)); } -} -void DiagnosticsPanel::updateTelemetryTable( - const std::vector & messages, - const rclcpp::Time & now) -{ - telemetry_table_->setRowCount(static_cast(messages.size())); - - for (int row = 0; row < static_cast(messages.size()); ++row) { - const auto & message = messages.at(row); - const QStringList values = { - QString::fromStdString(message.signal_name), - toString(message.status), - optionalText(message.value), - optionalText(message.unit), - ageText(message.timestamp, now), - optionalText(message.alert_message), - }; + void DiagnosticsPanel::updateSourceControls() + { + if (use_mock_diagnostics_checkbox_ != nullptr) + { + const QSignalBlocker blocker(use_mock_diagnostics_checkbox_); + use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); + } - for (int column = 0; column < values.size(); ++column) { - auto * item = new QTableWidgetItem(values.at(column)); - item->setBackground(QColor(rowBackground(message.status))); - item->setForeground(QColor(column == 1 ? statusColor(message.status) : "#e8f1f8")); - if (column == 1 || column == 2 || column == 3 || column == 4) { - item->setTextAlignment(Qt::AlignCenter); + const bool mock_enabled = static_cast(mock_diagnostics_source_); + if (normal_button_ != nullptr) + { + normal_button_->setEnabled(mock_enabled); + if (!mock_enabled) + { + normal_button_->setChecked(false); } - if (message.status != DiagnosticStatus::Ok && (column == 0 || column == 1 || column == 5)) { - auto font = item->font(); - font.setBold(true); - item->setFont(font); + } + if (fault_button_ != nullptr) + { + fault_button_->setEnabled(mock_enabled); + if (!mock_enabled) + { + fault_button_->setChecked(false); } - telemetry_table_->setItem(row, column, item); } } -} -void DiagnosticsPanel::updateAlerts(const std::vector & messages) -{ - clearAlerts(); - - bool has_alert = false; - for (const auto & message : messages) { - if (!isAlertStatus(message.status)) { - continue; - } - - has_alert = true; - auto * label = new QLabel(alertText(message)); - label->setWordWrap(true); - label->setStyleSheet(QString( - "background-color: rgba(255, 77, 94, 0.18);" - "border: 1px solid %1;" - "border-radius: 6px;" - "color: #e8f1f8;" - "font-weight: 800;" - "padding: 8px;").arg(statusColor(message.status))); - alerts_layout_->addWidget(label); + void DiagnosticsPanel::updateTelemetryTable( + const std::vector &messages, + const rclcpp::Time &now) + { + telemetry_table_->setRowCount(static_cast(messages.size())); + + for (int row = 0; row < static_cast(messages.size()); ++row) + { + const auto &message = messages.at(row); + const QStringList values = { + QString::fromStdString(message.signal_name), + toString(message.status), + optionalText(message.value), + optionalText(message.unit), + ageText(message.timestamp, now), + optionalText(message.alert_message), + }; + + for (int column = 0; column < values.size(); ++column) + { + auto *item = new QTableWidgetItem(values.at(column)); + item->setBackground(QColor(rowBackground(message.status))); + item->setForeground(QColor(column == 1 ? statusColor(message.status) : "#e8f1f8")); + if (column == 1 || column == 2 || column == 3 || column == 4) + { + item->setTextAlignment(Qt::AlignCenter); + } + if (message.status != DiagnosticStatus::Ok && (column == 0 || column == 1 || column == 5)) + { + auto font = item->font(); + font.setBold(true); + item->setFont(font); + } + telemetry_table_->setItem(row, column, item); + } + } } - if (!has_alert) { - alert_icon_label_->setText(""); - auto * label = new QLabel("No active alerts"); - label->setStyleSheet("color: #3ddc84; font-size: 15px; font-weight: 800;"); - alerts_layout_->addWidget(label); - return; - } + void DiagnosticsPanel::updateAlerts(const std::vector &messages) + { + clearAlerts(); - alert_icon_label_->setText("!"); -} + bool has_alert = false; + for (const auto &message : messages) + { + if (!isAlertStatus(message.status)) + { + continue; + } -void DiagnosticsPanel::clearAlerts() -{ - while (alerts_layout_->count() > 0) { - auto * item = alerts_layout_->takeAt(0); - if (auto * widget = item->widget()) { - widget->deleteLater(); + has_alert = true; + auto *label = new QLabel(alertText(message)); + label->setWordWrap(true); + label->setStyleSheet(QString( + "background-color: rgba(255, 77, 94, 0.18);" + "border: 1px solid %1;" + "border-radius: 6px;" + "color: #e8f1f8;" + "font-weight: 800;" + "padding: 8px;") + .arg(statusColor(message.status))); + alerts_layout_->addWidget(label); + } + + if (!has_alert) + { + alert_icon_label_->setText(""); + auto *label = new QLabel("No active alerts"); + label->setStyleSheet("color: #3ddc84; font-size: 15px; font-weight: 800;"); + alerts_layout_->addWidget(label); + return; } - delete item; + + alert_icon_label_->setText("!"); } -} -QString DiagnosticsPanel::statusColor(const DiagnosticStatus status) const -{ - switch (status) { + void DiagnosticsPanel::clearAlerts() + { + while (alerts_layout_->count() > 0) + { + auto *item = alerts_layout_->takeAt(0); + if (auto *widget = item->widget()) + { + widget->deleteLater(); + } + delete item; + } + } + + QString DiagnosticsPanel::statusColor(const DiagnosticStatus status) const + { + switch (status) + { case DiagnosticStatus::Ok: return "#3ddc84"; case DiagnosticStatus::Warn: @@ -564,13 +609,14 @@ QString DiagnosticsPanel::statusColor(const DiagnosticStatus status) const return "#ff4d5e"; case DiagnosticStatus::Stale: return "#9aa4ad"; + } + return "#e8f1f8"; } - return "#e8f1f8"; -} -QString DiagnosticsPanel::rowBackground(const DiagnosticStatus status) const -{ - switch (status) { + QString DiagnosticsPanel::rowBackground(const DiagnosticStatus status) const + { + switch (status) + { case DiagnosticStatus::Fault: return "#241018"; case DiagnosticStatus::Warn: @@ -579,41 +625,44 @@ QString DiagnosticsPanel::rowBackground(const DiagnosticStatus status) const return "#151922"; case DiagnosticStatus::Ok: return "#09131d"; + } + return "#09131d"; } - return "#09131d"; -} - -QString DiagnosticsPanel::ageText(const rclcpp::Time & timestamp, const rclcpp::Time & now) const -{ - const double age_seconds = std::max(0.0, (now - timestamp).seconds()); - return QString("%1s ago").arg(age_seconds, 0, 'f', 1); -} -QString DiagnosticsPanel::optionalText(const std::optional & value) const -{ - if (!value.has_value() || value->empty()) { - return "-"; + QString DiagnosticsPanel::ageText(const rclcpp::Time ×tamp, const rclcpp::Time &now) const + { + const double age_seconds = std::max(0.0, (now - timestamp).seconds()); + return QString("%1s ago").arg(age_seconds, 0, 'f', 1); } - return QString::fromStdString(*value); -} -QString DiagnosticsPanel::alertText(const DiagnosticMessage & message) const -{ - if (message.signal_name == "board.temperature") { - return QString("FAULT - Board temperature high: %1 %2") - .arg(optionalText(message.value), optionalText(message.unit)); + QString DiagnosticsPanel::optionalText(const std::optional &value) const + { + if (!value.has_value() || value->empty()) + { + return "-"; + } + return QString::fromStdString(*value); } - if (message.signal_name == "imu.heartbeat") { - return "STALE - IMU heartbeat timeout"; - } + QString DiagnosticsPanel::alertText(const DiagnosticMessage &message) const + { + if (message.signal_name == "board.temperature") + { + return QString("FAULT - Board temperature high: %1 %2") + .arg(optionalText(message.value), optionalText(message.unit)); + } - return QString("%1 - %2: %3") - .arg(toString(message.status)) - .arg(QString::fromStdString(message.signal_name)) - .arg(optionalText(message.alert_message)); -} + if (message.signal_name == "imu.heartbeat") + { + return "STALE - IMU heartbeat timeout"; + } + + return QString("%1 - %2: %3") + .arg(toString(message.status)) + .arg(QString::fromStdString(message.signal_name)) + .arg(optionalText(message.alert_message)); + } -} // namespace waybionic_rviz_plugins +} // namespace waybionic_rviz_plugins PLUGINLIB_EXPORT_CLASS(waybionic_rviz_plugins::DiagnosticsPanel, rviz_common::Panel) From 7b2162f0eeca8eca54671edf943976c4b3aa9624 Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 26 Sep 2026 12:58:56 -0600 Subject: [PATCH 17/21] tweaks and quality of life changes --- waybionic_bringup/launch/old_arm.launch.py | 9 +++++---- waybionic_hardware/waybionic_hardware/arduino_bridge.py | 8 ++++---- .../waybionic_motion_test/motion_test.py | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/waybionic_bringup/launch/old_arm.launch.py b/waybionic_bringup/launch/old_arm.launch.py index 1520d35..1b92227 100644 --- a/waybionic_bringup/launch/old_arm.launch.py +++ b/waybionic_bringup/launch/old_arm.launch.py @@ -24,10 +24,10 @@ def generate_launch_description(): 'joint_states_topic', default_value='/old_arm/joint_states', description='sensor_msgs/JointState input, with named model joints in radians'), DeclareLaunchArgument( - 'use_joint_state_publisher_gui', default_value='false', + 'use_joint_state_publisher_gui', default_value='true', description=( - 'Opt into the manual joint stepper instead of the upright ' - 'motion-test source')), + 'Use the manual joint stepper; set false to use the motion ' + 'test publisher')), DeclareLaunchArgument( 'launch_rviz', default_value='true', description='Set false for headless transform validation'), @@ -81,7 +81,8 @@ def generate_launch_description(): output='screen', condition=IfCondition(PythonExpression([ "'", LaunchConfiguration('start_motion_test'), "' == 'true' and '", - LaunchConfiguration('hardware_mode'), "' == 'simulation'" + LaunchConfiguration('hardware_mode'), "' == 'simulation' and '", + LaunchConfiguration('use_joint_state_publisher_gui'), "' != 'true'" ])), parameters=[ {'segment_duration': LaunchConfiguration( diff --git a/waybionic_hardware/waybionic_hardware/arduino_bridge.py b/waybionic_hardware/waybionic_hardware/arduino_bridge.py index 0dacddc..3e1527d 100644 --- a/waybionic_hardware/waybionic_hardware/arduino_bridge.py +++ b/waybionic_hardware/waybionic_hardware/arduino_bridge.py @@ -66,7 +66,7 @@ def __init__(self): self.segment_duration = float(self.get_parameter('segment_duration').value) self.dry_run = bool(self.get_parameter('dry_run').value) - self.joint_publisher = self.create_publisher(JointState, '/joint_states', 10) + self.joint_publisher = self.create_publisher(JointState, 'joint_states', 10) self.diagnostics_publisher = self.create_publisher( DiagnosticArray, '/diagnostics', 10) self.status_publisher = self.create_publisher( @@ -343,7 +343,7 @@ def publish_diagnostics(self): KeyValue(key='error', value=self.last_error), ] - subscriber_count = self.count_subscribers('/joint_states') + subscriber_count = self.count_subscribers('joint_states') output_status = DiagnosticStatus() output_status.name = 'waybionic_joint_state_output' output_status.level = ( @@ -351,10 +351,10 @@ def publish_diagnostics(self): output_status.message = ( 'robot_state_publisher connected' if subscriber_count > 0 else - 'No subscribers on /joint_states; RViz cannot update') + 'No subscribers on joint_states; RViz cannot update') output_status.values = [ KeyValue(key='subscriber_count', value=str(subscriber_count)), - KeyValue(key='topic', value='/joint_states'), + KeyValue(key='topic', value='joint_states'), ] feedback_status = DiagnosticStatus() diff --git a/waybionic_motion_test/waybionic_motion_test/motion_test.py b/waybionic_motion_test/waybionic_motion_test/motion_test.py index 12772c4..45162c8 100644 --- a/waybionic_motion_test/waybionic_motion_test/motion_test.py +++ b/waybionic_motion_test/waybionic_motion_test/motion_test.py @@ -39,7 +39,7 @@ def __init__(self): self.publisher = self.create_publisher( JointState, - '/joint_states', + 'joint_states', 10, ) self.status_publisher = self.create_publisher( From 94574bc2f06af434a75f24b22c69a81be5dfeb3c Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 26 Sep 2026 13:59:39 -0600 Subject: [PATCH 18/21] updated the arduino.ino code for less confusion in future refrences --- firmware/waybionic_uno_r4/waybionic_uno_r4.ino | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/firmware/waybionic_uno_r4/waybionic_uno_r4.ino b/firmware/waybionic_uno_r4/waybionic_uno_r4.ino index 503b5d8..2de1589 100644 --- a/firmware/waybionic_uno_r4/waybionic_uno_r4.ino +++ b/firmware/waybionic_uno_r4/waybionic_uno_r4.ino @@ -2,10 +2,10 @@ Uno R4 WiFi - Four-servo IK calibration controller Wiring: - Servo 1 signal -> D3 (base yaw) - Servo 2 signal -> D4 (shoulder) - Servo 3 signal -> D5 (elbow) - Servo 4 signal -> D6 (wrist roll) + Servo 1 signal -> D1 (base yaw) + Servo 2 signal -> D2 (shoulder) + Servo 3 signal -> D3 (elbow) + Servo 4 signal -> D4 (wrist roll) Hold switch -> D7 and GND (uses INPUT_PULLUP) Serial at 115200 baud: @@ -30,9 +30,10 @@ const float PHYSICAL_RANGE = 270.0; const int SERVO_PULSE_MIN_US = 544; const int SERVO_PULSE_MAX_US = 2400; const float SERVO_MIN[SERVO_COUNT] = {0.0, 0.0, 90.0, 0.0}; -const float SERVO_MAX[SERVO_COUNT] = {270.0, 270.0, 270.0, 270.0}; +const float SERVO_MAX[SERVO_COUNT] = {270.0, 112.5, 270.0, 270.0}; -float currentAngle[SERVO_COUNT] = {90.0, 30.0, 155.0, 125.0}; +// Calibrated upright HOME pose shared with the ROS bridge. +float currentAngle[SERVO_COUNT] = {90.0, 35.0, 151.5, 27.5}; float startAngle[SERVO_COUNT]; float targetAngle[SERVO_COUNT]; From 46ddf799a052c482cee35f71872b958154167f26 Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 3 Oct 2026 12:13:44 -0600 Subject: [PATCH 19/21] Complete old-arm review cleanup --- docs/arm_hardware_motion_architecture.md | 2 +- waybionic_bringup/CMakeLists.txt | 6 +- waybionic_bringup/launch/display.launch.py | 2 +- waybionic_bringup/launch/old_arm.launch.py | 16 +- waybionic_bringup/rviz/waybionic.rviz | 217 +---- waybionic_bringup/rviz/waybionic_unified.rviz | 64 +- .../test/test_ground_station_launch.py | 3 +- waybionic_bringup/test/test_old_arm_launch.py | 3 +- .../urdf/old_arm_prototype.urdf | 103 -- .../diagnostics_panel.hpp | 124 +-- .../src/diagnostics_panel.cpp | 902 +++++++++--------- 11 files changed, 567 insertions(+), 875 deletions(-) delete mode 100644 waybionic_description/urdf/old_arm_prototype.urdf diff --git a/docs/arm_hardware_motion_architecture.md b/docs/arm_hardware_motion_architecture.md index 00292ef..048b883 100644 --- a/docs/arm_hardware_motion_architecture.md +++ b/docs/arm_hardware_motion_architecture.md @@ -6,7 +6,7 @@ Use the same four-joint arm model in RViz for both simulation and a connected Arduino, while allowing the motion test to command the physical arm and report failures instead of only animating a simulated pose. -The current model is `old_arm_prototype.urdf` with these joints: +The opt-in old-arm model is `waybionic_old_arm.urdf.xacro` with these joints: - `base_yaw` - `shoulder` diff --git a/waybionic_bringup/CMakeLists.txt b/waybionic_bringup/CMakeLists.txt index 213a9fa..e006ca7 100644 --- a/waybionic_bringup/CMakeLists.txt +++ b/waybionic_bringup/CMakeLists.txt @@ -18,16 +18,12 @@ if(BUILD_TESTING) set(ament_cmake_copyright_FOUND TRUE) set(ament_cmake_cpplint_FOUND TRUE) ament_lint_auto_find_test_dependencies() -<<<<<<< HEAD # colcon tests packages in parallel; a private ROS domain keeps this /tf out of other tests. set(isolated RUNNER "${ament_cmake_ros_DIR}/run_test_isolated.py") add_launch_test(test/test_ground_station_launch.py ${isolated}) add_launch_test(test/test_arm_model_launch.py ${isolated}) add_launch_test(test/test_joint_demo_launch.py ${isolated}) -======= - add_launch_test(test/test_ground_station_launch.py) - add_launch_test(test/test_old_arm_launch.py) ->>>>>>> e85adbc (Integrate new old-arm model with motion publishers) + add_launch_test(test/test_old_arm_launch.py ${isolated}) endif() install(PROGRAMS scripts/joint_demo.py diff --git a/waybionic_bringup/launch/display.launch.py b/waybionic_bringup/launch/display.launch.py index 7692474..b5ddddf 100644 --- a/waybionic_bringup/launch/display.launch.py +++ b/waybionic_bringup/launch/display.launch.py @@ -41,7 +41,7 @@ def generate_launch_description(): default_model_path = os.path.join( waybionic_desc_dir, 'urdf', - 'old_arm_prototype.urdf', + 'waybionic_placeholder.urdf', ) default_rviz_config_path = os.path.join( diff --git a/waybionic_bringup/launch/old_arm.launch.py b/waybionic_bringup/launch/old_arm.launch.py index 1b92227..cd98a8d 100644 --- a/waybionic_bringup/launch/old_arm.launch.py +++ b/waybionic_bringup/launch/old_arm.launch.py @@ -11,6 +11,9 @@ from launch_ros.actions import Node, PushRosNamespace, SetRemap +_PYTHON_QUOTE = "'" + + def generate_launch_description(): """Reuse the ground station with an isolated model and joint-state topic.""" description = get_package_share_directory('waybionic_description') @@ -48,6 +51,7 @@ def generate_launch_description(): description='Seconds for each synchronized motion segment'), DeclareLaunchArgument( 'hardware_mode', default_value='simulation', + choices=['simulation', 'arduino'], description='Arm mode: simulation or arduino'), DeclareLaunchArgument( 'arduino_port', default_value='', @@ -80,9 +84,12 @@ def generate_launch_description(): name='old_arm_motion_test', output='screen', condition=IfCondition(PythonExpression([ - "'", LaunchConfiguration('start_motion_test'), "' == 'true' and '", - LaunchConfiguration('hardware_mode'), "' == 'simulation' and '", - LaunchConfiguration('use_joint_state_publisher_gui'), "' != 'true'" + _PYTHON_QUOTE, LaunchConfiguration('start_motion_test'), + _PYTHON_QUOTE + '.lower() in ("true", "1") and ' + _PYTHON_QUOTE, + LaunchConfiguration('hardware_mode'), + _PYTHON_QUOTE + '.lower() == "simulation" and ' + _PYTHON_QUOTE, + LaunchConfiguration('use_joint_state_publisher_gui'), + _PYTHON_QUOTE + '.lower() not in ("true", "1")', ])), parameters=[ {'segment_duration': LaunchConfiguration( @@ -96,7 +103,8 @@ def generate_launch_description(): name='waybionic_arduino_bridge', output='screen', condition=IfCondition(PythonExpression([ - "'", LaunchConfiguration('hardware_mode'), "' == 'arduino'" + _PYTHON_QUOTE, LaunchConfiguration('hardware_mode'), + _PYTHON_QUOTE + '.lower() == "arduino"', ])), parameters=[ {'port': LaunchConfiguration('arduino_port')}, diff --git a/waybionic_bringup/rviz/waybionic.rviz b/waybionic_bringup/rviz/waybionic.rviz index d5b5d94..6c1f353 100644 --- a/waybionic_bringup/rviz/waybionic.rviz +++ b/waybionic_bringup/rviz/waybionic.rviz @@ -1,23 +1,21 @@ Panels: - Class: rviz_common/Displays - Help Height: 0 + Help Height: 78 Name: Displays Property Tree Widget: Expanded: - /Global Options1 - /Status1 - /RobotModel1 - - /RobotModel1/Mass Properties1 - /RobotModel1/Description Topic1 Splitter Ratio: 0.5 - Tree Height: 971 + Tree Height: 555 - Class: rviz_common/Selection Name: Selection - Class: rviz_common/Tool Properties Expanded: - /2D Goal Pose1 - /Publish Point1 - - /Interact1 Name: Tool Properties Splitter Ratio: 0.5886790156364441 - Class: rviz_common/Views @@ -30,14 +28,6 @@ Panels: Name: Time SyncMode: 0 SyncSource: "" - - Class: waybionic_rviz_plugins/MotionTestPanel - Name: MotionTestPanel - - Class: waybionic_rviz_plugins/DiagnosticsPanel - Diagnostics Topic: /diagnostics - Name: DiagnosticsPanel - Use Mock Diagnostics: true - - Class: rviz_common/Help - Name: Help Visualization Manager: Class: "" Displays: @@ -62,14 +52,14 @@ Visualization Manager: - Alpha: 1 Class: rviz_default_plugins/RobotModel Collision Enabled: false - Description File: /home/khidri/waybionic_ground_station/install/waybionic_description/share/waybionic_description/urdf/waybionic_placeholder.urdf - Description Source: File + Description File: "" + Description Source: Topic Description Topic: Depth: 5 Durability Policy: Volatile History Policy: Keep Last Reliability Policy: Reliable - Value: "" + Value: /robot_description Enabled: true Links: All Links Enabled: true @@ -95,6 +85,28 @@ Visualization Manager: Update Interval: 0 Value: true Visual Enabled: true + - Class: rviz_default_plugins/TF + Enabled: true + Filter (blacklist): "" + Filter (whitelist): "" + Frame Timeout: 15 + Frames: + All Enabled: true + arm_link: + Value: true + base_link: + Value: true + Marker Scale: 1 + Name: TF + Show Arrows: true + Show Axes: true + Show Names: false + Tree: + base_link: + arm_link: + {} + Update Interval: 0 + Value: true Enabled: true Global Options: Background Color: 48; 48; 48 @@ -102,6 +114,11 @@ Visualization Manager: Frame Rate: 30 Name: root Tools: + - Class: rviz_default_plugins/Interact + Hide Inactive Objects: true + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + - Class: rviz_default_plugins/FocusCamera - Class: rviz_default_plugins/Measure Line color: 128; 128; 0 - Class: rviz_default_plugins/SetInitialPose @@ -129,8 +146,6 @@ Visualization Manager: History Policy: Keep Last Reliability Policy: Reliable Value: /clicked_point - - Class: rviz_default_plugins/Interact - Hide Inactive Objects: true Transformation: Current: Class: rviz_default_plugins/TF @@ -138,7 +153,7 @@ Visualization Manager: Views: Current: Class: rviz_default_plugins/Orbit - Distance: 2.116607427597046 + Distance: 1.5597326755523682 Enable Stereo Rendering: Stereo Eye Separation: 0.05999999865889549 Stereo Focal Distance: 1 @@ -148,169 +163,23 @@ Visualization Manager: X: 0 Y: 0 Z: 0 - Focal Shape Fixed Size: false + Focal Shape Fixed Size: true Focal Shape Size: 0.05000000074505806 Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 - Pitch: 0.7853981852531433 + Pitch: 0.785398006439209 Target Frame: - Value: Orbit (rviz_default_plugins) - Yaw: 0.7853981852531433 - Saved: - - Class: rviz_default_plugins/Orbit - Distance: 8.34925651550293 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Focal Point: - X: 0 - Y: 0 - Z: 0 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.38979676365852356 - Target Frame: - Value: Orbit (rviz) - Yaw: 4.518586158752441 - - Class: rviz_default_plugins/Orbit - Distance: 8.34925651550293 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Focal Point: - X: 0 - Y: 0 - Z: 0 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.38979676365852356 - Target Frame: - Value: Orbit (rviz) - Yaw: 4.518586158752441 - - Class: rviz_default_plugins/Orbit - Distance: 8.34925651550293 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Focal Point: - X: 0 - Y: 0 - Z: 0 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.38979676365852356 - Target Frame: - Value: Orbit (rviz) - Yaw: 4.518586158752441 - - Class: rviz_default_plugins/Orbit - Distance: 8.34925651550293 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Focal Point: - X: 0 - Y: 0 - Z: 0 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.38979676365852356 - Target Frame: - Value: Orbit (rviz) - Yaw: 4.518586158752441 - - Class: rviz_default_plugins/Orbit - Distance: 8.34925651550293 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Focal Point: - X: 0 - Y: 0 - Z: 0 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.38979676365852356 - Target Frame: - Value: Orbit (rviz) - Yaw: 4.518586158752441 - - Class: rviz_default_plugins/Orbit - Distance: 8.34925651550293 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Focal Point: - X: 0 - Y: 0 - Z: 0 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.38979676365852356 - Target Frame: - Value: Orbit (rviz) - Yaw: 4.518586158752441 - - Class: rviz_default_plugins/Orbit - Distance: 8.34925651550293 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Focal Point: - X: 0 - Y: 0 - Z: 0 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.38979676365852356 - Target Frame: - Value: Orbit (rviz) - Yaw: 4.518586158752441 + Value: Orbit (rviz) + Yaw: 0.785398006439209 + Saved: ~ Window Geometry: - DiagnosticsPanel: - collapsed: false Displays: collapsed: false - Height: 1612 - Help: - collapsed: false + Height: 846 Hide Left Dock: false Hide Right Dock: false - MotionTestPanel: - collapsed: false - QMainWindow State: 000000ff00000000fd0000000200000000000001a4000005f6fc0200000004fb0000001200530065006c0065006300740069006f006e00000001080000005c0000005c00fffffffb0000000800540069006d00650000000247000000370000003700fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000003b000005f60000035100fffffffb0000000800480065006c007000000003ca0000006e0000006e00ffffff0000000100000168000005f6fc0200000004fb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c010000003b000000d2000000cc00fffffffb0000000a005600690065007700730100000113000000b0000000a000fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007301000001c90000005c0000005c00fffffffb000000100044006900730070006c006100790073010000022b00000406000000c700ffffff0000045c000005f600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd000000040000000000000156000002b4fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b000002b4000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f000002b4fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003b000002b4000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004b00000003efc0100000002fb0000000800540069006d00650100000000000004b00000025300fffffffb0000000800540069006d006501000000000000045000000000000000000000023f000002b400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -319,6 +188,6 @@ Window Geometry: collapsed: false Views: collapsed: false - Width: 1908 - X: 0 - Y: 0 + Width: 1200 + X: 3639 + Y: 407 diff --git a/waybionic_bringup/rviz/waybionic_unified.rviz b/waybionic_bringup/rviz/waybionic_unified.rviz index a127180..b7b1b88 100644 --- a/waybionic_bringup/rviz/waybionic_unified.rviz +++ b/waybionic_bringup/rviz/waybionic_unified.rviz @@ -32,8 +32,6 @@ Panels: Diagnostics Topic: /diagnostics Name: DiagnosticsPanel Use Mock Diagnostics: true - - Class: waybionic_rviz_plugins/MotionTestPanel - Name: MotionTestPanel Visualization Manager: Class: "" Displays: @@ -73,32 +71,12 @@ Visualization Manager: Expand Link Details: false Expand Tree: false Link Tree Style: Links in Alphabetic Order - base_link: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - base_rotation_link: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - end_effector: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - forearm_link: + arm_link: Alpha: 1 Show Axes: false Show Trail: false Value: true - upper_arm_link: - Alpha: 1 - Show Axes: false - Show Trail: false - Value: true - wrist_link: + base_link: Alpha: 1 Show Axes: false Show Trail: false @@ -118,31 +96,19 @@ Visualization Manager: Frame Timeout: 15 Frames: All Enabled: true - base_link: + arm_link: Value: true - base_rotation_link: - Value: true - end_effector: - Value: true - forearm_link: - Value: true - upper_arm_link: - Value: true - wrist_link: + base_link: Value: true - Marker Scale: 1 + Marker Scale: 0.30000001192092896 Name: TF Show Arrows: true Show Axes: true Show Names: false Tree: base_link: - base_rotation_link: - upper_arm_link: - forearm_link: - wrist_link: - end_effector: - {} + arm_link: + {} Update Interval: 0 Value: true Enabled: true @@ -206,22 +172,20 @@ Visualization Manager: Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 - Pitch: 0.3753979504108429 + Pitch: 0.785398006439209 Target Frame: Value: Orbit (rviz) - Yaw: 1.030397653579712 + Yaw: 0.785398006439209 Saved: ~ Window Geometry: DiagnosticsPanel: collapsed: false Displays: collapsed: false - Height: 1243 + Height: 2055 Hide Left Dock: false Hide Right Dock: false - MotionTestPanel: - collapsed: false - QMainWindow State: 000000ff00000000fd00000004000000000000024700000448fc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b000000c7000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000200044006900610067006e006f0073007400690063007300500061006e0065006c01000001080000037b0000035100fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c0100000341000002340000000000000000fb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000057b000002340000000000000000000000010000016800000448fc0200000004fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001e004d006f00740069006f006e005400650073007400500061006e0065006c010000003b000000dc000000cc00fffffffb0000000a00560069006500770073010000011d00000366000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000077400000037fc0100000002fb0000000800540069006d00650100000000000007740000025300fffffffb0000000800540069006d00650100000000000004500000000000000000000003b90000044800000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd0000000400000000000001a400000774fc020000000bfb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003b000000c7000000c700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb000000200044006900610067006e006f0073007400690063007300500061006e0065006c0100000108000002330000023400fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c0100000341000002340000023400fffffffb000000200044006900610067006e006f0073007400690063007300500061006e0065006c010000057b000002340000023400ffffff000000010000010f00000774fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003b00000774000000a000fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000002ea00000037fc0100000002fb0000000800540069006d00650100000000000002ea0000025300fffffffb0000000800540069006d006501000000000000045000000000000000000000002b0000077500000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -230,6 +194,6 @@ Window Geometry: collapsed: false Views: collapsed: false - Width: 1908 - X: -29 - Y: -33 + Width: 746 + X: 57 + Y: 4 diff --git a/waybionic_bringup/test/test_ground_station_launch.py b/waybionic_bringup/test/test_ground_station_launch.py index 16d9671..3476a7b 100644 --- a/waybionic_bringup/test/test_ground_station_launch.py +++ b/waybionic_bringup/test/test_ground_station_launch.py @@ -4,7 +4,7 @@ from ament_index_python.packages import get_package_share_directory import launch -from launch.actions import IncludeLaunchDescription, SetEnvironmentVariable +from launch.actions import IncludeLaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource import launch_testing import launch_testing.actions @@ -26,7 +26,6 @@ def generate_test_description(): ) return launch.LaunchDescription([ - SetEnvironmentVariable('ROS_DOMAIN_ID', '71'), ground_station_launch, launch_testing.actions.ReadyToTest() ]) diff --git a/waybionic_bringup/test/test_old_arm_launch.py b/waybionic_bringup/test/test_old_arm_launch.py index 3bd5fab..2687c15 100644 --- a/waybionic_bringup/test/test_old_arm_launch.py +++ b/waybionic_bringup/test/test_old_arm_launch.py @@ -12,7 +12,7 @@ from ament_index_python.packages import get_package_share_directory import launch -from launch.actions import IncludeLaunchDescription, SetEnvironmentVariable +from launch.actions import IncludeLaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource import launch_testing import launch_testing.actions @@ -64,7 +64,6 @@ def generate_test_description(): }.items(), ) return launch.LaunchDescription([ - SetEnvironmentVariable('ROS_DOMAIN_ID', '72'), station, launch_testing.actions.ReadyToTest(), ]), {'joint_states_topic': topic} diff --git a/waybionic_description/urdf/old_arm_prototype.urdf b/waybionic_description/urdf/old_arm_prototype.urdf deleted file mode 100644 index 587c34a..0000000 --- a/waybionic_description/urdf/old_arm_prototype.urdf +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp index 31ca7da..9ec0523 100644 --- a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp +++ b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -24,78 +25,77 @@ #include "waybionic_rviz_plugins/mock_diagnostics_source.hpp" class QButtonGroup; -class QProgressBar; class QPushButton; namespace waybionic_rviz_plugins { - class DiagnosticsPanel : public rviz_common::Panel - { - Q_OBJECT +class DiagnosticsPanel : public rviz_common::Panel +{ + Q_OBJECT - public: - explicit DiagnosticsPanel(QWidget *parent = nullptr); - ~DiagnosticsPanel() override; +public: + explicit DiagnosticsPanel(QWidget * parent = nullptr); + ~DiagnosticsPanel() override; - void onInitialize() override; - void save(rviz_common::Config config) const override; - void load(const rviz_common::Config &config) override; + void onInitialize() override; + void save(rviz_common::Config config) const override; + void load(const rviz_common::Config & config) override; - private: - void buildUi(); - void buildMovementTestUi(QVBoxLayout *root_layout); - void configureSource(bool use_mock_diagnostics); - bool readUseMockDiagnosticsParameter(bool default_value); - std::string readDiagnosticsTopicParameter(const std::string &default_value); - void refresh(); - void setMockDiagnosticsState(MockDiagnosticsState mode); - void setUseMockDiagnostics(bool use_mock_diagnostics); - void updateSystemStatus( - const DiagnosticsSource &source, - const std::vector &messages, - const rclcpp::Time &now); - void updateTelemetryTable(const std::vector &messages, const rclcpp::Time &now); - void updateAlerts(const std::vector &messages); - void updateSourceControls(); - void clearAlerts(); +private: + void buildUi(); + void buildMovementTestUi(QVBoxLayout * root_layout); + void configureSource(bool use_mock_diagnostics); + bool readUseMockDiagnosticsParameter(bool default_value); + std::string readDiagnosticsTopicParameter(const std::string & default_value); + void refresh(); + void setMockDiagnosticsState(MockDiagnosticsState mode); + void setUseMockDiagnostics(bool use_mock_diagnostics); + void updateSystemStatus( + const DiagnosticsSource & source, + const std::vector & messages, + const rclcpp::Time & now); + void updateTelemetryTable(const std::vector & messages, const rclcpp::Time & now); + void updateAlerts(const std::vector & messages); + void updateSourceControls(); + void clearAlerts(); - QString statusColor(DiagnosticStatus status) const; - QString rowBackground(DiagnosticStatus status) const; - QString ageText(const rclcpp::Time ×tamp, const rclcpp::Time &now) const; - QString optionalText(const std::optional &value) const; - QString alertText(const DiagnosticMessage &message) const; + QString statusColor(DiagnosticStatus status) const; + QString rowBackground(DiagnosticStatus status) const; + QString ageText(const rclcpp::Time & timestamp, const rclcpp::Time & now) const; + QString optionalText(const std::optional & value) const; + QString alertText(const DiagnosticMessage & message) const; - // Shared ownership so a refresh tick keeps its source alive even if a mode - // switch replaces the panel's source part-way through the tick. - std::shared_ptr diagnostics_source_; - std::shared_ptr mock_diagnostics_source_; - rclcpp::Node::SharedPtr rviz_node_; - rclcpp::Publisher::SharedPtr motion_command_publisher_; - rclcpp::Clock clock_{RCL_SYSTEM_TIME}; - std::string diagnostics_topic_{"/diagnostics"}; - bool use_mock_diagnostics_{true}; + // Shared ownership so a refresh tick keeps its source alive even if a mode + // switch replaces the panel's source part-way through the tick. + std::shared_ptr diagnostics_source_; + std::shared_ptr mock_diagnostics_source_; + rclcpp::Node::SharedPtr rviz_node_; + rclcpp::Publisher::SharedPtr motion_command_publisher_; + rclcpp::Clock clock_{RCL_SYSTEM_TIME}; + std::string diagnostics_topic_{"/diagnostics"}; + bool use_mock_diagnostics_{true}; - QTimer *refresh_timer_{nullptr}; - QCheckBox *use_mock_diagnostics_checkbox_{nullptr}; - QLabel *state_label_{nullptr}; - QLabel *last_updated_label_{nullptr}; - QLabel *source_label_{nullptr}; - QLabel *ros_connection_label_{nullptr}; - QLabel *heartbeat_label_{nullptr}; - QLabel *ui_mode_label_{nullptr}; - QLabel *safety_label_{nullptr}; - QLabel *alert_icon_label_{nullptr}; - QTableWidget *telemetry_table_{nullptr}; - QVBoxLayout *alerts_layout_{nullptr}; - QPushButton *normal_button_{nullptr}; - QPushButton *fault_button_{nullptr}; - QPushButton *movement_test_button_{nullptr}; - QLabel *movement_test_status_{nullptr}; - QProgressBar *movement_test_progress_{nullptr}; - QButtonGroup *mock_state_button_group_{nullptr}; - }; + QTimer * refresh_timer_{nullptr}; + QCheckBox * use_mock_diagnostics_checkbox_{nullptr}; + QLabel * state_label_{nullptr}; + QLabel * last_updated_label_{nullptr}; + QLabel * source_label_{nullptr}; + QLabel * ros_connection_label_{nullptr}; + QLabel * heartbeat_label_{nullptr}; + QLabel * ui_mode_label_{nullptr}; + QLabel * safety_label_{nullptr}; + QLabel * alert_icon_label_{nullptr}; + QTableWidget * telemetry_table_{nullptr}; + QVBoxLayout * alerts_layout_{nullptr}; + QPushButton * normal_button_{nullptr}; + QPushButton * fault_button_{nullptr}; + QPushButton * movement_test_button_{nullptr}; + QLabel * movement_test_status_{nullptr}; + QProgressBar * movement_test_progress_{nullptr}; + QButtonGroup * mock_state_button_group_{nullptr}; +}; -} // namespace waybionic_rviz_plugins +} // namespace waybionic_rviz_plugins -#endif // WAYBIONIC_RVIZ_PLUGINS__DIAGNOSTICS_PANEL_HPP_ +#endif // WAYBIONIC_RVIZ_PLUGINS__DIAGNOSTICS_PANEL_HPP_ diff --git a/waybionic_rviz_plugins/src/diagnostics_panel.cpp b/waybionic_rviz_plugins/src/diagnostics_panel.cpp index a716aa7..e6baa2d 100644 --- a/waybionic_rviz_plugins/src/diagnostics_panel.cpp +++ b/waybionic_rviz_plugins/src/diagnostics_panel.cpp @@ -32,10 +32,10 @@ namespace waybionic_rviz_plugins { - namespace - { +namespace +{ - constexpr const char *kPanelStyle = R"( +constexpr const char * kPanelStyle = R"( QWidget { background-color: #071019; color: #e8f1f8; @@ -97,223 +97,216 @@ QHeaderView::section { } )"; - QLabel *makeTitle(const QString &text) - { - auto *label = new QLabel(text); - label->setObjectName("PanelTitle"); - return label; - } +QLabel * makeTitle(const QString & text) +{ + auto * label = new QLabel(text); + label->setObjectName("PanelTitle"); + return label; +} - QLabel *makeMuted(const QString &text) - { - auto *label = new QLabel(text); - label->setObjectName("Muted"); - return label; - } +QLabel * makeMuted(const QString & text) +{ + auto * label = new QLabel(text); + label->setObjectName("Muted"); + return label; +} - QFrame *makeCard() - { - auto *card = new QFrame(); - card->setObjectName("Card"); - return card; - } +QFrame * makeCard() +{ + auto * card = new QFrame(); + card->setObjectName("Card"); + return card; +} - } // namespace +} // namespace - DiagnosticsPanel::DiagnosticsPanel(QWidget *parent) - : rviz_common::Panel(parent) - { - buildUi(); - configureSource(use_mock_diagnostics_); - } +DiagnosticsPanel::DiagnosticsPanel(QWidget * parent) +: rviz_common::Panel(parent) +{ + buildUi(); + configureSource(use_mock_diagnostics_); +} - DiagnosticsPanel::~DiagnosticsPanel() - { - // Stop the timer before the members it reads are destroyed, then detach the - // live subscription so no executor callback outlives the panel. - if (refresh_timer_ != nullptr) - { - refresh_timer_->stop(); - } - if (diagnostics_source_) - { - diagnostics_source_->stop(); - } +DiagnosticsPanel::~DiagnosticsPanel() +{ + // Stop the timer before the members it reads are destroyed, then detach the + // live subscription so no executor callback outlives the panel. + if (refresh_timer_ != nullptr) { + refresh_timer_->stop(); } + if (diagnostics_source_) { + diagnostics_source_->stop(); + } +} - void DiagnosticsPanel::onInitialize() - { - if (auto ros_node_abstraction = getDisplayContext()->getRosNodeAbstraction().lock()) - { - rviz_node_ = ros_node_abstraction->get_raw_node(); - motion_command_publisher_ = rviz_node_->create_publisher( - "/old_arm_motion_test/command", rclcpp::QoS(10)); - } +void DiagnosticsPanel::onInitialize() +{ + if (auto ros_node_abstraction = getDisplayContext()->getRosNodeAbstraction().lock()) { + rviz_node_ = ros_node_abstraction->get_raw_node(); + motion_command_publisher_ = rviz_node_->create_publisher( + "/old_arm_motion_test/command", rclcpp::QoS(10)); + } - refresh_timer_ = new QTimer(this); - connect(refresh_timer_, &QTimer::timeout, this, [this]() - { refresh(); }); - refresh_timer_->start(1000); + refresh_timer_ = new QTimer(this); + connect(refresh_timer_, &QTimer::timeout, this, [this]() { refresh(); }); + refresh_timer_->start(1000); - // Re-apply launch parameters after RViz finishes load() so use_mock_diagnostics:=false wins. - QTimer::singleShot(0, this, [this]() - { + // Re-apply launch parameters after RViz finishes load() so use_mock_diagnostics:=false wins. + QTimer::singleShot(0, this, [this]() { diagnostics_topic_ = readDiagnosticsTopicParameter(diagnostics_topic_); configureSource(readUseMockDiagnosticsParameter(use_mock_diagnostics_)); - refresh(); }); - } + refresh(); + }); +} - void DiagnosticsPanel::save(rviz_common::Config config) const - { - rviz_common::Panel::save(config); - config.mapSetValue("Use Mock Diagnostics", use_mock_diagnostics_); - config.mapSetValue("Diagnostics Topic", QString::fromStdString(diagnostics_topic_)); - } +void DiagnosticsPanel::save(rviz_common::Config config) const +{ + rviz_common::Panel::save(config); + config.mapSetValue("Use Mock Diagnostics", use_mock_diagnostics_); + config.mapSetValue("Diagnostics Topic", QString::fromStdString(diagnostics_topic_)); +} - void DiagnosticsPanel::load(const rviz_common::Config &config) - { - rviz_common::Panel::load(config); +void DiagnosticsPanel::load(const rviz_common::Config & config) +{ + rviz_common::Panel::load(config); - QString diagnostics_topic; - if (config.mapGetString("Diagnostics Topic", &diagnostics_topic)) - { - diagnostics_topic_ = diagnostics_topic.toStdString(); - } + QString diagnostics_topic; + if (config.mapGetString("Diagnostics Topic", &diagnostics_topic)) { + diagnostics_topic_ = diagnostics_topic.toStdString(); } +} - void DiagnosticsPanel::buildUi() - { - setStyleSheet(kPanelStyle); - setMinimumWidth(420); - - auto *root_layout = new QVBoxLayout(this); - root_layout->setContentsMargins(10, 10, 10, 10); - root_layout->setSpacing(10); - - auto *header_card = makeCard(); - auto *header_layout = new QVBoxLayout(header_card); - header_layout->setSpacing(8); - - auto *title = makeTitle("WayBionic Engineering Monitor"); - state_label_ = new QLabel("Current State: NORMAL"); - state_label_->setObjectName("StateNormal"); - last_updated_label_ = makeMuted("Last updated: --"); - - use_mock_diagnostics_checkbox_ = new QCheckBox("Use Mock Diagnostics"); - use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); - use_mock_diagnostics_checkbox_->setToolTip( - "Checked: local mock validation states. Unchecked: subscribe to live ROS 2 diagnostics."); - connect(use_mock_diagnostics_checkbox_, &QCheckBox::toggled, this, [this](const bool checked) - { setUseMockDiagnostics(checked); }); - - auto *button_row = new QHBoxLayout(); - normal_button_ = new QPushButton("Mock Normal"); - normal_button_->setCheckable(true); - normal_button_->setChecked(true); - fault_button_ = new QPushButton("Mock Fault"); - fault_button_->setCheckable(true); - - mock_state_button_group_ = new QButtonGroup(this); - mock_state_button_group_->setExclusive(true); - mock_state_button_group_->addButton(normal_button_); - mock_state_button_group_->addButton(fault_button_); - connect(normal_button_, &QPushButton::clicked, this, [this]() - { setMockDiagnosticsState(MockDiagnosticsState::Normal); }); - connect(fault_button_, &QPushButton::clicked, this, [this]() - { setMockDiagnosticsState(MockDiagnosticsState::Fault); }); - - button_row->addWidget(normal_button_); - button_row->addWidget(fault_button_); - - header_layout->addWidget(title); - header_layout->addWidget(use_mock_diagnostics_checkbox_); - header_layout->addLayout(button_row); - header_layout->addWidget(state_label_); - header_layout->addWidget(last_updated_label_); - root_layout->addWidget(header_card); - - auto *system_card = makeCard(); - auto *system_layout = new QGridLayout(system_card); - system_layout->setVerticalSpacing(6); - system_layout->addWidget(makeTitle("System Status"), 0, 0, 1, 2); - - source_label_ = new QLabel("Mock"); - ros_connection_label_ = new QLabel("Local mock diagnostics"); - heartbeat_label_ = new QLabel("OK"); - ui_mode_label_ = new QLabel("Monitoring only"); - safety_label_ = new QLabel("No motor commands sent from this RViz panel"); - safety_label_->setWordWrap(true); - - const std::vector> rows = { - {"Diagnostic Source", source_label_}, - {"ROS 2 Connection", ros_connection_label_}, - {"Backend Heartbeat", heartbeat_label_}, - {"UI Mode", ui_mode_label_}, - {"Safety Note", safety_label_}, - }; - - int row = 1; - for (const auto &[name, value] : rows) - { - system_layout->addWidget(makeMuted(name), row, 0); - system_layout->addWidget(value, row, 1); - ++row; - } - root_layout->addWidget(system_card); - - auto *table_card = makeCard(); - auto *table_layout = new QVBoxLayout(table_card); - table_layout->addWidget(makeTitle("Telemetry + Live Values")); - - telemetry_table_ = new QTableWidget(0, 6); - telemetry_table_->setHorizontalHeaderLabels({"Signal", "Status", "Value", "Unit", "Last Updated", "Message"}); - telemetry_table_->setEditTriggers(QAbstractItemView::NoEditTriggers); - telemetry_table_->setSelectionBehavior(QAbstractItemView::SelectRows); - telemetry_table_->verticalHeader()->setVisible(false); - telemetry_table_->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); - telemetry_table_->horizontalHeader()->setMinimumSectionSize(80); - telemetry_table_->setMaximumHeight(220); - telemetry_table_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - table_layout->addWidget(telemetry_table_); - root_layout->addWidget(table_card); - - auto *alerts_card = makeCard(); - auto *alerts_root = new QVBoxLayout(alerts_card); - auto *alerts_title_row = new QHBoxLayout(); - alerts_title_row->addWidget(makeTitle("Current Alerts"), 1); - alert_icon_label_ = new QLabel(""); - alert_icon_label_->setStyleSheet("color: #ff4d5e; font-size: 28px; font-weight: 900;"); - alerts_title_row->addWidget(alert_icon_label_); - alerts_root->addLayout(alerts_title_row); - - alerts_layout_ = new QVBoxLayout(); - alerts_layout_->setSpacing(6); - alerts_root->addLayout(alerts_layout_); - alerts_card->setMaximumHeight(180); - alerts_card->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - root_layout->addWidget(alerts_card); - - buildMovementTestUi(root_layout); +void DiagnosticsPanel::buildUi() +{ + setStyleSheet(kPanelStyle); + setMinimumWidth(420); + + auto * root_layout = new QVBoxLayout(this); + root_layout->setContentsMargins(10, 10, 10, 10); + root_layout->setSpacing(10); + + auto * header_card = makeCard(); + auto * header_layout = new QVBoxLayout(header_card); + header_layout->setSpacing(8); + + auto * title = makeTitle("WayBionic Engineering Monitor"); + state_label_ = new QLabel("Current State: NORMAL"); + state_label_->setObjectName("StateNormal"); + last_updated_label_ = makeMuted("Last updated: --"); + + use_mock_diagnostics_checkbox_ = new QCheckBox("Use Mock Diagnostics"); + use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); + use_mock_diagnostics_checkbox_->setToolTip( + "Checked: local mock validation states. Unchecked: subscribe to live ROS 2 diagnostics."); + connect(use_mock_diagnostics_checkbox_, &QCheckBox::toggled, this, [this](const bool checked) { + setUseMockDiagnostics(checked); + }); + + auto * button_row = new QHBoxLayout(); + normal_button_ = new QPushButton("Mock Normal"); + normal_button_->setCheckable(true); + normal_button_->setChecked(true); + fault_button_ = new QPushButton("Mock Fault"); + fault_button_->setCheckable(true); + + mock_state_button_group_ = new QButtonGroup(this); + mock_state_button_group_->setExclusive(true); + mock_state_button_group_->addButton(normal_button_); + mock_state_button_group_->addButton(fault_button_); + connect(normal_button_, &QPushButton::clicked, this, [this]() { + setMockDiagnosticsState(MockDiagnosticsState::Normal); + }); + connect(fault_button_, &QPushButton::clicked, this, [this]() { + setMockDiagnosticsState(MockDiagnosticsState::Fault); + }); + + button_row->addWidget(normal_button_); + button_row->addWidget(fault_button_); + + header_layout->addWidget(title); + header_layout->addWidget(use_mock_diagnostics_checkbox_); + header_layout->addLayout(button_row); + header_layout->addWidget(state_label_); + header_layout->addWidget(last_updated_label_); + root_layout->addWidget(header_card); + + auto * system_card = makeCard(); + auto * system_layout = new QGridLayout(system_card); + system_layout->setVerticalSpacing(6); + system_layout->addWidget(makeTitle("System Status"), 0, 0, 1, 2); + + source_label_ = new QLabel("Mock"); + ros_connection_label_ = new QLabel("Local mock diagnostics"); + heartbeat_label_ = new QLabel("OK"); + ui_mode_label_ = new QLabel("Monitoring only"); + safety_label_ = new QLabel("No motor commands sent from this RViz panel"); + safety_label_->setWordWrap(true); + + const std::vector> rows = { + {"Diagnostic Source", source_label_}, + {"ROS 2 Connection", ros_connection_label_}, + {"Backend Heartbeat", heartbeat_label_}, + {"UI Mode", ui_mode_label_}, + {"Safety Note", safety_label_}, + }; + + int row = 1; + for (const auto & [name, value] : rows) { + system_layout->addWidget(makeMuted(name), row, 0); + system_layout->addWidget(value, row, 1); + ++row; } + root_layout->addWidget(system_card); + + auto * table_card = makeCard(); + auto * table_layout = new QVBoxLayout(table_card); + table_layout->addWidget(makeTitle("Telemetry + Live Values")); + + telemetry_table_ = new QTableWidget(0, 6); + telemetry_table_->setHorizontalHeaderLabels({"Signal", "Status", "Value", "Unit", "Last Updated", "Message"}); + telemetry_table_->setEditTriggers(QAbstractItemView::NoEditTriggers); + telemetry_table_->setSelectionBehavior(QAbstractItemView::SelectRows); + telemetry_table_->verticalHeader()->setVisible(false); + telemetry_table_->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + telemetry_table_->horizontalHeader()->setMinimumSectionSize(80); + table_layout->addWidget(telemetry_table_); + root_layout->addWidget(table_card, 1); + + auto * alerts_card = makeCard(); + auto * alerts_root = new QVBoxLayout(alerts_card); + auto * alerts_title_row = new QHBoxLayout(); + alerts_title_row->addWidget(makeTitle("Current Alerts"), 1); + alert_icon_label_ = new QLabel(""); + alert_icon_label_->setStyleSheet("color: #ff4d5e; font-size: 28px; font-weight: 900;"); + alerts_title_row->addWidget(alert_icon_label_); + alerts_root->addLayout(alerts_title_row); + + alerts_layout_ = new QVBoxLayout(); + alerts_layout_->setSpacing(6); + alerts_root->addLayout(alerts_layout_); + alerts_root->addStretch(1); + root_layout->addWidget(alerts_card); + + buildMovementTestUi(root_layout); +} - void DiagnosticsPanel::buildMovementTestUi(QVBoxLayout *root_layout) - { - auto *movement_card = makeCard(); - auto *movement_layout = new QVBoxLayout(movement_card); - movement_layout->setSpacing(8); +void DiagnosticsPanel::buildMovementTestUi(QVBoxLayout * root_layout) +{ + auto * movement_card = makeCard(); + auto * movement_layout = new QVBoxLayout(movement_card); + movement_layout->setSpacing(8); - movement_layout->addWidget(makeTitle("Movement Test")); + movement_layout->addWidget(makeTitle("Movement Test")); - auto *description = makeMuted( - "Run a controlled movement sequence to visually inspect the robot before operation."); - description->setWordWrap(true); - movement_layout->addWidget(description); + auto * description = makeMuted( + "Run a controlled movement sequence to visually inspect the robot before operation."); + description->setWordWrap(true); + movement_layout->addWidget(description); - movement_test_button_ = new QPushButton("â–¶ Run Movement Test"); - movement_test_button_->setToolTip( - "Run the robot through its predefined movement test sequence."); - connect(movement_test_button_, &QPushButton::clicked, this, [this]() - { + movement_test_button_ = new QPushButton("Run Movement Test"); + movement_test_button_->setToolTip( + "Run the robot through its predefined movement test sequence."); + connect(movement_test_button_, &QPushButton::clicked, this, [this]() { if (!motion_command_publisher_) { movement_test_status_->setText("ROS connection is not ready."); return; @@ -322,285 +315,256 @@ QHeaderView::section { std_msgs::msg::String command; command.data = "RUN"; motion_command_publisher_->publish(command); - movement_test_status_->setText("Movement test command sent."); }); + movement_test_status_->setText("Movement test command sent."); + }); - movement_test_progress_ = new QProgressBar(); - movement_test_progress_->setRange(0, 100); - movement_test_progress_->setValue(0); - movement_test_progress_->setTextVisible(true); + movement_test_progress_ = new QProgressBar(); + movement_test_progress_->setRange(0, 100); + movement_test_progress_->setValue(0); + movement_test_progress_->setTextVisible(true); - movement_test_status_ = makeMuted("Ready to run movement test."); + movement_test_status_ = makeMuted("Ready to run movement test."); - movement_layout->addWidget(movement_test_button_); - movement_layout->addWidget(movement_test_progress_); - movement_layout->addWidget(movement_test_status_); + movement_layout->addWidget(movement_test_button_); + movement_layout->addWidget(movement_test_progress_); + movement_layout->addWidget(movement_test_status_); + root_layout->addWidget(movement_card); +} - root_layout->addWidget(movement_card); +void DiagnosticsPanel::configureSource(const bool use_mock_diagnostics) +{ + use_mock_diagnostics_ = use_mock_diagnostics; + + // Detach the outgoing source before releasing it. Retiring the subscription + // first means an executor callback can no longer publish into a source the + // panel has stopped using, and it prevents a second subscription from + // existing alongside the old one. + auto retired_source = std::move(diagnostics_source_); + if (retired_source) { + retired_source->stop(); } + mock_diagnostics_source_.reset(); - void DiagnosticsPanel::configureSource(const bool use_mock_diagnostics) - { - use_mock_diagnostics_ = use_mock_diagnostics; - - // Detach the outgoing source before releasing it. Retiring the subscription - // first means an executor callback can no longer publish into a source the - // panel has stopped using, and it prevents a second subscription from - // existing alongside the old one. - auto retired_source = std::move(diagnostics_source_); - if (retired_source) - { - retired_source->stop(); - } - mock_diagnostics_source_.reset(); + if (use_mock_diagnostics_ || !rviz_node_) { + mock_diagnostics_source_ = std::make_shared(); + diagnostics_source_ = mock_diagnostics_source_; + } else { + diagnostics_source_ = std::make_shared(rviz_node_, diagnostics_topic_); + } - if (use_mock_diagnostics_ || !rviz_node_) - { - mock_diagnostics_source_ = std::make_shared(); - diagnostics_source_ = mock_diagnostics_source_; - } - else - { - diagnostics_source_ = std::make_shared(rviz_node_, diagnostics_topic_); - } + updateSourceControls(); - updateSourceControls(); + // Released only after the replacement is installed, so no refresh can observe + // a panel without a source. + retired_source.reset(); +} - // Released only after the replacement is installed, so no refresh can observe - // a panel without a source. - retired_source.reset(); +bool DiagnosticsPanel::readUseMockDiagnosticsParameter(const bool default_value) +{ + if (!rviz_node_) { + return default_value; } - bool DiagnosticsPanel::readUseMockDiagnosticsParameter(const bool default_value) - { - if (!rviz_node_) - { - return default_value; - } + if (!rviz_node_->has_parameter("use_mock_diagnostics")) { + return rviz_node_->declare_parameter("use_mock_diagnostics", default_value); + } - if (!rviz_node_->has_parameter("use_mock_diagnostics")) - { - return rviz_node_->declare_parameter("use_mock_diagnostics", default_value); - } + return rviz_node_->get_parameter("use_mock_diagnostics").as_bool(); +} - return rviz_node_->get_parameter("use_mock_diagnostics").as_bool(); +std::string DiagnosticsPanel::readDiagnosticsTopicParameter(const std::string & default_value) +{ + if (!rviz_node_) { + return default_value; } - std::string DiagnosticsPanel::readDiagnosticsTopicParameter(const std::string &default_value) - { - if (!rviz_node_) - { - return default_value; - } + if (!rviz_node_->has_parameter("diagnostics_topic")) { + return rviz_node_->declare_parameter("diagnostics_topic", default_value); + } - if (!rviz_node_->has_parameter("diagnostics_topic")) - { - return rviz_node_->declare_parameter("diagnostics_topic", default_value); - } + return rviz_node_->get_parameter("diagnostics_topic").as_string(); +} - return rviz_node_->get_parameter("diagnostics_topic").as_string(); +void DiagnosticsPanel::refresh() +{ + // Pin the source for the whole tick so a mode switch cannot swap it out + // between reading the messages and rendering them. + const auto source = diagnostics_source_; + if (!source) { + return; } - void DiagnosticsPanel::refresh() - { - // Pin the source for the whole tick so a mode switch cannot swap it out - // between reading the messages and rendering them. - const auto source = diagnostics_source_; - if (!source) - { - return; - } + const auto now = clock_.now(); + const auto messages = source->messages(now); + updateSystemStatus(*source, messages, now); + updateTelemetryTable(messages, now); + updateAlerts(messages); +} - const auto now = clock_.now(); - const auto messages = source->messages(now); - updateSystemStatus(*source, messages, now); - updateTelemetryTable(messages, now); - updateAlerts(messages); +void DiagnosticsPanel::setMockDiagnosticsState(const MockDiagnosticsState mode) +{ + if (!mock_diagnostics_source_) { + return; } - void DiagnosticsPanel::setMockDiagnosticsState(const MockDiagnosticsState mode) - { - if (!mock_diagnostics_source_) - { - return; - } + mock_diagnostics_source_->setMode(mode); + refresh(); +} - mock_diagnostics_source_->setMode(mode); - refresh(); - } +void DiagnosticsPanel::setUseMockDiagnostics(const bool use_mock_diagnostics) +{ + configureSource(use_mock_diagnostics); + refresh(); +} - void DiagnosticsPanel::setUseMockDiagnostics(const bool use_mock_diagnostics) - { - configureSource(use_mock_diagnostics); - refresh(); +void DiagnosticsPanel::updateSystemStatus( + const DiagnosticsSource & source, + const std::vector & messages, + const rclcpp::Time & now) +{ + const bool has_alert = + std::any_of(messages.begin(), messages.end(), [](const auto & message) { + return isAlertStatus(message.status); + }); + const bool has_stale = + std::any_of(messages.begin(), messages.end(), [](const auto & message) { + return message.status == DiagnosticStatus::Stale; + }); + + const bool waiting_for_live_diagnostics = + !use_mock_diagnostics_ && messages.size() == 1 && messages.front().signal_name == "diagnostics.topic"; + + if (waiting_for_live_diagnostics) { + state_label_->setText("Current State: WAITING FOR LIVE DIAGNOSTICS"); + } else { + state_label_->setText(has_alert ? "Current State: FAULT" : "Current State: NORMAL"); + } + state_label_->setObjectName(has_alert ? "StateFault" : "StateNormal"); + state_label_->style()->unpolish(state_label_); + state_label_->style()->polish(state_label_); + + source_label_->setText(QString::fromStdString(source.sourceName())); + ros_connection_label_->setText(QString::fromStdString(source.connectionStatus(now))); + heartbeat_label_->setText(has_stale ? "STALE" : "OK"); + heartbeat_label_->setStyleSheet(QString("color: %1; font-weight: 800;").arg(has_stale ? "#9aa4ad" : "#3ddc84")); + safety_label_->setStyleSheet(QString("color: %1; font-weight: 700;").arg(has_alert ? "#ff4d5e" : "#8ea3b1")); + + if (messages.empty()) { + last_updated_label_->setText("Last updated: --"); + return; } - void DiagnosticsPanel::updateSystemStatus( - const DiagnosticsSource &source, - const std::vector &messages, - const rclcpp::Time &now) - { - const bool has_alert = - std::any_of(messages.begin(), messages.end(), [](const auto &message) - { return isAlertStatus(message.status); }); - const bool has_stale = - std::any_of(messages.begin(), messages.end(), [](const auto &message) - { return message.status == DiagnosticStatus::Stale; }); - - const bool waiting_for_live_diagnostics = - !use_mock_diagnostics_ && messages.size() == 1 && messages.front().signal_name == "diagnostics.topic"; - - if (waiting_for_live_diagnostics) - { - state_label_->setText("Current State: WAITING FOR LIVE DIAGNOSTICS"); - } - else - { - state_label_->setText(has_alert ? "Current State: FAULT" : "Current State: NORMAL"); - } - state_label_->setObjectName(has_alert ? "StateFault" : "StateNormal"); - state_label_->style()->unpolish(state_label_); - state_label_->style()->polish(state_label_); - - source_label_->setText(QString::fromStdString(source.sourceName())); - ros_connection_label_->setText(QString::fromStdString(source.connectionStatus(now))); - heartbeat_label_->setText(has_stale ? "STALE" : "OK"); - heartbeat_label_->setStyleSheet(QString("color: %1; font-weight: 800;").arg(has_stale ? "#9aa4ad" : "#3ddc84")); - safety_label_->setStyleSheet(QString("color: %1; font-weight: 700;").arg(has_alert ? "#ff4d5e" : "#8ea3b1")); - - if (messages.empty()) - { - last_updated_label_->setText("Last updated: --"); - return; - } - - double latest_age = std::numeric_limits::max(); - for (const auto &message : messages) - { - latest_age = std::min(latest_age, (now - message.timestamp).seconds()); - } - last_updated_label_->setText(QString("Last updated: %1s ago").arg(latest_age, 0, 'f', 1)); + double latest_age = std::numeric_limits::max(); + for (const auto & message : messages) { + latest_age = std::min(latest_age, (now - message.timestamp).seconds()); } + last_updated_label_->setText(QString("Last updated: %1s ago").arg(latest_age, 0, 'f', 1)); +} - void DiagnosticsPanel::updateSourceControls() - { - if (use_mock_diagnostics_checkbox_ != nullptr) - { - const QSignalBlocker blocker(use_mock_diagnostics_checkbox_); - use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); - } +void DiagnosticsPanel::updateSourceControls() +{ + if (use_mock_diagnostics_checkbox_ != nullptr) { + const QSignalBlocker blocker(use_mock_diagnostics_checkbox_); + use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); + } - const bool mock_enabled = static_cast(mock_diagnostics_source_); - if (normal_button_ != nullptr) - { - normal_button_->setEnabled(mock_enabled); - if (!mock_enabled) - { - normal_button_->setChecked(false); - } - } - if (fault_button_ != nullptr) - { - fault_button_->setEnabled(mock_enabled); - if (!mock_enabled) - { - fault_button_->setChecked(false); - } + const bool mock_enabled = static_cast(mock_diagnostics_source_); + if (normal_button_ != nullptr) { + normal_button_->setEnabled(mock_enabled); + if (!mock_enabled) { + normal_button_->setChecked(false); } } - - void DiagnosticsPanel::updateTelemetryTable( - const std::vector &messages, - const rclcpp::Time &now) - { - telemetry_table_->setRowCount(static_cast(messages.size())); - - for (int row = 0; row < static_cast(messages.size()); ++row) - { - const auto &message = messages.at(row); - const QStringList values = { - QString::fromStdString(message.signal_name), - toString(message.status), - optionalText(message.value), - optionalText(message.unit), - ageText(message.timestamp, now), - optionalText(message.alert_message), - }; - - for (int column = 0; column < values.size(); ++column) - { - auto *item = new QTableWidgetItem(values.at(column)); - item->setBackground(QColor(rowBackground(message.status))); - item->setForeground(QColor(column == 1 ? statusColor(message.status) : "#e8f1f8")); - if (column == 1 || column == 2 || column == 3 || column == 4) - { - item->setTextAlignment(Qt::AlignCenter); - } - if (message.status != DiagnosticStatus::Ok && (column == 0 || column == 1 || column == 5)) - { - auto font = item->font(); - font.setBold(true); - item->setFont(font); - } - telemetry_table_->setItem(row, column, item); - } + if (fault_button_ != nullptr) { + fault_button_->setEnabled(mock_enabled); + if (!mock_enabled) { + fault_button_->setChecked(false); } } +} - void DiagnosticsPanel::updateAlerts(const std::vector &messages) - { - clearAlerts(); +void DiagnosticsPanel::updateTelemetryTable( + const std::vector & messages, + const rclcpp::Time & now) +{ + telemetry_table_->setRowCount(static_cast(messages.size())); + + for (int row = 0; row < static_cast(messages.size()); ++row) { + const auto & message = messages.at(row); + const QStringList values = { + QString::fromStdString(message.signal_name), + toString(message.status), + optionalText(message.value), + optionalText(message.unit), + ageText(message.timestamp, now), + optionalText(message.alert_message), + }; - bool has_alert = false; - for (const auto &message : messages) - { - if (!isAlertStatus(message.status)) - { - continue; + for (int column = 0; column < values.size(); ++column) { + auto * item = new QTableWidgetItem(values.at(column)); + item->setBackground(QColor(rowBackground(message.status))); + item->setForeground(QColor(column == 1 ? statusColor(message.status) : "#e8f1f8")); + if (column == 1 || column == 2 || column == 3 || column == 4) { + item->setTextAlignment(Qt::AlignCenter); } - - has_alert = true; - auto *label = new QLabel(alertText(message)); - label->setWordWrap(true); - label->setStyleSheet(QString( - "background-color: rgba(255, 77, 94, 0.18);" - "border: 1px solid %1;" - "border-radius: 6px;" - "color: #e8f1f8;" - "font-weight: 800;" - "padding: 8px;") - .arg(statusColor(message.status))); - alerts_layout_->addWidget(label); + if (message.status != DiagnosticStatus::Ok && (column == 0 || column == 1 || column == 5)) { + auto font = item->font(); + font.setBold(true); + item->setFont(font); + } + telemetry_table_->setItem(row, column, item); } + } +} - if (!has_alert) - { - alert_icon_label_->setText(""); - auto *label = new QLabel("No active alerts"); - label->setStyleSheet("color: #3ddc84; font-size: 15px; font-weight: 800;"); - alerts_layout_->addWidget(label); - return; - } +void DiagnosticsPanel::updateAlerts(const std::vector & messages) +{ + clearAlerts(); + + bool has_alert = false; + for (const auto & message : messages) { + if (!isAlertStatus(message.status)) { + continue; + } + + has_alert = true; + auto * label = new QLabel(alertText(message)); + label->setWordWrap(true); + label->setStyleSheet(QString( + "background-color: rgba(255, 77, 94, 0.18);" + "border: 1px solid %1;" + "border-radius: 6px;" + "color: #e8f1f8;" + "font-weight: 800;" + "padding: 8px;").arg(statusColor(message.status))); + alerts_layout_->addWidget(label); + } - alert_icon_label_->setText("!"); + if (!has_alert) { + alert_icon_label_->setText(""); + auto * label = new QLabel("No active alerts"); + label->setStyleSheet("color: #3ddc84; font-size: 15px; font-weight: 800;"); + alerts_layout_->addWidget(label); + return; } - void DiagnosticsPanel::clearAlerts() - { - while (alerts_layout_->count() > 0) - { - auto *item = alerts_layout_->takeAt(0); - if (auto *widget = item->widget()) - { - widget->deleteLater(); - } - delete item; + alert_icon_label_->setText("!"); +} + +void DiagnosticsPanel::clearAlerts() +{ + while (alerts_layout_->count() > 0) { + auto * item = alerts_layout_->takeAt(0); + if (auto * widget = item->widget()) { + widget->deleteLater(); } + delete item; } +} - QString DiagnosticsPanel::statusColor(const DiagnosticStatus status) const - { - switch (status) - { +QString DiagnosticsPanel::statusColor(const DiagnosticStatus status) const +{ + switch (status) { case DiagnosticStatus::Ok: return "#3ddc84"; case DiagnosticStatus::Warn: @@ -609,14 +573,13 @@ QHeaderView::section { return "#ff4d5e"; case DiagnosticStatus::Stale: return "#9aa4ad"; - } - return "#e8f1f8"; } + return "#e8f1f8"; +} - QString DiagnosticsPanel::rowBackground(const DiagnosticStatus status) const - { - switch (status) - { +QString DiagnosticsPanel::rowBackground(const DiagnosticStatus status) const +{ + switch (status) { case DiagnosticStatus::Fault: return "#241018"; case DiagnosticStatus::Warn: @@ -625,44 +588,41 @@ QHeaderView::section { return "#151922"; case DiagnosticStatus::Ok: return "#09131d"; - } - return "#09131d"; } + return "#09131d"; +} - QString DiagnosticsPanel::ageText(const rclcpp::Time ×tamp, const rclcpp::Time &now) const - { - const double age_seconds = std::max(0.0, (now - timestamp).seconds()); - return QString("%1s ago").arg(age_seconds, 0, 'f', 1); - } +QString DiagnosticsPanel::ageText(const rclcpp::Time & timestamp, const rclcpp::Time & now) const +{ + const double age_seconds = std::max(0.0, (now - timestamp).seconds()); + return QString("%1s ago").arg(age_seconds, 0, 'f', 1); +} - QString DiagnosticsPanel::optionalText(const std::optional &value) const - { - if (!value.has_value() || value->empty()) - { - return "-"; - } - return QString::fromStdString(*value); +QString DiagnosticsPanel::optionalText(const std::optional & value) const +{ + if (!value.has_value() || value->empty()) { + return "-"; } + return QString::fromStdString(*value); +} - QString DiagnosticsPanel::alertText(const DiagnosticMessage &message) const - { - if (message.signal_name == "board.temperature") - { - return QString("FAULT - Board temperature high: %1 %2") - .arg(optionalText(message.value), optionalText(message.unit)); - } - - if (message.signal_name == "imu.heartbeat") - { - return "STALE - IMU heartbeat timeout"; - } +QString DiagnosticsPanel::alertText(const DiagnosticMessage & message) const +{ + if (message.signal_name == "board.temperature") { + return QString("FAULT - Board temperature high: %1 %2") + .arg(optionalText(message.value), optionalText(message.unit)); + } - return QString("%1 - %2: %3") - .arg(toString(message.status)) - .arg(QString::fromStdString(message.signal_name)) - .arg(optionalText(message.alert_message)); + if (message.signal_name == "imu.heartbeat") { + return "STALE - IMU heartbeat timeout"; } -} // namespace waybionic_rviz_plugins + return QString("%1 - %2: %3") + .arg(toString(message.status)) + .arg(QString::fromStdString(message.signal_name)) + .arg(optionalText(message.alert_message)); +} + +} // namespace waybionic_rviz_plugins PLUGINLIB_EXPORT_CLASS(waybionic_rviz_plugins::DiagnosticsPanel, rviz_common::Panel) From 17b90afc82a86b105586897167d6b2504cf39308 Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 3 Oct 2026 12:14:34 -0600 Subject: [PATCH 20/21] rechanged the diagnostic panel to properly be suited --- .../diagnostics_panel.hpp | 122 +-- .../src/diagnostics_panel.cpp | 900 +++++++++--------- 2 files changed, 529 insertions(+), 493 deletions(-) diff --git a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp index 9ec0523..4691bc9 100644 --- a/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp +++ b/waybionic_rviz_plugins/include/waybionic_rviz_plugins/diagnostics_panel.hpp @@ -30,72 +30,72 @@ class QPushButton; namespace waybionic_rviz_plugins { -class DiagnosticsPanel : public rviz_common::Panel -{ - Q_OBJECT + class DiagnosticsPanel : public rviz_common::Panel + { + Q_OBJECT -public: - explicit DiagnosticsPanel(QWidget * parent = nullptr); - ~DiagnosticsPanel() override; + public: + explicit DiagnosticsPanel(QWidget *parent = nullptr); + ~DiagnosticsPanel() override; - void onInitialize() override; - void save(rviz_common::Config config) const override; - void load(const rviz_common::Config & config) override; + void onInitialize() override; + void save(rviz_common::Config config) const override; + void load(const rviz_common::Config &config) override; -private: - void buildUi(); - void buildMovementTestUi(QVBoxLayout * root_layout); - void configureSource(bool use_mock_diagnostics); - bool readUseMockDiagnosticsParameter(bool default_value); - std::string readDiagnosticsTopicParameter(const std::string & default_value); - void refresh(); - void setMockDiagnosticsState(MockDiagnosticsState mode); - void setUseMockDiagnostics(bool use_mock_diagnostics); - void updateSystemStatus( - const DiagnosticsSource & source, - const std::vector & messages, - const rclcpp::Time & now); - void updateTelemetryTable(const std::vector & messages, const rclcpp::Time & now); - void updateAlerts(const std::vector & messages); - void updateSourceControls(); - void clearAlerts(); + private: + void buildUi(); + void buildMovementTestUi(QVBoxLayout *root_layout); + void configureSource(bool use_mock_diagnostics); + bool readUseMockDiagnosticsParameter(bool default_value); + std::string readDiagnosticsTopicParameter(const std::string &default_value); + void refresh(); + void setMockDiagnosticsState(MockDiagnosticsState mode); + void setUseMockDiagnostics(bool use_mock_diagnostics); + void updateSystemStatus( + const DiagnosticsSource &source, + const std::vector &messages, + const rclcpp::Time &now); + void updateTelemetryTable(const std::vector &messages, const rclcpp::Time &now); + void updateAlerts(const std::vector &messages); + void updateSourceControls(); + void clearAlerts(); - QString statusColor(DiagnosticStatus status) const; - QString rowBackground(DiagnosticStatus status) const; - QString ageText(const rclcpp::Time & timestamp, const rclcpp::Time & now) const; - QString optionalText(const std::optional & value) const; - QString alertText(const DiagnosticMessage & message) const; + QString statusColor(DiagnosticStatus status) const; + QString rowBackground(DiagnosticStatus status) const; + QString ageText(const rclcpp::Time ×tamp, const rclcpp::Time &now) const; + QString optionalText(const std::optional &value) const; + QString alertText(const DiagnosticMessage &message) const; - // Shared ownership so a refresh tick keeps its source alive even if a mode - // switch replaces the panel's source part-way through the tick. - std::shared_ptr diagnostics_source_; - std::shared_ptr mock_diagnostics_source_; - rclcpp::Node::SharedPtr rviz_node_; - rclcpp::Publisher::SharedPtr motion_command_publisher_; - rclcpp::Clock clock_{RCL_SYSTEM_TIME}; - std::string diagnostics_topic_{"/diagnostics"}; - bool use_mock_diagnostics_{true}; + // Shared ownership so a refresh tick keeps its source alive even if a mode + // switch replaces the panel's source part-way through the tick. + std::shared_ptr diagnostics_source_; + std::shared_ptr mock_diagnostics_source_; + rclcpp::Node::SharedPtr rviz_node_; + rclcpp::Publisher::SharedPtr motion_command_publisher_; + rclcpp::Clock clock_{RCL_SYSTEM_TIME}; + std::string diagnostics_topic_{"/diagnostics"}; + bool use_mock_diagnostics_{true}; - QTimer * refresh_timer_{nullptr}; - QCheckBox * use_mock_diagnostics_checkbox_{nullptr}; - QLabel * state_label_{nullptr}; - QLabel * last_updated_label_{nullptr}; - QLabel * source_label_{nullptr}; - QLabel * ros_connection_label_{nullptr}; - QLabel * heartbeat_label_{nullptr}; - QLabel * ui_mode_label_{nullptr}; - QLabel * safety_label_{nullptr}; - QLabel * alert_icon_label_{nullptr}; - QTableWidget * telemetry_table_{nullptr}; - QVBoxLayout * alerts_layout_{nullptr}; - QPushButton * normal_button_{nullptr}; - QPushButton * fault_button_{nullptr}; - QPushButton * movement_test_button_{nullptr}; - QLabel * movement_test_status_{nullptr}; - QProgressBar * movement_test_progress_{nullptr}; - QButtonGroup * mock_state_button_group_{nullptr}; -}; + QTimer *refresh_timer_{nullptr}; + QCheckBox *use_mock_diagnostics_checkbox_{nullptr}; + QLabel *state_label_{nullptr}; + QLabel *last_updated_label_{nullptr}; + QLabel *source_label_{nullptr}; + QLabel *ros_connection_label_{nullptr}; + QLabel *heartbeat_label_{nullptr}; + QLabel *ui_mode_label_{nullptr}; + QLabel *safety_label_{nullptr}; + QLabel *alert_icon_label_{nullptr}; + QTableWidget *telemetry_table_{nullptr}; + QVBoxLayout *alerts_layout_{nullptr}; + QPushButton *normal_button_{nullptr}; + QPushButton *fault_button_{nullptr}; + QPushButton *movement_test_button_{nullptr}; + QLabel *movement_test_status_{nullptr}; + QProgressBar *movement_test_progress_{nullptr}; + QButtonGroup *mock_state_button_group_{nullptr}; + }; -} // namespace waybionic_rviz_plugins +} // namespace waybionic_rviz_plugins -#endif // WAYBIONIC_RVIZ_PLUGINS__DIAGNOSTICS_PANEL_HPP_ +#endif // WAYBIONIC_RVIZ_PLUGINS__DIAGNOSTICS_PANEL_HPP_ diff --git a/waybionic_rviz_plugins/src/diagnostics_panel.cpp b/waybionic_rviz_plugins/src/diagnostics_panel.cpp index e6baa2d..460eb71 100644 --- a/waybionic_rviz_plugins/src/diagnostics_panel.cpp +++ b/waybionic_rviz_plugins/src/diagnostics_panel.cpp @@ -32,10 +32,10 @@ namespace waybionic_rviz_plugins { -namespace -{ + namespace + { -constexpr const char * kPanelStyle = R"( + constexpr const char *kPanelStyle = R"( QWidget { background-color: #071019; color: #e8f1f8; @@ -97,216 +97,220 @@ QHeaderView::section { } )"; -QLabel * makeTitle(const QString & text) -{ - auto * label = new QLabel(text); - label->setObjectName("PanelTitle"); - return label; -} - -QLabel * makeMuted(const QString & text) -{ - auto * label = new QLabel(text); - label->setObjectName("Muted"); - return label; -} + QLabel *makeTitle(const QString &text) + { + auto *label = new QLabel(text); + label->setObjectName("PanelTitle"); + return label; + } -QFrame * makeCard() -{ - auto * card = new QFrame(); - card->setObjectName("Card"); - return card; -} + QLabel *makeMuted(const QString &text) + { + auto *label = new QLabel(text); + label->setObjectName("Muted"); + return label; + } -} // namespace + QFrame *makeCard() + { + auto *card = new QFrame(); + card->setObjectName("Card"); + return card; + } -DiagnosticsPanel::DiagnosticsPanel(QWidget * parent) -: rviz_common::Panel(parent) -{ - buildUi(); - configureSource(use_mock_diagnostics_); -} + } // namespace -DiagnosticsPanel::~DiagnosticsPanel() -{ - // Stop the timer before the members it reads are destroyed, then detach the - // live subscription so no executor callback outlives the panel. - if (refresh_timer_ != nullptr) { - refresh_timer_->stop(); + DiagnosticsPanel::DiagnosticsPanel(QWidget *parent) + : rviz_common::Panel(parent) + { + buildUi(); + configureSource(use_mock_diagnostics_); } - if (diagnostics_source_) { - diagnostics_source_->stop(); - } -} -void DiagnosticsPanel::onInitialize() -{ - if (auto ros_node_abstraction = getDisplayContext()->getRosNodeAbstraction().lock()) { - rviz_node_ = ros_node_abstraction->get_raw_node(); - motion_command_publisher_ = rviz_node_->create_publisher( - "/old_arm_motion_test/command", rclcpp::QoS(10)); + DiagnosticsPanel::~DiagnosticsPanel() + { + // Stop the timer before the members it reads are destroyed, then detach the + // live subscription so no executor callback outlives the panel. + if (refresh_timer_ != nullptr) + { + refresh_timer_->stop(); + } + if (diagnostics_source_) + { + diagnostics_source_->stop(); + } } - refresh_timer_ = new QTimer(this); - connect(refresh_timer_, &QTimer::timeout, this, [this]() { refresh(); }); - refresh_timer_->start(1000); + void DiagnosticsPanel::onInitialize() + { + if (auto ros_node_abstraction = getDisplayContext()->getRosNodeAbstraction().lock()) + { + rviz_node_ = ros_node_abstraction->get_raw_node(); + motion_command_publisher_ = rviz_node_->create_publisher( + "/old_arm_motion_test/command", rclcpp::QoS(10)); + } + + refresh_timer_ = new QTimer(this); + connect(refresh_timer_, &QTimer::timeout, this, [this]() + { refresh(); }); + refresh_timer_->start(1000); - // Re-apply launch parameters after RViz finishes load() so use_mock_diagnostics:=false wins. - QTimer::singleShot(0, this, [this]() { + // Re-apply launch parameters after RViz finishes load() so use_mock_diagnostics:=false wins. + QTimer::singleShot(0, this, [this]() + { diagnostics_topic_ = readDiagnosticsTopicParameter(diagnostics_topic_); configureSource(readUseMockDiagnosticsParameter(use_mock_diagnostics_)); - refresh(); - }); -} + refresh(); }); + } -void DiagnosticsPanel::save(rviz_common::Config config) const -{ - rviz_common::Panel::save(config); - config.mapSetValue("Use Mock Diagnostics", use_mock_diagnostics_); - config.mapSetValue("Diagnostics Topic", QString::fromStdString(diagnostics_topic_)); -} + void DiagnosticsPanel::save(rviz_common::Config config) const + { + rviz_common::Panel::save(config); + config.mapSetValue("Use Mock Diagnostics", use_mock_diagnostics_); + config.mapSetValue("Diagnostics Topic", QString::fromStdString(diagnostics_topic_)); + } -void DiagnosticsPanel::load(const rviz_common::Config & config) -{ - rviz_common::Panel::load(config); + void DiagnosticsPanel::load(const rviz_common::Config &config) + { + rviz_common::Panel::load(config); - QString diagnostics_topic; - if (config.mapGetString("Diagnostics Topic", &diagnostics_topic)) { - diagnostics_topic_ = diagnostics_topic.toStdString(); + QString diagnostics_topic; + if (config.mapGetString("Diagnostics Topic", &diagnostics_topic)) + { + diagnostics_topic_ = diagnostics_topic.toStdString(); + } } -} -void DiagnosticsPanel::buildUi() -{ - setStyleSheet(kPanelStyle); - setMinimumWidth(420); - - auto * root_layout = new QVBoxLayout(this); - root_layout->setContentsMargins(10, 10, 10, 10); - root_layout->setSpacing(10); - - auto * header_card = makeCard(); - auto * header_layout = new QVBoxLayout(header_card); - header_layout->setSpacing(8); - - auto * title = makeTitle("WayBionic Engineering Monitor"); - state_label_ = new QLabel("Current State: NORMAL"); - state_label_->setObjectName("StateNormal"); - last_updated_label_ = makeMuted("Last updated: --"); - - use_mock_diagnostics_checkbox_ = new QCheckBox("Use Mock Diagnostics"); - use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); - use_mock_diagnostics_checkbox_->setToolTip( - "Checked: local mock validation states. Unchecked: subscribe to live ROS 2 diagnostics."); - connect(use_mock_diagnostics_checkbox_, &QCheckBox::toggled, this, [this](const bool checked) { - setUseMockDiagnostics(checked); - }); - - auto * button_row = new QHBoxLayout(); - normal_button_ = new QPushButton("Mock Normal"); - normal_button_->setCheckable(true); - normal_button_->setChecked(true); - fault_button_ = new QPushButton("Mock Fault"); - fault_button_->setCheckable(true); - - mock_state_button_group_ = new QButtonGroup(this); - mock_state_button_group_->setExclusive(true); - mock_state_button_group_->addButton(normal_button_); - mock_state_button_group_->addButton(fault_button_); - connect(normal_button_, &QPushButton::clicked, this, [this]() { - setMockDiagnosticsState(MockDiagnosticsState::Normal); - }); - connect(fault_button_, &QPushButton::clicked, this, [this]() { - setMockDiagnosticsState(MockDiagnosticsState::Fault); - }); - - button_row->addWidget(normal_button_); - button_row->addWidget(fault_button_); - - header_layout->addWidget(title); - header_layout->addWidget(use_mock_diagnostics_checkbox_); - header_layout->addLayout(button_row); - header_layout->addWidget(state_label_); - header_layout->addWidget(last_updated_label_); - root_layout->addWidget(header_card); - - auto * system_card = makeCard(); - auto * system_layout = new QGridLayout(system_card); - system_layout->setVerticalSpacing(6); - system_layout->addWidget(makeTitle("System Status"), 0, 0, 1, 2); - - source_label_ = new QLabel("Mock"); - ros_connection_label_ = new QLabel("Local mock diagnostics"); - heartbeat_label_ = new QLabel("OK"); - ui_mode_label_ = new QLabel("Monitoring only"); - safety_label_ = new QLabel("No motor commands sent from this RViz panel"); - safety_label_->setWordWrap(true); - - const std::vector> rows = { - {"Diagnostic Source", source_label_}, - {"ROS 2 Connection", ros_connection_label_}, - {"Backend Heartbeat", heartbeat_label_}, - {"UI Mode", ui_mode_label_}, - {"Safety Note", safety_label_}, - }; - - int row = 1; - for (const auto & [name, value] : rows) { - system_layout->addWidget(makeMuted(name), row, 0); - system_layout->addWidget(value, row, 1); - ++row; + void DiagnosticsPanel::buildUi() + { + setStyleSheet(kPanelStyle); + setMinimumWidth(420); + + auto *root_layout = new QVBoxLayout(this); + root_layout->setContentsMargins(10, 10, 10, 10); + root_layout->setSpacing(10); + + auto *header_card = makeCard(); + auto *header_layout = new QVBoxLayout(header_card); + header_layout->setSpacing(8); + + auto *title = makeTitle("WayBionic Engineering Monitor"); + state_label_ = new QLabel("Current State: NORMAL"); + state_label_->setObjectName("StateNormal"); + last_updated_label_ = makeMuted("Last updated: --"); + + use_mock_diagnostics_checkbox_ = new QCheckBox("Use Mock Diagnostics"); + use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); + use_mock_diagnostics_checkbox_->setToolTip( + "Checked: local mock validation states. Unchecked: subscribe to live ROS 2 diagnostics."); + connect(use_mock_diagnostics_checkbox_, &QCheckBox::toggled, this, [this](const bool checked) + { setUseMockDiagnostics(checked); }); + + auto *button_row = new QHBoxLayout(); + normal_button_ = new QPushButton("Mock Normal"); + normal_button_->setCheckable(true); + normal_button_->setChecked(true); + fault_button_ = new QPushButton("Mock Fault"); + fault_button_->setCheckable(true); + + mock_state_button_group_ = new QButtonGroup(this); + mock_state_button_group_->setExclusive(true); + mock_state_button_group_->addButton(normal_button_); + mock_state_button_group_->addButton(fault_button_); + connect(normal_button_, &QPushButton::clicked, this, [this]() + { setMockDiagnosticsState(MockDiagnosticsState::Normal); }); + connect(fault_button_, &QPushButton::clicked, this, [this]() + { setMockDiagnosticsState(MockDiagnosticsState::Fault); }); + + button_row->addWidget(normal_button_); + button_row->addWidget(fault_button_); + + header_layout->addWidget(title); + header_layout->addWidget(use_mock_diagnostics_checkbox_); + header_layout->addLayout(button_row); + header_layout->addWidget(state_label_); + header_layout->addWidget(last_updated_label_); + root_layout->addWidget(header_card); + + auto *system_card = makeCard(); + auto *system_layout = new QGridLayout(system_card); + system_layout->setVerticalSpacing(6); + system_layout->addWidget(makeTitle("System Status"), 0, 0, 1, 2); + + source_label_ = new QLabel("Mock"); + ros_connection_label_ = new QLabel("Local mock diagnostics"); + heartbeat_label_ = new QLabel("OK"); + ui_mode_label_ = new QLabel("Monitoring only"); + safety_label_ = new QLabel("No motor commands sent from this RViz panel"); + safety_label_->setWordWrap(true); + + const std::vector> rows = { + {"Diagnostic Source", source_label_}, + {"ROS 2 Connection", ros_connection_label_}, + {"Backend Heartbeat", heartbeat_label_}, + {"UI Mode", ui_mode_label_}, + {"Safety Note", safety_label_}, + }; + + int row = 1; + for (const auto &[name, value] : rows) + { + system_layout->addWidget(makeMuted(name), row, 0); + system_layout->addWidget(value, row, 1); + ++row; + } + root_layout->addWidget(system_card); + + auto *table_card = makeCard(); + auto *table_layout = new QVBoxLayout(table_card); + table_layout->addWidget(makeTitle("Telemetry + Live Values")); + + telemetry_table_ = new QTableWidget(0, 6); + telemetry_table_->setHorizontalHeaderLabels({"Signal", "Status", "Value", "Unit", "Last Updated", "Message"}); + telemetry_table_->setEditTriggers(QAbstractItemView::NoEditTriggers); + telemetry_table_->setSelectionBehavior(QAbstractItemView::SelectRows); + telemetry_table_->verticalHeader()->setVisible(false); + telemetry_table_->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + telemetry_table_->horizontalHeader()->setMinimumSectionSize(80); + table_layout->addWidget(telemetry_table_); + root_layout->addWidget(table_card, 1); + + auto *alerts_card = makeCard(); + auto *alerts_root = new QVBoxLayout(alerts_card); + auto *alerts_title_row = new QHBoxLayout(); + alerts_title_row->addWidget(makeTitle("Current Alerts"), 1); + alert_icon_label_ = new QLabel(""); + alert_icon_label_->setStyleSheet("color: #ff4d5e; font-size: 28px; font-weight: 900;"); + alerts_title_row->addWidget(alert_icon_label_); + alerts_root->addLayout(alerts_title_row); + + alerts_layout_ = new QVBoxLayout(); + alerts_layout_->setSpacing(6); + alerts_root->addLayout(alerts_layout_); + alerts_root->addStretch(1); + root_layout->addWidget(alerts_card); + + buildMovementTestUi(root_layout); } - root_layout->addWidget(system_card); - - auto * table_card = makeCard(); - auto * table_layout = new QVBoxLayout(table_card); - table_layout->addWidget(makeTitle("Telemetry + Live Values")); - - telemetry_table_ = new QTableWidget(0, 6); - telemetry_table_->setHorizontalHeaderLabels({"Signal", "Status", "Value", "Unit", "Last Updated", "Message"}); - telemetry_table_->setEditTriggers(QAbstractItemView::NoEditTriggers); - telemetry_table_->setSelectionBehavior(QAbstractItemView::SelectRows); - telemetry_table_->verticalHeader()->setVisible(false); - telemetry_table_->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); - telemetry_table_->horizontalHeader()->setMinimumSectionSize(80); - table_layout->addWidget(telemetry_table_); - root_layout->addWidget(table_card, 1); - - auto * alerts_card = makeCard(); - auto * alerts_root = new QVBoxLayout(alerts_card); - auto * alerts_title_row = new QHBoxLayout(); - alerts_title_row->addWidget(makeTitle("Current Alerts"), 1); - alert_icon_label_ = new QLabel(""); - alert_icon_label_->setStyleSheet("color: #ff4d5e; font-size: 28px; font-weight: 900;"); - alerts_title_row->addWidget(alert_icon_label_); - alerts_root->addLayout(alerts_title_row); - - alerts_layout_ = new QVBoxLayout(); - alerts_layout_->setSpacing(6); - alerts_root->addLayout(alerts_layout_); - alerts_root->addStretch(1); - root_layout->addWidget(alerts_card); - - buildMovementTestUi(root_layout); -} -void DiagnosticsPanel::buildMovementTestUi(QVBoxLayout * root_layout) -{ - auto * movement_card = makeCard(); - auto * movement_layout = new QVBoxLayout(movement_card); - movement_layout->setSpacing(8); + void DiagnosticsPanel::buildMovementTestUi(QVBoxLayout *root_layout) + { + auto *movement_card = makeCard(); + auto *movement_layout = new QVBoxLayout(movement_card); + movement_layout->setSpacing(8); - movement_layout->addWidget(makeTitle("Movement Test")); + movement_layout->addWidget(makeTitle("Movement Test")); - auto * description = makeMuted( - "Run a controlled movement sequence to visually inspect the robot before operation."); - description->setWordWrap(true); - movement_layout->addWidget(description); + auto *description = makeMuted( + "Run a controlled movement sequence to visually inspect the robot before operation."); + description->setWordWrap(true); + movement_layout->addWidget(description); - movement_test_button_ = new QPushButton("Run Movement Test"); - movement_test_button_->setToolTip( - "Run the robot through its predefined movement test sequence."); - connect(movement_test_button_, &QPushButton::clicked, this, [this]() { + movement_test_button_ = new QPushButton("Run Movement Test"); + movement_test_button_->setToolTip( + "Run the robot through its predefined movement test sequence."); + connect(movement_test_button_, &QPushButton::clicked, this, [this]() + { if (!motion_command_publisher_) { movement_test_status_->setText("ROS connection is not ready."); return; @@ -315,256 +319,284 @@ void DiagnosticsPanel::buildMovementTestUi(QVBoxLayout * root_layout) std_msgs::msg::String command; command.data = "RUN"; motion_command_publisher_->publish(command); - movement_test_status_->setText("Movement test command sent."); - }); - - movement_test_progress_ = new QProgressBar(); - movement_test_progress_->setRange(0, 100); - movement_test_progress_->setValue(0); - movement_test_progress_->setTextVisible(true); + movement_test_status_->setText("Movement test command sent."); }); - movement_test_status_ = makeMuted("Ready to run movement test."); + movement_test_progress_ = new QProgressBar(); + movement_test_progress_->setRange(0, 100); + movement_test_progress_->setValue(0); + movement_test_progress_->setTextVisible(true); - movement_layout->addWidget(movement_test_button_); - movement_layout->addWidget(movement_test_progress_); - movement_layout->addWidget(movement_test_status_); - root_layout->addWidget(movement_card); -} + movement_test_status_ = makeMuted("Ready to run movement test."); -void DiagnosticsPanel::configureSource(const bool use_mock_diagnostics) -{ - use_mock_diagnostics_ = use_mock_diagnostics; - - // Detach the outgoing source before releasing it. Retiring the subscription - // first means an executor callback can no longer publish into a source the - // panel has stopped using, and it prevents a second subscription from - // existing alongside the old one. - auto retired_source = std::move(diagnostics_source_); - if (retired_source) { - retired_source->stop(); + movement_layout->addWidget(movement_test_button_); + movement_layout->addWidget(movement_test_progress_); + movement_layout->addWidget(movement_test_status_); + root_layout->addWidget(movement_card); } - mock_diagnostics_source_.reset(); - if (use_mock_diagnostics_ || !rviz_node_) { - mock_diagnostics_source_ = std::make_shared(); - diagnostics_source_ = mock_diagnostics_source_; - } else { - diagnostics_source_ = std::make_shared(rviz_node_, diagnostics_topic_); - } + void DiagnosticsPanel::configureSource(const bool use_mock_diagnostics) + { + use_mock_diagnostics_ = use_mock_diagnostics; + + // Detach the outgoing source before releasing it. Retiring the subscription + // first means an executor callback can no longer publish into a source the + // panel has stopped using, and it prevents a second subscription from + // existing alongside the old one. + auto retired_source = std::move(diagnostics_source_); + if (retired_source) + { + retired_source->stop(); + } + mock_diagnostics_source_.reset(); - updateSourceControls(); + if (use_mock_diagnostics_ || !rviz_node_) + { + mock_diagnostics_source_ = std::make_shared(); + diagnostics_source_ = mock_diagnostics_source_; + } + else + { + diagnostics_source_ = std::make_shared(rviz_node_, diagnostics_topic_); + } - // Released only after the replacement is installed, so no refresh can observe - // a panel without a source. - retired_source.reset(); -} + updateSourceControls(); -bool DiagnosticsPanel::readUseMockDiagnosticsParameter(const bool default_value) -{ - if (!rviz_node_) { - return default_value; + // Released only after the replacement is installed, so no refresh can observe + // a panel without a source. + retired_source.reset(); } - if (!rviz_node_->has_parameter("use_mock_diagnostics")) { - return rviz_node_->declare_parameter("use_mock_diagnostics", default_value); - } + bool DiagnosticsPanel::readUseMockDiagnosticsParameter(const bool default_value) + { + if (!rviz_node_) + { + return default_value; + } - return rviz_node_->get_parameter("use_mock_diagnostics").as_bool(); -} + if (!rviz_node_->has_parameter("use_mock_diagnostics")) + { + return rviz_node_->declare_parameter("use_mock_diagnostics", default_value); + } -std::string DiagnosticsPanel::readDiagnosticsTopicParameter(const std::string & default_value) -{ - if (!rviz_node_) { - return default_value; + return rviz_node_->get_parameter("use_mock_diagnostics").as_bool(); } - if (!rviz_node_->has_parameter("diagnostics_topic")) { - return rviz_node_->declare_parameter("diagnostics_topic", default_value); - } + std::string DiagnosticsPanel::readDiagnosticsTopicParameter(const std::string &default_value) + { + if (!rviz_node_) + { + return default_value; + } - return rviz_node_->get_parameter("diagnostics_topic").as_string(); -} + if (!rviz_node_->has_parameter("diagnostics_topic")) + { + return rviz_node_->declare_parameter("diagnostics_topic", default_value); + } -void DiagnosticsPanel::refresh() -{ - // Pin the source for the whole tick so a mode switch cannot swap it out - // between reading the messages and rendering them. - const auto source = diagnostics_source_; - if (!source) { - return; + return rviz_node_->get_parameter("diagnostics_topic").as_string(); } - const auto now = clock_.now(); - const auto messages = source->messages(now); - updateSystemStatus(*source, messages, now); - updateTelemetryTable(messages, now); - updateAlerts(messages); -} + void DiagnosticsPanel::refresh() + { + // Pin the source for the whole tick so a mode switch cannot swap it out + // between reading the messages and rendering them. + const auto source = diagnostics_source_; + if (!source) + { + return; + } -void DiagnosticsPanel::setMockDiagnosticsState(const MockDiagnosticsState mode) -{ - if (!mock_diagnostics_source_) { - return; + const auto now = clock_.now(); + const auto messages = source->messages(now); + updateSystemStatus(*source, messages, now); + updateTelemetryTable(messages, now); + updateAlerts(messages); } - mock_diagnostics_source_->setMode(mode); - refresh(); -} - -void DiagnosticsPanel::setUseMockDiagnostics(const bool use_mock_diagnostics) -{ - configureSource(use_mock_diagnostics); - refresh(); -} - -void DiagnosticsPanel::updateSystemStatus( - const DiagnosticsSource & source, - const std::vector & messages, - const rclcpp::Time & now) -{ - const bool has_alert = - std::any_of(messages.begin(), messages.end(), [](const auto & message) { - return isAlertStatus(message.status); - }); - const bool has_stale = - std::any_of(messages.begin(), messages.end(), [](const auto & message) { - return message.status == DiagnosticStatus::Stale; - }); - - const bool waiting_for_live_diagnostics = - !use_mock_diagnostics_ && messages.size() == 1 && messages.front().signal_name == "diagnostics.topic"; - - if (waiting_for_live_diagnostics) { - state_label_->setText("Current State: WAITING FOR LIVE DIAGNOSTICS"); - } else { - state_label_->setText(has_alert ? "Current State: FAULT" : "Current State: NORMAL"); - } - state_label_->setObjectName(has_alert ? "StateFault" : "StateNormal"); - state_label_->style()->unpolish(state_label_); - state_label_->style()->polish(state_label_); - - source_label_->setText(QString::fromStdString(source.sourceName())); - ros_connection_label_->setText(QString::fromStdString(source.connectionStatus(now))); - heartbeat_label_->setText(has_stale ? "STALE" : "OK"); - heartbeat_label_->setStyleSheet(QString("color: %1; font-weight: 800;").arg(has_stale ? "#9aa4ad" : "#3ddc84")); - safety_label_->setStyleSheet(QString("color: %1; font-weight: 700;").arg(has_alert ? "#ff4d5e" : "#8ea3b1")); - - if (messages.empty()) { - last_updated_label_->setText("Last updated: --"); - return; - } + void DiagnosticsPanel::setMockDiagnosticsState(const MockDiagnosticsState mode) + { + if (!mock_diagnostics_source_) + { + return; + } - double latest_age = std::numeric_limits::max(); - for (const auto & message : messages) { - latest_age = std::min(latest_age, (now - message.timestamp).seconds()); + mock_diagnostics_source_->setMode(mode); + refresh(); } - last_updated_label_->setText(QString("Last updated: %1s ago").arg(latest_age, 0, 'f', 1)); -} -void DiagnosticsPanel::updateSourceControls() -{ - if (use_mock_diagnostics_checkbox_ != nullptr) { - const QSignalBlocker blocker(use_mock_diagnostics_checkbox_); - use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); + void DiagnosticsPanel::setUseMockDiagnostics(const bool use_mock_diagnostics) + { + configureSource(use_mock_diagnostics); + refresh(); } - const bool mock_enabled = static_cast(mock_diagnostics_source_); - if (normal_button_ != nullptr) { - normal_button_->setEnabled(mock_enabled); - if (!mock_enabled) { - normal_button_->setChecked(false); + void DiagnosticsPanel::updateSystemStatus( + const DiagnosticsSource &source, + const std::vector &messages, + const rclcpp::Time &now) + { + const bool has_alert = + std::any_of(messages.begin(), messages.end(), [](const auto &message) + { return isAlertStatus(message.status); }); + const bool has_stale = + std::any_of(messages.begin(), messages.end(), [](const auto &message) + { return message.status == DiagnosticStatus::Stale; }); + + const bool waiting_for_live_diagnostics = + !use_mock_diagnostics_ && messages.size() == 1 && messages.front().signal_name == "diagnostics.topic"; + + if (waiting_for_live_diagnostics) + { + state_label_->setText("Current State: WAITING FOR LIVE DIAGNOSTICS"); } - } - if (fault_button_ != nullptr) { - fault_button_->setEnabled(mock_enabled); - if (!mock_enabled) { - fault_button_->setChecked(false); + else + { + state_label_->setText(has_alert ? "Current State: FAULT" : "Current State: NORMAL"); + } + state_label_->setObjectName(has_alert ? "StateFault" : "StateNormal"); + state_label_->style()->unpolish(state_label_); + state_label_->style()->polish(state_label_); + + source_label_->setText(QString::fromStdString(source.sourceName())); + ros_connection_label_->setText(QString::fromStdString(source.connectionStatus(now))); + heartbeat_label_->setText(has_stale ? "STALE" : "OK"); + heartbeat_label_->setStyleSheet(QString("color: %1; font-weight: 800;").arg(has_stale ? "#9aa4ad" : "#3ddc84")); + safety_label_->setStyleSheet(QString("color: %1; font-weight: 700;").arg(has_alert ? "#ff4d5e" : "#8ea3b1")); + + if (messages.empty()) + { + last_updated_label_->setText("Last updated: --"); + return; + } + + double latest_age = std::numeric_limits::max(); + for (const auto &message : messages) + { + latest_age = std::min(latest_age, (now - message.timestamp).seconds()); } + last_updated_label_->setText(QString("Last updated: %1s ago").arg(latest_age, 0, 'f', 1)); } -} -void DiagnosticsPanel::updateTelemetryTable( - const std::vector & messages, - const rclcpp::Time & now) -{ - telemetry_table_->setRowCount(static_cast(messages.size())); - - for (int row = 0; row < static_cast(messages.size()); ++row) { - const auto & message = messages.at(row); - const QStringList values = { - QString::fromStdString(message.signal_name), - toString(message.status), - optionalText(message.value), - optionalText(message.unit), - ageText(message.timestamp, now), - optionalText(message.alert_message), - }; + void DiagnosticsPanel::updateSourceControls() + { + if (use_mock_diagnostics_checkbox_ != nullptr) + { + const QSignalBlocker blocker(use_mock_diagnostics_checkbox_); + use_mock_diagnostics_checkbox_->setChecked(use_mock_diagnostics_); + } - for (int column = 0; column < values.size(); ++column) { - auto * item = new QTableWidgetItem(values.at(column)); - item->setBackground(QColor(rowBackground(message.status))); - item->setForeground(QColor(column == 1 ? statusColor(message.status) : "#e8f1f8")); - if (column == 1 || column == 2 || column == 3 || column == 4) { - item->setTextAlignment(Qt::AlignCenter); + const bool mock_enabled = static_cast(mock_diagnostics_source_); + if (normal_button_ != nullptr) + { + normal_button_->setEnabled(mock_enabled); + if (!mock_enabled) + { + normal_button_->setChecked(false); } - if (message.status != DiagnosticStatus::Ok && (column == 0 || column == 1 || column == 5)) { - auto font = item->font(); - font.setBold(true); - item->setFont(font); + } + if (fault_button_ != nullptr) + { + fault_button_->setEnabled(mock_enabled); + if (!mock_enabled) + { + fault_button_->setChecked(false); } - telemetry_table_->setItem(row, column, item); } } -} -void DiagnosticsPanel::updateAlerts(const std::vector & messages) -{ - clearAlerts(); - - bool has_alert = false; - for (const auto & message : messages) { - if (!isAlertStatus(message.status)) { - continue; - } - - has_alert = true; - auto * label = new QLabel(alertText(message)); - label->setWordWrap(true); - label->setStyleSheet(QString( - "background-color: rgba(255, 77, 94, 0.18);" - "border: 1px solid %1;" - "border-radius: 6px;" - "color: #e8f1f8;" - "font-weight: 800;" - "padding: 8px;").arg(statusColor(message.status))); - alerts_layout_->addWidget(label); + void DiagnosticsPanel::updateTelemetryTable( + const std::vector &messages, + const rclcpp::Time &now) + { + telemetry_table_->setRowCount(static_cast(messages.size())); + + for (int row = 0; row < static_cast(messages.size()); ++row) + { + const auto &message = messages.at(row); + const QStringList values = { + QString::fromStdString(message.signal_name), + toString(message.status), + optionalText(message.value), + optionalText(message.unit), + ageText(message.timestamp, now), + optionalText(message.alert_message), + }; + + for (int column = 0; column < values.size(); ++column) + { + auto *item = new QTableWidgetItem(values.at(column)); + item->setBackground(QColor(rowBackground(message.status))); + item->setForeground(QColor(column == 1 ? statusColor(message.status) : "#e8f1f8")); + if (column == 1 || column == 2 || column == 3 || column == 4) + { + item->setTextAlignment(Qt::AlignCenter); + } + if (message.status != DiagnosticStatus::Ok && (column == 0 || column == 1 || column == 5)) + { + auto font = item->font(); + font.setBold(true); + item->setFont(font); + } + telemetry_table_->setItem(row, column, item); + } + } } - if (!has_alert) { - alert_icon_label_->setText(""); - auto * label = new QLabel("No active alerts"); - label->setStyleSheet("color: #3ddc84; font-size: 15px; font-weight: 800;"); - alerts_layout_->addWidget(label); - return; - } + void DiagnosticsPanel::updateAlerts(const std::vector &messages) + { + clearAlerts(); - alert_icon_label_->setText("!"); -} + bool has_alert = false; + for (const auto &message : messages) + { + if (!isAlertStatus(message.status)) + { + continue; + } -void DiagnosticsPanel::clearAlerts() -{ - while (alerts_layout_->count() > 0) { - auto * item = alerts_layout_->takeAt(0); - if (auto * widget = item->widget()) { - widget->deleteLater(); + has_alert = true; + auto *label = new QLabel(alertText(message)); + label->setWordWrap(true); + label->setStyleSheet(QString( + "background-color: rgba(255, 77, 94, 0.18);" + "border: 1px solid %1;" + "border-radius: 6px;" + "color: #e8f1f8;" + "font-weight: 800;" + "padding: 8px;") + .arg(statusColor(message.status))); + alerts_layout_->addWidget(label); + } + + if (!has_alert) + { + alert_icon_label_->setText(""); + auto *label = new QLabel("No active alerts"); + label->setStyleSheet("color: #3ddc84; font-size: 15px; font-weight: 800;"); + alerts_layout_->addWidget(label); + return; } - delete item; + + alert_icon_label_->setText("!"); } -} -QString DiagnosticsPanel::statusColor(const DiagnosticStatus status) const -{ - switch (status) { + void DiagnosticsPanel::clearAlerts() + { + while (alerts_layout_->count() > 0) + { + auto *item = alerts_layout_->takeAt(0); + if (auto *widget = item->widget()) + { + widget->deleteLater(); + } + delete item; + } + } + + QString DiagnosticsPanel::statusColor(const DiagnosticStatus status) const + { + switch (status) + { case DiagnosticStatus::Ok: return "#3ddc84"; case DiagnosticStatus::Warn: @@ -573,13 +605,14 @@ QString DiagnosticsPanel::statusColor(const DiagnosticStatus status) const return "#ff4d5e"; case DiagnosticStatus::Stale: return "#9aa4ad"; + } + return "#e8f1f8"; } - return "#e8f1f8"; -} -QString DiagnosticsPanel::rowBackground(const DiagnosticStatus status) const -{ - switch (status) { + QString DiagnosticsPanel::rowBackground(const DiagnosticStatus status) const + { + switch (status) + { case DiagnosticStatus::Fault: return "#241018"; case DiagnosticStatus::Warn: @@ -588,41 +621,44 @@ QString DiagnosticsPanel::rowBackground(const DiagnosticStatus status) const return "#151922"; case DiagnosticStatus::Ok: return "#09131d"; + } + return "#09131d"; } - return "#09131d"; -} - -QString DiagnosticsPanel::ageText(const rclcpp::Time & timestamp, const rclcpp::Time & now) const -{ - const double age_seconds = std::max(0.0, (now - timestamp).seconds()); - return QString("%1s ago").arg(age_seconds, 0, 'f', 1); -} -QString DiagnosticsPanel::optionalText(const std::optional & value) const -{ - if (!value.has_value() || value->empty()) { - return "-"; + QString DiagnosticsPanel::ageText(const rclcpp::Time ×tamp, const rclcpp::Time &now) const + { + const double age_seconds = std::max(0.0, (now - timestamp).seconds()); + return QString("%1s ago").arg(age_seconds, 0, 'f', 1); } - return QString::fromStdString(*value); -} -QString DiagnosticsPanel::alertText(const DiagnosticMessage & message) const -{ - if (message.signal_name == "board.temperature") { - return QString("FAULT - Board temperature high: %1 %2") - .arg(optionalText(message.value), optionalText(message.unit)); + QString DiagnosticsPanel::optionalText(const std::optional &value) const + { + if (!value.has_value() || value->empty()) + { + return "-"; + } + return QString::fromStdString(*value); } - if (message.signal_name == "imu.heartbeat") { - return "STALE - IMU heartbeat timeout"; - } + QString DiagnosticsPanel::alertText(const DiagnosticMessage &message) const + { + if (message.signal_name == "board.temperature") + { + return QString("FAULT - Board temperature high: %1 %2") + .arg(optionalText(message.value), optionalText(message.unit)); + } - return QString("%1 - %2: %3") - .arg(toString(message.status)) - .arg(QString::fromStdString(message.signal_name)) - .arg(optionalText(message.alert_message)); -} + if (message.signal_name == "imu.heartbeat") + { + return "STALE - IMU heartbeat timeout"; + } + + return QString("%1 - %2: %3") + .arg(toString(message.status)) + .arg(QString::fromStdString(message.signal_name)) + .arg(optionalText(message.alert_message)); + } -} // namespace waybionic_rviz_plugins +} // namespace waybionic_rviz_plugins PLUGINLIB_EXPORT_CLASS(waybionic_rviz_plugins::DiagnosticsPanel, rviz_common::Panel) From f752d8052f021d037557b34ca08d2d1ac0113244 Mon Sep 17 00:00:00 2001 From: Ajmal Khidri Date: Sat, 3 Oct 2026 12:24:25 -0600 Subject: [PATCH 21/21] updated the md --- docs/arm_hardware_motion_architecture.md | 125 ++++++++++++----------- 1 file changed, 67 insertions(+), 58 deletions(-) diff --git a/docs/arm_hardware_motion_architecture.md b/docs/arm_hardware_motion_architecture.md index 048b883..d17b55d 100644 --- a/docs/arm_hardware_motion_architecture.md +++ b/docs/arm_hardware_motion_architecture.md @@ -16,28 +16,28 @@ The opt-in old-arm model is `waybionic_old_arm.urdf.xacro` with these joints: ## Current State ```text -MotionTestNode -- /joint_states --> robot_state_publisher --> RViz RobotModel - ^ - | -RViz MotionTestPanel -- String RUN/HOME/STOP +Simulation: MotionTestNode -- /old_arm/joint_states --> robot_state_publisher --> RViz + +Hardware: RViz MotionTestPanel -- /old_arm_motion_test/command --> Arduino bridge + Arduino bridge -- /old_arm/joint_states --> robot_state_publisher --> RViz ``` -The motion test currently publishes generated positions directly to -`/joint_states`. That is suitable for visualization, but it is not a hardware -control path: it represents commanded positions as if they were measured -positions. +The simulation motion test publishes generated positions for visualization. +The Arduino bridge accepts the existing `RUN`, `HOME`, and `STOP` commands, +translates them to the serial protocol, and publishes an estimated joint state +from the accepted command timeline. It does not provide measured servo +feedback. -There is currently no Arduino transport, encoder feedback path, -`ros2_control` hardware plugin, trajectory controller, or motion action in the -workspace. +There is no `ros2_control` hardware plugin, trajectory controller, or motion +action in the workspace yet; those remain the longer-term control interface. The archived handoff provides a usable first transport contract: - Arduino Uno R4 WiFi at 115200 baud over USB serial. - Servo signals: D1 `base_yaw`, D2 `shoulder`, D3 `elbow`, D4 `wrist_roll`. - Hold switch: D7 to ground using `INPUT_PULLUP`. -- Commands: `ID`, `MOVE,s1,s2,s3,s4,durationMs`, `JOG,servo,delta,durationMs`, - and `HOLD`. +- Commands: `ID`, `MOVE,s1,s2,s3,s4,durationMs`, + `JOG,servo,delta,durationMs`, and `HOLD`. - Responses: `READY,IK4,1`, `OK,MOVE`, `OK,JOG`, `OK,ARRIVED`, `OK,HOLD`, `OK,SWITCH HOLD`, and `ERROR,...`. @@ -93,30 +93,30 @@ time as the physical hardware state publisher. ### Physical Hardware ```text -motion_test/action client --> trajectory controller --> Arduino +RViz MotionTestPanel --> /old_arm_motion_test/command --> waybionic_hardware +waybionic_hardware --> serial/USB --> Arduino Arduino command status --> estimated /joint_states --> robot_state_publisher --> RViz ``` -The launch file should select exactly one mode, for example with a +`old_arm.launch.py` selects exactly one mode with a `hardware_mode` argument whose values are `simulation` and `arduino`. ## ROS Interfaces -These are the proposed stable interfaces between packages: +These are the current and planned interfaces between packages: -| Purpose | Interface | -| --- | --- | -| Joint position estimate or measurement | `/joint_states`, `sensor_msgs/msg/JointState` | -| Motion command | `/joint_trajectory_controller/follow_joint_trajectory`, `control_msgs/action/FollowJointTrajectory` | -| Optional lower-level command stream | `/joint_trajectory_controller/joint_trajectory`, `trajectory_msgs/msg/JointTrajectory` | -| Hardware and safety state | `/diagnostics`, `diagnostic_msgs/msg/DiagnosticArray` | +| Purpose | Current interface | Planned interface | +| --- | --- | --- | +| Joint position estimate | `/old_arm/joint_states`, `sensor_msgs/msg/JointState` | Measured `/joint_states` feedback | +| Motion command | `/old_arm_motion_test/command`, `std_msgs/msg/String` | `FollowJointTrajectory` action | +| Hardware and safety state | `/diagnostics`, `diagnostic_msgs/msg/DiagnosticArray` | Controller/action feedback | -The motion test should become an action client. Actions provide acceptance, -feedback, completion, cancellation, and failure results, which the current -`RUN`/`HOME`/`STOP` string topic cannot provide. +The motion test should eventually become an action client. Actions provide +acceptance, feedback, completion, cancellation, and failure results, which the +current `RUN`/`HOME`/`STOP` string topic cannot provide. -The existing string topic can remain temporarily as a simulation-only adapter -while the action path is introduced. +The existing string topic is currently used by both the RViz panel and the +Arduino bridge as the first integration interface. The first bridge implementation is available as `waybionic_hardware` and accepts the existing `/old_arm_motion_test/command` topic. It translates @@ -144,20 +144,20 @@ not overwrite this upright motion-test state by publishing zero positions. - Replace estimated state with measured state when encoders or potentiometers are added. - Publish hardware diagnostics and connection/watchdog faults. -- Refuse motion when disconnected, stale, out of range, or stopped. +- Refuse motion when disconnected, unhandshaken, faulted, stale, out of range, + or stopped. -The first implementation can use a small serial bridge if a full -`ros2_control` plugin is not yet ready. The public ROS interfaces should still -match the target design so the bridge can later be replaced without changing -RViz or the motion test. +The current implementation is this small serial bridge. A full +`ros2_control` plugin remains a future replacement that should preserve the +RViz and motion-test interfaces. ### `waybionic_motion_test` - Generate safe, bounded test trajectories. -- Send trajectories through the controller/action interface. -- Verify Arduino acknowledgment and arrival reports for each target. -- Verify measured feedback against each target once sensors are available. -- Abort on action failure, stale feedback, limit violation, or timeout. +- Publish bounded simulation trajectories. +- Keep physical command sequencing behind the bridge's `HOME` and `RUN` gates. +- Verify Arduino acknowledgment and arrival reports in the bridge. +- Add action and measured-feedback verification when those interfaces exist. - Keep a simulation implementation for development without hardware. It must not publish synthetic `/joint_states` in physical mode. @@ -165,8 +165,9 @@ It must not publish synthetic `/joint_states` in physical mode. ### `waybionic_rviz_plugins` - Keep the existing `RobotModel` visualization. -- Update `MotionTestPanel` to use the action interface. -- Show connection, current joint values, target, progress, and failure reason. +- Keep the current `RUN`/`HOME`/`STOP` panel for the bridge adapter. +- Show the movement-test controls and diagnostics state. +- Update the panel to use the action interface when the controller is added. - Keep emergency stop separate from normal test completion. ### `waybionic_bringup` @@ -213,41 +214,49 @@ It must not publish synthetic `/joint_states` in physical mode. ## Current Bringup Commands -Simulation remains the default: +Simulation remains the default old-arm mode: -```text -ros2 launch waybionic_bringup ground_station.launch.py +```bash +ros2 launch waybionic_bringup old_arm.launch.py \ + hardware_mode:=simulation \ + use_joint_state_publisher_gui:=false \ + start_motion_test:=true ``` Arduino mode requires an explicit serial port: -```text -ros2 launch waybionic_bringup ground_station.launch.py \ - hardware_mode:=arduino arduino_port:=/dev/ttyACM0 +```bash +ros2 launch waybionic_bringup old_arm.launch.py \ + hardware_mode:=arduino \ + arduino_port:=/dev/ttyACM0 \ + arduino_baud:=115200 \ + arduino_dry_run:=false \ + use_joint_state_publisher_gui:=false ``` The bridge can be exercised without an Arduino: -```text -ros2 launch waybionic_bringup ground_station.launch.py \ - hardware_mode:=arduino arduino_dry_run:=true launch_rviz:=false +```bash +ros2 launch waybionic_bringup old_arm.launch.py \ + hardware_mode:=arduino \ + arduino_dry_run:=true \ + launch_rviz:=false \ + use_joint_state_publisher_gui:=false ``` The first physical test should use the external servo-power switch, confirm the arm is supported and clear, then use `HOME` before `RUN`. The current bridge intentionally does not claim measured position feedback. -## Definition of Done - -- RViz follows the Arduino command estimate in the first physical version and - measured feedback once sensors are added. -- The motion test moves the physical arm through a bounded sequence. -- A disconnected or faulted Arduino prevents motion and is visible in the - panel and `/diagnostics`. -- A stop request cancels the active command and leaves the arm in a known - state. -- Simulation still works without an Arduino. -- No node other than the selected state source publishes `/joint_states`. +## Current Validation + +- Simulation movement is validated without an Arduino. +- The bridge has dry-run coverage and serial-bridge safety tests. +- `HOME` is required before `RUN`; `STOP`, disconnects, malformed responses, + watchdog expiry, and latched faults stop or refuse motion. +- The Arduino command estimate is published on `/old_arm/joint_states`. +- Isolated launch tests and the full workspace test suite pass. +- Physical hardware validation requires an approved powered-arm test. ## Decisions Still Needed

YVW?}Uy+pcoQRQP{VSh^1V)Mk zBSjJ;g-cogiWn)@zw#L=k71wG>8L9@yn0LY8&o2YWkCI4H0xm>vqt@(&5V0~#(jIc z7GlJ25fyo0MvO~U9pYows2@yKEBIM`)DH?%KN#auBcVa>1NDPZTMy4A&O~IxU6Tz@v3E$yvUdnIu?VRsnVpS2+S!;h{!tlr z2(dZGe+r^x^8`~;M zx+>g<*_%UPZw|ric|e18Q-+4wo5RK49D=PG2`**!=Ad3S&`A4oiadweuD)m(J8|tZ z4$byqzxFR+y8{;x0!HtHc=cGF7d2Oh(e3TmLq`IZnoBWO7&QLE`te&LE`O+;>GIWp zOEFd$G|bNL0z1FEmK%fW-Y8!!`6`;)`CVY=ch_=bz`zcywS1*c?fmXy=XYVbF<^NI z)^qL+ghIDe&lS&N$HJ@;MPj`FYGU*p!oTsAhC<~g=^fd;(ElP}g`I)7R})@e&%9)m z_h02w$6nMsvKfs<=wkt-NR`}BGRpg}a;eH2^p0%$eDJB?a*|hc`B-+SHB9kcp!x35 z7w`8wTCe})Jl^?Zj}%L;@6tx?T3}PcD?ojFW%gYX*mo&a0ZR6YOW6ug-(H!0 zmt5?-l&SzFd&Q+}1*mVYeoQ>13L56ii8Eh!nT?7v>l4Mk_u5{)*1ug8v2)LB)r_o& zy8eq%E|+4~C)#T6VQsJEZKQE==Qw#c?A5^aAH=v6vr*BL4E)Ewca4cW0zka5*EIOPP-LriqoQRd33(snK<<`L^u8R!EV3PsZ^ibd5T>ZSL;4xEE^stoiRMPKJK zoyD*1={sbdDg*sYQA<{Qu=_D);sX^^Ts4n&4Eg*;-!G+XIP1llK>YDi z4YBFEma5t_Z&|Jy?dcqlQa)FW_QHn7x-8eOSOS#(fO?Dxz-4#6G;&t7t{^bRjR5 zG;FsPlCr&Cz+#5REm-{}`bO{=yx_MYeEsfrv|>rlrz>}rMmcavk| z?r(F_6qn+8dF+R+bM&-7HrTk>-{5~>(1o$T!7|e!_NEFQJ?s%qE19z-y`#sO>)=3s z6;>C~8E^d6Ws_X$JJTU{L(PsJXRd?M_)Cs@3j2n?Te@A6OR)~IUXb7Za@l^O(g$(3 z2DGM|VqKZ}85`zEe{yI*(pqA1;%O#j3mc(S4AG2tM7}+XuOgkQu%I)Y&9s zt~!jls(S>|d!n9!sDpeYM=U)#*?sKPnwaIAQ&erDZHJ<56NNhztD`nNw*{^!B3e$L z5wmP{irl%BiS!-915lm0JI`%|S<-yb7K;vOK0cQ+Xo5p%0xX=rH;0S8Ia1tObZJdk zZY{8^gk{a5_bX;%Vcc5m{}GU~3|jP*g+^iAS~_C6wdg{dFzX=o7lp=(dq>JhI9GkV z@&}v8(N)oQPfpqw+wM&2=W%4XuIl<`SS^urZ63#C*&dIi?9QZq9;fs@*{biLJo&^8 zsXUIZ+vZYsXHu%|M3qpJYzhBLv?^EHrG4nlyY;}C(PQd)maUUzw)i=nc zeu(a;m_Pam^%Lb%V8b{xE2*z3p6=-$s?~dO_jPnX#T?Z~sAnmcqJ8LLm54I~jhwS< zVh^b|}_W@A5IeuOF$=zOF>bq#d2Wc#rWR@#g{6X*kpY6yNGT#EM>MwEJ4 z4R<*rubxMHyNlmzOO@B&0POVlSG`VpJRLjzz0;x-)mnRx>z)3tes8Cnftt7p*y-<| zL|c8N0d`*FQf;E0sMgw}UH{N?xot)9!qCuO@BC#cCs^l z<2-bi!+kt{%}Mt|R0(aaQ#^3zT*~yO^U%Q#8dDlHcW(yz@zTVbT>f;ql<9xxq5mB; zUckPVbLZvB?bl!0*OIzD84N&Ysx9xCGT7Ml4fS2)kp+00?Q2Q-Y=blCoVn#zQ>h{IXTq{3QTq&yO%+PJs}SAsT@mRB*RZ=HQpbu=sJrYc*Pw2@ z(T@6ZacAF4rFHwIPQE9L{loqi%j7aLaLzaP9-GrdicTQ|?!r5s|{9a^V zYZeoKg4efX=xNENsOJt@17egDf=**%nuAjWoc$D7tPfq*KyfKzsgr#q);h7*X-sT( z;G(gf0-c9l>O5@XSKT$jM86L86lN;}?jyTiRq^3tVNrdXl3dDGgHcamw)#K=orhg? z9v0Mjm`j=X+@a3H20@?|4jL;qmQ4Hw47vZTxFocZo)yqQhjS7+R}njzJ()~wDv6zF zehn)qyh%?HSYm+D$oY_=(CQIIl1;(0oQ;leq(M&+cx8Y!$vKxe$M7Ptey_&e<B;C~tT?%-sKVJ(Qn>cjbcH?}^U~EK`?|4YbO-MIhS_n+ zrD#7Y{S-7C^U@PReboPB>&oM8s^0!FBq2jWhD`UOD^r|H>~q#a6CyLE0cFl`Gu%ss z%RN^bE>eDlCiF^3N-B4svsN@H4a!v-OqnG~id6J|pS9OIp3}!)?N9r8+;jHcXYKVo z&v%$LRXhyj!2kWQFxumOqY&x!05UUrYjFJ0bsHo7dKi6CZ<;}7zB#(7yzQ&E(*)1yBE1m5ji`g?AueH#8cHe%U$d9#KtPg zP7(P(q|^p%Cxhq8>V8P*ex#sS85YYadJq;Xg115M41HzoOu6R3v=kI8!(ur_506$? ztZ;?Hb+x}|h$|mi<9wG4ij^U@A`FX#jLFcZdJgMusS4eM)2$^1Bd2Xi-gi!smK2ZB zNnLzU^{SAm*B&k_d6ZM6CH17HD<&DGIZ{=^dbPKfo(#5kRk)4uD5ud$9)3=@Hc+%a zU9X;?UdhNmC+KWAM$pqv`l2InOi%lP#DDdv|5^>diI$mi!RVHnM|sGgr@hPD|JA@g z*uP2i5p<)r=FC()>RjM4;r+boop{}Vsp~-%Iu5M!$};hhc-of^iwTEAB+Yi(C(`eO z^epWzlaQJC=GcppW~KzIQ97(6X-D%YI;QUg{3SBLoJ@c@DZrd`dr@Gw;Mu=-!{Vshcoex-+e^)4%fRPVp!^ zmGkMH7z<T0@lpd-aK(L-jt3^xlg z+GJQ01IS^$){$`whArTX+dS(fRfhuGO zszQdD!t8F@UCs55j+wIU%I1PcF_cyz!(|~O@xNSk7ixoRi*lnpiebD88TJbqmggnG z^HK~!=XhS`&FNgO>Aj0--w)OG-Ehr9Q_AgksZw-2FT&Y52A6ra1NYjhm;T`1nPT;a z#Wlm(r9?3V9sb5W<;&58SJT{??Y!K)mY!EP;q?PG-G71Sdl2rxZ>+4Y+3qeSgY6md zH^TYF<(ZE8s_K!RP8Y`~^&B2$C%itnE1`=MsDDeSf4f!GgZg*es(*V>|BgG|IH-Rk z!>WHvsDHav)PwqWN|aqiJ*a;p!>WG^sDHav)PwqWoJTnYGpK(fqtnDDFZM?yxo`FjcwA;Qsme_?m*!8iNa#enC=3De(c+~up z zN$0~f*$0gEFMe4hwui4WXBJ~l&Z9~qgMNea@1=|ndSr?3ug}rV2JVmk+UhEEW+~?6 zJnDyCRn2ek#oH-kd;SArFnX4st@%D`yYi%RYcz4`-=+SK)t@jOqfjWiCtcnP{MB`% z7YKgF_V-POoer3e5#CYg5FJ%9)fbxHRu{vkjuDTt69}I=Mi<}7&`RcZGK8jadz3)k z_+mR5S}l2$+oKTn=i)mVT9J8_+sTj?Gc-)U%@aeK5(5b&XryF;QDgVI7TuOCcBB|LVxW7CGCRQBD zF?$B|8RDz<=a_v0ItcNlB?7hz`V4WP?prn02hi(VU%!{)Q6=`~nB4$62=OET2FK_# zP{yp$`kAizYQwC#ibt*59cXKV0UCeod~l3D12Wd{T$q^BIY;X3sp{pACm7yUsQOot z-#?mQSX;#_d=+{6?%??M+lbx&cKco`1_o&1^-VR8diTQ#^r^fzFGa>(!SS?PC?k9B zT-7EwCSF@ITJxxzkU>v4)K4OQd*)@diE_=j;w!KA#mE#a%hht!J}+%(Ic+5+ntjNLnt)mSSKxSgX-xY6(oDF$5=vf#@RrIRU;8_?McD)F(#68?Xmh-xt-g{#1DBYT)Uy1+q;t4y|kUbF47&x z^a~dA)RoNV0SA9tYnjD#>*r;?&lJ4RB#&asRuMN{4*a}q|4N~M<#xzEx!2jwl#l*Z zB=v9D{*^}mO7bY%nex%U`p@^U{VR?BmEcjff90cp6|wy*<7x)gh%F=Z&6{KDo~M^9 zhRlppO-Pjxy?Gci6Hm$dSYw@gBCHEbO;ik-nG(g2naKDeK1JPzm3rq}ZzdQrGtQ$J zG7}jWQywP$E32{OLCMo8G2usKG*{L1GgKmEw~0;MHKq&2bzl= zRp4v+Nb?kZQJ!&a;I8A*bB7VhkSy`>Wihe#_&CiqMR}C<=JDv+23P-zY*`&xwGz;@ zAf0)7!ii}QM7-H?5KrIX#c4VN1Rd_+T- zD{I~+v>iEv&yc$V%Yc;yHNhKYs zWt=J(MLE5#fbVR(wF=$Zq$(F5nmqDz zVzo2A$KVdlWvP2IV30Iq|gr>Gcvf0`c3rbyGbA8MIn{apIknC|1`Z zBV+r*=-v25t(!7c4LKcDytf~DC(fh#JZ@aZysouLXS-6KJMk9>Wtn>CJf>vJ2WOdjr!Qt~ zP>8)NU7W%jr+w!ZntyX1HSFFja}AGRjt4dNrv`~r@Fst6OP1zmUPBbE1~mEO_X!o` zMYIi9HQO9_+J^8;jVHAYi+_y2aWQQ}`sO^!sTRU76&V-PHl(Y|qnx%O6#tR&=*pUj z-|=?-tA1WexAw+b#uLfge(ul6q;%t`rm<4y)_Ak)+3QDAY< z`^tN-0%eR!tE7J321fjxi7DM$9%VhBJo0=p>y@%xOIojJ&p=#Dk2ww*%m?kllk1hT zTuWN7XwTr&e+e1lq6qUryZ+>Qr7hQz)+=*{{>!5X^FhyauwLbkhu1cIm&QZmkp2&y zp$Pi-=-;JG{x4x)QoE$?1J%>hw+z0qv$%B>w>>w)^&6}=DsYSBpAm;*xRmDBG{dSFh zyB-qE%zaV|~LP3KT-GeW1@4_N{UBWM(2O;^RA|Vy>({ry94|~#8Jw1N9c=XM%ZoeTzS`}KK zYBC;mCoOpy%62nt4mH-n17fv zn17^1K}FfDUBL7rV_xma>OrhmCAJhMFk>-ifXZ#hqoBcT)-E7_kx^7TN7e@8@cZ$_ z5{xa|me)0$2a9(U*s{=X*Vivf#Ca62Yd8-Uoo%2|uEnP+zq3r7NAbEQl`WgmD<*0} zLAmF@-6MM{8Q&$p!Lm@{p@zm$$&WvZ+ET7#z!B~FfiJ?vKOdEc&^6(2;Gm>0TY3~Igh&Uqrj;R>fgwy-r@U1gWfrMOFT>QtIMOD3l7x3 zk#S?KY+18!Os)NOW5V{3jB~5)E%~S>BCUhYlz-T0&>d_TmS5si6+2y!7$5Yh{2uW9 z;8FJm-7kM@FH)4tSdk|l0`{X8=A_RCy)b_VGI&&jpm*k1HyU)?pp*I}updoF^jDVk z>9=`#L)>yZed;ZYE*BuB;cJQS@#OYx>Jp$0!?h|q2B?X$d`^GRx(#uw(dxt35*gFl zR@AF%&s5K}@2q*0WqlgN&WmLObaXJayz@jYo!FeGc3m%>LM$QZ;ydaFQNSn0uc#Lw zus_6<6djh62h|z4(Og%%oKuK3f1O9Yg$&x4!i5tVd*(J$r~2mTf#I%BA=amF$fM@h z5AfnN#{~|cLOoGzb4(ohHM#5aXxC@=bA+F8`#Hi-M41uN0)|nG>-~f4CJ3s zn`T%FWE?AO5*>^E?(naYyFS8SM0f^6SszIkFg3+Z7)qf zCH8{Nad}!P&7&AY!DE~aWZVcAMB7s_^~JSqG>>8|2#>KNkWn8!%fYLG7rmsSw^9w z4YSm4<7z0b5pMf%2KUHR3vqQTcBw4iE(+_*>J}*;Wjlff_h@^7J~R)Jq0e`cEpub) z(J~b^kFxzlgL`CJipbc}`>5*r`%H1=4Fhzs-2tkU^snrCMJ_rK=gt=}i_gtpsTNhu zl+B;1lftRyQFbNr(1*w00JAs&X0aq@F+by+1<~J+^w<-iW{ClgD)q9yY6#wg<%`u; zU&PW)Z{dMat-aB?>87{vl-JsOp<9|czN;#j1fgBGR??R?%#>YocPJj!dTP4qEnHu{ zwYRiOnmKNGqB}D7y>PRhI3*^wL$Q#b;TfeLPB%S==gPH41}3~wOn5a-cx|`FrwOm^ z;`lV-wLK0$IpGzU@M@ay@+jL+@@c|rJ4k*o;T`kTT#?Z&rrN9+t$CE~M$xV~V!I!H zFyUPQw(OrLXNYsBF0f?@FXq^?tW)F#ouZ4eWr=z1*s>Jmc(6gI=wfVH;%D?AY(0~8A zx^+)vMHhpQvo}0L@hIDk@_`+U*e;b{?+*GK@7+97bp*INx9l+biT+$;E^oqwXa*a$vOtNG0} zkGlG!p;SS5?c*o*UjYQn4i#!JX3{z9JE z(H#nAP>g4LoH*P2@I6r+n7c}0`O8(AdfSnLD34w->ZazqR zJ7fSIt*ri4Qk4sMe1~o$C*`=)-U`ssi)w21zv`KC08{0nGZqhLGAx>oT$S-RMm||ZaaauGV3N4cIuFvrRIvy=S#eei2bRFv#p&0Q=-^A7#S-ne;HYa&i1XB#vF2hbiv)soH!qD;_l6y zPfUvi=L(|U$*`Q#Hi;bY7{0(n*{Qx)e-ULII=L~r9Z1~~+C3|nX>5}PkvG+W_hn+5IOqV3v z8@TBb?HSzMh;|&vu+t@t>5^dkkCZ63UqOaluO!y1xLvP2s>$q1PC4`no9Eg2GJb zgTGv@8lY=X|3DwX&j0~tkgH?G2a)f}6qw_8suUsPuD{QTHy)d%-u|Jt=4_W5v2wv& zwNX+0a9%mnr#_fogzqu9aiMq%x*yAKt*JTNg-6|k4Ej{rwJD>{kkVoRdVL!ox-W(K z!lRbWEN8H4_*BTS??Hk0U=sU5{)`U$K^!&v9`pi++r_XSRQK^Hhw2DeboM<+ddNxa z2lVYzbe$dcgE)AhP~|T-Mo0Y$MTbk18Y$$3?G!JJ7M9gWF-nc38a^MElbR$o zQVfHGM_J_!tA7PA?1=Tkb{Z+>j8*h7`d6IU0i^6-z2)o|!0xYjUbMKmin(iez9I*1 zs$%Y1u_^@-&WHeuZf*@3`Yu!N78?YQx)K?5*WRsIkiv)vh3+dgL`2)>=yFR-3(l3` z8Ru@OV(#GKG6lF+c5N3}+g*)gP`3^_K((4f4p60+T-#HS1623%D2EB4YBIUDryvKY zw&YO`IY6~2YMeD?;E3YUhyuml?uM7DYl7?bJM_)z z`jD>(k8*E2@&&vL3fNC{| z37|?Zxn4=ES4rdmeRCe=@Bu*uY1b=(^~zO{9-VQ>0qU1IrdDOes@s=u?q?eF}mylzulNWBpa?uSs+H%p&zm)V6((n>;jCB)bU3&~V+A`M7 zr%ieZDR>E`d=H*s8SCT$j89ecRR|T$qa>-Od6;Qn&zuh1Bw(eW9d`T3V{{DtPJ$qPen)fS(>JQ#QrLK^CHEgup*e1 zfqwfO_lz26?>Lo*{#EJS`w~0~D}q@WG**aIboBp<%0y;iZC{iZ6IPAHr)eu4(>JGC zZR$5KJueaIglqNrv9RP(K%O+Bt4s6X)T{eCw3f$iim7F|gFK3|=_-)+veg{%Y04Z5 zU2<%K90f0k*;mvPY-?3=eBBH-T*O5ov z-X_3P6D}(hign2ozqHDc9}R38y~m=i-vEk@M_t!4KxV&+RSEA8c?}*J)lwL*-1QklVkb{hi+{hx=GtG83k6O!F!Olp`FB&|2Z$sQO>QK zbWz;Qn^a@qc>CyZ{rkE+aayiPdU`XjC6AP?++>_w|B||D8oFxA>Z3Fex}&s4WyUmgm4r?Nw!>;8Co@65$A1{QT>Vlmn~H6t5I5cU)xZ)!&$8fU=^38Bl2OmnFxaW2@p`qlNuu7gjlsr?S96l9Fp2)DX2@NIB z`1lcl=LdW~+-$<9D2HN&k|#1Q#!H1aN8B+^;kw~^CtlED8Ch$(_zb+%t7lx`rBak* zoWga(^=F8+hri*sh9)3*sf`#fm7*Lkl`u@KPC$lL5mZnS)K*2%Cv1^b5%dXLWc2}k z!WJb}1T|CyQ=SqYW%U7lLJcKV1T|Cy6@L)` zJ#*yIZr>+}GLy^$-duZTy!BGzxj1J~$3*xIT` znyY8wiul7*%_Yav@(k;5LL8F_*7nX>s^;#PxMJHl$FDVKtZxeON+PM)+QaWQN#vq0 zx&{08<$;!k(FzI&S{B}MprhLcS{6ouC=`+(9ZS?t&y<%u)Kc#bv@ED^oDwxF(6aFM z8+7!GHR`EfPsPL?KTXgb0xb*b8^?K++qV-^I$6;xRP@^M(g-8!_M%X?jxg0zd~;jT zYgF`_V?=or)6ztSt>|^rv+yCro|E<>ct=H;MrVX$M==dYjW!-A@3T)0Qr6YTBNt4L z(&YF{bm(ttp?}34{ANhHvffAJi`tGyar`CvyI0RpTk!rExh*SUy^oBWCy#=!vw1ti zs}=9_dhh0{)j+XcaV|Gu-2*&&zASgmqo;*qRl!$#qPgx-DN}xVu({%Ac!uT5d4V6x z9O(Nr1d4SmymBj>C>3BftK2d-J{!lstU|}UPjGxZIHux?aJ(`&M#eAIpHhdzlSmaW#G^Ks4lt=NjGr54$H*x5_$aZVHSYO$Nd=xP$$UE{tMb^=V2%>nyp7(=j;()>KR6_i5yx^~sgZ=JTVBKKfKBSkL zyf>^@-Pu(0D2_?IZc2cly9cZrIEE};m{hnEUXSh3@U9Wq5(Un-A$Ufd3uu%l2AXntPI24bsK zxjyoh^zP=fPntFl$`%(icexfX@K<#U#g)Lxth=$M{HI=bbA2Yyo|mH7%k_Rkp)UuP z7Hxq;-h20bf}i0!!XH%ZZtl}h@ZC;2zbiPuONaO)PxK8I4-ziPmj$^vUi`qn26hgIOHO z2x?i<0EqMsDq%D2g=S6Pmh!nSnfl*p$D)>5?1O)t5>+dxwn?!d0+imN39?0%e6_xG zJz<%}KKREG9%XBFJK{zYObV?(AnHD5DuPkly`0rp7%qFy)@}sG1}DnWv}c zJ(O|hr5W<@qL^qsIjj?Bg8e7;+t%+7j-j^{nS^6n6MOCZ9N)bDlcz;&b*9W-UP8}A z2Az2XJv|<^d0(*O{P-|sj9d^F5A@BEcNDc(drt>vZb#pcM}7BWuoso+GbS-b8knL4 zSKVh^%Q$0E#_?7QFhv@eB4tr8Ms=S@F|H*tET%{SQ>3`+K96EtOJwZ4sYm=6I$k3l zfVuGkhjyo{gy!KV{1gkwL54?faJbJZcFtXzi+eIc3xzK3sqJMoiogPVy!^ z;!W^AjO9&GtysmQfu(o(;$qRAs37TGL>?o~dxFq3&Q&7tF=@X)Q?@7< zmQ}my$P8rAb43|E%GRP@;A2u)7!y^a*u(u;_l2I^?ovgYFz#=0VfmBl%raKJCUwaqTHvVI+}l4aFMasz2&Vu@$0-|uG;n} z%6)Uv8Q@nWiOkeMW(teU^nuLuE#}e(GSj!nOdrTh+;fY})Ieqm9%XTsK9HHd#b5eB zW+KBPGZm1TlAqxj7MbY-nTd=E&DV%`o{Oo=?;kE5Qj*l3Y_;u^3Y4wYebSIZU0Y?k zm~=L*hh}F;hrb|2DIR6}0X`{E0bjDUF#01V4To-?EF6}TRI7NDRk`xvii(VkbU5~o z$yasHG?3Pz*J!p|=UzYWgW>=A=1m)x(ry0<>nEC>5T!7vc55apNESEPbr`<|Te}hLUWYBLj-~udszm{C~ zWWMNmxlFzd=zH*}KafGc|9}f%HJu3YE3BrI4}P}Obn@x`TTLe)d~V!xtLa3DUuiX+ zOw_x9rjt+4nALRh!5K$J_b2A69ALKVEFCR*l+|?d={dHVPCj_)$f!B?264^ZK%`W= zPFejMkI)ZRJ;#H34mfc}RmX#>4zBK!U6;sGcV_}M`J3WVR-wm(LQmXk@_110LBn>5Rq2^I_?yqdF4K zTW+cm6EFU`G0M=_%+JW+QT45A%<o03TzH>FNR>V2|HqEi>J0Z-*Ber5@xXnj0~exj{Xy`V}x+o7^-aYMd1k$%j+$G7QEO*Hx z2N%m-GWRJI>icI`Q3k)-7n@(B7L6Tk-rHBht-zs}Nx5g~yQ9r+pas-^iEhsOQ~3Pg+Jqs_iOa11GWceq|%a;6wG zYmH)#0da=xkAJq%aN@{e0Dog~gA6^eJG3lboThjbL-xnlFEX4s?XgOy zG||(BWXff4_Eh|u@Td=$1Xp*CQK!6l(`fzp;ym%mV{;Y1?mTJ?GH6u_)F~_NpCF%W zmM{K955Udk3C(SL03LM;nCe&rckrH;Qb5sq&YWXW9%Z``9%0X!vKcbogwy7SnK^Rr z-A$uB%Jwom>SZwXG-Q+(m;V-cwIDW|>2WI8A z)V<(>G4Q)%Q681`T5v_%ck{+bDuLMZmW@OslIk5X%b`=Oz1bHmEu z_~WLOv48GB_49pDbhxIha9a0+;KIgrGM(1_>+oFzhUJy&x@@&fIT`BmJc{dNI+jr2 z;(F!&p89&Qup7aVjYn~vOs91pxVY9D5|*`QxxFs4uMymFt(3 zjo=0q%{!xl!F02SVfUAcLp}_(x{Y|BSNk)GNHKcq&eMdhn{z7(5Gk8*t?sCZ-(Za-BE{f$ zE!M=~f-Tm>Ac4`j`+8%d75W*qE+A4&l=Chjhh2+EF=%5TjrP>iBS*y4$qbqFF`;g) zRXOoV*W0WgvMx+Z;0 zD9ZXY_~g^zTyV(00SwUYaFn~}5p}vkWoauRAA9u_rBjYJChxOKa(Gr)$NGIMxE?B3 zI^_uCQ0SexeZ<=?wx@v-{krXnWkwT_Mg1Le1s%do9NR8d2 zr;l(ZOlPE!>5L%5cGWbxYEd3#yJ|kVYK2UV1Q|EZ8zdSjxFUX%<(MzDLr$V`sWx=@ zT_}G=fGWN-T}*~Q&isxo9N)mBGY;_!MKQ+!^@3{KGC(C5pn^v^R5A3(90Sw~>cNia zh0m;;FK+y)uG3ZX=sjo^)4U;g4>}$!5GnXnhjLoVYK=1GSDzkpx@soMDyDfK<2~qj zuz|O1;}2$tk4EIkn%UPnT{RQce{9g#Sc3PUW6K8KvRAY^ulB&3<9`+Ur1B;hBZ8xi z@vd!Fs5YZ^ey>~26yC&J6$?xa_;Br_2uB-ZP3&D-HN%>C^`rL*9>uv5ggB&nkTA)> zSwi!(->Wfo``?`;&E{ymqFEi>RLwE?^ghk<=;;Ad9xL^u2ezqC;0thHoywBte{_Z> zeLRXLiPT%B$s%^)6KbgY!RFXJqQBs0;1EmQTH@3DG?S!bQX4mjUu6-$;^W@gW`|79 z4wv`HHoIc-Y)Ji`1M#aY;#cyhUfr@y{Yjn;scQ)kzuF>xC6DUSHQVfp$=SjARbc{w zmEm;x9Qo2U`J!vjVkvzF-a)Xns7Li~C{+H}u&jn^qCxjWgh%lXf~`eu#(;Z)m%t8r z=oe*D`V9So`rKQE`rOv-He))xIme;v?C&cRxAm(>^{e|ERQ;y@jobHy<;L=vvUXM? zCCYt5s<2bP$E9U*ifhob$Zm-4EW^;0Ri% zvENWrzl-N;RJFpC?gyT7^R(0R%n`Kk+g@~^Is$C%pgT(|9>qHz9A^u>C|vj)?$x^O zS$yjS+-oWx7TDUj!`1>r+m@d80HJ&VTT93VdfEw@8wvrx8+Z6!;B?#4nE;{8ql~AX z#r0aPdkL-kq#_V`>T%qoQ>F<#^{m#tgw}mh5s1){ZmLVTN2h)hc(A$s=|^iAqkd{ zuq+|NcP7>j^_IxJj*jvDtb3hh2}!Voq-61G1;DhJks<0rOBUGL(#`ir8QM>x(FE@Q(7%I~0CdvC8I!K17*kVnoy9A^u)=@Sd1>+mFYS5p_xKCd3Bl@u_~=u+{Bxd{P8)m|fBnaVXtjGFsHJm3-iErp_E%5am%^x7HzngX!x{ zBeLbT8Z(tRzA?(9xHhgs8wW}V)(uLk1(}W|spVhU)wwLg07l%gObxHoKZZ= z*3KSP*tVwjsHO&kXJlAbgbPNm->-2jArocmbC2qCTeo{bSIv5?Yj~_XXHs&(a1ONO z4CDN3$yWw{!+NZ1c&s~TQgXpaiL%b5K6zFrJ=PUG);06Wi1R4sf`JU6!qg;mAT27) z?7S>0%7)&tgD z!z4FcgBzZ5b$N#6hWq5=487N&cGjq!6=QQmZ0$@vha|g-@UWPe1hun9?W`HkBf@wZ z5ysO%hOM0yYG=)(9E*zZyNu0&jQdZO6?b4yeMQZ|PQTrs(0oJu(|Q4Fk~G$=O1n`{ z!%TRX7EQhm>&1JL`t9b-6;NQOcOvPkS^aiD&~JbI)#9?uvOINVw1+cZ(J+oZ#DC=oqlp;9J7AT}PgXPTEfKROY8L@HLclx^SParV|m#+lV+;u~>4 zPQZ(oN71p}0mRwP02!ZLdsKYcDyE*hdVsb%{r-C$HYBxJN!!q=tOnYKktr+1kJn}D zs?+PFJS9BJsjLRthR_O&LMu#@Rv16y^jAsG@W!^mb4<@P5L=fHkT3ic6F*lysvPPT z9n&Nlcf;^45r^e1J#tF~e9pslji!ukpN|rsT$dxC zt@?Mup@-4=jqs@VpA4$|$ODwo`q7EdDP_2?;n9X(!%h_(6MS@n{JRMKTzqMM) zOV5P$^$WHqxTYwN>SWQTZO>4~hU@c0c_30+y-_p4HAQ*UB8ydhs8%jA&XyY>3*L^2 z59{DgUU=I5!eP_R(;lB#+3)kS zw3rf>&f|`1ecJ=@s0Uzs10Hn{fGJvZMoovJ?xAqW6i-$jW%~~vbt$lW9h|BD1drv; zWgUd`>Z9HykFq@uk9r(fOW>Qa_lcO8ajvIi{umMFn-O778xia*@7H3)XJL8&k?NA4 zVcr}O=GlRaUp^}(_KL*xIEtW_wM-oeYAu^*zKNR7W?6hw-WQSE#AyRS&SWGndXw ziJBHn_5HdxQpTXG&x@?y`D$J9K6;|XQy+a~p2wpY8XFmw^(%<=YuUYC!0t8O506;C z=zhFH??K`WW4{|PizP9OErZyz-47OJ`Wjxc`$6nwN$h3IQubK)!$z6zhZnG#Ge0?- zcmy40_a4Jgdzr%n1a^s$&)}ZN|5zlpfRppx*0hwTghxGZQQn{AQ%3vt`=gbh zkutqcmf}w$k1Dz&z=$7TO&J%%Gc;fJnXBS`QloLGg@0})JoUx!40Oif87RYEE310C zyMdG?@Xb48X2j1pJOiofxQQwBr0_TXE#EP5)ju)y)KA%(A(TCaT=p2E8Q)_f(9zvc z<81vRta%i}PUPkpq6U?>=@o z34b-zzb!Jt_rdHyHF0-_t_QWZRn?~piySaf78BrSfWcwW7d~+|@Xe18(>tfkR?R+r zP4K8}pf~6}NDK~(@bHP*5enV(%+0zCoO@pdR*j)goD^dQw~drZvvC`)t4OUHdA ztrxCkV)R87^hG7P z$qO@jdg9!So)`*l`i?yVp2UmI=;1D%66L1v*fSvGVl#UBeeftZqbDVlP{_{cHD>gR zVSzn{5%w5%7+2TM=rv~aDffd%F?=#I?2KMvM(@;g&C|f67zP>{86S2k}qjul!kru1nk$dn0D7+`|9`II=odNHGKi~^c6P&oEY2~9l%I?U)&J7iw z2>cDae}N}0A6Fb;_O+SM!Ny;_tIUFF=Am%JPLh=1#^1D z`I%;cdw^H}>rlH|f%ky7cNIAaG{a;`eHn)La`^=R>pW^~;BVlyc#JY$Es-OqwMSpH zS;qwbhCGU05oAD zIMF1YMK6P#Xn2(U4U*1XgrPcc2g^J*UJXL6_SDxuB*GRucI%2yBB3V(RM6Ege-e2$ zKR9k{s=MAgUDv!OQ+6M)K=CMtTRRKAzAdo;g>-NPRd)~8AFM}o%NLiF`7DWUqbP@s z!^#Yef-CdPASJ=h?DJ`srkMooEQt3^(+1j85$6^>PIDaeUOye3uF7AMDcf{u zp?MTd8>pfuMl-mg<~Zo@p2vFi4l1uIRc9z3MOBUH1v8BWyk)ynYWHi{64y_4>k=+G_83#1Y0POh(~vQ`gyiLa+xm zHi@1E&a&UmnaXPKc*H~IQTT+U!(%=naLDgBNsK^7?%tV-V_i80)~cU)6Tp@ag^rf{ zIgtac`@hz<)cg$3;5b{XyI0p!NBYIYv;R)e4y#fFJbE6*vAm(sn&&&Hk5O$;?VFjL zJEMmj>GonUgTCjeAL+L^m_eh5jC(Gdmegh7mpc0SGs4ZC(P>VJ8vAT8gGLV-8M`Ni z^=I$J)X3r)$+b!I@&YPg!f%!({Ye- zTL^qnppfRBZW3*3nT(G?m8YL&GLD6&4_7^g8sd_ca^JbIuJ!G)D37|@G8uOR{l`_0 z(fv3(K`QjF2Gy=7c$8x@lIjrGMuuD3nf7W1keTWB5^Q3$J2?3%53aBqXdOh2>+zKjn4(__qK^Rs**-n2c@&&y zH_)?$I@;r_D-@IuY>Ym!JSHYq%GNxJ)#{|nU{-Bf!7<^THCzw<5Uy-cHnNj^pCb1&(Iz2%+&S&H_hPy%>Cd|4mCX=s!E~I70o8AiKuaY`MfY{5eep= z^C*YRCgmp7IM`)?%^|?%h%!`2QVAGqNfHf1J)ls?vNRXDoH%bu_#GZ>Ec{VQexs!j%!KEO_+>!sVFmUm?6sC z-dQ>hAK^t^kCfQ`b~fb&?EdhIZQ_zJyk*Z{Asqvd*!?`pbw2}kzxQknaUZ(1SFP$V z9Ltc{{XELf*t~$b0lDhG)Wh(D+g*=xCl{d60gQODo|F$C0(`38U5Z72n}#_~gB)pfoQyIvO*UxX z4jpBxLT{aSIBW5v2Kyds7n5-+#h#GssvVth7t>&t?5sX|O#nBho zw~xyd&w{nybiQrg7wRzZ1=+;JVK$%zZxlW&{bQ1{A|?DoqU=**?E*tQ!6{C z@=1{o9bwG8{sAg%>#CK4N7>1kPm?h_3-d|04~+G)1LSLkF*U8;QNg3^Tn(C;l}V@1 zpwLLS4|dHzOrVdx(WUESL0`+=}+gFe!B;MobrQ$<2&GwGwseC(|ccPe8bz! zsiQkx4L7J~SBg<{gENQVkHe!H-JWB5?=#?h14K&Q0Xn}#O#JE{6~8|ooaqVmBp!95 zUykX$2fpFfcS#Zp+i6`B3)^X66APPpOXF{Vg-yOol33V0%IRzq3!6E2Bjc8NbHzwJ zyDL^eMQKjp=}l2iqmNkFPCGhaVMFtbR#6GfvlIj!o3clkrW^i-T}35U(G&z7o8(8B zrW-QsDk`vwrXc9-D(aDfu3bgFz%k_b(5WhpefwowF6`UMLDKEpXTb~G?Z^X_<~B2$ z>J5d^DSG(AzMc6@8ZBqHZx2+OFSc)IK9fev+3ni{2gx}TYKVjQ4bC3lUjR!)vtNVe z2FlwU6UrM{BAOywT=+W&wg~}$=l5z?mi!D*LNuK=cypkH%rPO%(Py}{qWong_&9%c zk~|7%b@RI;v^uav=9p0I$+cZzZFh`yau;`ubyD2>&;77#yTsb=80#j=uG*yP_n&)i z*LI1u-7(fp6w?HZFs(q`^Sao#|MO9vQXMYr+o>z>_U+V_cRTW+Vo_IR=<;`E>JHCb z*tgUD;8AWzPFhdsw>O@wUctV-$`=>*?R3w1l-svcO@-gbWf{6)R!lW`FsvQ&oz`}T zh$nQLL&^v2GyTjNb>*?J?wwguJ9Is*?L3NgMesN5G+bjEt{j4&)^;A{5dQ)DZ0O^o z<&x|2Me}KM)!4p)+A#4QEA|Q0hJkO6JEsj)miQa7VNK=OZ^Clwz+Q?+_3II+4FfeB zcWxf2UXgLC_f+xgt$5GAzc9h0qPGTW!>EMgJ?;;VQ6VEEKjFC>H<35>m;f?6))cK$kzBi{Gu8iF^bmI1$4UCNmMy% z(YEwU3ly!#zt<%36AVfWG!i@glvBVx|M_;k9rL_G- z6J@)RK6;j<(w+RY=sH)grw+XqgF@v5pdd_V(?r>hr;m=O&#wr&9l2q>XhclxD4ii~ zXN%C0uH!}6%80{HP$w)D%En&dYuv#>`i!uBF%xBbZ-n2BIQ#^4+pq)3?Euf^9QkrM zQ}8I;x$~%V=TH{Z(F0fJbe5_LKd+xgejl~H1)u6yH+_2&)h|9RS(c$kZYLapkCoxCbE4P7vqZz)y)}=rUMU{& zH8=u4xn2pZSIYJoJYqsKeK^-=FwQqX1O)4q#CoM1D}mV7cD*uDb|o_II?44)V!cW@ z<^wUhd6ZqRJgir^R-Y6bpnqwXuj-vYBA7CkbK&#Jg)jAfWS6L;zbwqur9vwO)75fL zfBy5>@1)-ICytL$ef#I=ueSXeW!hcNP0%MdL8b_XPh~Zos9PJcnod5cJ#j>|)pW9* zRIBMk-P#C`;)rOg>0~pkrjvrEQM6}g(vKdzYNhHRLiPWKh0|@l5 zH1w~WqLlf!c$E9J)PY8qG0?x#(7$r3RVIT+xhq2bYs|d9%!>YiDs@i!3`P2ww35-( zf@9k441rc9FBDpNf4Ue5meAo_T4)}{G3|CvL8}rn%FZ7onl1$n;PWiaqd2DB&O&JI zLdKYCpQ+;D(N{@N`a65*ctosovj;c(|M;ao_S^#X*hgV`Pt69--`PZ2=Vou>#xEn> z6*UyPwd@axx53)#@yi3w-`PZ2?`<#h(=Q|3I~5gu;I=8?wwdHwk|PsyK5^bo;Z{kp6cmPd|Cz+WBPm*|K-++#nE6V^G$1EM@)*{dG0S6>U9c0BUq z!LILvMXCX`qi4UACapV<2Sj;Fl;ziYU>+i4IhGUSdWsc@#syI8_Al7(#}f z(M!ze1&?Al8K=Bplm(Jb$|)5++^bSl_fuD&i&ga05q7mY^^;vi4@WJ0D(j>y;G~?a z=qbuo^whI<6@B1d*F$v^8(X0-y8RmAcpfw#bo>wICg=yhs0rK4%BpGT^*wRWxe1yx zJi~EMXbOmTR7)w(T@h2&57&~8uR_0P9_9Eg=*b{sd#!q6?dvi1_=OogRTFMLM0J9j zzT3B&cjQ>K1$bUBK9!u&nL*`Ky@$Z2PfDFq8Am4Do&sZ*i z2QEM)6^Cs5q6&Rc&GqeVU)1<>(lOOn=!@cS*uJPilJhfkOqCG1hH^!F>_vmVs77B@ z@hCc`Jqme_a@~8Nqu(E=o<*l<>gIh3&U~@_V~^G?%Uudb_)78UEt$IS{dFWik zrMEXSYRpHvsFWzKRSuWqmviA$l%wB2k{kWLb0dRF-#%8Q=$>;ubW=ME)XtJ>XXe@w zVQwBt-V8aZo7!2Tc9v8-^C;#RlH}%)&VDGguFqiE5xTYKGCvbMin)>``9DGJ9KUQ) zqBhVw%l0MT&ZOiSXKIn|?MzCZxE~+X>!k((#ah@r`F18H&y*;pGdwJ7Y%gdVL;x0IrK?-Bs+2USdX{@|3vRnLJor zRg4)u{)U~=OU&q#wKF}5Jj&J1=y4$9YCT2N$2||f^Ja8SW+TH&`1(avIO69Fb9}Vx z--Y}C%`neGzjA*UqT@BXu^fp0)%lYX1b<3+)HUTBo9C_MuD_7+#RntgjFT}n_{rrd zPa=;RR=KfxreFG$GT`(_x*w99{#duhbq5WH*Kug5YY23-e@0b@ir^AB{jrXa>p&WI zuI)^ksS{K@(B+i5G4U$8oUH5Qx}1i?>$pJF{lv_x%281?6uKNWlbkpYD_N3*gLN?Z z9>n?>fm_<5m7@7onR3QcNlu(cQI1{n#`&!g_qM~ji;NwwpN&2W9mw^Mk93?kkIwK6 z_a4Lwj*Jrj5an`@wrldD73VRR!8xvu6?7r z!Tzl*ra>!&mebj;&^q4^KV(jU@+~%YVmY z>J{hH6pz|7$>2Tw<;6daSj{3Io_ffr{QL~Dvt^FHw9@zlk6Jh}r~x})@^Qp!7Wu21 zQAV}1on+ekF;${OMd{cTP>Xb)#Xe~#e4RPksOpgN0yN3nSC%z)hxHxRiiG24kPZWn zvbqgE={8`Fv%J3;f|VMc#lmquNb7+|S#1cPv>||v^0L(AO8M&BPshpm6RJ_w=+}PZ zCI34d(@rlMf61>ryt+BwS@fKbJ>1FW>S3tqKDW5JRp6*oyO!ZvdUS7T_Dc?L^kmTF z7_(w?9B?hmudbsP{}Yxi))}s4GK#qg($w0+rvl!uGXBQAqLHd8I>JLv8?L1}Lo;mV zIp|~N?O|W)1zgL5y~FfJduOY48((uuo<6;09RGvfK8_a>D0%*Re}JtYU98?FC-J|?C<_EK-(S77eo%f((viAr@VsPx`c^*T6l4<1~YxI4eV+`+UH%iHm&RJVdX zWv)>ppuLm1sjHY@-=bL87Dn1#9vnj{Jz~8_JSe5(_wmk02i14KL3`(~vhuBZ0g4q$ z=_ygx--MLXkukWamOlM$Ocd0W@(N_o^9rT(2#>NJDx{Q-j1T9-b*OhtJ^0FK*MX!x zj+>tw6?3k$pY+1kty?#hwsJR$=sb$+>|>X)ePQ(O&N+JBl&Qiw*pm(%kFxjxqtcG| zVC_D7_}wv8)bYG{Jl4S6+m~``_>9NoGaeJ}c_dm>w=V~`%^HPbOMV0M{MsA9hJ$?M3TD~kMNKZPa4qbzUV1G^s? zmfbJG?vHYo5RbC#eh=(^WLW<}4gW#G@L~~$Ba1M68J;WaKd9k9C>bU#C5mC#kYW7? z75oP!!@W7ogi-l-Tp)VJLZQheGW5OB=9qM(ljc!ZB7@$8H2>)NN^neb5n#6KXUldCVru;#8)3T!1(46Ll&X9=+H8lX*VZp68nM=&H3T6gR3_8^ zdI`Fmv$l*AJj!~8dE^WeY`pU?@+R<<^!wdv<;1BJHx8sNgUX+sa}t_ z^NO@&SItCO6oJufXIM346wDf}KfE%%CPip*0#<~DwU0TMv zN1j@ii|&ylmu0MbtV=M~C6BUPbgy=sWxi#sd*t(#WUNat)&-BUjCGGZ!z^Rn zBQG&jcN?u7vri=JmYuHn8LMq*GOTK$ zKfqL}C!5Srt5FXgIh2*)PXmv#+J^pUQ>9w$hXD3NISq9nN#jm|9oUb!#eR@)C$6r= zen?iyK;89FfwHc{O5 zWCL8EUE2lL_M~ntb!(hI4s~(ts_l_yU~+AjSlgWri$_cy9+m0~VApnuwcTmGc%%r! zqf&hVEaI1ZmlWI4yZNB$!?JxauCARAlJAmc^?;iXnm#P6GLT^rzY2(7&1w!eAEb)K z%?Ir&YLyTKln|t?AUyIPvlWELoXm_qeNqWQLJ2`wB?NPZXV_}OBj+@9CITe{2_*!< z)$w_httLG3T}$e0E9h)%wxf605A!x)6#%}u)!Ek2+1C6Ft0o-w!}h{0_CrHwTk$AX zu{i7pRWkS+V@hV|Pl5TV!ghV6p5%6Y#C>%8xqvx&v0Wd$8dIX&elB2Vu6`k`9>cCL z%65J5YD{5gx?LY}J2BO7pCNaKW{NyNESdLN#CbzfjmuokB6xpv{!?@t5tffWT~hKW z<~Wx0h79(i;V(1AgYfNJ-=L%5QOwmW!o1J$H*!%G^@HX>c_`l6>c^uh)mB9w^}lVk z#W^@Uis{}X<5bR_vhk-Sbbiv&s$om>^@(t<58V9O^WVDcQEU&x$(|8-ihOJcTvWsMbqWb|J|1$ZY__R zhbY=1lgl+bM#kjKYs7Qd`;@BCP5jVf4DH*=y)MESDv|N8j-frg7co7V#}^+Iy((nN zwTH_}9>rKNkxy5Rp*_5Jr|HQI*jr0ZhE7pcsNL`=#p;`9XJ?P!I7JgJVKHyo_V|8xI-GM7jMv#pRtd<<);Sk#{14&a4Gyf=Atl4Ei3w z7*v@2f3~hX-lnSkACY91WV)t|7uR^MX`izek|-)Nlp^y`hHJc(`JOA~6{VCR8dWNV z2JSv*t(T%+6-7}fr6^-Ui0Joy)?VxMoPPH&`_q1&?m2t!v-WzP=R2S$^A)(SOr@hIDGHyktEkGzJ_6Zn1nN6i+?KhHAv7JY_@Lrt9d$#d zd}wYn*>!uCd4485ne6qMDErnn?iiua+G;h#d?=+4`+Yoi`&s50t-LhVUBe+kgPzQy z!gX}c_LwTyyrm?sLAr`?qKOdSl8*6jq!svb=?uIF zQ=&G*Ym%-A{zXQCP&4&7Fh%zc>LAFGkj}t|Fv6p{f@4XT8T^Zk;{}VW=6J3av=|^T zt)Qs|O)q@z1;ITc(CcfY)fUX1yS-acVj^Ph2kr%NiOey1OmOcB==(fzm2QdW>gNmH zB&IIro)cq_M{$3PQ0TWB+4_T}F*Rp)f#`cJgBpiaE~uxV3BGp<4XDEY54Zwdl*UDs6Srk*_P~#lkT{Lnj5}ct79`%w4lov(=FOHco zlrKKSwR-IJqH%YIoE=;SIXm$GQz&#*#Y}z8H(}lH^+ZaP`&87Q;hz?o96(Vm0f%?h z>;efM<-R%ffcO=`->B46JcRG@Re`F?zrBS)3&0J^yLom~bKLWR7T)KJni}N5ENFVc zooi4Tc?pP=E^GFvBKNm2XW$#061D32rUp3>u1Fcp=695TRLE6%?aJy454136>Opsm zNA-WDsX-24caDtjTC~*T;M5c@S_g27e;hX1(;jC}JFf2T+J*IMsF4(Ca7J;5O&-Ob zV`OAZ?4Y1GsS8}+EX8e;N3o|J8CL&FLjTHnRC(mJWZkEXqmtD^vN%hte)>X&5VfQ*TIf?UW*JnG>KAW-m!6a^Iox^JN z3t`Tl>X2F~!gD3_7Ow3TX<1H&L#tcodkT znnio2FsiIunn!MFRwuwCueDI9&z?PE9`qSL&n=U}sNzvprNARUw@_$oowD-F_H#t% zF&$GFRXobN!Flx50|7B?nB1~9Mt)w(>X7?Phn$?cXrk=XwW8S<=A5I`<&W53!Osg! zx4GsFMOn3RpLEDE>+Y(qfecphXUV5KXA@km)Be$8k4E}{C9qo=|-hQSw}`caL(G*EvDXS znXL=m`9*|jQ$=``4tyK^z&UG#*F#)}Z}^jwstD_f=KWH1euVjAM{G4ozSt3_+Z87nm;*<2>*pXpRMf~hI+nvSh<5z$?XeL6T(5F}CN1wg~C4|P9F8#BIi?bbI z+&)Xee{?dPtPGI`-sOP5!sHXstV*6JL{VVO(TJ*2n)Y2#I1lzyz(Z9ks zxBV-Psb$JH=TWwQ<)eRv4BNlb=wB&*b$OKSU-{@?A){;^DMv#KvfSQ(^km3O#3=#O ztiVnh=&csdUr&b4ICU7BV5B;qB*2YG0?c(iYT~k$`R8B3C_W>&T_<2 zjabJyk9_Gup_l9Bsr!L+8gN@>$(cGl>Pp~!=fM>W8E?QLZ~qT55h~e3a;6TCA_sN) zrGcZ0jDihH%T^!FR@ItxmTOCxj)#Bb>K$>$`HC|(7rw_7C@4>?2EOy>*U5{>p!Ky# zu^lN+$6C>4tg>QJsE9#GCr}I zY){5VPbOl!Ek1fO_#U<=qtTPmwkPAGCzBFoyDdI?GRUw!8I7KdvOO6eJ(&oPvOO6e zJsD)wyQPv?*eP3g9MD_5i|;{i$RpKuBppLY&4@AF@I5B9*d?xcH>`gdURLsN&Z8KM z4jGlxO3Qk+b5zj=ol~wZk767=WSn0xNDal?Ioz*^;#>*q;pWlvWxd@zdU8;0hb!y7 z@ZnusBu{a!1dp;Va~?f8c&kAnJ=8f@^r?A8ajpc9vL1CFJzwA`<`#{7go^&$xWG4q z)>qn1*jE-;>w_`TxnAJ^;m%MLJ>le5V0TfZ z0fJA}e#9{O#A`9}N8{w4!J|C`uxdVKSgacD47^~^kTx=1E`df$l|soqgK;>qI|~zK z_Y7XJXINNuvUmu!LBVawJ%e#L;Zb(a;01ezW$X4v7eXC>Nwp-l)+YxK#~vZi4~v@h zznMs`?CsGZ+K7t&+xvL5TpjjE4qYdL} z{L3+c1^1s6R;XfNI9>oy&ZMYW*p7sqh#f-MudUWww2_D5z{%uknLu{WxqR$Yq zeFl#@5Vp_YZASmX_8C0tSS0%l5`BgUkFp&Ek9s7w&tNlbpFyC{5am&}&)`vq#r7F& z#*Y;yiz4_9cG;Mh;8&5&Hj{i4Oh$2a&rM60d*HbFdYu`H-zmp8p(w{B!Sodw6J8!B zUwLh|s62U%;!gvQa(olg`-L9a4ZX!%P^W~Sm#{oqk9f3PKQC2%FH*6rTvj<#u3Wp* z@drI(7V@Z6g})9ZI?Ka1$HW^zU|as6NBlt^#q|M0q11~QHf8>UafMX5;hHG&~xoddCn zvYlI6m5}ib^h-!HGjcFTSe+7&bV|6=sZ}E(wP4ISp_!SmnwgSEaivqMM&f}JiHrw+ z-jo;)&CDs#Vc}6+>C~!`km@lqYUfN7Z{t0>CHDE{=3HN;E zs0?}2j3w9BOah9GxvZWY8JXSmIIDkwNcZDB~fc z(PvrFo#+%DIX6?dxl`lsKX7{=uOCpe{Qra=z{9mfoog~>lUtfdH?^WDH}m@Pw+|xx z(?b3G`TpXA*)dV(%Ph&G++2-t&-{uQoo!`xww)r7dE%H7xbYpOD?+L|MrS)=b+#pc zs;#PyiL#nJ9x3-2o$Z9x*%thl!=soII5N@(hh^F8_D_2w(Y7(YMUd5lk+7XLc7ninQA4IlcsMPQJRr zd2!n`bqRIU)MHDcJc?9L=m{qk6uyF^8?|kuUVnRzI=F0s81+J+z)gy4j?F>3VUDLk z8pfztnq=rNz?OaK?`~oXGVs}nOOz7j*c_yj3{;puT^$5VsL6t*(f3|7>;d8uCD|Ml z<=7mg#f)C~tU+o!aD8oWFQORoJ;lv~A;~>36z-_3Uk8fyrf{BO=z5P~^F4+nM@EG@ zJ#@T6OwGUTisDfW+3ztVIWngGxFa$SpX!l|Im-4$j6b98m-x5AN743CeCQhBNnAu+ zI7|TsXC(LSKDjvZDBG*?p`Cz?bfBo_LBBmwVv@G~9Y4Mf9*{vt$3)qFkdJ;lGN3u2 zpgAB(bHHhm!&@@q)W+db8L7}G;B3I@6B!fd7t=3J&y>044+(yTXE^0?xMCusPgSX} z{4XZje48eF+!L@lI)a16qh5qoIX%;Xs{Gq)>Z+36q2JCr+vpU<`TN85eMtc~6w0r& zP45r>_Fpw!~Sd2pJY9qkxl9{N6J5KpVy?K+n?RWHfLx zia$R*iZK_EVR14VIGF^0MtKxtM<63nt+W1gQI2^1y3*3B&UnOwvuZRRd{`s=ssn3q zcUip$sLWDDb_pJ36>mIvz5eT-L%BskxkZw43y-p@Iv$*2Bem`g_&;!v#XbM&aw%OR zEmxE}*-2Y8w@3Xpi}LmeHHZpNpN7|f7J+({gdY|Oo@84xpCq1 zruLV6YR>QsJ2CZxS?a*LQojS_ zz=rRVvs81Y;CF#{32}x~eN5JTe=zzx@QJN2j#2z7GWLMSSOvHrcW+xNqR@0IzOtr% z*RnY_ytFVSiZK_E(P-!{vEgh?jCuI}lzYyj7&`(PgBwm3lQAVLxjQe~`bnel=@V|c z!ZSuK)F(AnR`ucPUf(EP9_Wy%r^lxY9<_R@Q6x1kY^nFW;Fw|Z0MH!YHd-Ti)St_Y zo~dzR>pC$wrv03$=mjczZ7X^=qoa!69NUWC$M2D5dZ@Nh(MweH+E(=DjIHRCQEYCA z3{>@br zXN4ZQy;~<5n_-=31bKk+C_9fdog(W*V>9-{h3^>FtKnl~ig6b_#%b^v*8%tZPdNR( zgOy>#=V8tG5h+oOPl1fi#oH%l{|V0*xCt^2hI11nZidG=8^{=YTY=~mOv8U=({S?f zw*6hBQ)D~BR;MVxX*ekuQ54;0(kXH?@4#t1ziBv~;Td#{72IeR0ZkRS*9o}SCF?=b zpmOyfVYXeR7dYPLR}VsaJSEE2gU~9+vzuQ%2p@x_emh0EdN6Rjop5zku?Fw+?k9Vw z&y-*|hENQ3{`^xf7LWyR!1pOEK}+ z6CL%|t?kTvqJO_>DQ^S*E`esv*-g=<+hS@^@kx^H=-q^ucKU9@OBDdVd7IzoN8bQ~ zu6AQEvHz(D+=Q2E4mUTTDgzmI!mBai6|Clnvx>z{c&U;>Mt*w8)Y*1Q$JBvxddQ@> zntbC(ym69x$P{JYB_4IToE|bMt|s3&5^tQO9x_EaJ!I;UIXz@zbD=7#)l$DRDpyoL zUt3!bK<|Nfhk4c;(98K~m~)UMb_9MO8FdQl)|e0er_mY3qpbg+*ZR~jkFg_=@x-?s z)DzItA9`;y#iOjpp|`ieaL;-ldW1*=`g7fi^>_7{q$dxVrx=nvvKu($dD~v{pC7g$ zQtX-nVlj?a;uyQWyjz=Ze6NlEp;lwfqq_fZV)WNHUh*g159IRI1;qC_o`7RQAfu}9 zxmV{ zK3JrMJ}_pt;z)ZQWpNHZa1O}$`n_JFf3<8qzg;!Ok@h^wVkvxJDUh*ubyi|4-hPf|;Y8MVN2)S;Li5GysVHuzj3{dgtl)x*4knhgP?hfdrI$ydA z&`*U*+C#O}H`k*B*}943XPg(^&?#R!2B^j9f05f?eb+NrOnxs*@+jw6M+%RY0qR+8 z!(XzZlToXEQwj*4fAIK`GaG~MDLz#sY&)#@RQMkFRKk8L&Cd+Bom+gWWREnMRCk4% z?p~u6^iXBjd%oRmB{5(KWcGr(m8h5gujLw0%M+SLg7C-mh9vbAaw(u=axEZaF}-(D(fFazJ0Db(UqdN!IT$40I0A2+B&LXZNDeJT9Vmw>qMlRojU(~K zNn(m9%Atj*%jM?L!JZ*MOc6ynOcC|S9Ht0w9Q=*^stLFZ#a(Rxx8}I3Cg?p6JVQR! z1fAg-u9^tEu;K5lt-rHFW|H%B+*K3gf9M$PkWIU@H z<3Ys-Zv(3*BcUgw`5B&JRbxEp$soh($q4AlXnv+*peIB8YR~G)c+itUhMih!Of91f zZ4|LnOQSGv=aHnBgR6Uddb%ujDy$!?Jwq_8lACRsC_9fNO&(-y!PIj9tFu+9>@|Yn zq1HZ+&1x&+-RL@l_9$X-t(iFMvISnZwtK2l)2mT5fb{eiR4HrBrsUa2K zA z53SrIS5yi(MxV4=b6a+B{AQ(F@cX!CNT%#JGAz41RWiY&2Cb}QCQYHqt=6=k930bKNcr(N!Owu>cJ@q!<$G((F#N>k!3`fV_K1* za)Wj14C=v~1Kvb3idZ$YMxk?O)+susbqfj`%krXy;Y9Q1_u0bstbFvWA}eD7zUU4( z_&9V@7dZHYLQjpGAs$@^XVQ)7lA%IUq8tKhIlOs*DXO|g)P(|OcE4egp+X`&%Au^t z!3TXfOhpTI&Q$}>)pLFmKCKzf$AoGe=TH*VINR$N(v8oC_2NZIzX_je93JHyN`e~a zmf7vpDBO>IwQUv`=1P59a~$Fy4> z_oZj*k_jIT^FpDibWtF72A8wLJ^Rp1v^3x^c=eN3*5O9*CEDefVtARnxy-h=}GGR#tW6sBXwB?NOY zH|Hd+Vmu{K;8#|GU-Brc_2XmK=5zND>>0padh(B$D%`N8X56JXV8THip zu)d>yVa=l$E6MR2h`SWWlUS{pnPA;8y@TRW`0bhBApI8EZx9*wJt)ytQ;wlPZhQ8v z=HWf)x@y+9&%OsGx@yXC7x0v%WH=rIIRL^PICu|=&Ii&oKV#p69=QoRh60{xWaNh& zAjW{3%4`AOz~NH^?H%x){~vOIqTJ+%I1LV;8t|R-Lk>`sLk1JL&n|b*(^Gf|2$I2DbyNYJ&3)7N5ye7&{uzZ?xrGAfZhlKU}(EZ4`P|x}B znkYNx@@dXxx#&L4xpB|Il3n#IQ1?)rqNk2lGI|Ovg3f0MI*Yo09Li-qF$MU#UUx-L zw%NnsN$1#ni;c6W`|CcKCeqQlD}8E7f_^=;I>V_V1)HCWy3hM>Q|JJ|^QB}5Wt|B< zawfEFX^(sjIrjj&zGG)Zw+F-WiA9B>HCe{IEh)+}vOVUbXc-E{;k+3ADMt*xrKR&x zG-r6mg1gF?_aJd}fUW&2M?qgylD_En=7yK%9Xq%=@^mA^UGr}Hd2PH-1sqY?ks9keZ!A4+7b@?75Ki+gL7mPXt7Q{x+%(|`lK7)okx5FhY$<&Me8=J zC;p31RgX=>^C)%Rf@>3Fx8Q{j7bTyaQz0+!ItjD<~6j$b_w^GL_-#ViaN5B``Y zPvBGC4rfmuzK4Q=n*ifdJ~ zLs-A^3vhj}%}+QM1iGgwQBy6`BCR`RJO@|c72xV$Gh$QHp&Q-P2#<0+jg{Rf!@dUv z-h-O28TLKs5x(6i;F4z`kORScP~ttP94Cr=26>cI*~NPh8TLIW@g7WB;dqo&@+I%X z{IRv9r*3hmU^=J zbHnN0I&L_5%R1IKW~uS~x#9Hu@F>Un#w-;X`EkSP8Rb!q8;)5jGA4a_lPC}Mi*Ls_ z6`bwDRtYE%Cx8F=9;JE}mXF25vc>E(f^%Yc6#LC1qx7vU<@I0Zh{ILuNY07jQEX*E zMt-`r#O7diLfq-r4lceK-y=WWT4HmsIw9_KYdnV_{Plm`6Dl zHuYyhp`DneJ^{X3#_-2$oEyRSZ^cvRs}`+D>V56o(B=FN0WlV#vbYDnD*-0<%E(=?9?<@NRGo1Y%n-prfL zG3L*}EuE~QV(6;X`L2iHY!|yv^srBi*!`nN+;=>?tM{m6keDL`TQG526CzK5+&ksmzyG52VR+onxwFW2rr`Pw4ah-Zn2j7svE% zdw6+qt7YRWI5MIheD#p%j~()X0>w3tqGP(E{hH>*t(J}dtI<}U)u^7>ggf}au`Y^7 zwX$rNO||pl1o?kj}(`I#Q72M`b%Pd(@0*v^DUPkkykeA}=x z`tsG8a_RGX94p?i#yKCHGi`ueUf5A@$J74R&1E%@;(YK_KF*d?@JhuU{QJ<3I1uEt zGI)e2$6ce9!F%GNrLD>FhK^~C0hg>=SYLrh)uMCr6FdrcjaCM)dY`4O$yJArX&u9w zi2c>l*JEPhcbgJC3U`fG29FTs8an0k9f@Lc6r zr4onFRjI@VbhRjP{*v9=lq!|Z@C;Xr28=_C{Sd%@B&$?9OgRd=$aZgFqU_GX!_LC>FFopC zqR;Stmi(YguGsWMf5D@UWf_*KcWsHy5!?OrsQVcT&3UG1{A+M!GFHZfbDyCpt8<^B z87=ew!S`5^k%+$m-|$(#V8UBBcso;+bE2U+FlEphj2$O3&ebZAIK3sN?n=vcuI%Ov z&v33Zq}5nDF zC*i3l_&4NH)>F?5GzT`12jKK=Q9~fNyubJ`?4t7a-Sh zKk}<_==Z^+T#XZW7N1-c)+3hZsO-u>3WWpAHgz3c|AH7CuCHM|!=i=sh`nL`!u#h1 zk8(W{VsKdWuTLIjzzBceRt@cut*1U87Cg%JVTi$D(Z)VGoS|#5F-z`lk*i89=r3kQ z0<;nRCepkBw=@~QD2GUct8ye1D$}Wn{2ZO_Bjai%v1)XNXWZ2?z)79PFBrNweP)RV zBiZ^!$Gpr6k}94G?fn(T8}X>JScfi{3=lsv(z4?nrp_#aA+#x ze0YrIfsA1{lu_A*F$I`AK{L*W!(92$$@LhM1R0_GW~mciw!SK7Y$Cea;HG`56feCL z9Ah38PjVelSz-rJrHSqohNoWBTI%#`0SkhvQ6A;^6jZ$eL3bicM_<6+1P(3*kU^_H zRlGdPaW<$z4uu}ZzWwVbV(O0@rPH7@nl84tWVBvv&&h|AI({F8*BufQfGJA9P|Ru2 z`J@)eqipxfhbIy;DrVFZzvF(~`d1gHLFbbqA&;^OhDOT<3W&WX>gU=#Y4r3s>R~Pr z5GUV2SEa{-2pyjYj`2P2+64q_i%dCb{>$(3sA)jcyuR%vZ`>b_=7hNpP<)4uXy9b zHPq{`25UQ3(YWiqp=TLq8Y%c5Z-<)elg|MslW{!3pAsI$)K8FcrAUt2g;jLS4H*gk zB=RVxk%EjHrc@Fm!F(yOytlADB%kyJZEwjZbwb-0HP3=kl^0f3Uh*j0zw$`|(e_2n z^JY}#rB#)eJj(XSeA)rnzNpnH`k`YM+_`{(+%-n?Unlcm@t8LcezkKifaeSxa`hFB zH9y1rU;ee0%sw_V@hJ9icjnDhJZj^JiU#-iamD96=Gue5abZ$eFMlJZhFzU5S>5k% znR}<{0pMSM>$7*74g&tgQ?k2iA$PD4}kAIO-eaZyc>$REU^qd-s?O5aEMh0swJy(@*OwTT~cW}?Yy{WmJ zbWd2$nsYqC_PZ%jwH^%K2GHI?#-Wlq;%e-|y{Z`rwx^EssINzuir$0v4l){5sUh;< z<}noBvfNk1cD#%ei9w;byk&V5(-d~-6rVH?jkj#{S@g*2kf+4} zqlRcaQJC_uL#OzptB9R`Y?c@X{oRi~ADdv+gzFA^w6?Qq0^eiw&c^bcnVIshV>K23 z<~+*wFR7Y9#@1a~a?k@Yaqk=b6~DSXid7THD1YhC#Bb;nO?!8Q;_MU7N`Z5esZz=B z3H;jCtJOu|kbir*n&wfQ9|N^YQ>Bu2CiV<9j;PA$GpsGvNAoDou7OsjsZvQhGpRWs zpgAC{=72{Il2%Q?BX3CVPy#e#pgAC+IpBQzOq5j<@W>mIJCr0f2P8BHoP(r^vYG=P zISZ!xm=tI}TYY&?wp>`GVbrc<^u$H%o7&WdcI7iwA3oLMW_nJMOgZS(v8Y`KJyMk7 zQFe7TwP7e!?a%Rg-;*)1=xlXi*IN4JM0k{4!A)%lHu?FsYF77bIq>bUn_7A_wR8&8 zG~2X$Z7-ONrezk=IfueB=e6Y2(qpqt6J_`FUNC(<6ASCLjesOCneL{R9-D2ND5szu zOf9cO3Pd}NjfofQ1{EZ|i=Yk?v2`ZtiA26R6>zQLJ%ZmyqEjNWuWY953>7mTWouc| zFNu7L40>}yX$l!l-Y6RR3mujS=3YFCj_JJ%^^?d3WYBT1ag<^8`ZVGWFw+A4~8kR^I6dF=U#G!*lZ5 zZAotqkI>xC@s?2D&dWAXLTEWFLvPFr%Suy|-W(nw#(9+UvJI3F@^ic;R637xj<SB4CaijAWVj>KRh`7A;UWTNjUwv zJ%hmr@+iA!@Zj`^3_A@cx6QbnhWi6B)wOeOzW}DXPL~yWDfk|C8m=)7Pw*%^=k~8) zM(Y$;p_hV;&X|V(43^Nj#?7b}~`6^72-pK1=-`eVWZui%}cA-+63; zN7?Gm>;Txi1fS}b&$Hwa^!X+%@2~8f%VTpc@>g$T5gx{Q49FUEKN6S%^cz-7**TYq zvJ))wS8rnx9v*p$VV6;Eme`4I?U%c<5QD2d8Y+UVf%xT7{j93Sx4`mRH*->sjeyM&`XZ8s zPxbAI9L3M@jAmA0gV4W8cE1F>UvMW1?oh!U29oT433k8WQI@xFd^5Ow-yO5WhtX_#_f2D?cCGcOhh*1ak2+9}(?UHb^j<|1DN1L`_lMUKJj$-~ z9_x5{LC0$o(Dso#b49<$`@4>pIm0vTd&TYEjWfiIlVSb!%yiA8hSwcq-b*w$;vOn+gMt#!N7G_z&FEp8N1Z_iK8aD{ zTK{-(OinA{e^f56ibCyedDj8Lx&wRU4*VMYeQ7TOU*x!*d3%_7BV*e*t&YPVXZ4As zJFq#!Gpq+NIV>aNjo4Ls5&Bo9e(C1ifz6o$_#1S6$b;Ta#)%=1jL#+ylXWs<;>OH1 z!m=gX?O>*dtghDqpNS6ybWy&YtnJygH3O?>BQI;9%!J!)&%kQ5o zeu2tOt222~$F+h(cZ5e-_NfPlZe+k8Cou&|p76&JFMl%L+`&-AFWpSgCocfTOUL(s zKaPq)XB+-Fk~;=)F9657nQpuwCM{T?T7tv-)(aygkK$ecjIoZt@xoho$!ChrRgZph zS#iEnqaSWCGw2l~$Hc!oaD(ZD9UL(R8E@#yQjZJk)_KtDySbb>L#!qqRR|fl|NfH$ zDP!x3!D3QF@SU%}R`E0YzPo{bQU1!i$HY^)OC`a)@AOqnJ-#(d^3UtIM1;j)Tz&kF z5d&+fn@eQs0qvVeeulC8|8;eT@6Jk$Mn%7}?kvHhn1VpkX&%Y~_#02b>z?M!KNp%P znJYz{d@RTX13ngUa;~7?3LT>-b24mvGZsQYiAOO`!%$C}*Re@b3yHi$cobs~AtUc> zR`g|5!j((T68sEfBE=a)2^kN!ydvKA@g!c?LtgjIwdPrBasEK$@SbbU6B9psAcg+} ztiiNAQT(m2zWwpal1Gh220cr^oj8!f|G_@-wj!bd`l5BG4iY@-%iY(S=jx@O4@6Q~ zLUm{M788Mh`0Bw*0tyK9-u9u0;6nkyr@sLd%D-4bp}J+|FTlw>vwx@H%pjft1q7cu z#XzL^cynIpBp*n`)ZRj+C1(clC@3KKbkCuPfQ&wGO%-MC&elB}EOE+sKIscOY!vAZ zCXrP}!K~VU8_H#|Or0^mn^VT~NyCswIrJ7OBf_-@9>32$7*o$byuc~r`J|J`qa2eY z*tZ}1Pe)w`mDe57veHiPiOCqTvwt6mmlO^K@QH)U=;@dOlm(ZUM_DCLA9|k=&W=F8 zq;gO77A7Va%2rL`P4EnhTJV9@!T0F#_n*-o_|^71HG=#m%pD}&1bLaz-GsM^Pj1?D zH_?;9)t$b2wK$18c>StslCvv#6gh~{9YjwC8AU4`5s$5pshOqvkl%zkL+lD3MgApp z2ho#3M$YRC#L?$+)UAo6YmaeH=9~tn5KG!*=xh(}E++pF)^FUK;aq!s;zw|Hh0}f| zWizldUtAJ>qbsgeH0j#o69Q!;(80lQ;})0M)KEUB|JVy+A}RyWaOvCN_c#Z zv}anZ$guu60{%D&e#T``H^TkBpqF9&aU}e4xDsqi6jP4H-?08T68<<`Z8rJMsjI@& zX^}Ai{MyTFW9m^TPB9)WX-Ao7iL|5`?-sw0Pv5U7zrh>l(WYAQDE6i%g(>qkpng1b zwi^u)(CgE&^2HU8Vmx6|m@@AY>iI({efJ1a7kh>w$Nx<5GxVmRHxAxB9=&PkjYHD_ zXd%5-P1bi6zoCtFXiKL?L$2VRhK3E3h@-gE^Lg6ap9Jd`7Sxv zH}YMISVpBmm1DLIO^)yGj)^~^$zkhdkF+uP6@^g!_Dd?_pOD_C3OYR^(U%4&;vC*YWFRr$QYTNeC5VflmV!u9}T zj!9hnj~&51z>F=PdOyG)l$JlJc+{FN0$&l#*y5@8JQfYhtA3iJhVHDVdDLlS(8@_T z!uNg(jtNJYteq8VXU*Ll+}@C|=e8>L36q|zoi%D_?RNBpW9Lz}LiPhhyse!zYG=jI z*xK1A487a82hI-rj_!!m#y&Cqj~oS5^hSEi5K5Y`!E_9)u)z$|8;4NR*zca2AKi}k z;Q3l%4eazrIzuRFi>5JA7ANBqN*eR1gPWoizzu)4^dt@J^hSCY5lWgz5%!s`8=<7( z2RSw`TH;P10q0~Z#tl#L0$|k(uI?j|8R9+QivC`jt{FEx#S4H{NXYP8tP$DhK-NVE zl5xYGo}uYLGHy6B_Cwou;Zren|H^;7IcODicN4nKad)3k0U#qkZw^#mDN(HQLPmbx z9H_jUUnM<4~w+l_v82W?(gT zsg>eZz@r?_A!a<*2SjFx<>){rPG_aK74RsBrFg@5tWRAtQtzr86A%Aqfv{@B9;ws0 znGUHCe-!8odxvlgPo!ZP`nTO-Ij(DWVKs?8(j?|l>jHgY?;P}n(f4_Gx_TPgxM>ri zJiIi}z$LX|9(6uI?0NcX%E$vVdc^RU_&r^wsGerLHqkHuNzXLxa&Qc8C$3f5C5O}< z(B5f#uvm)fDc3W7O{#@{k-#2&dQRVf&F)RDUq zJ{54Hla8Q&_2eowv}}EYB!#DQn|dYd8ysq(?=GgeJcL5+fD`RS`l7#&S3K&cztauY zwO8>=ZMc5}p7wXAh##;Q{rK&52_7~4czS@E?Q*FNcX_~UyV5LG0h6D<4`d~F)Cf4d zn3%+0Neei=qLfTwP2|w4InJ9<{$hz~QBe#m#OpF+s-oO(GX*o{*l%|V z9%Z{~q)h7iaHLG?!$W#jZ_xnX{KKqDt`BF<@C@70^QfZ-{@~>_`77{IZ*`H{;oC_~ z*CFD`8OkB$$?Xai%g={IyRX8s{SC#n!?%<76_0Xgd~(!+>-2MV#Vz1-W_9kO9KIde z$`Kyr5dXn*1^%D_e^3&C&>`Q6Kj;wg#0=#BC&M2U;15dT5ArC7x+nf1|FqB?xTmyy zBWI=<@L*@nqa3oI_=Eh4ptp2ufkgj_a5IOtA@i9`Rujapbu~l4$VD{~htr?&$KhvO zZ9uGF=8B1H_0Y_s@$vW#emg3r_!*u-$5c%ae>fDnbY{H#i#bVvRH>>Ck^P0&?V4oFK#}X~l0~Gu(G-YQ|y)3?cv{^;-PR$lgi7~RTVPatI z0QtTH{A?bTVe##cnN`%zyi#_^;~Q^uGcSKxtBr2v<%0zg&wqzZXWR~%GTc7+c1amS zbFR|Ybjej)*$$b`xE=C;+ii3+FG6V|Sug~@$DpV>LB0S1Y0m(TFf5T!w6tEvDZUqhzPd)?|`{83J zgD25qKQyo(DQ*Qx)IIhI7W?62CxZ-&{m{UEq_`D0WIyH~afkTFP6iq6&WzV1!PMJZ zsfJ)2K4R*5*vXn*Ec%S*n6TndHd@|HR{)3imlMZ`sh5nR{WI+oXs3)mqd5i+1R3{y zHCtUqjgz*cVU$PF?wi&q+KrD;*JN*2l>0xRvuXan%Z=KEnteu&zh+QK32maGkuD37<#PQ z4pZb~)y5qJ(n(mPQ`8}p=~Fr6GJPtxlSM}R$<5`?nqhgvj^j}tM#;@D*qW2@? z+Uk=PJlYIzf;>e?4Vtpak%a%Bfc+>sL&U(AO&^l3c@(KZ(`P5wlhp6AAJ~r%UWkdA zBZg@n1qB_$m4Kp-ae+cT=#eW_{)m)%pMDW>Sd)>PzKA$P3a||k%;?i*h|hpXsWR&y zL<&VYtjVo;Uql=tWgXlSQ|mz<3VJuN88d0h}bH57_pyEIW1n4*^sPE!n#65)Od43UD2E>KOn5nO=jjWaYu zq(pcWL!=;M;lcO328T{==TL`sB5F@y&)&U`sW9zGNkquXSu&;zxNmfHCDX0#bJ zxHjzoyv`raaFrLK*xR57@JeI(KDuhd|8A^!RQ;Z{X_w($_uC9tc@c^o8Q(6RDYEd3 zD*N%w1dn>KZEf14c#qyN(^Xy`uANcOCHsrLLr0qT2bIkF;#W&FwKxh5vx+*)34TQ9QgE`2Rrk`boFMLOnqDb^pvNBM_C;OpH_@eXx3MG ziII4AZ|yo+@h6c-m25J>?5}85!X)mlBdW{U+2Z<}`e=t8qkZ&eTY~RFo|9*BOy8XR zG{69Taa`W1{h>U5ZCpXCRNdEetP887~)8cVQJB55zCO zidKh*804<JYEpRbJ-K0;TuPRr)*d0hU(no^sE5 zhC>?$mDl_`V`>Nd&zC*&MZ_V=NmtFzHhnhj^#fhCTIuN0!ufsUxumX|&(zmUltYpS zx@s>~nWUH83MBcNq^_EOJD4v#$|1=ET{X+$mEiCS=9}O%-vpnbo#@I&PRpy?aO; zy%^T|{6B12Qsv@Njt5IBa6odT*AwIuH=E z{`5fSuJ9~%9BccPwWuao$26sr8nBwZqYY?JJ^14$`n#O4{O)iq!J~M$wqU?&_MSJp zaE9y`Jc@UO9Ty$b7b?L z&#vS#oWAq$Bb2`ff3;|3-L`n9EDvfnU&9&7-}wZ3i#*Dxo;yfwK|?8>@8J86!;j-V#Z4)l&@o)l3ttRrIJEhDD)=O-mZcxVtd9*r6|WZB~3W)z>z;M zm7*Lkl@#T;PY1ASp&U^fe4K^n8Yb);(xWb*eRF!$L$qB(kGh7y;=IsI9=r^X&Toz- zc$9sId(@}2ok@>6lcCVYKgUZoD<=9^t)Y07!x2%J({?{S>V75_7d70>h3%M<8%*4G zQpr~)Zt)t{mBeB{G+{sZ8J_gept$JJBIXQ5VW&rKH_px64^(dMY64hz zC?>u=ktVHTt9km0!@ZF9hNSq;>Jr?+pNeRvlQ69A!8Fa1ajl3Tj zbR1+*x3S;N%hirg#!KcU5@#MGaq=EH@`iCJ!8d>8_KfBO<8AauRT@j?SCSIN{7sNC z=frF4Z|XTo@9Z~EFi(^?k76Dw$oS9D`(@eZa#i;pyHwrG3g+|f=-WPS87e+8R5;2X zi1>sxWY+@IC73V~KAXWXc}nn@N7A9HMA<4-QtGJ8(cj zpj-|0%t7e&9Um`w)V0WVMr(H2=OR~bPDRh{E$x6b>dMD z=@it1j}(4DyoV0`kg^w}A3hPR45hcK$d(ns@m&R#)86r)E28i{-dI^xe%hdguKdL7 z;?$GDn(@DFsZl!6-tlJ?r;MqM`pBU=N6l+=M0~y|STj0oS5BeFL|N?}|3nGO=r??T zY*QvjUDN3^QRS&%%~-TUMI4%rxJwQv7jT!NTWiYgUJL#1pr=y)29I($xxk^~raf8W z-fr3YNY}kl{ylhJ^CEFYMIwK$z3Ak zSxOW`AtA$diUc}Ej=MzYHrFX4tdeuv^vJCnXxw}%FK~F{uJRfUCp*UBjiV!+Pvr%s zZ%UM_sepS$#vxQ*hdag8l;8iUyukF0^C(w&0X2(^US)dd-XF!(1TbJYZvyO>IK2VD zsEWLI_CTE8A7?OofyP#+%KDqjVO=33FNHV3qkcYdAWrY7HD>aY@$w*bKjvy(vx^AM zmEcj&{(K-#zd?OB{f#Y`$Lk@3V`_ieKQ#{R=w0>l6^>nvL*FkHnz5*vUJb_js@?z8 zI27fomp+)?xEhD9Vg5A^MY$ShBxX0R#-aOU7zzRm1xXAA#+Gwljl{KcUX5Oop&-Ff zki<}6T)Q~q^Tip14}aq&cr|u}3W9F9M)4@d28=V7ATsRQF0i&srl#roSA@)T{VPId zMnWOGwo9z-DbKE5+f9^RwFz^H47;{V^sfX{1 yS5WD6B)I0rir&ZWy>x5mPDCX zTby~gInPmYfW!A#IVwZmv?DBgf@|V9isV4*IJFeTT;`C`_tBBET8CUQ_@M8L%YWFigbH)N58$_xzb@dnCb_NR4&FCeR0g~Me#VxiCy__F-#>Y^Cf9a}u9{mjJkn?2 zjDb|XfnD1rx@u0J!DA{89`OzAs_g}w2D`QktnE&p!DA{8CW*ow5;Y) zY%U+SE`uH+f1yW~IY0_1k`^oZnc^$~&K_VMu$X4t{X;Fe7dnvpMm()}6lW-4T4^{9 zm@FdWx!GgIXmr)&#=QxChG%d_L?|@v#~qPz*tb7&F-JK6v3sC2<9x|T`N_GO1-enS zLyt$hqISL`BUz;yH5(q~oYMkrs^@>%6n){p*teIMB%O~MDdzAf>-6azSx$R~_F(YL zM!&to(dtf>i+X)-CTP_D?5x-iRJjgkHTYp))*# zj%j*AJq~>HtOAKXFGHmO--9%q-RC6*X!=fsV&>luNT+#;`10bJIvX=D9))Yw+FdKk zaMuv%=xs&gU*UeVS{PG2iZrUty#X2<86kI{fcH7qO^<&+re-~9xJ!h;Aa5-X9$V&^ z^t{0AAyfx>1|oZ|Ur~PtUh3!RhP!0WScX$FihS>bPemEIwFao+_zmhS#fZCP&X7Ah zj{-x95Gmw+hz#44QRvBN+mkW6O13BCllzc+oyf+Tm*Qub(ydeF^3fMX#=R{H>4Ug?ufBR-xi=ZQ zrzufPWfvJ%l}kaDOY`r+qnMH}GV-f&NT0#gIHUn!=iJ`e+v!QP({PDtxYK9wn2Ljm zay3q%&yZh@gSs}!$Dk-X4YwYkU*(Qf18~njTeCMoXb`%$mT_k8KQYb-S3*xouu?~X zL>UM_ucjlPR{RVhQ7DQs2**NCV!%Fo322uiV43#3?lVQG7CHlTNE;qSC>VOC1NK?V zGdV5X4aY<;v{d*PTmq?&9IxIRsL9J2@bUEIOL3onRKnPJ^& zLm}zdC)A1OQI0(Xj4(2$H3Li?UXA}-9hQ!LLY;UXX)f9Jguw6Bubc1Z~%qIn+WLHh2tETxG+b{D;*@(M5B)e(~T{X?4Y*)=E zT_oF8^NDE#-=zRKAb=c5R$k~7xvrXrPLb=EdFT}3>RRN01acr*dC@P*RbCY3YASS! zkda^IMZa1evU3|fu10xZwGMzhP(e0yBEW*(aQpV*6L*ONR_QqnDV`CwLTR z!Px#4dEX%eI*>G@m!t#9qd3#X_OHk}4;hUX4H65`nefII5jW3nO4u>K=L0SL&lfc{ z`1V;|3;*4$40AkrWhGqQaW_|%Fn;)*&!tXIX!yNaRO&M1g z=^<~dnyVJny&`y2|5utCO#AZU$jHes$C%^N9h`Q*>5Z{br7&5)yahxN4kyF2YRpH$tr4}tA#`J}ytUEf{P#Hrih;`-r|6t@D~ zBlEX5-4wCCGyl$hl<`xU_R(o4p@)2YlDv{P%3MWg&tq;n%G`r~6~MRLJkcEAeefk* z-B87n(S6YUhQ0)c*HJnJ1>) zfS3F^naFBP%!&1G~9XA z7G%)VPFM6_R~H%2Es3cDSgm;!>L)XIreD|sTwU6W(lK=Cy{e)UG_b!K&{J5oCyzYg ztyjE9j`Ezh58lL=d&Fq?y{ve+jO0<)wcaDw`c!uR*1l!shW$CB##Qi+5r%X`#y#kG zy|XQ*{!@ICw7*WDI$QQv>r-FMcEbEXJNnZrKpDbsqEurz9Bt1szdMSuD}&K&cbJes z_ap7s9g!G*=fh9u2p;9IG1R%U9X+2qdSLw`avpxMM>p<>J2nS(wj57``eGJK;Q?_G z$L_U#b2;{xOqn@keu76io(A>aESACp;sP0khfk6-(`F0x+olAMa%>LLt+j{?4~Pq7 zd^dZhDhH*I2AgL_|0o}Dt>!_wyv@^=ca=6XujImjoAv3r8F)wK-ql#kE}8ni=NpS7 z*9B*mLLHq)b@)%f|2nvpGD__oqpx~Crn=mfC0djU&TNGOJCFL|v4B@L{yoa*eQbpK z2AUiVnqExom}0z3yg!?N8u@lkaJ)ThTjcfJfH~cIfgAr`3yDi`>>q4FkSPgxyYa@o>VGQzsKme^Acw;MNT`Ot$5TQ$e=3zj;b5t z+wjflxV%vW>NRJYn2J^Om3>PRZ13#m&a|g?6JgOTd72D&aM6q2z zzPX({E6kl0+vB*oGwu50cJAy4zDt(xEWme`mhWs3zm~o1G0!kB@C>tjX9>Qu^Yb!i zc!p&%d*o4;U}w(edI3D7VZQQ(spIm_hy*1(*#fAiw$IFDlZ zD`d>rvMxFY-P#JfrwHpm=8^xH^(FJjm&`hud4ZGJZHLE;CGat6Ikvv!XRP;`$K2BF z)g6Piu;y7zkv|%qa&>uzWn_C`WaC;{m1YH%X2o`?ZthIGS2t0ny)V9pRcY2xX-;`c z*xuJolxcsB46D+tq0*e-Pa@l2$Jy>28CI`PKlXZ2jw5oabv{jztzMtSa$Z$2Q(pt* zK)=@$97p74%|6YVtzMtauzG!J71Z|_j>zft`J}#QRrzej%@xb2x>sUi`lAz4JQNty z!g;NEx+9q_k7b&hr|o}!}6J8#gh(_6y@IG(9UqZcQ5GB z_gqm|{0N1OmeDRr2T6+RQ!MZ+W~JFyc*pXuEB!G1SC zbTpme8FWk)YoMj~_s{~-tx(hL%+S$vhN7r4B{vtV%IA|RANYgshsEo7<7_+8*3Bk7 znoZa@r@{X-)et<1UG|(4e@=nt%clk1Y{Ep@x3j_jGi4HFv^`f({sh0&tYOL7go&~{ z0E7RxI|DD6O@LXPu*_l+E~MJfst;zd56*BKdVhdfY^F+djOq`+S}=>1Wfn^w1uXT;f^Tk-0~*Ky&1#vHC|3I*!y*S1kOP|4ORoDtbyS?ySIF2lXN0)+wrtts#XqB8 zY2$e5dBBT4{*h4)@eTtC`p|{o_(g*kow>c5eEI9JoUmuL;8BG>G0G%fHy}a3yc8VI zGI-Gg<@(5W-~wz*J0f^gr~euC6OWLf*Io{e1H5R*-kIViOseOtYNwinMwy-rd6ph4 zILh>7$nn%MpWr5l@3GlGFDmW~>lZo}(mZNa;Zf!Z5B2nu>?$}GBIDe(=~AMD{`x~< z&7)qsW|Vo_NlVQ!xJZ=`dNS1>QW@yUOfInARbC!dUW`ka$5?`>itZd}|#6OSq{9>utX$mn~lo9vsJD@Np8B@4D3NuS*# zWY*W2Bk7xaKLgj5dO!Z2QBf|t1xWH=mEch;n~gN;Qp}31v!iE%r{^9Zj6sx!ImgG@ZW6hg@IagC;(64stP|8@ic5k#G*7nSKV+D`0I&NMj=3L9V z1uN=_F_bajm*H~yz8qEJtyRi8QTXIUVI3-b^0DB&0H|L)R$q?8)a1nq6BLiKUK##! zcx7$KsM(+1}Spud}audI*taK89!z2z==Z^CDC*`|rn z_wa3pj9d^|isSV-9z2rt^zSG$RUY5gOib#ry*ZESw0UCmd))J^`xZnx<9I)g$J|F5 zo0razLlzH;Qty&SF$MkzJ4QyGb{7-Bpsw9q0f_Ra0?zRnT*b6=!SPNwVmx$ag84nZ z14j%vBD}U*&4u>PT`yFV{hkcY%*37IQS*PF5d0o5P{!OFkEn5v$5fB&`pDN724@!I zY2Z=coSI;MkK~Af_ec0*^h+>P;>8~jH|f#l>AUCS4UzqQgX4$LVVmB6w0Vw~w=&(R zS67QR(6VUsQZ>1BQ*h?9FE*q^JveZ*`K@#@U9}oF9uY4-5ff+2^pSUd7@T>3&xQz( zsy=A6`K5tt9RU})=x3_rpD}f^(EwQ(--F(kCHsEiCcMNAce7jKhU0t88U3{Cj~()_ zz^w6a?kYVt;U#W3G76sBo7jLg@ue5X3VwB6HAzvf77Zr6Pmh`;FZ@1BT|ToZ;aEGg z3$wi?$MhYz|ggM66DLPig|_oL@CTY``4nzNz(7*c?2{ zY7zLPSO5l3_PS`VTeEeyyQc_NK{#Cl6J_-de9}9>j2?a6cecQVFFZh=#yzK16x{hF zn}g8Nj;9fzqgVHST0CDRQ%?A_R?1Vtqa05oKu53oV{f!QdSv@v8!Pye$fF#aBS1&r z7V0YQLC>;!i+W;TtA1uSka4iR53f!i>!81Qb^8>ThfwI3qs3%8euLdtA0kK3WEA{B zecI_AnAP4X*jZJzs@s;wlVK0Kj^prh?(}q88KDr?{1QxS%fIMRSF`*Lse3ZAP*v9ZFc@)(basjUtgE!NCO=h6Qj6oispnw ze{17pRG(fG{Hje=U+`)qWnHMs|M*F68u|<`Jv%1!`V>8#0a-)O zHm}Eu-Ya<5UN+Aj1D&E{z9!d^?7y$ z_xe0HgWoHDRm%7J9D044dwmgfIKo6Jf^tWSdt?!MefS&P>vQP!h3S%y;x1kUb&wSI z;Ue_~meK8s$T;a;D24B;-G_W~*W8{F%2==B*H z#a%q_1ycAuxYy^<>(erddwmgleJSqsMdeo__}EDFagW_szMlP%Rz($7m}V95M>eo__}E zS@dde25N7X)!zJCOWMTb_)V(;X%0&`S&R7vE3jADMRB8MyBuhidq-UAsu>B#;C$N?F}{#XicJ!EX%`c8H^ z`d4Rc_Uhkxyt%}oC`{SJ4EnstWkJZ2Pn0ASE$1_6x8CL(k@_*}cw><)m zVqLHPoyW~fJUyN;>dCPBH~0E1dVN7nHzGCNP@@Q)T)rOM>vQP!1vTA>qCzDjbaJEk znscwuq1R_+RH$S~rCDHk@mulU*<$bPc<=1hrGj=i_RcBZJ4bg6Ar&azJ3H*1^9th> z74*rmcTVx%Il|r<8N7FP*gIPp6*SPXcTVx%Il|r<8PC@pV4IVGo!nmKc=j3V_wx|gWu$4Zsa;KwL~_s#};XUltMg(9imzsqa_QT8UkC?=*SlY~qYN8;Dcf|_3RAlhpS!3_)L^Toi&OVCw&WaSlfZ49K z!LHez(F0Bx=0r6ScBy_|Cu$UA48MAwEeFb}+t)<}e?vxzItUrOOEuV~TKPR>RKOv} z?EZ>S7PM0g_zBu)29yQuEGtG?P*lKA&|Ws6ENJ%%tN~CK8yn8hddGg01w{pv1u2jO zlm+dOv7>jB^f5sECZAiK6BFrfVp82rOt5jy+d?UQ2(IAYP)Zk5?}8{XB}c~Fm?};G zIirW&`G^%h_d$)FX6fC;Bpw-6>o>In(ETu-23U5lB2-wG`J;-SEcU@-9CB*$hjw4x zV$*O?T_?}T40hB~^prt~4eng}nT#F|&oGHlmQn25MF=ru3_hZT?z$>t--mu}z`Bw* z2Rj85k|)a^z)?eVpc9FMKl&m42Uyt0fsGxIvfskNLq@UhZ#2&L!goB=E`1N)AIGkn zVdWWi1oqwYfaTo>pAPV&<_)whf!^sox}jx9afLo*mYv2Gx|~^dAXm38%pzlPlX`9( z>h^wLZL~6q-OQ-~O|a&5X@~zGD-k1vM!#L`PHK@folbPwdaL3ylp&*z!T*od zj!{VGz^BooPrZ3h&1{XQ;xm*XqsHO?r@07JWALf2XnvMyc-Kt*UEMnFwkN$lgCaG} z?l`7TLMofxU3?rfs+u2E&va15=FHg}t&AGG(knX+Es>dG}=okBzn(KEq zurg}k3a?C|NG-G^7atS53RU>2#ds!|pGJLcs+RLLs(mpUMHOuY{D zuO{u%A0JX|#x|&8WYqe5`cSp3=wIr9&@uHopq+4VTQhkXJT0zE8X5J<>^@YHEBco@ zAaqO}5un?SXkqW!o3Yn!8)pR1BP;kHS-}gzuRG`IA95FVf{)2HosHm<6hsN`2{JB+ zI?ONF(I-Beq2(FDW627B3o^dCeuz<9f%q+X-wJfJ61Zn2aL-svYAtDLI-^sx`;CQG zMhV=r61Zn%^w~68_ra&y`|;+SjA}f%y+`?`Uu~!aIvN?HK5A^9f%5Q2=rNIZ0{x2A zOCs+Cx(4KuPk#_=JXL3d;yyk0)+vwi7OHTi>mzGiFmq2$6 z`6p1%jE<>?2K}p}R_e-_n0$ZXm4XC2^{gV zcxoYhEeVklYAqG-wy{f1Ga^MZKgLHf^Mw#8sW7LAcd0Fbr>=wUN1u|66}V|7@YG7+ ztQF9>z-+g{D*EI4q!S3`f+&IIM#e|APe~63F8u246P!ROgSDE+g)4y_EDL z#Kxu>Mj~<4eHl9vds~5_RsvhCy${m2j}`0xD)qodnYA1I8s|(YOX_Vp?T6}@y5C4hdF7MLZ7fS$}vJ>hWF=EbzsQ zU;1fNKjFP|+U#ijM@@ZyZ^|XJqt#8D_~REJyaU&~dHZsE#cxU1|NKTqMxFOTQ{U^` zaO&*ntHw?I@s!z=(c{#=?Zu-r_J~IPjf|T0-=@CT2Pf31D>86TN7qfEj7u(m-!6Xv z`d67DrolOl{29XaJcMK1?a}Ka{&T?J_-*Y%yBOXa%kOS!FN3Vc2f^YHEyw9 zRjU3cb)eMCt=FrIft8};k4Dr>ferXx2e%fwwYRtJsAbgh+J91)OYJ>=y;=@D79Fp@ zhBDm$M!Or%hHmW@C0a(!KKxJWk*Ou^){|1RKgPrq8FfDx?e0UR@kHMeE3m-b1V*@< zz}Dhz@ZiNA+=r(WyOWo7urf;Ekh=+NEi!WRr`d~fmmL58w496*Sm$m6TZ;_VzcSFj z%CY{Hg8o&O^{*84ud>_jkLwcXU*S$<{VN0gE6ci33i?+CQEo|G`#}E+8LWS$p?_sr z|4KpsDl4N{|4ISRfDA?sI3Ndd^79Iea8My8gfYGcBL^Ii16KYf0%6=u;FFQT$N>xF zfR(?yj1m}VWZa7TY5_W4TP`Wdu@i+NPc8PbP~^zP{uZPJk83`=Lr1r-S+QAuQIVBV z?3JO&^@}|;NNpY&LW|YPD51Za61uF&D1QCV+)Y4ce)-7Auy>9ycMd)F2ovR$m?$IT z(Iv}lCunBAwJ^VT_EBQ4ni3ObWPDb%&Hgq$V;9!T@0}yeol|0Vn-X(pWT299T*)|8 zGX6b?N`_pZ{Cg0Uj6x;jk5O4Fpzc>~v0TYG8HF0fzXwstC{!~37}YB>P{~-XWUP!r zCF9?HsALo>8GnpQ1{qK>&jl6p7h1>IT2d>QD&|t%96Od)xol8MmuKjh)(_HCe+U01 zItJ4U-~96xHL|}!vG?GsGFC>>F|9F|DFdy*=Q1G&A<)YX(Jdbp8Ksq@>I>{*RG)IJV zYW=U+Lp+akazHv+LORK)RkyHjIFL?1T@W9~NGDcL(ojzdS{91tPC+@8{2*D&LP3Wq zn^#XVP)`b47K)-+K|+z|WY8Cd))O*VJ;^{lDQHbT$r<hoJr~^p?HaD<{DcOoT($v>{7G*i&7o%_=M65IDOIs2>5-{2|%x}`Bb}Rd(!+gqpjgNphtqq zsK5~*EduQ5i{R7nW=7vQ{7Mse1%x(}QGtg*dIxx`t-f!~`TZxDiC5gJ1^y~%%Bm$- z&dsvcthyh^_#5SCcX{ENZsx0^4u+LyeH5wNZhZpXh#_;ctY@pn<2c?;v>vcXpS6CR zkx{ITtJ(sk#hSVP7&EV5N1L~RRjWOs#4f1Z(BlhGg+<+QOxI@YaqAwSQQX!3c(26YqoOwsosk*g zjnf`%E zB2}(}sDP{j`w$sh;00L~yb0B`eOhRDh3+|NcclXU3fx6xeAuf*kNq-ZSHY1+Vy;#k z9%EQg@uwEynC`K4wf{uMl%G53?f*azd2xr};Np>4GHMhuP%}jBt5e1+b*86pgg3{i zccy81<~T&r{&Um5-Kj$S6;vbKzNa#lRU@drBBd!(ji8!})~HA*O+{Wc!hM7tJ*!6K zqlAW3Bs8RuVNMuk|3U@8su5IqMdZT?)d;GoB36y?$FXWeMKwd+F>ho;H86bC8`mS-9uD-R%F=3=|crfxkw)kqvLoH;~ns(Pb~ z^*xw0^jY1*GSb?+&dMl8W~+{vc|$d#azFRUF`Y6kR>v!NOovE|JJzIjD814V^u z;HhnI9`Nf{R5MUis2Ohg>CJ4Y8Gh|TztvMmY_L~AAMT5jhK2r>M;kFVKOz(osY3aC z%p?1UT{X|12Q7>9zAXy%iciH3M-~o8MmUA0BnnAlnDP!s4h~0wvF`DEGK$%b9s!kiIC5|}((;T% zRxxAUV+s?AlkR@R_W3Sj9cocRkkfkQIdMRc)4c@b>H(OdJ3b$0UxiZoKbIZnT8XHK zfFP%ps2g=~3NS@oqSd(#=(n$VX_A#u(|{nS`>JT?FWEv&5wBMUdz@Urs$jhedmM$8 zC{*DJ>lJ=oUayGFVFMn9q5_%*D^aNQ71k?c@Oq`O$FVYs*DKGw=JiTpy+Q^%962}~ z1tkRkE3zJd$8WMu0HZ(I;mE<^$jCFSIp9&H!dn)9gB^}69F7XExy)d_14d@@dZn>m zxiGJznOB(OVI?}?oAY`_ya_9#!mJQ0(E-0MuU7_pocu(QqQX29>s8p}D6Cib9y`G1 zcraO}*UZ?@=AczH@HA+B3~Y}0{ee&Qf7l!p6?hu7J_a^N{En)K%|TIt%|WYZU~|N) zXzxb7?KQX)uR5iT7TSivp(4V(F6=o;B{7Sqc6&{?6H1=%E!vV-?4>h8moe;dSs!lG ziN@WuW~Tl8x5jzpVayt{Le()V)E@CS;I?Vuwpri-N;OW&3P1DowNLP5g`O#X-HJRw zsX_`pYpTM6?<>_^Pz#+h-i@6)&GwzW-vgAQf(IzoaNNuC?n?QNSAn-IDFOv=+1sJ@ zQ}{P3@|LBjytiy}UFgY?;wnB>h2FA=3f{7nJFiOxZ`q~rV5*omL2Qn|n;{8Bs`m=BHjeCIb>AeO~h;t_7ZaN60$K%O@Jz=M8dw(F1H)+^O>*Aus}uncQ|?C z0xju}X`WMvRny=7keiOX{Q@{>0eR_BY~+b6qYANVT^hHryH{rHGGHd)Z-VYb85MXFG4rL;=8~L67w5#}bS;%mFZ^|^XAF@iQomou(o{x~R}yyg z!;0(#bc(L*+0jTnR2lW}pT|=FQjs51B5}ywL+xwmMwP!*V&s`~5JeLc@_8y$J-zgf zQRc)JWp>)AxxvLX5-zS0xwyVI#ZMZdwoo2VB#vC!&g`8J^`sm71{YT!#V)Q9`LljG z*-tZ~}|-Pj6W5b&*X0&rqdj$ATwHM!~DvKbwRIM91sBlH4+y zxHp|{g8Xd1Y$GhIyj2(4sT}_{vK1qXPda94`jp>uT-mIru8_(FN zKSLQmb#`|Y6}!GeHl<}0{i;;;EosnGwTtI?(RD?X@jd3Xy`jF>>a9j;8MO@8gsQ&N z>h@IFKgY+7DTBLe4qY`Hkne=w42XDi)lvZ|kFHuO-&J$ysyXheMT8NRQQR+!&{abQ zchxMqYAzu731KRu0^*-saG*iAueLk1ahb0DJoiXai4kQt^N3b*AjxAl za|<_fE2AVvl-VsrH| zfaf>{bDaEskfOr%Acw@T>*FdTp5qkk2kDH=2v?9C8NsMpH%!;ZG<@sDwQQ(T zF(1fRuY~anwJ%}(!1TVkfzjz=v-l@#LnVv}PeD|uuLpE~x*$_tSG(85Pt}`#<{}zIpj?CFzHNXJ~ZTbSuwDG-gfwZCblJd_fr% z?NTv`3tcthV}!nsqU%)gE|sFf{u7h9&|6Y;ohsg?QdHQbLUSN=)p$nFGcS#qSAIW8 z_|34>qifEcJN_FL?FT6;><8)Y7*KKz!s z7VC#c(9t^(>k3V1)S-9>k~#$)6LKB%s1w_p9;n+dDegzBPd*B3S48jgy?6(b0){^Z zIv%*CwUhM&K+1l+WkF6xVSS8n)fBCdq@O{@gsq1L_JpKa^h8EqS+%WUo~R;}q(n_h zG$mBhnpQD?1DQGKnq8V%rZg{)WRyf~;ypO4hrSUA>`Mn12PP}c%L~w-5)}%!&8b7} zKSRpw)lZk0k0$zQctkq85~V5em(Xt?Uu27pEOseq{O&{sy~9cCT1E{W?5E+;ZeJ&! z|58crOfZWd{&kv`XCxZ)=1G1U9>t2*UDqtgE$UV3cAYa>%QNEb9A;ioJoDN$sh|D& zy`(cE+nY}KZ&95{q4adpvnZpa&J1?+KP||;jO)=iH(7K2spwghQS|K5 zGf2-O*k=vu>NQx~zqoaLfyOWEhDGE}%_?9K>4uTc#HMr&@CUCtyo-@%Sotd=eK3JA zMaB)!G)iBEiOI+lW)^7t$_&;Di(;*?B~1pIZ@Ogc)5mYqtm)!C09orLBCQwJfbsYV za7NcPGY#N^G4qXOn%}h%p($h(>&$qJ1}gnEBXub>2X6c9&osZ!BSLJ*DAuy^2oI>- z{I?|c41V1on@rbS(JNZrcz3U`yZ6-|t%<1q@XZ@vQ)G97`Eu4-@THG;4gPxYKEX%v zzFiSZ6PyO@2j7QM`p0jU6kKx|#XA{=>JJ%f+ns3YR4ucQR65pOG`eewb`vjub)Fjk zU*(UldiqK=_C1xNRcZXoS1LG$)URgTVa0Cqk-ysAS9SGg+Wd50K~!eFO3{kZawlax zKj$=kJg(rH#+_~TAzl5Mi;wD~WYoRSsT94P*B?Iu8C+jE)K{A8tBCLy+#U3|46d&{ zsv}=tIn-BLUJn_?^;LxTBc3R(uPo{-Bd@uP;`)kR#_sxcLGC`V&rbXzzlthU6DeLF z)nKed0TV!IY_JEu>1#)yQfv$KtEi9S zcZv6B49J04aq-jd-$}K?ebx5&nVMaV6p+6W@oMQwC7vy@a_PPzmTn?(+0HrXmvCPl z)GBER8A4}(6e)-z<}a-n!~{+x7H(dbPT{_~tIh;N$PhXMq=-j`geby%(B2ss5M(^j zYMbtMC3uiW4>H_u^U4I=hodQbigit*n19}V@iILWDArx`n;99!y*`@cLxIL?r$jNw z{iWV}(reLseYee3T1Ig{F(Mrn)@O-mvW30c$oFmWj*NZth9OR1Yn4FYDuJNIowzDm zXg5NO^{x3WojfCO!Ac-#kuiPe=G>=nko@`E(N><383J32j9DM8&fSdN_RSk7S%JV+ z?0+7?|6H*zdUVatgef||+ITyAcha@F;W#JHu-|$FCw3*!zsUIT_DAe1(93uu8sX#_ znZcg!(Z1K{Z#)kl-Ye^u>5hZ)JbKSi5Xzc?tFK~)!e_&#+8#D(2CdBV=>1(C5HJ)K z@G~((;a@Y$b0737HDjL5^XOw9!+wR(z@t|&L!qqsHht6c8GU`NL5`Ihhzp>A!1r}2 zxk8bn1KpK0s|R-Qv1PgkcByAP+RU*!1Th8*qR7#Ko&uWHClbr{{F&~G9sS2^M_SVD zrZc3dADU>{nm026B|>_Q0pH(s7%GiEiKi79Ybiqb=&) zPqC%PT-b9{`w2RueD{A7ZgHNMQ=eefwc88zgCSOdBK zq(ry-eu|G{tPfNp(ol_Xq#D7!$%s@VxM%6LUkjh8uD$2!Yw@YNzfxpm6!%3VQjI8l zYM~mTp&DUHH9|&l@6~HEa8K52HK1CmKT!jFZhE~?p5rc{DjvKx%f7h8anG_}u7ay> zHj&sqrLC!nUf(UPrdsYaswKnL7DTZpFR}2E@ybJ2n$I4cp=+0}wA{^9EiYf2l~L^b zOB{Y=EJa`RisohdzN_cj)}=A~jPy|7nGmC{F$)QOQU71c_eBl*qE<$6UsOGkTo?MH z{?kG+Yub(a{EJG>CzTiEWEA&B6(%O3FY14hJa58)H<4xDgd$#QV9tRzkqV5un3u}D z2?O3lj%QGcc&Rcfu=ZkJD)S~ZcoR9EK`G*;%Ba8$jCrYVR&MJKeJZ0%OOp;eE{{XT z4y*usj6Id2XOR8{_Z8YGovTh^>hn{CalM0QKWxBPz4JumI-cC;=w+cx}=lTi{?E`LMRS0~J{ zlLvuaa}c<3kHxG;La0mRy1Y&m?13njCHpp>8`>`J>rnIPTma#QMhZUW}v$$&mYv_4+eJ? zMZPP{3{>RWBG}92dH$dQe=xYK_$X!us)=xh5e#W$Fn`d1KN#Fqd=&Es75IaZ;8!E# z+^0*@^RZrys59NlUvb|Hv8vy8Fnv{dtOD*nIcv*<{yXEvQsb(uXgS*Ef9Yx?pa0x_2Mfh z)NqZQoexFbL60;r0##U$A+U<6L}KJEm0UR# z-YCy%G+;FvW;H5uoRLw?S5)L$*uo?|>`xJSw$S7ttDssUAV`Sw>dpbBKk7xf3 zIGKoWG6FjmkQ`Brlj$+HnVa3X*iHIR9w!qCG>wlExISEuBU%h{uT;v|#oh8anMj~% zB0|#$Tpu#%e_%Cguo?}s8fis{n4{>wll*>h23U;-tj25>LVZ=Oc5nM>pID3apH<}r`m19fk9ApT_5xnfy<2oYAbwYUSJO$A zRz@C1q`&&+6R|EU&3DlK_^Pp)2;Rg|txUit`Y5Tt`snglmo;`P=-7Rj+chj>i<)n+ ztOyjr(>W*tMR02l7$*O#V+OgR$hGK>IZp9B%ZflginV?scsd81l)tjTk#!nle?hPB z=-WTZ$tYF?is0#-3QQ8Zd%$pmGG6wiGQ0izGoAdr|Eua11qpeSZHQy6KJ*0Ro1b3o zeSOGwtk%W#ocv8>)NhsIomV{b>UCX1eFCPIYws9n3;cojYOzZ2Zn1!elL%BSSGcE)=M^XRyyR#a1St*xjc zhaTCQq+8vz*v#H{XpZZ1WK4TZMsYo_sOm?b0s6i_0|#*V&^}q-10bX0<1&i(4C;97 z8S=XcgWW_*oGBL>kWuH9#%zV<4JqT9x*2_EQK>6> zxN!kPK}PMx6G7|bhlf+foIV-*4z!A;$2$4i1&{SFpm-5H)^G8yJr#MZlXsqs3Lfj# zya&&N;5#n>TlNnqt4e=985KO%W7i&F)ih((asiJoRBj^LCj|UHRkfJ*P3&SewoJOC z-q{|!gnX3LVhtPt;$32*IAy#!dipeb=`Ag+j0$`MQn?8{gj0RS&=-5bs~Fz0RomFX zTPFC`pvm3YZ14Ny zJ9$QC6e=!`IHImroy+X}8RLy)B`{hf0`ektdyF-SfHlE4KkNEUX?TFTO^0?d@(iO> zqSmYSrX&vmlb_{{(l6t!w)6OzT1GJfCISK`CD{sz1Z$ETXp-xIe1|$^Dj?#aPMHcw zd1#X3Q?VwwfhM_;Q2})iP4ZMgR_b2A;Hm;G)}SaxN|iy6jFc*|qrY;Qz8U<%0arIO z@=VY0znXlC0-#I~0>B0`hXDhk{6oSPeY5{g`ZV5>=fzG zu+L<4`x!4ocd)LXM{l@g4Kg0PsI%X5p1$rhEu;RbRNKFihwGP9tNPaU#{*|lMz^{*p(;=ua-Zd$Gt?%lTknP%mg)4;K$`PH$B3(7&F$B~L@f(7!+PXy>QWfi}QB*+I5Yr;)s@1%QGOpWtCL9aP^xQrB zb=4?J@-%|3TA%rpamMO_c0T&;f6s1ci!O>)Zb(IpnefC)NF8%k%nKlGGQ2q_*K@t@ zO}Z=kydPNcK1whYQvFAIy|sw+&w$1G0iO!m(ck=D+sP=wP)Jor2HicxB*Far%f{xv zcV_hO$C$7m^cYC-4iBy*Dt0BQwt9;m|5wtq-CZ;62R#N-)Cpndtzzes2JPGEpRuDq zdvC9>AM_YVQHx}G->zuij_3TEan9T}+upFfxeYu9sts>k9)H`$s6{KI!%BDl5??3I zn%3F%Yg+7veEdUBMg^ut_w(1McEvr}==yPin6RgIdR`=@00l z6n^u|U+w5VpP6)@e_Lc_)XPibUvvv}Q3`)u)<_}7h?P;Si$WOjJjW!i+mD*mP>({F z=%7UdE${V-EtlmUfJeu2Z@}LRiA4W>8})?W(NSw(&&eq6Gk63p_aFTImPp{)GxQA7 zvnZpumqEP7^w=hzd8bs!DtK*}iYWhm-p1V3qVRDzmrgNb?<*4=NT{LCw&nODHg zi)mIA&%9o|q^)UzzUUJT@-wf9q5?KwOtaX-?VlaP&1aKl+Y{bg5oTTyMKzrov%cX| zoaLF9cYyPi40%*hC1V-aLzRqTybo0}s>ooE zDyn3hjAGmpRWeHOV3EOUZ}xq-9kbdSv1Q2vnWhWGgFWDHu-cn@6pqR=inZIk2Xo=~ zV6``A$Bwb`jLZ;hS$rzi>$A}73#hP2pu#*tU1}reyB`jEeE}8bqqzG)IJ=w+S028qnZJnEsA?o&*| zM{ZcCWfVI*DDr=h_-(NJ#}9G;KE6y381lZBQS2U}$UQ>hw=ugLG|a4?JJbHzWrJ;U zcYOB|)|GXtBGReiNi5&HBOA6dlV3@??;f5P)U13IYhgvCg~c;rem*Aj8K>@-dy)*`_{j(An;fF7Rx4-_bqRU(q}2xUas| zgI-Fyi(amo*V(41<7&k^1D()mrVL;8ccP5%2OgvMzEkQdH|}X=)Fp_b`s&@H^6W`` zysi~xaQDNY`=Pn}p*n!c$lVY1WAC>@_e1SH<1J)x_rsw3p}G6v&u}k8ZSC<^ULh8h z3^KlLV%(vhX7uqNG&Z8f$;u4weyCdA>2F*K3`cG~(c)IMAxQyq=OYWGt*d zK!1WxQMWx!w2V4^MkkLj9B@_FC_1;RKmPojKFE0HwCTDJd^2upJ0{njrj=yS^Kj_E_Kj0%%V zx|f0vFV$L!#HQyOrRQPBGP~7GEAXvK;9d(cTXb>lE>2)*3o-=e7I$g0 z`oQn*%-D->9q;5Bf!{qqi}kZx=juD|&gdcck1EiuWoC!RCki|RzDKQZ`szc^DmG1a zw=2-Cl~H0!jtsMDL3$G=?j4s-F3_!&QDPF0jA}QXrfcE1Dyh?13nXbI5T*y*C4(DO zGk3tXr`^%NY8fT4t_R$SliQzY{`om$AFg_=kx>FE8wmt0?yIjmo%?KN@}s)l_hVeG z`Wqj>4#G1Fw;!E-j-Ks0;3XDv6rZ<^o;?!E!|&scmr?U|_vdN-xNz&f19*_M(wx8X zI`hR(w_6!CxYexZX(f8#i+$NKU^RwgXf!UEYkMA+(MPQsmG{D?N+uvo!B$8Gd}@qu ze}7M3yChj`o~hYB?}be$co`Kiura>cgFJ-xmEErU0jl2`@#32`_2OglXo_l_}%uuN#{k z=!>3Pw12`&QDMSM`ZZxfS{>BXzJwL7 z!;u5*jgy-DiHUhJDs0#)D z4zFeGO?RK+WR%dYRj-e2?)%B_^`eZIz?C@^&tUz2#X%{Z_OG<-rMH^@SL}E3JytZU zVt&S*zU10nT1JVzb0qfE$T+1mY5sUTV@H7VBcqt}SZ0Y37NHt6HwK)6Xi?Q~Kw5spKsh ze5n-mUIS*Eo;2*dDwu|!^W=M}FbxMcJQb$l;D#gPg13K2-+^iPVlfT>=%K=>Fy{t0 z92tWTZ=p9~8vebQhId;0UP?xVX*hV|$Y^xJOgje8;N34Y%1L!wsd~%Pd2#;?k)~x4EXy#2gaAo`% zV$I4Z@FqOIomjI#i>$a&*Zo(i8F2i9bU?8Zmpx!PiQ}Hfc!D91ckSAC=H5)PX+Nj0 z4k%XQ%gd;MBPA9-{Ba%~WfotZ(MxWas{@LaIQcRvU{#6352cWUj&+NVD6>_LKhag* z*}^}a#Nep%a|{1$&wTmH1D^8*+kdfb+F|BZxtfzv?$;I`i*Yg-97PkF`{Nq7({pam z>ue_gb$^&W&B`+}W8$tBepUL!vpH4+ai8v5YId}*l}E0^^C6E(z16*x5*`t_6Gvsi z5bBaN-HTj7RKTPjy!NG(@S#A)!8JjD}79~X>N$RMn1 z_%Fps+5e9VMnROs*A67Gs4>+oSN96lz2d50VQ-)W5)>I@Pj6&0 zsISJfDMz2d?;v~>?<^GdAHl7HaHPnnTD`wHrYWWXt^c+%igzyxyBEb?7lc(sMxV(; zOmFPGUW1OiJR@Cn1d0`SpUhJ&&DdQ@Gy0vp3x@yeGD@IWkuf$Jtsh6tFy;Qd3kIQB zgI9*S0Q%hm#fpsXRcqOkkTJG+n5JKkenoH>BKqxV<;1l(pf2eOb;`j|LYS0mU}O|s zU#fR-y}fGd{@SNG?v7uvOFeyeUn8S{BlLF+xEZ9U=#Oz1MTx|pU~$Yref3JSZI*g` zR3ZDGA6Oi8OqqrE)$IG4xzS*(fBVQXOPxUa>(uj;QHA%_$D2mlV^NFl`Q^_Xu{h}4 zQlC#o5sPF0ef3tOwyyHRnfkE1lkUUju_q3>uOHsRchA);zz#Mmj*s{BC#~W+XYIDV zMS<)q-}?>z@NXf5jx%r&MbWN`?J@XN!)EocGV0&Q`2N11l0;qO<3r&; z3N4Ger=%zUh|V^AGX#<}_+}6eRS9G!?!*MVIX(s7IrUo72^?zJH4@fU33MwmIshr# z1b4}Aa4Zm5*Wmv_NZH^wK`2dRRK&F;g~-6QB<0A!q9jGhin*4gA||5(i;`3;E9P2~ zikOTFTuV~M%+CiMe3vwLAUtPKphd!bkWeJ4{Cv>Ccd0-LS|C!we2_3j$Y9?k3*RLp zqXgtQt|kYNT&2qXJ(s?&3TE)rdCOr8W_)M*4MS zRA4ny4~X`UiNsV~^Thm&6$o4^;`hKi5gCgYWb{GUAIK zrc7|7M^D!^tGt*Cbpj!1c!H@2Sra%WP-w%iySluK+cFxO18e8xLN$Tvr64MBOrQdX zjQ9IO7Z=#UDt+F~hH3&8QdUL9~0(U8gMOxkBL7cGni|sVjq*t^H-Yds?N~Y-n3E& z1{g5gVIHA?*$y){73*K+ZfR@Uf0Hy@PM)d*e~h96M=g5r^)Sa%vHn$^KTCBVxStMM zTAr3sf#C+scAn=I>t8Vg)PMo1nE|TEgM}HO3JlPQd7cUkP`o*r0cyYiHS!GeITaY7 z!7)aWV@#d_s=)v?%mDRgWCk-p6&Rq%s0c|;eUX49CqIRN5r@J~s$wKL^78`mmTZ^aX!@Z_+$C zWj}g{y0S8gySR#ay;$4(PuFeJrKVx;{pcO){K_cq6f5c!dx!4-!?h$GxWJ+$6}iGE zYCxZPx*qn~Q0w*dIrciw^tdsD;;3#s|A6*&3$QeEr4hoQz@*9(6+R zzk-*Ly7hj_s7P~wG+jg|HE6O>{|euuBFzC(ZV}zupxojy`*;TLpKHHeGgH4F?bjS2 z1sc&24$3Wx5dWC=fh%(kFhwT_OcAXN0aHYs)PNSE4l7t&PjAuR?@1cBYd@xlRt6ar z&_dM3O(b4z+eX(zg*;qfifCn!Q2|p#onop=(Dgcfk$&g3aZdOcq=dggihK{YJ>lIE zka5$w?Ymr>?PgwX(!mL@gn}sHt$>VKJ04qe>Hs*o4!+e2KZcZy68;Uyxa#2v=IK4N z?44ir$Vpa$y+39s(5Jo($Joh4iJ>R01pn%aVsrkeqL)SC>r9O`Ta^bYkh!AnJ7v{Id7bBaLk zP*lL>Q1>*Tcc@rB@wE(?CQ31U}z1M)=p`I-G=d%aeyHU9wF`=O*|0C=a$x9@X zn*CDoAMe^@>bWC;%#5&`kY~6P;++J@t%#my&FSMB;zVjeGd9jP3M! zV^i>XW2Ue7F=YlY;pFf==KN68RfF1F@8w&x{7qyOvy3C)Y{mOQiV8bD+HD2qLX5Ityr`wSUPgue zAnmroeh_$3{EfkjK1rVd2IyfIkI|Bq5HLQZcoBTjW4(-vrp(i+Zz}mzEPe#4|up5EhZLtD99**lS4+M zn=-aG?!@%Q8Yzj6t_b%`N;^Q9exG#Buri!5JC~AC72%#qX(y4mr3q@dC}Ss&Jt!@s zvg7aas{yU%0v(NvlQ-41Wb6U7SRZ%cu!Y^^E9AyJH1qEPc6t?y7sB@%wZkl3Yd|{A`-4kf&0@i#_S8)$1_YN@K_k>siq zIC1H#J;Lrc2pyM(CoDpKQT@DL-9um@b75i;oJQil#k0 zUGjfBKV7nzE`=@*xz6UlIn9dXFOpwH4fVguu~G=$&YIuOR=Ti>*}wO|rj>zoMiPl_U8d<@`jwh)6Q71Q>}c6dOf7N848 zEIXE|A~>MPD0Vm_pIKz|h33E|=!@Q$=xy;iX(gl2t*G*&W2ywH>cBTAM{svL`G4yhhLYFBgm-vabt5{E~B4D)kM`0ouRr%MhVYyWZZqWeuA1s$qgcGMLi1#5fj`?Z0Ij3Z{U9n+B=&F$tLLPg5(#8W- zDGqqwWK z5y+Z5fg@`_VxVT97j-1`o7v4p^@9@hs9Nz8gXTFy-Nx>|psK6Pf&W+gJBV$L6wr1H> zXnsuE&n%{>z$~V|kLVyEgS#INii=k0)&?9IDbfbTMURxvcRw5y7ajLVd=z&-NLe>1 zE_yV6zWZU({ctjhyC0<98_+uuqj&Z-Hd_yyX;<_z=67Jh>A9n8o7)v*-O>HX&cHD} zX*W%L8{ebJ|F-BJo09I7qiUIeH>dkYMt${1?4j^4bg97GUff#u><>iaS-o@{#+%bU zDx)ePgPuWjKaeqa^CWv8Fxv~?U7eO(fD2Min}AL#IeXr^t{_kzfhs`wXO06x>{5m$84EJAFMq z)lie$A&HzsL1y#`RfwMrO!&3Ar`js6QWAYKjG> z2rQvgz!Z_AP97};r=5y1MPLaPLAlF*|GxVr zyJ5C>GE<-ZmUlAqYz0iJe;j9@hl1I$*Bs|$)TkT1TberkpI?GonrAEEd-QqK-umc7 zym*0yHY=A>DF z(*EfZMTNN$*kGxE7NaYhNK`akqNp%k0^23U??F-#LI$>e zER+!9S*pP-HD8NjmRb-MYEjHmk-@W6jah2G7R4+z?C2Fmg<2F78e|-O&t(*`<_S0-KG^UCzL-`f}&)u-14LhO-uX10)zGxf0R+_hI6 z@oe1&ck5Qw{2NCd*>i4oUDf#b+P-tMFUH3a9b-4qq}Wks;HMvwMn=6|CC)hH!ns*K zj_4Ttk0b83lyQ9R>x_&No%G-i9FbEn-seM#?a{b`eV^@N8LJWzR)sMv5ixxk+Y%81 z22a$C-S%~pbg!+d;usGT5gtZHF@7d`1t=R#Wtz5i!*7~tkDG_SNsPIP2y-K&7^4#r zMkkSI-({t4=`woM6?vu}O)XN~B{KJbGA01@s=Fjp6S2Vo9#cS>P`HH7zLcd+lh}>{t7sb?J=9JbP^Mpo_kfII?*Zb$=28A|;6O&T-t}DB zA~+l^IKv1ucO+2WkwAY(xSwAA(Ej=hn0h63jX;bSL|9I};C9_|j#8jyCPx>F`S(c2qwrqc$w? zwYulQzQWvRya$ni%HQ>WZl)bHZ?2V56Och~9Ae7`?lbAYVt03O(tWzJ%ntvtjr%eg zM?niG?+4g@SCn@X9Q->WwjSGE*)2^LyQ-(`vhv>jwrBjQDC+(*Y3`aD<;H$ zBEepb240QOc8Yse|MY$<#i|HOs3Is*MZm-)_G&cnY79yU{!Hjh!G$r!znl882RY1h%cQHV_fNw~yGcfcIX5XnRXhzReJB|f zrs1R~;0*G8cEYkHcyFun$ku0%INt?0F2xRl^^5(dMX?)RqneRtWQM@K zBjdaJSRb$xp4KXS)#n2?t5{KJF`W zkd#s34yTo&5Mlc96-oE(Ic2*2?lw+Fg*%*9A6}Idtx8~F56RdM@u_aQ;@y7b^XxuJ@xj44$QG%u=aa8?WtPp`lwF)_LD8 z9WRO;6HwH>?Ff+(@hBZFtD2D4P^*7~&_JJbU8XR*#BsuhhbN8RE6_=;wZX30ov{N>7-raA-0RJ={*~9EXJsp|Vh{Ar)$?pQ z5Ukz4E(+e{{w|SGtZe0#^7Hyv?!gDf=)wOU@3E)kL?NSC|0*J#ef0W(gm3ttjNUN6 zk~ws#?+%gESL(JW<70SxrMlyot{|o|$T+)W12cJPv03nMtKE|L%v3nh$f&U^eW!>f zKgjsznj!k<;iYDC^_qIy{qdQ_aH5e>16RZhdCZNF(W1)qbXTB|etL15o_=%{>LICP zcK#By2FckmC>5&q)&E4s=$#$(t>|puwV;Dx4MTrs(c!U*^}5=BrjD;)#eWZ|!69R4 z{}TN;&{S*xJKD%7)>2eZwo09j3|iaKF+#@QPqnt&`<9yV!+TkYf|uy{(5+2-jo;zN zeruO4O`2Y*T24ku1b*n&4)Gel%YJU`j(ujPKB1c_!0Ahrf9Tf68o$iKHeg|EW??IG z8DbW;5`IOj9nCCk0~WRs82W;YChM;tzPpM&k(h<8!NLxnNd647uobx|3B*5EhS8ns zxE`f5bk&p2a`N+rt~2T4gl_auukrig4;$@2aLy`+_Ky5bWK`&j@A1BtW6(YS16AMr zaRaUV-DOnhs-FnmpS+ilhL@0GCbWW=P{a&r1twa=%xMKLA$$+^5;E`-(sE6dQOwR( z@Df4>dkGnM2^FlnGKv}C3SL6Ucw`PZ+Z{^Hd1Ky{T&parKq;s|<+0UJhr;)0d0Nsv z{9V%A@YtMmctc`}SP;buR0=v($XHx=g1c{3Mjt$KU7mf0`CwK?g?A!Uu8_ff28TX_ zz$R8xE}5+awpt|;&D)pTD}GCw{^vIe%wiwK zyGFI))Y-vNhp^np=yB@b_TteQeMF=Ffm!UMc+aUW={7s~@eoEF8JB=bwH$k#hcbEB z9zv1_hZ{mMAMiJRTf5LMMh|)U-Fep@|JMcXIk@%^UL1ep-PN0O6>s|pnjB8%!#ExeB(Z%MI5k*=? zHH}pxNP#41-7DaekoWZYG2q-p!?4BPnSNA$)X4g6jf z{mNA9;`;G1)Ot20>-*Wnz0mqeBpw)eocR#CYO^xiCFc~d~+S#SPSGjordP3L_ zK0is115bFuQ-eT^`EP06U|JJ_p(sd#rODs D(<7pl literal 0 HcmV?d00001 diff --git a/waybionic_description/meshes/old_arm/wrist_cage.stl b/waybionic_description/meshes/old_arm/wrist_cage.stl new file mode 100644 index 0000000000000000000000000000000000000000..df3062f00befad5150c02506a3e8ad57c5d4f6ef GIT binary patch literal 169284 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 literal 0 HcmV?d00001 diff --git a/waybionic_description/meshes/old_arm/wrist_housing.stl b/waybionic_description/meshes/old_arm/wrist_housing.stl new file mode 100644 index 0000000000000000000000000000000000000000..ce94f8530c70bf405a85ae486c153b4a7f63cc5b GIT binary patch literal 163484 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 z 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