docs: fix all end of file newlines

Note: Some files are autogenerated and I did not yet
go through each source of generation to fix it there.
Instead I adjusted the filter to only exclude those
such that we can fix things in steps.
This commit is contained in:
Matthias Grob 2025-03-18 11:28:14 +01:00 committed by Ramon Roche
parent e9bac962ab
commit 2bc04f91f8
90 changed files with 173 additions and 193 deletions

View File

@ -3,14 +3,14 @@
return_value=0
# Check if there are files checked in that don't end in a newline (POSIX requirement)
git grep --cached -Il '' -- ':!docs/*' | xargs -L1 bash -c 'if test "$(tail -c 1 "$0")"; then echo "No new line at end of $0"; exit 1; fi'
git grep --cached -Il '' -- ':!docs/public/' ':!docs/ko/' ':!docs/uk/' ':!docs/zh/' | xargs -L1 bash -c 'if test "$(tail -c 1 "$0")"; then echo "No new line at end of $0"; exit 1; fi'
if [ $? -ne 0 ]; then
return_value=1
fi
# Check if there are files checked in that have duplicate newlines at the end (fail trailing whitespace checks)
git grep --cached -Il '' -- ':!docs/*' | xargs -L1 bash -c 'if tail -c 2 "$0" | ( read x && read y && [ x"$x" = x ] && [ x"$y" = x ]); then echo "Multiple newlines at the end of $0"; exit 1; fi'
git grep --cached -Il '' -- ':!docs/public/' ':!docs/ko/' ':!docs/uk/' ':!docs/zh/' | xargs -L1 bash -c 'if tail -c 2 "$0" | ( read x && read y && [ x"$x" = x ] && [ x"$y" = x ]); then echo "Multiple newlines at the end of $0"; exit 1; fi'
if [ $? -ne 0 ]; then
return_value=1

2
docs/.gitignore vendored
View File

@ -18,4 +18,4 @@ yarn-error.log
# Generated alternative _summary.md
# **/*/_summary.md
# **/*/_summary.md

View File

@ -16,4 +16,4 @@
document.location.replace(this.to);
}
}
</script>
</script>

View File

@ -159,4 +159,4 @@
.vp-doc img {
display: inline; /* block by default set by vitepress */
}
}

View File

@ -1 +1 @@
docs.px4.io
docs.px4.io

View File

@ -1011,4 +1011,4 @@
},
"hideReason": "intended"
}
]
]

View File

@ -1 +1 @@
["en/_sidebar.md"]
["en/_sidebar.md"]

View File

@ -219,4 +219,4 @@
d="M 113.51898,180.06889 V 245.764 l 2.6517,-0.0192 v -65.67586 z"
id="path4768"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" /></svg>
sodipodi:nodetypes="ccccc" /></svg>

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -141,4 +141,4 @@
style="opacity:1;fill:#4ec3e8;fill-opacity:1;stroke:none;stroke-width:0.11511399;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d=""
id="path969"
inkscape:connector-curvature="0" /></svg>
inkscape:connector-curvature="0" /></svg>

Before

