ajout travail hugo

This commit is contained in:
Nolan Reynier Nomer 2026-05-13 19:49:47 +02:00
parent 694a067188
commit e806bc1ef5
5 changed files with 402 additions and 151 deletions

View file

@ -21,6 +21,7 @@
\citation{mohammd_taher_new_2021}
\@writefile{toc}{\contentsline {section}{\numberline {I}Introduction}{1}{section.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {II}Related Work}{1}{section.2}\protected@file@percent }
\newlabel{sec:relatedwork}{{II}{1}{Related Work}{section.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {II-A}}Modeling of BLDC Motor}{1}{subsection.2.1}\protected@file@percent }
\citation{gieras_modern_2023}
\citation{gieras_modern_2023,gasc_conception_2004}
@ -46,42 +47,56 @@
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {II-D}4}Dynamic Response}{2}{subsubsection.2.4.4}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {III}Research gap}{2}{section.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {IV}Aim and Research Objectives}{2}{section.4}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {V}Hardware-Based Six-Step Commutation Controller}{2}{section.5}\protected@file@percent }
\newlabel{sec:sixstep}{{V}{2}{Hardware-Based Six-Step Commutation Controller}{section.5}{}}
\@writefile{toc}{\contentsline {section}{\numberline {VI}STM32-Based Field-Oriented Control Motor Drive}{2}{section.6}\protected@file@percent }
\newlabel{sec:foc}{{VI}{2}{STM32-Based Field-Oriented Control Motor Drive}{section.6}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-A}}Choice of FOC Over Trapezoidal Commutation}{3}{subsection.6.1}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {I}{\ignorespaces Comparison between FOC and trapezoidal (six-step) commutation}}{3}{table.1}\protected@file@percent }
\newlabel{tab:foc_vs_trap}{{I}{3}{Comparison between FOC and trapezoidal (six-step) commutation}{table.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-B}}Base Design: Cheap FOCer-2 Project}{3}{subsection.6.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-C}}Integration of the Rocacher FOC Tile}{3}{subsection.6.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-D}}Pin Compatibility Verification: L476 vs F405}{3}{subsection.6.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-E}}Schematic Design and KiCad Implementation}{3}{subsection.6.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-F}}Routing Challenges and Current Status}{3}{subsection.6.6}\protected@file@percent }
\citation{b1}
\citation{b1}
\citation{b2}
\@writefile{toc}{\contentsline {section}{\numberline {V}Hardware-Based Six-Step Commutation Controller}{3}{section.5}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {VI}STM32-Based Field-Oriented Control Motor Drive}{3}{section.6}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {VII}Software and Connectivity}{3}{section.7}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-A}}BLE Compatibility With the VESC}{3}{subsection.7.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}1}First Experiment}{3}{subsubsection.7.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}2}HC-05 and the VESC}{3}{subsubsection.7.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}3}BLE Vulnerability}{3}{subsubsection.7.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-B}}Code integrity}{3}{subsection.7.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}1}Context}{3}{subsubsection.7.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}2}LispBM extraction}{3}{subsubsection.7.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}3}LispBM Code}{3}{subsubsection.7.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}4}Proposed Solution}{3}{subsubsection.7.2.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-C}}VESC Compiling}{3}{subsection.7.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {VIII}Dynamic Modelling and Control of the BicycleCargo System}{3}{section.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-A}}Dynamic System Modelling}{3}{subsection.8.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-B}}PI-Based Control Strategy}{4}{subsection.8.2}\protected@file@percent }
\newlabel{subsec:Simulink_model}{{\mbox {VIII-B}}{4}{PI-Based Control Strategy}{subsection.8.2}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Closed-loop model of the bicyclecargo system with PI control.}}{4}{figure.1}\protected@file@percent }
\newlabel{fig:simulink-closedloop}{{1}{4}{Closed-loop model of the bicyclecargo system with PI control}{figure.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-C}}Control Architecture Exploration}{4}{subsection.8.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {IX}Results}{4}{section.9}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IX-A}}Bicycle-Cargo System Control Results}{4}{subsection.9.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-A}1}Simulation Results}{4}{subsubsection.9.1.1}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Position tracking error between bicycle and cargo cart.}}{4}{figure.2}\protected@file@percent }
\newlabel{fig:tracking-error}{{2}{4}{Position tracking error between bicycle and cargo cart}{figure.2}{}}
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-A}2}Experimental Load Characterization}{4}{subsubsection.9.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {VII}Software and Connectivity}{4}{section.7}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-A}}BLE Compatibility With the VESC}{4}{subsection.7.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}1}First Experiment}{4}{subsubsection.7.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}2}HC-05 and the VESC}{4}{subsubsection.7.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-A}3}BLE Vulnerability}{4}{subsubsection.7.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-B}}Code integrity}{4}{subsection.7.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}1}Context}{4}{subsubsection.7.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}2}LispBM extraction}{4}{subsubsection.7.2.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}3}LispBM Code}{4}{subsubsection.7.2.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {VII-B}4}Proposed Solution}{4}{subsubsection.7.2.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VII-C}}VESC Compiling}{4}{subsection.7.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {VIII}Dynamic Modelling and Control of the Bicycle-Cargo System}{4}{section.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-A}}Dynamic System Modelling}{4}{subsection.8.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-B}}PI-Based Control Strategy}{5}{subsection.8.2}\protected@file@percent }
\newlabel{subsec:Simulink_model}{{\mbox {VIII-B}}{5}{PI-Based Control Strategy}{subsection.8.2}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Closed-loop model of the bicycle-cargo system with PI control.}}{5}{figure.1}\protected@file@percent }
\newlabel{fig:simulink-closedloop}{{1}{5}{Closed-loop model of the bicycle-cargo system with PI control}{figure.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VIII-C}}Control Architecture Exploration}{5}{subsection.8.3}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {IX}Results}{5}{section.9}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IX-A}}FOC Controller Validation}{5}{subsection.9.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-A}1}Current Status Summary}{5}{subsubsection.9.1.1}\protected@file@percent }
\@writefile{lot}{\contentsline {table}{\numberline {II}{\ignorespaces FOC controller development status}}{5}{table.2}\protected@file@percent }
\newlabel{tab:foc_status}{{II}{5}{FOC controller development status}{table.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {IX-B}}Bicycle-Cargo System Control Results}{5}{subsection.9.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-B}1}Simulation Results}{5}{subsubsection.9.2.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {IX-B}2}Experimental Load Characterization}{5}{subsubsection.9.2.2}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Position tracking error between bicycle and cargo cart.}}{6}{figure.2}\protected@file@percent }
\newlabel{fig:tracking-error}{{2}{6}{Position tracking error between bicycle and cargo cart}{figure.2}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Measured motor current under three loading conditions.}}{6}{figure.3}\protected@file@percent }
\newlabel{fig:motor-currents}{{3}{6}{Measured motor current under three loading conditions}{figure.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {X}Discussion}{6}{section.10}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {XI}Perspectives and Future Work}{6}{section.11}\protected@file@percent }
\bibstyle{IEEEtran}
\bibdata{PIR_MadMax3}
\bibcite{patil_analysis_2025}{1}
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces Measured motor current under three loading conditions.}}{5}{figure.3}\protected@file@percent }
\newlabel{fig:motor-currents}{{3}{5}{Measured motor current under three loading conditions}{figure.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {X}Discussion}{5}{section.10}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {XI}Conclusion/Summary}{5}{section.11}\protected@file@percent }
\bibcite{li_quantitative_2019}{2}
\bibcite{mohammd_taher_new_2021}{3}
\bibcite{gieras_modern_2023}{4}
@ -91,5 +106,7 @@
\bibcite{lee_advanced_2001}{8}
\bibcite{b1}{9}
\bibcite{b2}{10}
\@writefile{toc}{\contentsline {section}{References}{6}{section*.2}\protected@file@percent }
\gdef \@abspage@last{6}
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {XI-A}}Hardware Completion and Testing}{7}{subsection.11.1}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {XII}Conclusion/Summary}{7}{section.12}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{References}{7}{section*.3}\protected@file@percent }
\gdef \@abspage@last{7}

