diff --git a/Article_Scientifique/Figures/error_fig.png b/Article_Scientifique/Figures/error_fig.png new file mode 100644 index 0000000..933afd1 Binary files /dev/null and b/Article_Scientifique/Figures/error_fig.png differ diff --git a/Article_Scientifique/Figures/sys_dyn_matlab.png b/Article_Scientifique/Figures/sys_dyn_matlab.png index aa7e12b..1fc0eba 100644 Binary files a/Article_Scientifique/Figures/sys_dyn_matlab.png and b/Article_Scientifique/Figures/sys_dyn_matlab.png differ diff --git a/Article_Scientifique/main.aux b/Article_Scientifique/main.aux index 2ff562e..579e448 100644 --- a/Article_Scientifique/main.aux +++ b/Article_Scientifique/main.aux @@ -20,7 +20,6 @@ \citation{li_quantitative_2019} \citation{lee_advanced_2001} \citation{jomsa-nga_torque_2024} -\citation{b1} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {II-B}}Trapezoidal Commutation (Six-Step Control) for BLDC Motors}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {II-C}}Field-Oriented Control (FOC) for BLDC Motors}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {II-D}}Comparative Analysis: FOC vs. Trapezoidal for Light Electric Vehicles}{2}{}\protected@file@percent } @@ -29,21 +28,32 @@ \@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {II-D}3}Complexity, Cost, and Low-Tech Suitability}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {II-D}4}Dynamic Response}{2}{}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {III}Research gap}{2}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {IV}The aim of the study}{2}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {V}Software and Connectivity}{2}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {V-A}}BLE Compatibility With the VESC}{2}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-A}1}First Experiment}{2}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-A}2}HC-05 and the VESC}{2}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {IV}Aim and Research Objectives}{2}{}\protected@file@percent } +\citation{b1} \citation{b1} \citation{b2} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-A}3}BLE Vulnerability}{3}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {V-B}}Code integrity}{3}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-B}1}Context}{3}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-B}2}LispBM extraction}{3}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-B}3}LispBM Code}{3}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {V-B}4}Proposed Solution}{3}{}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {V-C}}VESC Compiling}{3}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {VI}Discussion}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {V}Hardware-Based Six-Step Commutation Controller}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {VI}STM32-Based Field-Oriented Control Motor Drive}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {VII}Software and Connectivity}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-A}}BLE Compatibility With the VESC}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}1}First Experiment}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}2}HC-05 and the VESC}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}3}BLE Vulnerability}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-B}}Code integrity}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}1}Context}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}2}LispBM extraction}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}3}LispBM Code}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}4}Proposed Solution}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-C}}VESC Compiling}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {VIII}Dynamic Modelling and Control of the Bicycle–Cargo System}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-A}}System Modelling and Simulation}{3}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VIII-A}1}Dynamic Modelling}{4}{}\protected@file@percent } +\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VIII-A}2}Simulation and Control}{4}{}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Closed-loop model of the bicycle–cargo system with PI control.}}{4}{}\protected@file@percent } +\newlabel{fig:simulink_closedloop}{{1}{4}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Position tracking error between bicycle and cargo cart.}}{4}{}\protected@file@percent } +\newlabel{fig:tracking_error}{{2}{4}} +\@writefile{toc}{\contentsline {section}{\numberline {IX}Discussion}{4}{}\protected@file@percent } \bibstyle{IEEEtran} \bibdata{PIR_MadMax3} \bibcite{patil_analysis_2025}{1} @@ -56,7 +66,7 @@ \bibcite{lee_advanced_2001}{8} \bibcite{b1}{9} \bibcite{b2}{10} -\@writefile{toc}{\contentsline {section}{\numberline {VII}Results}{4}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {VIII}Conclusion/Summary}{4}{}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{References}{4}{}\protected@file@percent } -\gdef \@abspage@last{4} +\@writefile{toc}{\contentsline {section}{\numberline {X}Results}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {XI}Conclusion/Summary}{5}{}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{References}{5}{}\protected@file@percent } +\gdef \@abspage@last{5} diff --git a/Article_Scientifique/main.log b/Article_Scientifique/main.log index d1fff7f..ec7b8a3 100644 --- a/Article_Scientifique/main.log +++ b/Article_Scientifique/main.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) (preloaded format=pdflatex 2026.3.16) 12 MAY 2026 15:56 +This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) (preloaded format=pdflatex 2026.3.16) 12 MAY 2026 18:13 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -210,6 +210,9 @@ Package: keyval 2014/10/28 v1.15 key=value parser (DPC) \Urlmuskip=\muskip17 Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. ) +(/usr/share/texlive/texmf-dist/tex/latex/placeins/placeins.sty +Package: placeins 2005/04/18 v 2.2 +) (/usr/share/texlive/texmf-dist/tex/latex/siunitx/siunitx.sty Package: siunitx 2022-02-02 v3.0.46 A comprehensive (SI) units package \l__siunitx_angle_tmp_dim=\dimen171 @@ -322,24 +325,24 @@ Package xcolor Info: Model `Gray' substituted by `gray' on input line 1374. Package xcolor Info: Model `wave' substituted by `hsb' on input line 1375. ) Package translations Info: No language package found. I am going to use `englis -h' as default language. on input line 16. +h' as default language. on input line 17. (./main.aux) \openout1 = `main.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 16. -LaTeX Font Info: ... okay on input line 16. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 16. -LaTeX Font Info: ... okay on input line 16. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 16. -LaTeX Font Info: ... okay on input line 16. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 16. -LaTeX Font Info: ... okay on input line 16. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 16. -LaTeX Font Info: ... okay on input line 16. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 16. -LaTeX Font Info: ... okay on input line 16. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 16. -LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 17. +LaTeX Font Info: ... okay on input line 17. -- Lines per column: 56 (exact). @@ -349,7 +352,7 @@ File: translations-basic-dictionary-english.trsl (english translation file `tra nslations-basic-dictionary') ) Package translations Info: loading dictionary `translations-basic-dictionary' f -or `english'. on input line 16. +or `english'. on input line 17. (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] @@ -373,108 +376,42 @@ Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv e )) - -LaTeX Warning: Citation `patil_analysis_2025' on page 1 undefined on input line - 117. - -LaTeX Font Info: Trying to load font information for U+msa on input line 118 +LaTeX Font Info: Trying to load font information for U+msa on input line 121 . + (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) -LaTeX Font Info: Trying to load font information for U+msb on input line 118 +LaTeX Font Info: Trying to load font information for U+msb on input line 121 . (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) - -LaTeX Warning: Citation `li_quantitative_2019' on page 1 undefined on input lin -e 121. - - -LaTeX Warning: Citation `mohammd_taher_new_2021' on page 1 undefined on input l -ine 125. - -[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} +) [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} ] +Underfull \vbox (badness 1354) has occurred while \output is active [] -LaTeX Warning: Citation `gieras_modern_2023' on page 2 undefined on input line -131. + [2] +[3] +Underfull \hbox (badness 2173) in paragraph at lines 352--354 + \OT1/ptm/m/it/10 2) Sim-u-la-tion and Con-trol: [][] \OT1/ptm/m/n/10 Based on +this model, a + [] - -LaTeX Warning: Citation `gieras_modern_2023' on page 2 undefined on input line -133. - - -LaTeX Warning: Citation `gasc_conception_2004' on page 2 undefined on input lin -e 133. - - -LaTeX Warning: Citation `bhatiya_bldc_2024' on page 2 undefined on input line 1 -34. - - -LaTeX Warning: Citation `jomsa-nga_torque_2024' on page 2 undefined on input li -ne 136. - - -LaTeX Warning: Citation `mohammd_taher_new_2021' on page 2 undefined on input l -ine 137. - - -LaTeX Warning: Citation `li_quantitative_2019' on page 2 undefined on input lin -e 138. - - -LaTeX Warning: Citation `jomsa-nga_torque_2024' on page 2 undefined on input li -ne 143. - - -LaTeX Warning: Citation `li_quantitative_2019' on page 2 undefined on input lin -e 145. - - -LaTeX Warning: Citation `patil_analysis_2025' on page 2 undefined on input line - 147. - - -LaTeX Warning: Citation `gasc_conception_2004' on page 2 undefined on input lin -e 153. - - -LaTeX Warning: Citation `jomsa-nga_torque_2024' on page 2 undefined on input li -ne 156. - - -LaTeX Warning: Citation `mohammd_taher_new_2021' on page 2 undefined on input l -ine 159. - - -LaTeX Warning: Citation `li_quantitative_2019' on page 2 undefined on input lin -e 163. - - -LaTeX Warning: Citation `lee_advanced_2001' on page 2 undefined on input line 1 -70. - - -LaTeX Warning: Citation `jomsa-nga_torque_2024' on page 2 undefined on input li -ne 175. - - -LaTeX Warning: Citation `b1' on page 2 undefined on input line 208. - -[2] - -LaTeX Warning: Citation `b1' on page 3 undefined on input line 232. - - -LaTeX Warning: Citation `b2' on page 3 undefined on input line 238. - -[3] (./main.bbl +<./Figures/sys_dyn_matlab.png, id=19, 430.2474pt x 193.2018pt> +File: ./Figures/sys_dyn_matlab.png Graphic file (type png) + +Package pdftex.def Info: ./Figures/sys_dyn_matlab.png used on input line 373. +(pdftex.def) Requested size: 252.0pt x 113.16261pt. +<./Figures/error_fig.png, id=21, 509.7444pt x 328.5876pt> +File: ./Figures/error_fig.png Graphic file (type png) + +Package pdftex.def Info: ./Figures/error_fig.png used on input line 381. +(pdftex.def) Requested size: 252.0pt x 162.44328pt. +[4 <./Figures/sys_dyn_matlab.png> <./Figures/error_fig.png (PNG copy)>] +(./main.bbl Underfull \hbox (badness 1490) in paragraph at lines 97--99 []\OT1/ptm/m/n/8 ------, ``lispbm in vesc,'' $https : / / github . com / vedder b / bldc / tree / master / @@ -492,35 +429,29 @@ Before submitting the final camera ready copy, remember to: uses only Type 1 fonts and that every step in the generation process uses the appropriate paper size. -[4 - -] (./main.aux) - -LaTeX Warning: There were undefined references. - - -LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. - - ) +[5] (./main.aux) ) Here is how much of TeX's memory you used: - 8270 strings out of 478287 - 179210 string characters out of 5849289 - 458734 words of memory out of 5000000 - 26390 multiletter control sequences out of 15000+600000 - 505668 words of font info for 98 fonts, out of 8000000 for 9000 + 8318 strings out of 478287 + 180456 string characters out of 5849289 + 457883 words of memory out of 5000000 + 26430 multiletter control sequences out of 15000+600000 + 505639 words of font info for 98 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 71i,8n,79p,227b,513s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} -Output written on main.pdf (4 pages, 111590 bytes). +{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc} +Output written on main.pdf (5 pages, 235480 bytes). PDF statistics: - 53 PDF objects out of 1000 (max. 8388607) - 32 compressed objects within 1 object stream + 75 PDF objects out of 1000 (max. 8388607) + 44 compressed objects within 1 object stream 0 named destinations out of 1000 (max. 500000) - 1 words of extra memory for PDF output out of 10000 (max. 10000000) + 11 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Article_Scientifique/main.pdf b/Article_Scientifique/main.pdf index 0241104..89ece0e 100644 Binary files a/Article_Scientifique/main.pdf and b/Article_Scientifique/main.pdf differ diff --git a/Article_Scientifique/main.tex b/Article_Scientifique/main.tex index b29854e..37758f2 100644 --- a/Article_Scientifique/main.tex +++ b/Article_Scientifique/main.tex @@ -5,6 +5,7 @@ \usepackage{amsmath,amssymb,amsfonts} \usepackage{algorithmic} \usepackage{url} +\usepackage{placeins} \usepackage{siunitx} \usepackage{graphicx} \usepackage{textcomp} @@ -71,15 +72,15 @@ taban@insa-toulouse.fr} Electric bikes are becoming an increasingly attractive solution for transporting goods between short distances, especially in city-wide infrastructures. However, most commercially available controllers rely on complex integrated circuits making repair and local manufacturing difficult, particularly for organisations operating in -resource-constrained or low-tech environments. La Manufacture Autonome Décentralisée (LaMAD) is developing products +resource-constrained or low-tech environments. The Manufacture Autonome Décentralisée (MAD) is developing products and solutions, particularly e-bikes, which are more repairable and sustainable. Previous studies have predominantly focused on performance optimisation of Field Oriented Control (FOC) and trapezoidal commutation strategies, with limited attention to repairability, component sourcing, and community-centred sustainability criteria. This project aims to design, assemble, and develop a functional, low-tech and open-source motor controller for electric cargo bikes. The current model uses an open-source motor control called VESC (Vedder Electronic Speed Controller) that allows precise control of electric motors. The controller needs to be compatible with a VESC controller and easily locally repairable -by LaMAD. By exploring the inner workings of the VESC project, modelling of the physical systems and the Printed Circuit - Board, PCB, we investigated the ways we could do it in another way. We acquired a VESC controller to compare our system +by the MAD. By exploring the inner workings of the VESC project, modelling of the physical systems and the Printed Circuit + Board (PCB) we investigated the ways we could do it in another way. We acquired a VESC controller to compare our system and a commercial product. Preliminary results demonstrate that the adapted VESC-based controller successfully drives the target motor under both commutation strategies, and that positional control is achievable with the current hardware configuration. Security vulnerabilities related to open Bluetooth access were identified. These findings suggest that @@ -102,11 +103,13 @@ they often introduce vulnerabilities. Open-source projects, in particular, must developers with the need to secure the vehicle. We also argue the need for general public's safety when it comes to these bikes, as it could be a danger to the traffic. - This is especially true when it comes to vehicules carrying a substantial load. This needs to be considered by laMAD, + This is especially true when it comes to vehicules carrying a substantial load. This needs to be considered by the MAD, where their responsibility and control begins and ends. Should there be a difference between the firmware loaded on a - product from laMAD than what is publicly available? + product from the MAD than what is publicly available? +% ********************************************* RELATED WORK *********************************************************** + \section{Related Work} \subsection{Modeling of BLDC Motor} @@ -206,6 +209,13 @@ The objective is to minimize the perceived additional effort when towing a cargo PID-based (Proportional–Integral–Derivative) control strategy combined with distance sensing, allowing adaptive assistance based on system dynamics. +\section{Hardware-Based Six-Step Commutation Controller} + +\section{STM32-Based Field-Oriented Control Motor Drive} + + +% ************************************** SOFTWARE AND CONNECTIVITY ***************************************************** + \section{Software and Connectivity} \subsection{BLE Compatibility With the VESC} @@ -243,15 +253,15 @@ have in mind the maximum speed permitted and the power available to the motors. \subsubsection{LispBM extraction} We caugth word that the lisp code for the VESC used by Maillon mobility was easy to extract. By building an older firmware with the Maillon mobility software, we observed this by going to the lispBM tab and clicking read. It's up to -laMAD if they would like to reinforce this mechanism. A modification on a parameter and then clicking upload allowed -us to easily change the speed limit. This could bring up a public danger. This raises questions on the use of laMADs +the MAD if they would like to reinforce this mechanism. A modification on a parameter and then clicking upload allowed +us to easily change the speed limit. This could bring up a public danger. This raises questions on the use of the MAD's equipment which is in a traffic friendly manner. \subsubsection{LispBM Code} When we flashed newer firmware from the project made by Benjamin Vedder\cite{b1}, we also observed some difficulties in uploading the lispBM script taken from the one on firmware version 6.06. This could indicate that there needs to be further maintenance of the code in order to get the software up to speed. This needs to be documented better for someone - to continue the project. This could be a good investment for laMAD as well in the context of training for the people + to continue the project. This could be a good investment for the MAD as well in the context of training for the people working on the motor control part of the e-bike. This documentation could be as simple as referencing the relevant parts of the lispBM documentation \cite{b2} @@ -259,9 +269,9 @@ This documentation could be as simple as referencing the relevant parts of the l \subsubsection{Proposed Solution} This risk could be patched by developing a VESC application for the VESC controller or using a binary. This is a solution which is less open source, but which is make unlawful use of the material harder. The application could be -created using C and use an algorithm known by laMAD in order to securise the access to someone to change the parameters -only if they are laMAD certified personnel. This encryption would preferably be reduced to the most essential settings -in order to align with what our impression of the philosophy of laMAD would be. +created using C and use an algorithm known by the MAD in order to securise the access to someone to change the parameters +only if they are the MAD certified personnel. This encryption would preferably be reduced to the most essential settings +in order to align with what our impression of the philosophy of the MAD would be. @@ -272,20 +282,118 @@ summarise what we have learned for you and propose some additional work for the were the following: The lack of bluetooth capabilities. We did not have a module with BLE either. We had access to a HC-05 module, but that only allows for a normal bluetooth protocol and would require further work on a bridge to UART by using an esp8622 that we had as well. We propose that the next group has access to a VESC controller from the -beginning, as well as a motor we could control. This could be in cooperation with laMAD, as laMAD could propose +beginning, as well as a motor we could control. This could be in cooperation with the MAD, as the MAD could propose some models they're interested in. We also found that the information on the VESC is scattered around the internet. The ressources is also sometimes based on a debian-based linux system which adds more work for someone using another distribution of linux. This could hinder the implementation facility for new users. We struggeled particularly with the Qt packages for positioning and gamepad. We would therefore recommend the use of a debian-based linux system for the computer working with the VESC -for the laMAD associates. +for the the MAD associates. + + +% ************************************ DYNAMIC MODELLING *************************************************************** + +\section{Dynamic Modelling and Control of the Bicycle–Cargo System} + +\subsection{System Modelling and Simulation} + +The studied system consists of a bicycle towing a cargo cart through a rigid mechanical linkage. This link is only used +for steering guidance and does not contribute to the traction force. The main objective is to ensure that the rider +perceives minimal additional effort, such that the overall behaviour remains similar to riding a standard bicycle. + +From a control perspective, the rider provides a reference motion in terms of speed and position, while the cargo cart +is expected to follow this reference with minimal delay. The position error between the bicycle and the cargo cart is +computed using a distance sensor, which provides feedback relative to an equilibrium state. + +\subsubsection{Dynamic Modelling} + +The cargo cart is modelled as the plant of the system. Its rotational dynamics are described using the fundamental +equation of rotational motion: + +\begin{equation*} +\sum \tau = J_{\Delta} \times \dot{\omega} +\end{equation*} +where $\tau$ is the total torque applied to the system, $J_{\Delta}$ is the equivalent moment of inertia, and $\omega$ +is the angular velocity. + +The total torque is composed of the motor torque $\tau_m$ and a friction torque modelled as: + +\begin{equation*} +\tau_f = -f \times \omega +\end{equation*} +where $f$ is the viscous friction coefficient. + +The resulting dynamic equation becomes: + +\begin{equation*} +J_{\Delta} \dot{\omega} = \tau_m - f \omega +\end{equation*} + +In the Laplace domain, this leads to: +\begin{equation*} +\omega(s) = \frac{\tau_m(s)}{J_{\Delta} s + f} +\end{equation*} + +Since the linear velocity is related to angular velocity by the wheel radius $R$, we obtain: + +\begin{equation*} +v(s) = R \times \omega(s) +\end{equation*} + +Thus, the transfer function between motor torque and linear velocity is: +\begin{equation*} +\frac{v(s)}{\tau_m(s)} = \frac{R}{J_{\Delta} s + f} +\end{equation*} + + +\subsubsection{Simulation and Control} + +Based on this model, a Simulink representation of the system was developed. The controlled system includes a feedback +loop using a PI controller in order to regulate the position error between the bicycle and the cargo cart. + +Since the reference input is a ramp signal (representing the bicycle position over time), an integral action is required +to ensure zero steady-state error and accurate tracking of the reference trajectory. + +The closed-loop Simulink model of the system is shown in Fig.~\ref{fig:simulink_closedloop}. + +The control error is defined as the difference between a desired relative position and the measured displacement between +the bicycle and the cargo cart: +\begin{equation*} + e(t) = e_{\text{ref}} - (x_{\text{bike}} - x_{\text{cart}}) +\end{equation*} +where $e_{\text{ref}} = \SI{-0.5}{\meter}$ represents the desired equilibrium offset between both systems. +The resulting position error between the bicycle and the cargo cart is shown in Fig.~\ref{fig:tracking_error}. + +\FloatBarrier + +\begin{figure}[!h] + + \centering + \includegraphics[width=\linewidth]{./Figures/sys_dyn_matlab.png} + \caption{Closed-loop model of the bicycle–cargo system with PI control.} + \label{fig:simulink_closedloop} + +\end{figure} + +\begin{figure}[!h] + \centering + \includegraphics[width=\linewidth]{./Figures/error_fig.png} + \caption{Position tracking error between bicycle and cargo cart.} + \label{fig:tracking_error} +\end{figure} + +\subsection{Control Architecture Exploration} + +\subsection{Experimental Characterization Under Different Loads} + +% ******************************** DISCUSSION ************************************************************************** \section{Discussion} This project could be seen as an introduction to the VESC project for someone who don't know about it from beforehand, the challenges the new users face during setup, as well as a demand for clear expectations concerning documentation -on the subject. The project laMAD is leading should probably not be a fork of the project, as the project is still +on the subject. The project the MAD is leading should probably not be a fork of the project, as the project is still in development. As a final note, this proved to be a project which could easily be developed into several different projects in @@ -333,12 +441,21 @@ impose a tripping hazard. There, an encapsulation of an encrypted control frame \section*{Acknowledgment} -The preferred spelling of the word ``acknowledgment'' in America is without -an ``e'' after the ``g''. Avoid the stilted expression ``one of us (R. B. -G.) thanks $\ldots$''. Instead, try ``R. B. G. thanks$\ldots$''. Put sponsor -acknowledgments in the unnumbered footnote on the first page. +The authors acknowledge the use of generative AI tools during this project, both for the development work and for +writing this paper. -%\section*{References} +AI was used as a helper in several parts of the project. This includes support for understanding and structuring +technical ideas, and giving suggestions during the development of different subsystems. It was also used to help with +writing, rephrasing, and improving clarity in the report. + +However, all final decisions, implementations, and validations were done by the authors. The AI outputs were always +checked, corrected when needed, and adapted based on reliable technical sources and our own experiments and +understanding of the system. + +We consider AI as a useful tool to speed up thinking and writing, but not as a source of final technical truth. +Everything related to design choices, analysis, and results was verified and fully controlled by the authors. + +The use of AI tools in this work follows the IEEE guidelines for generative AI usage in publications. %Please number citations consecutively within brackets \cite{b1}. The %sentence punctuation follows the bracket \cite{b2}. Refer simply to the reference