Width:  |  Height:  |  Size: 7.1 KiB

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -81,4 +81,4 @@
d="m 54.341679,213.74572 c 2.37161,-3.60386 6.9481,-8.19494 7.64935,-9.88687 0.74741,1.64004 4.52647,6.50033 6.82427,9.88687"
id="path848"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" /></svg>
sodipodi:nodetypes="ccc" /></svg>

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -768,4 +768,4 @@
id="text7995"><path
d="m 13.413827,163.09012 q 0.266666,-8.16667 7.8,-8.2 4.033334,0 6.166667,2.66666 1.400001,1.83334 1.400001,4.26667 -0.03333,4.4 -5.000001,7.13334 l -3.333333,1.8 q -3.100001,1.66666 -3.900001,3.53333 -0.266666,0.6 -0.366666,1.33333 h 12.433334 v 2.9 H 12.880493 q 0.233334,-4.26666 1.900001,-6.5 1.433333,-1.86666 4.733333,-3.73333 l 3.066667,-1.73333 q 3.166667,-1.86667 3.2,-4.66667 0,-2.4 -2,-3.7 -1.166667,-0.73334 -2.666667,-0.73334 -4.366667,0 -4.766667,5.43334 0,0.1 0,0.2 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path4482" /></g></svg>
id="path4482" /></g></svg>

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -142,4 +142,4 @@
id="text7999"><path
d="m 81.956066,73.258968 h -8.31978 v -3.33851 q 5.405207,-0.688899 6.994974,-1.90772 1.589767,-1.165829 2.702603,-4.928277 0.105985,-0.317953 0.211969,-0.635907 h 3.073549 v 37.571486 h -4.663315 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:52.99222565px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1;stroke-width:1.58976662px"
id="path10409" /></g></svg>
id="path10409" /></g></svg>

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -437,4 +437,4 @@
id="text14502"><path
d="m 168.38719,13.98896 h -5.23333 v -2.100001 q 3.4,-0.433333 4.4,-1.2 1,-0.733333 1.7,-3.0999999 0.0667,-0.2 0.13333,-0.4 h 1.93334 V 30.822294 h -2.93334 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path19510" /></g></svg>
id="path19510" /></g></svg>

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -437,4 +437,4 @@
id="text7995"><path
d="m 13.412346,163.07466 q 0.266666,-8.16667 7.8,-8.2 4.033334,0 6.166667,2.66667 1.400001,1.83333 1.400001,4.26666 -0.03333,4.4 -5.000001,7.13334 l -3.333333,1.8 q -3.100001,1.66667 -3.900001,3.53333 -0.266666,0.6 -0.366666,1.33334 h 12.433334 v 2.9 H 12.879012 q 0.233334,-4.26667 1.9,-6.5 1.433334,-1.86667 4.733334,-3.73334 l 3.066667,-1.73333 q 3.166667,-1.86667 3.2,-4.66667 0,-2.4 -2,-3.7 -1.166667,-0.73333 -2.666667,-0.73333 -4.366667,0 -4.766667,5.43333 0,0.1 0,0.2 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path21558" /></g></svg>
id="path21558" /></g></svg>

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -517,4 +517,4 @@
id="text23152"><path
d="m 314.42237,352.32882 h -9.96667 v -3.1 l 10.73334,-14.86667 h 2.16666 v 15.33333 h 3.5 v 2.63334 h -3.5 v 5.66666 h -2.93333 z m 0,-2.63334 v -10.33333 l -7.4,10.33333 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path23179" /></g></svg>
id="path23179" /></g></svg>

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -587,4 +587,4 @@
id="text26711"><path
d="m 340.12534,283.78889 q 4.03334,1.96667 4.06667,5.90001 0,3.73333 -2.86667,5.76666 -2.1,1.53334 -5.06666,1.53334 -4.13334,0 -6.36667,-2.73334 -1.56667,-1.93333 -1.56667,-4.6 0.0333,-3.93333 4.03334,-5.86667 -2.4,-1.5 -2.93334,-3.1 -0.26666,-0.76666 -0.26666,-1.8 0,-3.3 2.7,-5.06666 1.86666,-1.23334 4.4,-1.23334 3.86666,0 5.83333,2.53334 1.26667,1.63333 1.26667,3.76666 0,2.26667 -1.5,3.63334 -0.66667,0.63333 -1.73334,1.26666 z m -3.86666,-8.6 q -2.7,0 -3.7,1.96667 -0.4,0.8 -0.4,1.76667 0,2.33333 2.03333,3.26666 0.93333,0.43334 2.06667,0.43334 2.66666,0 3.66666,-1.9 0.43334,-0.8 0.43334,-1.76667 0,-2.5 -2.16667,-3.4 -0.86667,-0.36667 -1.93333,-0.36667 z m 0,9.9 q -2.96667,0 -4.26667,2.13334 -0.66667,1.1 -0.66667,2.5 0,2.73333 2.2,4 1.16667,0.66667 2.66667,0.66667 3.03333,0 4.33333,-2.16667 0.66667,-1.1 0.66667,-2.5 0,-2.73334 -2.23333,-4 -1.2,-0.63334 -2.7,-0.63334 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path26744" /></g></svg>
id="path26744" /></g></svg>

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -515,4 +515,4 @@
id="text17133"><path
d="m 249.49387,294.29852 v 2.47091 q -6.74491,8.98209 -8.9487,18.03096 -0.40069,1.56936 -0.66781,3.17211 h -3.13872 q 1.66953,-7.27916 4.77486,-12.98897 1.86988,-3.40585 4.94182,-7.78003 h -12.78863 v -2.90498 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.39067459px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1;stroke-width:1.00172007px"
id="path17150" /></g></svg>
id="path17150" /></g></svg>

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -295,4 +295,4 @@
id="text7991-1"><path
d="m 46.495037,331.13554 q 0.257652,-7.89058 7.536318,-7.92279 3.896985,0 5.958201,2.57652 1.352672,1.77135 1.352672,4.12243 -0.03221,4.25126 -4.830973,6.89219 l -3.220649,1.73915 q -2.995204,1.61032 -3.768159,3.41389 -0.257652,0.57971 -0.354272,1.28826 h 12.013021 v 2.80196 H 45.979733 q 0.225445,-4.12243 1.83577,-6.28027 1.384879,-1.80356 4.573321,-3.60712 l 2.962997,-1.67474 q 3.059617,-1.80356 3.091823,-4.50891 0,-2.31887 -1.932389,-3.57492 -1.127227,-0.70854 -2.576519,-0.70854 -4.21905,0 -4.605528,5.24966 0,0.0966 0,0.19323 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32.20648956px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1;stroke-width:0.96619457px"
id="path4610" /></g></svg>
id="path4610" /></g></svg>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -285,4 +285,4 @@
id="text8003"><path
d="m 187.48118,356.35381 h -9.96667 v -3.1 l 10.73333,-14.86667 h 2.16667 v 15.33334 h 3.5 v 2.63333 h -3.5 v 5.66667 h -2.93333 z m 0,-2.63333 v -10.33334 l -7.4,10.33334 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.33333588px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1"
id="path8729" /></g></svg>
id="path8729" /></g></svg>

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -383,4 +383,4 @@
id="text35807"><path
d="m 216.68527,341.75754 q -3.80654,0 -4.40757,3.67297 -0.0668,0.63442 -0.10017,1.40241 h -2.93838 q 0.13356,-7.01204 6.34422,-7.61307 0.53426,-0.0334 1.06851,-0.0334 4.67469,0 6.41101,3.13873 0.80137,1.46919 0.80137,3.37246 -0.0334,3.60619 -3.30568,4.90843 3.10534,1.0685 3.77315,3.60619 0.23374,0.90155 0.23374,2.03683 0,4.10705 -3.13873,6.11049 -2.03683,1.26885 -4.87504,1.26885 -6.54457,0 -7.64646,-6.14389 -0.10017,-0.73459 -0.16695,-1.50258 h 2.93838 q 0.26712,4.40757 3.77314,4.94182 0.56764,0.10018 1.20207,0.10018 3.47263,0 4.54113,-2.63787 0.3673,-0.96833 0.3673,-2.10361 -0.0668,-4.27401 -4.90843,-4.3074 l -1.23546,0.0334 h -0.3673 v -2.5043 q 3.77315,-0.0668 4.90843,-1.10189 0.90155,-0.86816 0.90155,-2.60447 0,-2.83821 -2.33735,-3.73976 -0.83476,-0.30051 -1.83648,-0.30051 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.39067459px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1;stroke-width:1.00172007px"
id="path35828" /></g></svg>
id="path35828" /></g></svg>

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -386,4 +386,4 @@
id="text35807"><path
d="m 172.36484,326.83692 h -9.98381 v -3.10533 l 10.7518,-14.89224 h 2.17039 v 15.35971 h 3.50602 v 2.63786 h -3.50602 v 5.67642 h -2.93838 z m 0,-2.63786 v -10.35111 l -7.41273,10.35111 z"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:33.39067459px;font-family:FreeSans;-inkscape-font-specification:FreeSans;fill:#ffffff;fill-opacity:1;stroke-width:1.00172007px"
id="path38394" /></g></svg>
id="path38394" /></g></svg>

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -244,4 +244,4 @@
sodipodi:argument="-17.855951"
sodipodi:t0="0.99130303"
d="m 223.94673,38.425681 c -3.13084,3.863564 -7.10954,7.019918 -11.58403,9.189766"
transform="rotate(-64.14705,272.849,-49.763793)" /></svg>
transform="rotate(-64.14705,272.849,-49.763793)" /></svg>

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 149 KiB

After

Width:  |  Height:  |  Size: 149 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 377 KiB

After

Width:  |  Height:  |  Size: 377 KiB

View File