View file

@ -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) 13 MAY 2026 18:32
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2022/dev/Debian) (preloaded format=pdflatex 2026.3.16) 13 MAY 2026 19:48
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@ -343,12 +343,32 @@ Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
(/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/booktabs/booktabs.sty
Package: booktabs 2020/01/12 v1.61803398 Publication quality tables
\heavyrulewidth=\dimen175
\lightrulewidth=\dimen176
\cmidrulewidth=\dimen177
\belowrulesep=\dimen178
\belowbottomsep=\dimen179
\aboverulesep=\dimen180
\abovetopsep=\dimen181
\cmidrulesep=\dimen182
\cmidrulekern=\dimen183
\defaultaddspace=\dimen184
\@cmidla=\count292
\@cmidlb=\count293
\@aboverulesep=\dimen185
\@belowrulesep=\dimen186
\@thisruleclass=\count294
\@lastruleclass=\count295
\@thisrulewidth=\dimen187
)
(/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=\dimen175
\l__siunitx_angle_tmp_dim=\dimen188
\l__siunitx_angle_marker_box=\box54
\l__siunitx_angle_unit_box=\box55
\l__siunitx_compound_count_int=\count292
\l__siunitx_compound_count_int=\count296
(/usr/share/texlive/texmf-dist/tex/latex/translations/translations.sty
Package: translations 2022/01/04 v1.11 internationalization of LaTeX2e packages
@ -356,25 +376,25 @@ Package: translations 2022/01/04 v1.11 internationalization of LaTeX2e packages
(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty
Package: etoolbox 2020/10/05 v2.5k e-TeX tools for LaTeX (JAW)
\etb@tempcnta=\count293
\etb@tempcnta=\count297
))
\l__siunitx_number_exponent_fixed_int=\count294
\l__siunitx_number_min_decimal_int=\count295
\l__siunitx_number_min_integer_int=\count296
\l__siunitx_number_round_precision_int=\count297
\l__siunitx_number_group_minimum_int=\count298
\l__siunitx_number_exponent_fixed_int=\count298
\l__siunitx_number_min_decimal_int=\count299
\l__siunitx_number_min_integer_int=\count300
\l__siunitx_number_round_precision_int=\count301
\l__siunitx_number_group_minimum_int=\count302
\l__siunitx_table_tmp_box=\box56
\l__siunitx_table_tmp_dim=\dimen176
\l__siunitx_table_column_width_dim=\dimen177
\l__siunitx_table_tmp_dim=\dimen189
\l__siunitx_table_column_width_dim=\dimen190
\l__siunitx_table_integer_box=\box57
\l__siunitx_table_decimal_box=\box58
\l__siunitx_table_before_box=\box59
\l__siunitx_table_after_box=\box60
\l__siunitx_table_before_dim=\dimen178
\l__siunitx_table_carry_dim=\dimen179
\l__siunitx_unit_tmp_int=\count299
\l__siunitx_unit_position_int=\count300
\l__siunitx_unit_total_int=\count301
\l__siunitx_table_before_dim=\dimen191
\l__siunitx_table_carry_dim=\dimen192
\l__siunitx_unit_tmp_int=\count303
\l__siunitx_unit_position_int=\count304
\l__siunitx_unit_total_int=\count305
(/usr/share/texlive/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
(/usr/share/texlive/texmf-dist/tex/latex/l3kernel/expl3.sty
@ -382,16 +402,16 @@ Package: expl3 2022-01-21 L3 programming layer (loader)
(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
File: l3backend-pdftex.def 2022-01-12 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count302
\l__color_backend_stack_int=\count306
\l__pdf_internal_box=\box61
))
Package: l3keys2e 2022-01-12 LaTeX2e option processing using LaTeX3 keys
)
(/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty
Package: array 2021/10/04 v2.5f Tabular extension package (FMi)
\col@sep=\dimen180
\col@sep=\dimen193
\ar@mcellbox=\box62
\extrarowheight=\dimen181
\extrarowheight=\dimen194
\NC@list=\toks23
\extratabsurround=\skip56
\backup@length=\skip57
@ -414,8 +434,8 @@ Package graphics Info: Driver file: pdftex.def on input line 107.
(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
))
\Gin@req@height=\dimen182
\Gin@req@width=\dimen183
\Gin@req@height=\dimen195
\Gin@req@width=\dimen196
)
(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty
Package: textcomp 2020/02/02 v2.0n Standard LaTeX package
@ -438,31 +458,31 @@ 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 18.
h' as default language. on input line 19.
(./main.aux)
\openout1 = `main.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 19.
LaTeX Font Info: ... okay on input line 19.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 19.
LaTeX Font Info: ... okay on input line 19.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 19.
LaTeX Font Info: ... okay on input line 19.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 19.
LaTeX Font Info: ... okay on input line 19.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 19.
LaTeX Font Info: ... okay on input line 19.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 19.
LaTeX Font Info: ... okay on input line 19.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 19.
LaTeX Font Info: ... okay on input line 19.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 19.
LaTeX Font Info: ... okay on input line 19.
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 19.
LaTeX Font Info: ... okay on input line 19.
-- Lines per column: 56 (exact).
Package hyperref Info: Link coloring OFF on input line 18.
Package hyperref Info: Link coloring OFF on input line 19.
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2021-04-02 v2.47 Cross-referencing by name of section
@ -472,11 +492,11 @@ Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
)
\c@section@level=\count303
\c@section@level=\count307
)
LaTeX Info: Redefining \ref on input line 18.
LaTeX Info: Redefining \pageref on input line 18.
LaTeX Info: Redefining \nameref on input line 18.
LaTeX Info: Redefining \ref on input line 19.
LaTeX Info: Redefining \pageref on input line 19.
LaTeX Info: Redefining \nameref on input line 19.
(./main.out) (./main.out)
\@outlinefile=\write3
@ -489,20 +509,20 @@ 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 18.
or `english'. on input line 19.
(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count304
\scratchdimen=\dimen184
\scratchcounter=\count308
\scratchdimen=\dimen197
\scratchbox=\box64
\nofMPsegments=\count305
\nofMParguments=\count306
\nofMPsegments=\count309
\nofMParguments=\count310
\everyMPshowfont=\toks24
\MPscratchCnt=\count307
\MPscratchDim=\dimen185
\MPnumerator=\count308
\makeMPintoPDFobject=\count309
\MPscratchCnt=\count311
\MPscratchDim=\dimen198
\MPnumerator=\count312
\makeMPintoPDFobject=\count313
\everyMPtoPDFconversion=\toks25
) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
@ -513,13 +533,13 @@ 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 Font Info: Trying to load font information for U+msa on input line 122
LaTeX Font Info: Trying to load font information for U+msa on input line 124
.
(/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 122
LaTeX Font Info: Trying to load font information for U+msb on input line 124
.
(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd
@ -527,29 +547,29 @@ File: umsb.fd 2013/01/14 v3.01 AMS symbols B
) [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}
]
Underfull \vbox (badness 1354) has occurred while \output is active []
[2]
[3]
<./Figures/sys_dyn_matlab.png, id=202, 430.2474pt x 226.6869pt>
] [2] [3] [4]
<./Figures/sys_dyn_matlab.png, id=253, 430.2474pt x 226.6869pt>
File: ./Figures/sys_dyn_matlab.png Graphic file (type png)
<use ./Figures/sys_dyn_matlab.png>
Package pdftex.def Info: ./Figures/sys_dyn_matlab.png used on input line 373.
Package pdftex.def Info: ./Figures/sys_dyn_matlab.png used on input line 517.
(pdftex.def) Requested size: 252.0pt x 132.77559pt.
<./Figures/error_fig.png, id=206, 509.7444pt x 328.5876pt>
<./Figures/error_fig.png, id=258, 509.7444pt x 328.5876pt>
File: ./Figures/error_fig.png Graphic file (type png)
<use ./Figures/error_fig.png>
Package pdftex.def Info: ./Figures/error_fig.png used on input line 399.
Package pdftex.def Info: ./Figures/error_fig.png used on input line 570.
(pdftex.def) Requested size: 252.0pt x 162.44328pt.
[4 <./Figures/sys_dyn_matlab.png> <./Figures/error_fig.png (PNG copy)>]
<./Figures/Motor_currents.png, id=218, 499.6266pt x 328.1058pt>
LaTeX Warning: `!h' float specifier changed to `!ht'.
[5 <./Figures/sys_dyn_matlab.png>]
<./Figures/Motor_currents.png, id=271, 499.6266pt x 328.1058pt>
File: ./Figures/Motor_currents.png Graphic file (type png)
<use ./Figures/Motor_currents.png>
Package pdftex.def Info: ./Figures/Motor_currents.png used on input line 421.
Package pdftex.def Info: ./Figures/Motor_currents.png used on input line 592.
(pdftex.def) Requested size: 252.0pt x 165.48434pt.
(./main.bbl [5 <./Figures/Motor_currents.png (PNG copy)>]
[6 <./Figures/error_fig.png (PNG copy)> <./Figures/Motor_currents.png (PNG cop
y)>] (./main.bbl
Underfull \hbox (badness 1490) in paragraph at lines 97--99
[]\OT1/ptm/m/n/8 ------, ``lispbm in vesc,'' []$https : / / github . com / vedd
erb / bldc / tree / master /
@ -567,34 +587,35 @@ 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.
[6
] (./main.aux)
[7] (./main.aux)
Package rerunfilecheck Info: File `main.out' has not changed.
(rerunfilecheck) Checksum: 4840E35989685C6A900816FED622AB01;6851.
(rerunfilecheck) Checksum: D428FCA31372168544B7CCCCB9675B0D;9238.
)
Here is how much of TeX's memory you used:
14802 strings out of 478287
281591 string characters out of 5849289
566416 words of memory out of 5000000
32767 multiletter control sequences out of 15000+600000
505639 words of font info for 98 fonts, out of 8000000 for 9000
14909 strings out of 478287
283324 string characters out of 5849289
567540 words of memory out of 5000000
32854 multiletter control sequences out of 15000+600000
508470 words of font info for 101 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
70i,8n,79p,470b,903s stack positions out of 5000i,500n,10000p,200000b,80000s
70i,10n,79p,470b,753s stack positions out of 5000i,500n,10000p,200000b,80000s
{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc}</usr/share/texliv
e/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb></usr/share/texlive/texm
f-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texmf-dist
/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/share/texlive/texmf-dist/fonts/
type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/am
sfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8
a.pfb></usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmbi8a.pfb></usr/sh
are/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb></usr/share/texlive/tex
mf-dist/fonts/type1/urw/times/utmri8a.pfb>
Output written on main.pdf (6 pages, 315176 bytes).
type1/public/amsfonts/cm/cmmi8.pfb></usr/share/texlive/texmf-dist/fonts/type1/p
ublic/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/a
msfonts/cm/cmr7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/
cm/cmr8.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy1
0.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb><
/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb></usr/share/texl
ive/texmf-dist/fonts/type1/urw/times/utmbi8a.pfb></usr/share/texlive/texmf-dist
/fonts/type1/urw/times/utmr8a.pfb></usr/share/texlive/texmf-dist/fonts/type1/ur
w/times/utmri8a.pfb>
Output written on main.pdf (7 pages, 348626 bytes).
PDF statistics:
301 PDF objects out of 1000 (max. 8388607)
266 compressed objects within 3 object streams
57 named destinations out of 1000 (max. 500000)
304 words of extra memory for PDF output out of 10000 (max. 10000000)
372 PDF objects out of 1000 (max. 8388607)
329 compressed objects within 4 object streams
71 named destinations out of 1000 (max. 500000)
384 words of extra memory for PDF output out of 10000 (max. 10000000)

View file

@ -12,25 +12,35 @@
\BOOKMARK [1][-]{section.4}{\376\377\000A\000i\000m\000\040\000a\000n\000d\000\040\000R\000e\000s\000e\000a\000r\000c\000h\000\040\000O\000b\000j\000e\000c\000t\000i\000v\000e\000s}{}% 12
\BOOKMARK [1][-]{section.5}{\376\377\000H\000a\000r\000d\000w\000a\000r\000e\000-\000B\000a\000s\000e\000d\000\040\000S\000i\000x\000-\000S\000t\000e\000p\000\040\000C\000o\000m\000m\000u\000t\000a\000t\000i\000o\000n\000\040\000C\000o\000n\000t\000r\000o\000l\000l\000e\000r}{}% 13
\BOOKMARK [1][-]{section.6}{\376\377\000S\000T\000M\0003\0002\000-\000B\000a\000s\000e\000d\000\040\000F\000i\000e\000l\000d\000-\000O\000r\000i\000e\000n\000t\000e\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000M\000o\000t\000o\000r\000\040\000D\000r\000i\000v\000e}{}% 14
\BOOKMARK [1][-]{section.7}{\376\377\000S\000o\000f\000t\000w\000a\000r\000e\000\040\000a\000n\000d\000\040\000C\000o\000n\000n\000e\000c\000t\000i\000v\000i\000t\000y}{}% 15
\BOOKMARK [2][-]{subsection.7.1}{\376\377\000B\000L\000E\000\040\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000W\000i\000t\000h\000\040\000t\000h\000e\000\040\000V\000E\000S\000C}{section.7}% 16
\BOOKMARK [3][-]{subsubsection.7.1.1}{\376\377\000F\000i\000r\000s\000t\000\040\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t}{subsection.7.1}% 17
\BOOKMARK [3][-]{subsubsection.7.1.2}{\376\377\000H\000C\000-\0000\0005\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000V\000E\000S\000C}{subsection.7.1}% 18
\BOOKMARK [3][-]{subsubsection.7.1.3}{\376\377\000B\000L\000E\000\040\000V\000u\000l\000n\000e\000r\000a\000b\000i\000l\000i\000t\000y}{subsection.7.1}% 19
\BOOKMARK [2][-]{subsection.7.2}{\376\377\000C\000o\000d\000e\000\040\000i\000n\000t\000e\000g\000r\000i\000t\000y}{section.7}% 20
\BOOKMARK [3][-]{subsubsection.7.2.1}{\376\377\000C\000o\000n\000t\000e\000x\000t}{subsection.7.2}% 21
\BOOKMARK [3][-]{subsubsection.7.2.2}{\376\377\000L\000i\000s\000p\000B\000M\000\040\000e\000x\000t\000r\000a\000c\000t\000i\000o\000n}{subsection.7.2}% 22
\BOOKMARK [3][-]{subsubsection.7.2.3}{\376\377\000L\000i\000s\000p\000B\000M\000\040\000C\000o\000d\000e}{subsection.7.2}% 23
\BOOKMARK [3][-]{subsubsection.7.2.4}{\376\377\000P\000r\000o\000p\000o\000s\000e\000d\000\040\000S\000o\000l\000u\000t\000i\000o\000n}{subsection.7.2}% 24
\BOOKMARK [2][-]{subsection.7.3}{\376\377\000V\000E\000S\000C\000\040\000C\000o\000m\000p\000i\000l\000i\000n\000g}{section.7}% 25
\BOOKMARK [1][-]{section.8}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000M\000o\000d\000e\000l\000l\000i\000n\000g\000\040\000a\000n\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000o\000f\000\040\000t\000h\000e\000\040\000B\000i\000c\000y\000c\000l\000e\040\023\000C\000a\000r\000g\000o\000\040\000S\000y\000s\000t\000e\000m}{}% 26
\BOOKMARK [2][-]{subsection.8.1}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000S\000y\000s\000t\000e\000m\000\040\000M\000o\000d\000e\000l\000l\000i\000n\000g}{section.8}% 27
\BOOKMARK [2][-]{subsection.8.2}{\376\377\000P\000I\000-\000B\000a\000s\000e\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000S\000t\000r\000a\000t\000e\000g\000y}{section.8}% 28
\BOOKMARK [2][-]{subsection.8.3}{\376\377\000C\000o\000n\000t\000r\000o\000l\000\040\000A\000r\000c\000h\000i\000t\000e\000c\000t\000u\000r\000e\000\040\000E\000x\000p\000l\000o\000r\000a\000t\000i\000o\000n}{section.8}% 29
\BOOKMARK [1][-]{section.9}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 30
\BOOKMARK [2][-]{subsection.9.1}{\376\377\000B\000i\000c\000y\000c\000l\000e\000-\000C\000a\000r\000g\000o\000\040\000S\000y\000s\000t\000e\000m\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000R\000e\000s\000u\000l\000t\000s}{section.9}% 31
\BOOKMARK [3][-]{subsubsection.9.1.1}{\376\377\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000\040\000R\000e\000s\000u\000l\000t\000s}{subsection.9.1}% 32
\BOOKMARK [3][-]{subsubsection.9.1.2}{\376\377\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t\000a\000l\000\040\000L\000o\000a\000d\000\040\000C\000h\000a\000r\000a\000c\000t\000e\000r\000i\000z\000a\000t\000i\000o\000n}{subsection.9.1}% 33
\BOOKMARK [1][-]{section.10}{\376\377\000D\000i\000s\000c\000u\000s\000s\000i\000o\000n}{}% 34
\BOOKMARK [1][-]{section.11}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000/\000S\000u\000m\000m\000a\000r\000y}{}% 35
\BOOKMARK [1][-]{section*.2}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 36
\BOOKMARK [2][-]{subsection.6.1}{\376\377\000C\000h\000o\000i\000c\000e\000\040\000o\000f\000\040\000F\000O\000C\000\040\000O\000v\000e\000r\000\040\000T\000r\000a\000p\000e\000z\000o\000i\000d\000a\000l\000\040\000C\000o\000m\000m\000u\000t\000a\000t\000i\000o\000n}{section.6}% 15
\BOOKMARK [2][-]{subsection.6.2}{\376\377\000B\000a\000s\000e\000\040\000D\000e\000s\000i\000g\000n\000:\000\040\000C\000h\000e\000a\000p\000\040\000F\000O\000C\000e\000r\000-\0002\000\040\000P\000r\000o\000j\000e\000c\000t}{section.6}% 16
\BOOKMARK [2][-]{subsection.6.3}{\376\377\000I\000n\000t\000e\000g\000r\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000t\000h\000e\000\040\000R\000o\000c\000a\000c\000h\000e\000r\000\040\000F\000O\000C\000\040\000T\000i\000l\000e}{section.6}% 17
\BOOKMARK [2][-]{subsection.6.4}{\376\377\000P\000i\000n\000\040\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000V\000e\000r\000i\000f\000i\000c\000a\000t\000i\000o\000n\000:\000\040\000L\0004\0007\0006\000\040\000v\000s\000\040\000F\0004\0000\0005}{section.6}% 18
\BOOKMARK [2][-]{subsection.6.5}{\376\377\000S\000c\000h\000e\000m\000a\000t\000i\000c\000\040\000D\000e\000s\000i\000g\000n\000\040\000a\000n\000d\000\040\000K\000i\000C\000a\000d\000\040\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n}{section.6}% 19
\BOOKMARK [2][-]{subsection.6.6}{\376\377\000R\000o\000u\000t\000i\000n\000g\000\040\000C\000h\000a\000l\000l\000e\000n\000g\000e\000s\000\040\000a\000n\000d\000\040\000C\000u\000r\000r\000e\000n\000t\000\040\000S\000t\000a\000t\000u\000s}{section.6}% 20
\BOOKMARK [1][-]{section.7}{\376\377\000S\000o\000f\000t\000w\000a\000r\000e\000\040\000a\000n\000d\000\040\000C\000o\000n\000n\000e\000c\000t\000i\000v\000i\000t\000y}{}% 21
\BOOKMARK [2][-]{subsection.7.1}{\376\377\000B\000L\000E\000\040\000C\000o\000m\000p\000a\000t\000i\000b\000i\000l\000i\000t\000y\000\040\000W\000i\000t\000h\000\040\000t\000h\000e\000\040\000V\000E\000S\000C}{section.7}% 22
\BOOKMARK [3][-]{subsubsection.7.1.1}{\376\377\000F\000i\000r\000s\000t\000\040\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t}{subsection.7.1}% 23
\BOOKMARK [3][-]{subsubsection.7.1.2}{\376\377\000H\000C\000-\0000\0005\000\040\000a\000n\000d\000\040\000t\000h\000e\000\040\000V\000E\000S\000C}{subsection.7.1}% 24
\BOOKMARK [3][-]{subsubsection.7.1.3}{\376\377\000B\000L\000E\000\040\000V\000u\000l\000n\000e\000r\000a\000b\000i\000l\000i\000t\000y}{subsection.7.1}% 25
\BOOKMARK [2][-]{subsection.7.2}{\376\377\000C\000o\000d\000e\000\040\000i\000n\000t\000e\000g\000r\000i\000t\000y}{section.7}% 26
\BOOKMARK [3][-]{subsubsection.7.2.1}{\376\377\000C\000o\000n\000t\000e\000x\000t}{subsection.7.2}% 27
\BOOKMARK [3][-]{subsubsection.7.2.2}{\376\377\000L\000i\000s\000p\000B\000M\000\040\000e\000x\000t\000r\000a\000c\000t\000i\000o\000n}{subsection.7.2}% 28
\BOOKMARK [3][-]{subsubsection.7.2.3}{\376\377\000L\000i\000s\000p\000B\000M\000\040\000C\000o\000d\000e}{subsection.7.2}% 29
\BOOKMARK [3][-]{subsubsection.7.2.4}{\376\377\000P\000r\000o\000p\000o\000s\000e\000d\000\040\000S\000o\000l\000u\000t\000i\000o\000n}{subsection.7.2}% 30
\BOOKMARK [2][-]{subsection.7.3}{\376\377\000V\000E\000S\000C\000\040\000C\000o\000m\000p\000i\000l\000i\000n\000g}{section.7}% 31
\BOOKMARK [1][-]{section.8}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000M\000o\000d\000e\000l\000l\000i\000n\000g\000\040\000a\000n\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000o\000f\000\040\000t\000h\000e\000\040\000B\000i\000c\000y\000c\000l\000e\000-\000C\000a\000r\000g\000o\000\040\000S\000y\000s\000t\000e\000m}{}% 32
\BOOKMARK [2][-]{subsection.8.1}{\376\377\000D\000y\000n\000a\000m\000i\000c\000\040\000S\000y\000s\000t\000e\000m\000\040\000M\000o\000d\000e\000l\000l\000i\000n\000g}{section.8}% 33
\BOOKMARK [2][-]{subsection.8.2}{\376\377\000P\000I\000-\000B\000a\000s\000e\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000S\000t\000r\000a\000t\000e\000g\000y}{section.8}% 34
\BOOKMARK [2][-]{subsection.8.3}{\376\377\000C\000o\000n\000t\000r\000o\000l\000\040\000A\000r\000c\000h\000i\000t\000e\000c\000t\000u\000r\000e\000\040\000E\000x\000p\000l\000o\000r\000a\000t\000i\000o\000n}{section.8}% 35
\BOOKMARK [1][-]{section.9}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 36
\BOOKMARK [2][-]{subsection.9.1}{\376\377\000F\000O\000C\000\040\000C\000o\000n\000t\000r\000o\000l\000l\000e\000r\000\040\000V\000a\000l\000i\000d\000a\000t\000i\000o\000n}{section.9}% 37
\BOOKMARK [3][-]{subsubsection.9.1.1}{\376\377\000C\000u\000r\000r\000e\000n\000t\000\040\000S\000t\000a\000t\000u\000s\000\040\000S\000u\000m\000m\000a\000r\000y}{subsection.9.1}% 38
\BOOKMARK [2][-]{subsection.9.2}{\376\377\000B\000i\000c\000y\000c\000l\000e\000-\000C\000a\000r\000g\000o\000\040\000S\000y\000s\000t\000e\000m\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000R\000e\000s\000u\000l\000t\000s}{section.9}% 39
\BOOKMARK [3][-]{subsubsection.9.2.1}{\376\377\000S\000i\000m\000u\000l\000a\000t\000i\000o\000n\000\040\000R\000e\000s\000u\000l\000t\000s}{subsection.9.2}% 40
\BOOKMARK [3][-]{subsubsection.9.2.2}{\376\377\000E\000x\000p\000e\000r\000i\000m\000e\000n\000t\000a\000l\000\040\000L\000o\000a\000d\000\040\000C\000h\000a\000r\000a\000c\000t\000e\000r\000i\000z\000a\000t\000i\000o\000n}{subsection.9.2}% 41
\BOOKMARK [1][-]{section.10}{\376\377\000D\000i\000s\000c\000u\000s\000s\000i\000o\000n}{}% 42
\BOOKMARK [1][-]{section.11}{\376\377\000P\000e\000r\000s\000p\000e\000c\000t\000i\000v\000e\000s\000\040\000a\000n\000d\000\040\000F\000u\000t\000u\000r\000e\000\040\000W\000o\000r\000k}{}% 43
\BOOKMARK [2][-]{subsection.11.1}{\376\377\000H\000a\000r\000d\000w\000a\000r\000e\000\040\000C\000o\000m\000p\000l\000e\000t\000i\000o\000n\000\040\000a\000n\000d\000\040\000T\000e\000s\000t\000i\000n\000g}{section.11}% 44
\BOOKMARK [1][-]{section.12}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000/\000S\000u\000m\000m\000a\000r\000y}{}% 45
\BOOKMARK [1][-]{section*.3}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 46

Binary file not shown.

View file

@ -7,6 +7,7 @@
\usepackage{url}
\usepackage[hidelinks]{hyperref}
\usepackage{placeins}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{graphicx}
\usepackage{textcomp}
@ -112,6 +113,7 @@ We also argue the need for general public's safety when it comes to these bikes,
% ********************************************* RELATED WORK ***********************************************************
\section{Related Work}
\label{sec:relatedwork}
\subsection{Modeling of BLDC Motor}
The electromechanical model of a BLDC (Brushless DC) motor is foundational for understanding its behavior under different control
@ -206,19 +208,160 @@ Third, the security of the wireless communication interface is investigated, wit
vulnerabilities. A Flipper Zero device is used as a diagnostic tool to evaluate potential attack surfaces and identify
weaknesses in the communication layer.
Finally, a dynamic model of the bicyclecargo system is developed to improve rider experience.
Finally, a dynamic model of the bicycle-cargo system is developed to improve rider experience.
The objective is to minimize the perceived additional effort when towing a cargo cart. This is achieved through a
PID-based (ProportionalIntegralDerivative) control strategy combined with distance sensing, allowing adaptive
PID-based (Proportional-Integral-Derivative) control strategy combined with distance sensing, allowing adaptive
assistance based on system dynamics.
% ***************************** Hardware-Based Six-Step Commutation Controller ****************************************
\section{Hardware-Based Six-Step Commutation Controller}
\label{sec:sixstep}
% ***************************** STM32-Based Field-Oriented Control Motor Drive *****************************************
\section{STM32-Based Field-Oriented Control Motor Drive}
\label{sec:foc}
This section presents the design and implementation of a high-performance
motor controller based on Field-Oriented Control (FOC).
\subsection{Choice of FOC Over Trapezoidal Commutation}
Table~\ref{tab:foc_vs_trap} summarizes the key differences between the
two commutation strategies, based on the literature reviewed in
Section~\ref{sec:relatedwork}.
\begin{table}[htbp]
\caption{Comparison between FOC and trapezoidal (six-step) commutation}
\label{tab:foc_vs_trap}
\centering
\begin{tabular}{lcc}
\toprule
\textbf{Criterion} & \textbf{FOC} & \textbf{Six-Step} \\
\midrule
Torque ripple (at 500 rpm) & \SI{18.4}{\percent} & \SI{35.7}{\percent} \\
Low-load efficiency & High & Moderate \\
High-speed switching loss & Higher & Lower \\
Position sensor requirement & Encoder (high resolution) & Hall sensors \\
Implementation complexity & High & Low \\
Hardware cost & Higher & Lower \\
Dynamic response & Fast & Standard \\
\bottomrule
\end{tabular}
\end{table}
For our cargo bike application, rider comfort and smooth torque delivery
are priorities. FOC was therefore selected for the high-performance
controller, while a separate low-tech six-step board (Section~\ref{sec:sixstep})
was developed for repairability.
\subsection{Base Design: Cheap FOCer-2 Project}
The starting point was the open-source \textit{Cheap FOCer-2} project,
which provides a complete KiCad design for a VESC-compatible board based
on an STM32F405 microcontroller. This design includes:
\begin{itemize}
\item A three-phase MOSFET full-bridge power stage.
\item Gate drivers with built-in dead-time insertion.
\item Shunt resistors for phase current sensing.
\item USB and CAN interfaces.
\item An expansion header for encoder or Hall sensors.
\end{itemize}
The existing KiCad schematic and layout were used as the baseline for
our adaptations.
\subsection{Integration of the Rocacher FOC Tile}
Mr. Rocacher provided the Kicad schematic of a ready-to-use FOC tile based on an STM32L476
microcontroller.
The initial idea was to make this tile \textit{pluggable} into our
carrier board, similar to an Arduino shield. This would allow :
\begin{itemize}
\item Easy replacement of the computing core without re-soldering.
\item Modular upgrades of the microcontroller.
\item Simplified repair and maintenance.
\end{itemize}
However, the Cheap FOCer-2 project was not designed for such modularity.
Its routing is dense and highly optimized for a single, non-removable
F405 chip. Adapting it to accept an L476 tile while preserving all
critical functions (PWM, current sensing, USB communication) proved
challenging.
\subsection{Pin Compatibility Verification: L476 vs F405}
Before modifying the PCB, a thorough pin compatibility check was
performed between the STM32L476 and the STM32F405
(original Cheap FOCer-2 design). The following aspects were examined:
\begin{itemize}
\item Physical pinout in LQFP64 package.
\item Alternate functions for PWM timers.
\item USB DP/DM pins (PA11/PA12).
\item Analog inputs for current sensing.
\item UART for BLE communication.
\end{itemize}
Three pin conflicts were identified and resolved as follows.
First, the SPI\_MISO function on PA6 for the STM32F405 conflicts with a
DAC output on the same pin for the STM32L476 tile. Since this pin is
used for current sensing via SPI in the original Cheap FOCer-2 design,
the SPI communication was remapped to PA5 on the L476, which provides a
compatible alternate function.
Second, the gate driver enable signal (EN\_GATE) was originally assigned
to PB5 on the F405. This pin is not accessible on the L476
tile. The signal was therefore moved to PC5, which is available and
can be configured as a standard GPIO output.
Third, Hall sensor C was originally connected to PC8 (TIM8) on the F405.
This pin is not available on the L476 tile. The Hall sensor input was
therefore reassigned to PB3, configured as TIM2\_CH2, which provides
the necessary input capture functionality for Hall signal decoding.
All other critical functions (PWM timers, complementary PWM, enable
signals, encoder inputs, UART, USB, and CAN) remain fully compatible
between the two microcontrollers. The ADC channel differences between
the F405 (ADC123/ADC12) and the L476 (ADC3) must still be handled in
firmware, as noted previously.
\subsection{Schematic Design and KiCad Implementation}
The original Cheap FOCer-2 schematic was modified in KiCad to replace the
integrated F405 with connectors for the L476 tile. The main modifications
included:
\begin{itemize}
\item Removal of the F405 and its associated passive components.
\item Addition of two 20-pin headers to receive the Rocacher tile.
\item Re-routing of PWM, ADC, and USB signals to the headers.
\end{itemize}
The schematic passed Electrical Rule Check (ERC) with no errors.
\subsection{Routing Challenges and Current Status}
The PCB layout was then started. The original Cheap FOCer-2 routing is
very dense. Inserting connectors for the removable tile while maintaining signal integrity proved
difficult.
The main issues encountered were:
\begin{itemize}
\item Some footprints for the tile connectors did not appear correctly
in the layout after schematic import.
\item Routing of high-current paths (battery, motor phases) around the
connectors required additional vias, increasing resistance.
\item Decoupling capacitors had to be repositioned, raising concerns
about switching noise.
\end{itemize}
Currently, the schematic is validated, and the layout is under
development. Once routing is completed, the board will be manufactured
and tested with the VESC firmware adapted to the L476 tile.
% ************************************** SOFTWARE AND CONNECTIVITY *****************************************************
@ -304,8 +447,7 @@ for the the MAD associates.
% ************************************ DYNAMIC MODELLING ***************************************************************
\section{Dynamic Modelling and Control of the BicycleCargo System}
\section{Dynamic Modelling and Control of the Bicycle-Cargo System}
\subsection{Dynamic System Modelling}
The studied system consists of a bicycle towing a cargo cart through a rigid mechanical linkage. This link is only used
@ -376,7 +518,7 @@ where $e_{\text{ref}} = \SI{-0.5}{\meter}$ represents the desired equilibrium of
\centering
\includegraphics[width=\linewidth]{./Figures/sys_dyn_matlab.png}
\caption{Closed-loop model of the bicyclecargo system with PI control.}
\caption{Closed-loop model of the bicycle-cargo system with PI control.}
\label{fig:simulink-closedloop}
\end{figure}
@ -390,6 +532,33 @@ where $e_{\text{ref}} = \SI{-0.5}{\meter}$ represents the desired equilibrium of
\section{Results}
\subsection{FOC Controller Validation}
\subsubsection{Current Status Summary}
Table~\ref{tab:foc_status} summarizes the current status of the FOC
controller development.
\begin{table}[htbp]
\caption{FOC controller development status}
\label{tab:foc_status}
\centering
\begin{tabular}{l c}
\toprule
\textbf{Task} & \textbf{Status} \\
\midrule
VESC firmware compilation & Completed \\
Pin compatibility (F405 / L476) & Completed \\
Schematic design (KiCad) & Completed \\
ERC validation & Completed \\
PCB routing & In progress \\
Tile footprint correction & In progress \\
Board manufacturing & Planned \\
Hardware testing & Planned \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Bicycle-Cargo System Control Results}
\subsubsection{Simulation Results}
@ -476,6 +645,19 @@ What should be a clear conclusion from our test with the jammer is that a contro
avoided when possible and practical. Examples where this could be relevant include electric skateboards, as cables could
impose a tripping hazard. There, an encapsulation of an encrypted control frame could be an thought.
% ******************************** Perspectives and Future Work ************************************************************
\section{Perspectives and Future Work}
Based on the results obtained and the limitations identified during this
project, several directions for future work are proposed.
\subsection{Hardware Completion and Testing}
The VESC-based FOC PCB requires routing completion and prototype
manufacturing. Once fabricated, the board must be tested under real
operating conditions (varying loads, road profiles, and battery voltage).
% ******************************** CONCLUSION **************************************************************************
\section{Conclusion/Summary}
@ -495,8 +677,29 @@ impose a tripping hazard. There, an encapsulation of an encrypted control frame
%quantities and units. For example, write ``Temperature (K)'', not
%``Temperature/K''.
% ******************************** REMERCIEMENTS **************************************************************************
\section*{Acknowledgment}
The authors would like to thank Pascal Acco and Thierry Rocacher for their
continuous technical guidance and support throughout this project. Their
expertise in power electronics, embedded systems, and PCB design was
invaluable.
We also thank La Manufacture Autonome Décentralisée (LaMAD) for providing
the use case, the technical requirements, and the cargo bike platform used
for validation.
Finally, we acknowledge the INSA Toulouse GEI department for providing
access to laboratory facilities, measurement equipment, and the necessary
components for prototyping.
This work was carried out as part of the 4th-year research project (PIR)
at INSA Toulouse.
% ******************************** IA **************************************************************************
\section*{Statement on AI Usage}
The authors acknowledge the use of generative AI tools during this project, both for the development work and for
writing this paper.