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.
@ -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
@ -18,4 +18,4 @@ yarn-error.log
|
||||
|
||||
|
||||
# Generated alternative _summary.md
|
||||
# **/*/_summary.md
|
||||
# **/*/_summary.md
|
||||
|
||||
@ -16,4 +16,4 @@
|
||||
document.location.replace(this.to);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
||||
@ -159,4 +159,4 @@
|
||||
|
||||
.vp-doc img {
|
||||
display: inline; /* block by default set by vitepress */
|
||||
}
|
||||
}
|
||||
|
||||
@ -1 +1 @@
|
||||
docs.px4.io
|
||||
docs.px4.io
|
||||
|
||||
@ -1011,4 +1011,4 @@
|
||||
},
|
||||
"hideReason": "intended"
|
||||
}
|
||||
]
|
||||
]
|
||||
|
||||
@ -1 +1 @@
|
||||
["en/_sidebar.md"]
|
||||
["en/_sidebar.md"]
|
||||
|
||||
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 149 KiB After Width: | Height: | Size: 149 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 377 KiB After Width: | Height: | Size: 377 KiB |
@ -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}
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 109 KiB After Width: | Height: | Size: 109 KiB |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
@ -88,4 +88,3 @@
|
||||
<snippets/>
|
||||
<!-- - - - - - - - - - - - - - - -->
|
||||
</root>
|
||||
|
||||
|
||||
@ -132,4 +132,3 @@ function quaternionToYaw(x, y, z, w)
|
||||
</snippets>
|
||||
<!-- - - - - - - - - - - - - - - -->
|
||||
</root>
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 415 KiB After Width: | Height: | Size: 415 KiB |
|
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 641 KiB After Width: | Height: | Size: 641 KiB |
|
Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 167 KiB |
@ -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 |
@ -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 |
@ -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 |
@ -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 |
@ -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 @@
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -40437,4 +40437,3 @@ Skip the controller.
|
||||
Reboot | minValue | maxValue | increment | default | unit
|
||||
--- | --- | --- | --- | --- | ---
|
||||
| | | | 0 |
|
||||
|
||||
|
||||
@ -797,4 +797,3 @@ div.frame_variant td, div.frame_variant th {
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
@ -4,4 +4,4 @@ frame: VTOL
|
||||
newEditLink: en/assembly/_assembly.md
|
||||
---
|
||||
|
||||
<!--@include: _assembly.md-->
|
||||
<!--@include: _assembly.md-->
|
||||
|
||||
@ -3,4 +3,4 @@ frame: General
|
||||
newEditLink: en/assembly/_assembly.md
|
||||
---
|
||||
|
||||
<!--@include: _assembly.md-->
|
||||
<!--@include: _assembly.md-->
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/betafpv_beta75x" />
|
||||
<Redirect to="../complete_vehicles_mc/betafpv_beta75x" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/crazyflie2" />
|
||||
<Redirect to="../complete_vehicles_mc/crazyflie2" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/crazyflie21" />
|
||||
<Redirect to="../complete_vehicles_mc/crazyflie21" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/holybro_kops2" />
|
||||
<Redirect to="../complete_vehicles_mc/holybro_kops2" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/intel_aero" />
|
||||
<Redirect to="../complete_vehicles_mc/intel_aero" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/mindracer210" />
|
||||
<Redirect to="../complete_vehicles_mc/mindracer210" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/mindracer_BNF_RTF" />
|
||||
<Redirect to="../complete_vehicles_mc/mindracer_BNF_RTF" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/modalai_starling" />
|
||||
<Redirect to="../complete_vehicles_mc/modalai_starling" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/nanomind110" />
|
||||
<Redirect to="../complete_vehicles_mc/nanomind110" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../complete_vehicles_mc/px4_vision_kit" />
|
||||
<Redirect to="../complete_vehicles_mc/px4_vision_kit" />
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -30,4 +30,3 @@ make run_failsafe_web_server
|
||||
<script setup>
|
||||
import { withBase } from 'vitepress';
|
||||
</script>
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
|
||||
@ -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.
|
||||
:::
|
||||
:::
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
<Redirect to="../flight_modes/offboard" />
|
||||
|
||||
# Offboard Mode (VTOL)
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../flying/basic_flying_mc" />
|
||||
<Redirect to="../flying/basic_flying_mc" />
|
||||
|
||||
@ -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.
|
||||
|
||||
[](https://youtu.be/mU4vm4zyjcY)
|
||||
|
||||
|
||||
[](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
|
||||
|
||||
[](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.
|
||||
|
||||
[](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.
|
||||
|
||||
[](https://youtu.be/aiFxVJFjlos)
|
||||
|
||||
|
||||
This guide uses the GPS mount location suggested in Holybro’s guide.
|
||||
1. Screw the GPS mount’s 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.
|
||||
|
||||
@ -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>.
|
||||
|
||||
|
||||
@ -43,7 +43,7 @@ The image below depicts the parts required for one wing.
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
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.
|
||||
|
||||

|
||||
|
||||
## 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>.
|
||||
|
||||
|
||||
@ -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).
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../getting_started/px4_basic_concepts" />
|
||||
<Redirect to="../getting_started/px4_basic_concepts" />
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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).
|
||||
|
||||
|
||||
@ -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).
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../camera/configuration" />
|
||||
<Redirect to="../camera/configuration" />
|
||||
|
||||
@ -1 +1 @@
|
||||
<Redirect to="../camera/camera_intel_realsense_t265_vio" />
|
||||
<Redirect to="../camera/camera_intel_realsense_t265_vio" />
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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).
|
||||
|
||||
@ -26,4 +26,4 @@ You can list the available test cases with:
|
||||
|
||||
```sh
|
||||
./test/ros_test_runner.py --list-cases
|
||||
```
|
||||
```
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||