@ -31,16 +31,16 @@
%===================================================================================
% TIKZ PX4 CONTROLLERS
%===================================================================================
\begin{figure}[h]
\centering
% Define distances
\def\blockheight{7em}
\def\largeblockheight{1.45*\blockheight}
\def\blockwidth{3.9em}
\def\nodesep{1.15*\blockwidth}
\footnotesize
\begin{tikzpicture}[>={Stealth[inset=0pt,length=3pt,angle'=60,round]},
simple_block/.style = {draw, fill=light_blue, text centered, inner sep=0pt, text width=\blockwidth, minimum height=\blockheight},
@ -50,82 +50,82 @@
]
\hspace{-1.05cm}
%===================================================================================
% Reference
\node (ref) [] {};
% Position controller
\path (ref.east)+(0.85*\nodesep,0) node (pos_ctrl) [simple_block] {Position Control};
\path (pos_ctrl.north)+(0,0) node (pos_ctrl_text) [no_border_block, anchor=south] {\textbf{P}};
\path (pos_ctrl.south)+(0.65*\nodesep, -0.075*\blockheight) node (pos_ctrl_freq_text) [no_border_block, anchor=north] {50 Hz};
% Velocity controller
\path (pos_ctrl.east)+(0.85*\nodesep,0) node (vel_ctrl) [simple_block] {Velocity Control};
\path (vel_ctrl.north)+(0,0) node (vel_ctrl_text) [no_border_block, anchor=south] {\textbf{PID}};
% Acceleration to Attitude
\path (vel_ctrl.north east)+(1.1*\nodesep,0) node (force_2_att) [larger_block, text width=5.6em] {Acceleration and Yaw to Attitude};
% Inertial Frame
\node[fit=(pos_ctrl) (vel_ctrl)] (inertial) [frame_block] {};
\path (inertial.south)+(0,0) node (inertial_text) [no_border_block, anchor=north] {Inertial Frame};
% Angle controller
\path (force_2_att.north east)+(0.95*\nodesep,0) node (angle_ctrl) [simple_block, anchor=north] {Angle Control};
\path (angle_ctrl.north)+(0,0) node (angle_ctrl_text) [no_border_block, anchor=south] {\textbf{P}};
\path (angle_ctrl.south)+(0, -0.075*\blockheight) node (angle_ctrl_freq_text) [no_border_block, anchor=north] {250 Hz};
% Angular Rate controller
\path (angle_ctrl.east)+(0.9*\nodesep,0) node (ang_vel_ctrl) [simple_block] {Angular Rate Control};
\path (ang_vel_ctrl.north)+(0,0) node (ang_vel_ctrl_text) [no_border_block, anchor=south] {\textbf{PID}};
\path (ang_vel_ctrl.south)+(0, -0.075*\blockheight) node (ang_vel_ctrl_freq_text) [no_border_block, anchor=north] {1 kHz};
% Mixer
\path (ang_vel_ctrl.north east)+(\nodesep,0) node (mixer) [larger_block, text width=3em] {Mixer};
% Body Frame
\node[fit=(angle_ctrl) (ang_vel_ctrl)] (body) [frame_block] {};
\path (body.south)+(0,0) node (body_text) [no_border_block, anchor=north] {Body Frame};
\path (mixer.east)+(0.5*\nodesep,0) node (cmd) [] {};
%===================================================================================
\path[draw,->] (ref.east) -- node[anchor=south, pos=0.05, align=left] {$\bm{X}_\text{sp}$} (pos_ctrl.west);
\path[draw,->] (pos_ctrl.east) -- node[anchor=south] {$\bm{V}_\text{sp}$} (vel_ctrl.west);
\path[draw,->] (vel_ctrl.east) -- node[anchor=south, pos=0.65] {$\bm{A}_\text{sp}$} (vel_ctrl.east -| force_2_att.west);
\path[draw,->] ([yshift=-0.25*\largeblockheight]force_2_att.west -| ref.east) -- node[anchor=south, pos=0] {$\psi_\text{sp}$} ([yshift=-0.25*\largeblockheight]force_2_att.west);
\path[draw,->] (force_2_att.east |- angle_ctrl.west) -- node[anchor=south, pos=0.4] {$\bm{q}_\text{sp}$} (angle_ctrl.west);
\path[draw,->] ([yshift=-0.25*\largeblockheight]force_2_att.east) -- node[text centered, inner sep=2pt, anchor=south, pos=0.915] {$\delta_{T_\text{sp}}$} ([yshift=-0.25*\largeblockheight]mixer.west);
\path[draw,->] (angle_ctrl.east) -- node[anchor=south] {$\bm{\Omega}_\text{sp}$} (ang_vel_ctrl.west);
\path[draw,->] ([yshift=0.25*\blockheight]ang_vel_ctrl.east) -- node[text centered, inner sep=2pt, anchor=south, pos=0.6] {$\delta_{A_\text{sp}}$} ([yshift=0.25*\blockheight]ang_vel_ctrl.east -| mixer.west);
\path[draw,->] (ang_vel_ctrl.east) -- node[text centered, inner sep=2pt, anchor=south, pos=0.6] {$\delta_{E_\text{sp}}$} (ang_vel_ctrl.east -| mixer.west);
\path[draw,->] ([yshift=-0.25*\blockheight]ang_vel_ctrl.east) -- node[text centered, inner sep=2pt, anchor=south, pos=0.6] {$\delta_{R_\text{sp}}$} ([yshift=-0.25*\blockheight]ang_vel_ctrl.east -| mixer.west);
\path[draw,->] (mixer.east) -- node[text centered, inner sep=5pt, anchor=south] {$\bm{T}_\text{sp}$} (cmd.west);
\end{tikzpicture}
\end{figure}
\clearpage
%===================================================================================
% TIKZ ANGULAR RATE CONTROL
%===================================================================================
\begin{figure}[ht]
\centering
% Define distances
\def\blockheight{2.2em}
\def\blockwidth{2.2em}
\def\nodesep{1.5*\blockwidth}
\begin{tikzpicture}[>={Stealth[inset=0pt,length=3pt,angle'=60,round]},
simple_block/.style = {draw, fill=light_blue, text centered, inner sep=0pt, minimum width=\blockwidth, minimum height=\blockheight},
frame_block/.style = {draw, text centered, inner ysep=1.25em, inner xsep=1.25em, dashed},
@ -138,7 +138,7 @@
node at (sum.east) [port, left=1pt] {$#4$}
}
},
sat_block/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
sat_block/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
{
% Get the width and height of the path picture node
\pgfpointdiff{\pgfpointanchor{path picture bounding box}{north east}}%
@ -149,11 +149,11 @@
\tikzset{x=\x*.4, y=\y*.4}
%
% Draw annotation
\draw (-1,0) -- (1,0) (0,-1) -- (0,1);
\draw (-1,0) -- (1,0) (0,-1) -- (0,1);
\draw (-1,-.6) -- (-.6,-.6) -- (.6,.6) -- (1,.6);
}
},
sat_block_int/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
sat_block_int/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
{
% Get the width and height of the path picture node
\pgfpointdiff{\pgfpointanchor{path picture bounding box}{north east}}%
@ -170,7 +170,7 @@
]
%===================================================================================
\node[text centered] (ref) {};
% Controller
\path(ref)+(\nodesep,0) node (ref_sum) [sum={}{+}{-}{}] {};
\path(ref_sum)+(\nodesep,0) node (ctrl_k) [simple_block] {$K$};
@ -184,12 +184,12 @@
\path(ctrl_i_gain)+(\nodesep,0) node (ctrl_sum) [sum={+}{+}{-}{}] {};
\path(ctrl_sum)+(\nodesep,0) node (sat_ctrl) [sat_block] {};
\path(sat_ctrl.east)+(0.675*\nodesep,0) node (ctrl) [] {};
\path(ref_sum.south |- ctrl_d_filt.west)+(-\nodesep,0) node(output) [] {};
%===================================================================================
\path[draw,->] (ref.east) -- node[anchor=south, pos=0] {$\Omega_\text{sp}$} (ref_sum.west);
\path[draw,->] (ref_sum.east) -- (ctrl_k.west);
\path[draw,->] (ctrl_k.east) -- (ctrl_i.west);
\path[draw,->] (output.east) |- node[anchor=south, pos=0] {$\Omega$} (ctrl_kd.west);
@ -204,31 +204,31 @@
\path[draw,->] (ctrl_p_gain.east) -| (ctrl_sum.north);
\path[draw,->] (ctrl_sum.east) -- (sat_ctrl.west);
\path[draw,->] (sat_ctrl.east) -- node[anchor=south] {$\delta_\text{sp}$} (ctrl.west);
\end{tikzpicture}
\end{figure}
\clearpage
%===================================================================================
% TIKZ ANGLE CONTROL
%===================================================================================
\begin{figure}[ht]
\centering
\footnotesize
% Define distances
\def\blockheight{3em}
\def\blockwidth{3em}
\def\nodesep{2*\blockwidth}
\begin{tikzpicture}[>={Stealth[inset=0pt,length=3pt,angle'=60,round]},
simple_block/.style = {draw, fill=light_blue, text centered, inner sep=0pt, minimum width=\blockwidth, minimum height=\blockheight},
text_block/.style = {draw, fill=light_blue, text centered, inner sep=0pt, text width=2*\blockwidth, minimum height=\blockheight},
frame_block/.style = {draw, text centered, inner ysep=1.25em, inner xsep=1.25em, dashed},
sat_block/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
sat_block/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
{
% Get the width and height of the path picture node
\pgfpointdiff{\pgfpointanchor{path picture bounding box}{north east}}%
@ -239,17 +239,17 @@
\tikzset{x=\x*.4, y=\y*.4}
%
% Draw annotation
\draw (-1,0) -- (1,0) (0,-1) -- (0,1);
\draw (-1,0) -- (1,0) (0,-1) -- (0,1);
\draw (-1,-.6) -- (-.6,-.6) -- (.6,.6) -- (1,.6);
}
},
gain/.style = {draw, fill=light_blue, inner sep=0pt, isosceles triangle, minimum height=\blockheight, isosceles triangle apex angle=60},
]
\hspace{-0.7cm}
%===============================================================================
\node[text centered, yshift=0.25*\blockheight] (ref) {};
% Controller
\path(ref)+(0.75*\nodesep,-0.25*\blockheight) node (err_quat) [text_block] {Error quaternion};
\path(err_quat)+(1.5*\nodesep,0) node (select_axis) [text_block] {Extract component};
@ -259,7 +259,7 @@
\path(mult)+(0.65*\nodesep, 0) node (p_gain) [gain] {\scriptsize $2 P$};
\path(p_gain)+(0.75*\nodesep, 0) node (sat_ctrl) [sat_block] {};
\path(sat_ctrl)+(0.75*\nodesep, 0) node (output) [] {};
%===============================================================================
\path[draw,->] (ref.east) -- node[text centered, anchor=south, pos=0.1] {$\bm{q}_\text{sp}$} ([yshift=0.25*\blockheight]err_quat.west);
\path[draw,->] ([yshift=-0.25*\blockheight]err_quat.west -| ref.east) -- node[text centered, anchor=north, pos=0.1] {$\bm{q}$} ([yshift=-0.25*\blockheight]err_quat.west);
@ -272,23 +272,23 @@
\path[draw,->] (p_gain.east) -- (sat_ctrl.west);
\path[draw,->] (sat_ctrl.east) -- node[text centered, anchor=south] {$\Omega_\text{sp}$} (output.west);
\end{tikzpicture}
\end{figure}
\clearpage
%===================================================================================
% TIKZ VELOCITY CONTROL
%===================================================================================
\begin{figure}[ht]
\centering
% Define distances
\def\blockheight{2.2em}
\def\blockwidth{2.2em}
\def\nodesep{1.5*\blockwidth}
\begin{tikzpicture}[>={Stealth[inset=0pt,length=3pt,angle'=60,round]},
simple_block/.style = {draw, fill=light_blue, text centered, inner sep=0pt, minimum width=\blockwidth, minimum height=\blockheight},
frame_block/.style = {draw, text centered, inner ysep=1.25em, inner xsep=1.25em, dashed},
@ -301,7 +301,7 @@
node at (sum.east) [port, left=1pt] {$#4$}
}
},
sat_block/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
sat_block/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
{
% Get the width and height of the path picture node
\pgfpointdiff{\pgfpointanchor{path picture bounding box}{north east}}%
@ -312,11 +312,11 @@
\tikzset{x=\x*.4, y=\y*.4}
%
% Draw annotation
\draw (-1,0) -- (1,0) (0,-1) -- (0,1);
\draw (-1,0) -- (1,0) (0,-1) -- (0,1);
\draw (-1,-.6) -- (-.6,-.6) -- (.6,.6) -- (1,.6);
}
},
sat_block_int/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
sat_block_int/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
{
% Get the width and height of the path picture node
\pgfpointdiff{\pgfpointanchor{path picture bounding box}{north east}}%
@ -333,7 +333,7 @@
]
%===================================================================================
\node[text centered] (ref) {};
% Controller
\path(ref)+(\nodesep,0) node (ref_sum) [sum={}{+}{-}{}] {};
\path(ref_sum)+(2*\nodesep,0) node (ctrl_i) [simple_block] {$\int$};
@ -345,12 +345,12 @@
\path(ctrl_i_gain)+(\nodesep,0) node (ctrl_sum) [sum={+}{+}{-}{}] {};
\path(ctrl_sum)+(\nodesep,0) node (sat_ctrl) [sat_block] {};
\path(sat_ctrl.east)+(0.675*\nodesep,0) node (ctrl) [] {};
\path(ref_sum.south |- ctrl_d_filt.west)+(-\nodesep,0) node(output) [] {};
%===================================================================================
\path[draw,->] (ref.east) -- node[anchor=south, pos=0] {$V_\text{sp}$} (ref_sum.west);
\path[draw,->] (ref_sum.east) -- (ctrl_i.west);
\path[draw,->] (output.east) |- node[anchor=south, pos=0] {$V$} (ctrl_d_filt.west);
\path[draw,->] (output.east -| ref_sum.south) -- (ref_sum.south);
@ -363,25 +363,25 @@
\path[draw,->] (ctrl_p_gain.east) -| (ctrl_sum.north);
\path[draw,->] (ctrl_sum.east) -- (sat_ctrl.west);
\path[draw,->] (sat_ctrl.east) -- node[anchor=south] {$A_\text{sp}$} (ctrl.west);
\end{tikzpicture}
\end{figure}
\clearpage
%===================================================================================
% TIKZ POSITION CONTROL
%===================================================================================
\begin{figure}[h]
\centering
% Define distances
\def\blockheight{2.2em}
\def\blockwidth{2.2em}
\def\nodesep{2*\blockwidth}
\begin{tikzpicture}[>={Stealth[inset=0pt,length=3pt,angle'=60,round]},
simple_block/.style = {draw, fill=light_blue, text centered, inner sep=0pt, minimum width=\blockwidth, minimum height=\blockheight},
frame_block/.style = {draw, text centered, inner ysep=1.25em, inner xsep=1.25em, dashed},
@ -394,7 +394,7 @@
node at (sum.east) [port, left=1pt] {$#4$}
}
},
sat_block/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
sat_block/.style = {draw, minimum width=\blockwidth, minimum height=\blockheight, path picture =
{
% Get the width and height of the path picture node
\pgfpointdiff{\pgfpointanchor{path picture bounding box}{north east}}%
@ -405,32 +405,32 @@
\tikzset{x=\x*.4, y=\y*.4}
%
% Draw annotation
\draw (-1,0) -- (1,0) (0,-1) -- (0,1);
\draw (-1,0) -- (1,0) (0,-1) -- (0,1);
\draw (-1,-.6) -- (-.6,-.6) -- (.6,.6) -- (1,.6);
}
}
]
%===============================================================================
\node[text centered] (ref) {};
% Controller
\path(ref)+(\nodesep,0) node (ref_sum) [sum={}{+}{-}{}] {};
\path(ref_sum)+(\nodesep,0) node (ctrl_p_gain) [simple_block] {$P$};
\path(ctrl_p_gain)+(\nodesep,0) node (sat_ctrl) [sat_block] {};
\path(sat_ctrl.east)+(\nodesep,0) node (ctrl) [] {};
\path(ref_sum.south)+(-\nodesep,-1.5*\blockheight) node(output) [] {};
%===============================================================================
\path[draw,->] (ref.east) -- node[anchor=south, pos=0] {$X_\text{sp}$} (ref_sum.west);
\path[draw,->] (output.east) -- node[anchor=south, pos=0] {$X$} (output.east -| ref_sum.south) -- (ref_sum.south);
\path[draw,->] (ref_sum.east) -- (ctrl_p_gain.west);
\path[draw,->] (ctrl_p_gain.east) -- (sat_ctrl.west);
\path[draw,->] (sat_ctrl.east) -- node[anchor=south] {$V_\text{sp}$} (ctrl.west);
\end{tikzpicture}
\end{figure}
\end{document}
\end{document}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 109 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -88,4 +88,3 @@
<snippets/>
<!-- - - - - - - - - - - - - - - -->
</root>

View File

@ -132,4 +132,3 @@ function quaternionToYaw(x, y, z, w)
</snippets>
<!-- - - - - - - - - - - - - - - -->
</root>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 415 KiB

After

Width:  |  Height:  |  Size: 415 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 190 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 641 KiB

After

Width:  |  Height:  |  Size: 641 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 7.937 7.938"><defs><marker orient="auto" refY="0" refX="0" id="a" style="overflow:visible"><path style="fill-rule:evenodd;stroke-width:.625;stroke-linejoin:round;stroke:#000;stroke-opacity:1;fill:#000;fill-opacity:1" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" transform="rotate(180) scale(.6)"/></marker></defs><g transform="translate(0 -289.062)"><circle cx="3.969" cy="293.031" style="fill:none;stroke:#000;stroke-width:.74339122;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" r="3.597"/><text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:3.52777767px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:'Calibri, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#000;fill-opacity:1;stroke:none;stroke-width:.06671331" x="4.126" y="294.762"><tspan x="4.126" y="294.762" style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:3.52777767px;font-family:Calibri;-inkscape-font-specification:'Calibri, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:.06671331">ALT</tspan></text><path style="fill:none;stroke:#000;stroke-width:.26940677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#a)" d="m3.499 290.486.28 1.078z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 7.937 7.938"><defs><marker orient="auto" refY="0" refX="0" id="a" style="overflow:visible"><path style="fill-rule:evenodd;stroke-width:.625;stroke-linejoin:round;stroke:#000;stroke-opacity:1;fill:#000;fill-opacity:1" d="M8.719 4.034-2.207.016 8.719-4.002c-1.746 2.372-1.736 5.618 0 8.036z" transform="rotate(180) scale(.6)"/></marker></defs><g transform="translate(0 -289.062)"><circle cx="3.969" cy="293.031" style="fill:none;stroke:#000;stroke-width:.74339122;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" r="3.597"/><text xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:3.52777767px;line-height:1.25;font-family:Calibri;-inkscape-font-specification:'Calibri, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#000;fill-opacity:1;stroke:none;stroke-width:.06671331" x="4.126" y="294.762"><tspan x="4.126" y="294.762" style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-size:3.52777767px;font-family:Calibri;-inkscape-font-specification:'Calibri, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;stroke-width:.06671331">ALT</tspan></text><path style="fill:none;stroke:#000;stroke-width:.26940677;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#a)" d="m3.499 290.486.28 1.078z"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="897.673" height="897.673" style="enable-background:new 0 0 897.673 897.673" xml:space="preserve"><path d="M859.877 855.354 606.396 23.221C602.195 9.427 589.469 0 575.049 0H322.625c-14.42 0-27.146 9.426-31.347 23.221L37.795 855.354c-6.413 21.055 9.338 42.318 31.347 42.318h181.071c15.246 0 28.479-10.515 31.922-25.367l38.312-165.216h256.78l38.312 165.216c3.443 14.853 16.676 25.367 31.922 25.367h181.071c22.007.001 37.759-21.263 31.345-42.318zM448.836 523.413h-85.578l15.191-62.147c22.096-85.624 44.192-194.726 66.29-284.493h8.194c22.097 89.767 44.193 198.869 66.289 284.493l15.191 62.147h-85.577z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="897.673" height="897.673" style="enable-background:new 0 0 897.673 897.673" xml:space="preserve"><path d="M859.877 855.354 606.396 23.221C602.195 9.427 589.469 0 575.049 0H322.625c-14.42 0-27.146 9.426-31.347 23.221L37.795 855.354c-6.413 21.055 9.338 42.318 31.347 42.318h181.071c15.246 0 28.479-10.515 31.922-25.367l38.312-165.216h256.78l38.312 165.216c3.443 14.853 16.676 25.367 31.922 25.367h181.071c22.007.001 37.759-21.263 31.345-42.318zM448.836 523.413h-85.578l15.191-62.147c22.096-85.624 44.192-194.726 66.29-284.493h8.194c22.097 89.767 44.193 198.869 66.289 284.493l15.191 62.147h-85.577z"/></svg>

Before

Width:  |  Height:  |  Size: 652 B

After

Width:  |  Height:  |  Size: 653 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" style="enable-background:new 0 0 60 60" xml:space="preserve"><path d="M42.117 43.007a1 1 0 0 0-.234 1.986C52.399 46.231 58 49.567 58 51.5c0 2.714-10.652 6.5-28 6.5S2 54.214 2 51.5c0-1.933 5.601-5.269 16.117-6.507a1 1 0 0 0-.234-1.986C7.354 44.247 0 47.739 0 51.5 0 55.724 10.305 60 30 60s30-4.276 30-8.5c0-3.761-7.354-7.253-17.883-8.493z"/><path d="M29.823 54.757 45.164 32.6c5.754-7.671 4.922-20.28-1.781-26.982C39.761 1.995 34.945 0 29.823 0s-9.938 1.995-13.56 5.617c-6.703 6.702-7.535 19.311-1.804 26.952l15.364 22.188zM30 12c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" style="enable-background:new 0 0 60 60" xml:space="preserve"><path d="M42.117 43.007a1 1 0 0 0-.234 1.986C52.399 46.231 58 49.567 58 51.5c0 2.714-10.652 6.5-28 6.5S2 54.214 2 51.5c0-1.933 5.601-5.269 16.117-6.507a1 1 0 0 0-.234-1.986C7.354 44.247 0 47.739 0 51.5 0 55.724 10.305 60 30 60s30-4.276 30-8.5c0-3.761-7.354-7.253-17.883-8.493z"/><path d="M29.823 54.757 45.164 32.6c5.754-7.671 4.922-20.28-1.781-26.982C39.761 1.995 34.945 0 29.823 0s-9.938 1.995-13.56 5.617c-6.703 6.702-7.535 19.311-1.804 26.952l15.364 22.188zM30 12c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7z"/></svg>

Before

Width:  |  Height:  |  Size: 652 B

After

Width:  |  Height:  |  Size: 653 B

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 7.937 7.938"><g transform="translate(0 -289.062)"><rect style="opacity:1;fill:#000;fill-opacity:.99607843;stroke:none;stroke-width:1.14113545;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="6.615" height="6.615" x=".702" y="290.285" rx=".662" ry=".688"/><rect style="opacity:1;fill:#000;fill-opacity:.99607843;stroke:none;stroke-width:.28405154;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="2.706" height="1.002" x="2.656" y="289.851" rx=".271" ry=".104"/><ellipse style="opacity:1;fill:#000;fill-opacity:1;stroke:none;stroke-width:2.61286139;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="4.009" cy="289.8" rx=".334" ry=".685"/><circle style="opacity:1;fill:#fff;fill-opacity:1;stroke:none;stroke-width:1.71015;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="2.488" cy="292.538" r="1.235"/><circle style="opacity:1;fill:#fff;fill-opacity:1;stroke:none;stroke-width:1.71015;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="5.594" cy="292.538" r="1.235"/><rect style="opacity:1;fill:#000;fill-opacity:1;stroke:none;stroke-width:.28370944;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width=".529" height=".529" x="2.223" y="292.273" rx="0" ry="0"/><rect style="opacity:1;fill:#000;fill-opacity:1;stroke:none;stroke-width:.28370944;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width=".529" height=".529" x="5.33" y="292.273" rx="0" ry="0"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 7.937 7.938"><g transform="translate(0 -289.062)"><rect style="opacity:1;fill:#000;fill-opacity:.99607843;stroke:none;stroke-width:1.14113545;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="6.615" height="6.615" x=".702" y="290.285" rx=".662" ry=".688"/><rect style="opacity:1;fill:#000;fill-opacity:.99607843;stroke:none;stroke-width:.28405154;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width="2.706" height="1.002" x="2.656" y="289.851" rx=".271" ry=".104"/><ellipse style="opacity:1;fill:#000;fill-opacity:1;stroke:none;stroke-width:2.61286139;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="4.009" cy="289.8" rx=".334" ry=".685"/><circle style="opacity:1;fill:#fff;fill-opacity:1;stroke:none;stroke-width:1.71015;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="2.488" cy="292.538" r="1.235"/><circle style="opacity:1;fill:#fff;fill-opacity:1;stroke:none;stroke-width:1.71015;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" cx="5.594" cy="292.538" r="1.235"/><rect style="opacity:1;fill:#000;fill-opacity:1;stroke:none;stroke-width:.28370944;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width=".529" height=".529" x="2.223" y="292.273" rx="0" ry="0"/><rect style="opacity:1;fill:#000;fill-opacity:1;stroke:none;stroke-width:.28370944;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" width=".529" height=".529" x="5.33" y="292.273" rx="0" ry="0"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -1,4 +1,4 @@
{
{
"gitbook": ">= 3.2.2",
"title": "PX4 User Guide",
"variables": {
@ -56,7 +56,7 @@
"icon": "fa fa-bug",
"position" : "left",
"url": "https://github.com/PX4/px4_user_guide/issues/new?title=Doc+Bug:+{{title}}&body=DESCRIBE+PROBLEM+WITH+DOCS+HERE%0A%0ABug+Page:+[{{title}}]({{url}})"
},
{
"label": "GitHub",
@ -71,7 +71,7 @@
}
]
},
"versions": {
"gitbookConfigURL": "https://raw.githubusercontent.com/PX4/px4_user_guide/main/book.json",
"options": [
@ -94,7 +94,7 @@
{
"value": "https://docs.px4.io/v1.12/en/",
"text": "v1.12"
},
},
{
"value": "https://docs.px4.io/v1.11/en/",
"text": "v1.11"
@ -105,4 +105,3 @@
}
}

View File

@ -9,4 +9,4 @@ This section contains topics about the core actuators used for flight control (E
## See Also
- [Peripherals](../peripherals/index.md) - includes non-core actuators such as grippers, parachutes, etc.
- [Peripherals](../peripherals/index.md) - includes non-core actuators such as grippers, parachutes, etc.

View File

@ -40437,4 +40437,3 @@ Skip the controller.
Reboot | minValue | maxValue | increment | default | unit
--- | --- | --- | --- | --- | ---
&nbsp; | | | | 0 |

View File

@ -797,4 +797,3 @@ div.frame_variant td, div.frame_variant th {
</tbody>
</table>
</div>

View File

@ -4,4 +4,4 @@ frame: VTOL
newEditLink: en/assembly/_assembly.md
---
<!--@include: _assembly.md-->
<!--@include: _assembly.md-->

View File

@ -3,4 +3,4 @@ frame: General
newEditLink: en/assembly/_assembly.md
---
<!--@include: _assembly.md-->
<!--@include: _assembly.md-->

View File

@ -17,4 +17,4 @@ If a camera does not support this prototol, a [camera manager](../camera/mavlink
## See Also
- [Gimbal (Camera Mount)](../advanced/gimbal_control.md)
- [Camera Integration/Architecture](../camera/camera_architecture.md) (PX4 Developers)
- [Camera Integration/Architecture](../camera/camera_architecture.md) (PX4 Developers)

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/betafpv_beta75x" />
<Redirect to="../complete_vehicles_mc/betafpv_beta75x" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/crazyflie2" />
<Redirect to="../complete_vehicles_mc/crazyflie2" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/crazyflie21" />
<Redirect to="../complete_vehicles_mc/crazyflie21" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/holybro_kops2" />
<Redirect to="../complete_vehicles_mc/holybro_kops2" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/intel_aero" />
<Redirect to="../complete_vehicles_mc/intel_aero" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/mindracer210" />
<Redirect to="../complete_vehicles_mc/mindracer210" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/mindracer_BNF_RTF" />
<Redirect to="../complete_vehicles_mc/mindracer_BNF_RTF" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/modalai_starling" />
<Redirect to="../complete_vehicles_mc/modalai_starling" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/nanomind110" />
<Redirect to="../complete_vehicles_mc/nanomind110" />

View File

@ -1 +1 @@
<Redirect to="../complete_vehicles_mc/px4_vision_kit" />
<Redirect to="../complete_vehicles_mc/px4_vision_kit" />

View File

@ -33,4 +33,4 @@ These may or may not be updatable to run "vanilla" PX4.
## See Also
- [Complete Vehicles (Fixed-Wing)](../complete_vehicles_fw/index.md)
- [Complete Vehicles (MC)](../complete_vehicles_mc/index.md)
- [Complete Vehicles (MC)](../complete_vehicles_mc/index.md)

View File

@ -30,4 +30,3 @@ make run_failsafe_web_server
<script setup>
import { withBase } from 'vitepress';
</script>

View File

@ -188,4 +188,4 @@ There are different clients that support ulog streaming:
## See Also
- [Encrypted logging](../dev_log/log_encryption.md)
- [Encrypted logging](../dev_log/log_encryption.md)

View File

@ -6,4 +6,4 @@ The QGroundControl _Daily Build_ includes development tools that are hidden in r
It should be used instead of the stable release when working with new code forked from the PX4 `main` branch.
- [Download daily builds](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/releases/daily_builds.html)
- [Download daily builds](https://docs.qgroundcontrol.com/master/en/qgc-user-guide/releases/daily_builds.html)

View File

@ -86,5 +86,3 @@ See the documentation [Ark Electronics GitBook](https://arkelectron.gitbook.io/a
## Pinout
See the [DS-10 Pixhawk Autopilot Bus Standard](https://arkelectron.gitbook.io/ark-documentation/flight-controllers/ark-fpv/pinout)

View File

@ -12,4 +12,4 @@ For information about flight modes available to specific frames see the followin
::: info
The mode sub-topics in this section contain information that is common to all vehicles, but may not be relevant to the normal/default setup.
Generally you should see the vehicle-specific topics first, and navigate to these generalized topics when it becomes relevant.
:::
:::

View File

@ -55,4 +55,4 @@ Select the mode-specific sidebar topics for detailed technical information.
- [Basic Configuration > Flight Modes](../config/flight_mode.md) - How to map RC control switches to specific flight modes
- [Flight Modes (Multicopter)](../flight_modes_mc/index.md)
- [Flight Modes (VTOL)](../flight_modes_vtol/index.md)
- [Drive Modes (Rover)](../flight_modes_rover/index.md)
- [Drive Modes (Rover)](../flight_modes_rover/index.md)

View File

@ -54,4 +54,3 @@ Select the mode-specific sidebar topics for more detailed technical information.
- [Flight Modes (Fixed-Wing)](../flight_modes_fw/index.md)
- [Flight Modes (VTOL)](../flight_modes_vtol/index.md)
- [Drive Modes (Rover)](../flight_modes_rover/index.md)

View File

@ -1,4 +1,3 @@
<Redirect to="../flight_modes/offboard" />
# Offboard Mode (VTOL)

View File

@ -1 +1 @@
<Redirect to="../flying/basic_flying_mc" />
<Redirect to="../flying/basic_flying_mc" />

View File

@ -57,7 +57,7 @@ This topic provides full instructions for building the [Holybro X500 V2 ARF Kit]
1. To assemble the landing gear, loosen the pre-assembled screws of the Landing Gear-Cross Bar and insert the Landing Gear-Vertical Pole and fasten the same.
[![Assembly8](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly8.png)](https://youtu.be/mU4vm4zyjcY)
[![Assembly9](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly9.png)](https://youtu.be/7REaF3YAqLg)
1. Use the Socket Cap Screw M3*8 to screw the landing gears to the bottom plate
@ -105,7 +105,7 @@ Note that the ESC connectors are color-coded and must be inserted in the PWM out
[![Assembly16](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly16.png)](https://youtu.be/GOTqmjq9_3s)
1. While inserting the top plate on top of this the 3 piece assembly (bottom plate, top plate & arms) have to screwed using Socket Cap Screw M3*38 and Flange Locknut M3.
1. While inserting the top plate on top of this the 3 piece assembly (bottom plate, top plate & arms) have to screwed using Socket Cap Screw M3*38 and Flange Locknut M3.
1. Hold one side using the mini cross wrench provided in the developer kit.
[![Assembly17](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly17.png)](https://youtu.be/2rcNVekJQd0)
@ -133,7 +133,7 @@ The following parts can be placed as per usual.
1. Assemble the GPS by following the video.
[![Assembly20](../../assets/airframes/multicopter/x500_v2_holybro_pixhawk6c/assembly20.png)](https://youtu.be/aiFxVJFjlos)
This guide uses the GPS mount location suggested in Holybros guide.
1. Screw the GPS mounts bottom end on the payload holder side using Locknut M3 & Screw M3*10
@ -213,4 +213,4 @@ For instructions on how, start from [Auto-tune](../config/autotune_mc.md).
## Acknowledgements
This build log was contributed by Akshata and Hamish Willee with many thanks to Holybro and Dronecode for Hardware and technical support.
This build log was contributed by Akshata and Hamish Willee with many thanks to Holybro and Dronecode for Hardware and technical support.

View File

@ -49,7 +49,7 @@ For example, you might wire it up like this example (orientation as if "sitting
Port | Connection
--- | ---
--- | ---
MAIN 1 | Front right motor (CCW)
MAIN 2 | Back left motor (CCW)
MAIN 3 | Front left motor (CW)
@ -60,7 +60,7 @@ AUX 3 | Elevator
AUX 4 | Rudder
AUX 5 | Throttle
For further instructions on wiring and configurations please see:
For further instructions on wiring and configurations please see:
[Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md). <!-- replace with Pixhawk Wiring Quickstart -->
## Airframe Configuration
@ -72,7 +72,7 @@ For further instructions on wiring and configurations please see:
1. Configure the outputs and geometry following the instructions in [Actuators Configuration](../config/actuators.md)
1. The default parameters are often sufficient for stable flight. For more detailed tuning information see [Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md).
After you finish calibration the VTOL is ready to fly.
After you finish calibration the VTOL is ready to fly.
## Video
@ -82,4 +82,3 @@ After you finish calibration the VTOL is ready to fly.
## Support
If you have any questions regarding your VTOL conversion or configuration please visit <https://discuss.px4.io/c/px4/vtol>.

View File

@ -43,7 +43,7 @@ The image below depicts the parts required for one wing.
![QuadRanger Parts](../../assets/airframes/vtol/quadranger_rangerex_pixhawk/quadranger_vtol_parts_for_one_wing.jpg)
The tools required for the conversion are;
- A Dremel or similar rotary tool
@ -58,7 +58,7 @@ The tools required for the conversion are;
## Wing conversion
::: info
Please note that the conversion in this build log is performed on a wing that shows damage from a previous conversion.
Please note that the conversion in this build log is performed on a wing that shows damage from a previous conversion.
:::
Cut both 800mm square carbon tubes to a length of 570mm and 230mm.
@ -87,7 +87,7 @@ When using the Afro ESC be sure to connect at least signal and ground wire.
![QuadRanger motor and esc](../../assets/airframes/vtol/quadranger_rangerex_pixhawk/quadranger_vtol_motor_and_esc.jpg)
## Wiring
## Wiring
The outputs of Pixhawk should be wired like this (orientation as seen
like "sitting in the plane").
@ -99,7 +99,7 @@ MAIN 2 | Back left motor, CCW
MAIN 3 | Front left motor, CW
MAIN 4 | Back right motor, CW
AUX 1 | Left aileron
AUX 2 | Right aileron
AUX 2 | Right aileron
AUX 3 | Elevator
AUX 4 | Rudder
AUX 5 | Throttle
@ -108,7 +108,7 @@ AUX 5 | Throttle
::: info
The servo direction can be reversed using the PWM\_REV parameters in the PWM\_OUTPUT group of QGroundControl (cogwheel tab, last item in the left menu)
:::
For further instructions on wiring and configurations please see: [Standard VTOL Wiring and Configuration](../config_vtol/vtol_quad_configuration.md)
@ -122,4 +122,3 @@ Configure the frame as shown in QGroundControl below (do not forget to click **A
## Support
If you have any questions regarding your VTOL conversion or configuration please visit <https://discuss.px4.io/c/px4/vtol>.

View File

@ -39,4 +39,3 @@ Similarly, PX4 can also run natively Raspberry Pi (this approach is not generall
PX4 is available on many popular commercial drone products, including some that ship with PX4 and others that can be updated with PX4 (allowing you to add mission planning and other PX4 Flight modes to your vehicle).
For more information see [Complete Vehicles](../complete_vehicles/index.md).

View File

@ -1 +1 @@
<Redirect to="../getting_started/px4_basic_concepts" />
<Redirect to="../getting_started/px4_basic_concepts" />

View File

@ -9,4 +9,4 @@ The LED, tune, and GCS notifications are linked below:
* [LED Meanings](../getting_started/led_meanings.md)
* [Tune/Sound Meanings](../getting_started/tunes.md)
* [QGroundControl Flight-Readiness Status](../flying/pre_flight_checks.md)
* [QGroundControl Flight-Readiness Status](../flying/pre_flight_checks.md)

View File

@ -254,4 +254,3 @@ In order to avoid clogging communications links with messages that aren't needed
If you needed, a GCS or other MAVLink API can request that particular messages are streamed at a particular rate using [MAV_CMD_SET_MESSAGE_INTERVAL](https://mavlink.io/en/messages/common.html#MAV_CMD_SET_MESSAGE_INTERVAL).
A particular message can be requested just once using [MAV_CMD_REQUEST_MESSAGE](https://mavlink.io/en/messages/common.html#MAV_CMD_REQUEST_MESSAGE).

View File

@ -29,4 +29,3 @@ The graph has the following properties:
You can also zoom the image.
- The *Preset* selection list allows you to refine the list of modules that are shown.
- The *Search* box can be used to find particular modules/topics (topics that are not selected by the search are greyed-out).

View File

@ -13,7 +13,7 @@ All the things learned in the [First Application Tutorial](../modules/hello_sky.
## Work Queue Task
PX4-Autopilot contains a template for writing a new application (module) that runs as a *work queue task*:
PX4-Autopilot contains a template for writing a new application (module) that runs as a *work queue task*:
[src/examples/work_item](https://github.com/PX4/PX4-Autopilot/tree/main/src/examples/work_item).
A work queue task application is just the same as an ordinary (task) application, except that it needs to specify that it is a work queue task, and schedule itself to run during initialisation.
@ -36,7 +36,7 @@ In summary:
{
}
```
::: info
The available work queues (`wq_configurations`) are listed in [WorkQueueManager.hpp](https://github.com/PX4/PX4-Autopilot/blob/main/platforms/common/include/px4_platform_common/px4_work_queue/WorkQueueManager.hpp#L49).
:::
@ -64,4 +64,3 @@ The template demonstrates the following additional features/aspects that are req
documented [in the source code](https://github.com/PX4/PX4-Autopilot/blob/v1.8.0/src/platforms/px4_module.h#L381)):
- They are used to print the command-line usage when entering `module help` on the console.
- They are automatically extracted via script to generate the [Modules & Commands Reference](../modules/modules_main.md) page.

View File

@ -300,5 +300,3 @@ NaN means the state was not controlled
- [AirspeedValidatedV0](AirspeedValidatedV0.md)
- [VehicleAttitudeSetpointV0](VehicleAttitudeSetpointV0.md)
- [VehicleStatusV0](VehicleStatusV0.md) — Encodes the system state of the vehicle published by commander

View File

@ -163,4 +163,4 @@ Payloads that are triggered by servos and other actuators, such as grippers, can
This is safer than testing when the vehicle is armed.
Camera payloads can be triggered and tested at any time.
Camera payloads can be triggered and tested at any time.

View File

@ -1 +1 @@
<Redirect to="../camera/configuration" />
<Redirect to="../camera/configuration" />

View File

@ -1 +1 @@
<Redirect to="../camera/camera_intel_realsense_t265_vio" />
<Redirect to="../camera/camera_intel_realsense_t265_vio" />

View File

@ -120,4 +120,3 @@ Links to setup instructions for specific MAVLink components:
- [Serial Port Configuration](../peripherals/serial_configuration.md)
- [PX4 Ethernet Setup > PX4 MAVLink Serial Port Configuration](../advanced_config/ethernet_setup.md#px4-mavlink-serial-port-configuration)
- [Serial Port Mapping](../hardware/serial_port_mapping.md)

View File

@ -52,4 +52,4 @@ To get started using the library within an existing ROS 2 workspace:
When opening a pull request to PX4, CI runs the library integration tests.
These test that mode registration, failsafes, and mode replacement, work as expected.
For more information see [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md).
For more information see [PX4 ROS2 Interface Library Integration Testing](../test_and_ci/integration_testing_px4_ros2_interface.md).

View File

@ -26,4 +26,4 @@ You can list the available test cases with:
```sh
./test/ros_test_runner.py --list-cases
```
```

View File

@ -151,4 +151,4 @@ To write a new test:
@"$(SRC_DIR)"/test/rostest_px4_run.sh mavros_posix_tests_<new_test>.test
```
Run the tests as described above.
Run the tests as described above.

File diff suppressed because one or more lines are too long

View File

@ -19,7 +19,7 @@ include_dirs = set(['en','zh','ko','uk']) #update for new language builds.
exclude_dirs = set(['.vitepress','node_modules']) #update for new language builds.
my_parser = argparse.ArgumentParser(description='Generate sitemap for all markdown files in directory (default to main for output)')
# Add the arguments
# Add the arguments
my_parser.add_argument('-v',
'--version',
action='store',
@ -45,18 +45,18 @@ build_version = args.version
BRANCH_NAME = os.getenv('BRANCH_NAME')
if BRANCH_NAME:
build_version=BRANCH_NAME
url_prefix = 'https://docs.px4.io/%s' % build_version
sitemapitems=[]
for subdir, dirs, files in os.walk(dir_name, topdown=True):
if subdir == '.':
#print("RootFile: %s" % originalfile)
#Handle a root file.
continue
# Check if any of the include directories is in the subdir path
if any(f"/{inc_dir}/" in subdir or f"\\{inc_dir}\\" in subdir for inc_dir in include_dirs):
pass
@ -67,7 +67,7 @@ for subdir, dirs, files in os.walk(dir_name, topdown=True):
if any(f"/{ex_dir}/" in subdir or f"\\{ex_dir}\\" in subdir for ex_dir in exclude_dirs):
continue
#print(f"SUBDIR Ex: {subdir}")
for file in files:
#print(f"xxDebug: {file}")
@ -76,7 +76,7 @@ for subdir, dirs, files in os.walk(dir_name, topdown=True):
if not file.endswith('.md'): #only process md files.
#print(f"Skip: {file} (not md)")
continue
originalfile=subdir+'\\'+file
dir_name=subdir[2:].replace('\\','/')
orig_file_forwardslash=originalfile.replace('\\','/')
@ -98,10 +98,10 @@ for subdir, dirs, files in os.walk(dir_name, topdown=True):
#print("Subdir: %s" % subdir )
#print("file_name: %s" % file_name)
#print(sitemapitem['url'])
sitemapitems.append(sitemapitem)
# Generate the sitemap from the sitemapitems
all_sitemap_item_text = ""
for item in sitemapitems:
@ -112,7 +112,7 @@ for item in sitemapitems:
if args.date:
sitemap_item_text+=f" <lastmod>{item['modified']}</lastmod>\n"
sitemap_item_text+=' </url>\n'
all_sitemap_item_text+=sitemap_item_text
sitemaptext = '''<?xml version="1.0" encoding="UTF-8"?>
@ -122,11 +122,10 @@ sitemaptext = '''<?xml version="1.0" encoding="UTF-8"?>
# Write the sitemap to file
outputfile=args.output+'sitemap.xml'
with open(outputfile,"w") as f:
with open(outputfile,"w") as f:
f.write(sitemaptext)
print("Sitemap generated to: %s" % outputfile)
#print("BRANCH_NAME: %s" % BRANCH_NAME)
#print("Build version: %s" % build_version)