diff --git a/clover/src/autotest/autotest_flight.py b/clover/src/autotest/autotest_flight.py index 19adfdbf..1f6c4e4f 100755 --- a/clover/src/autotest/autotest_flight.py +++ b/clover/src/autotest/autotest_flight.py @@ -74,12 +74,12 @@ navigate(yaw=-math.pi / 2, frame_id='navigate_target') rospy.sleep(3) input('Use set_attitude to fly backwards [enter]') -set_attitude(pitch=-0.3, roll=0, yaw=0, thrust=0.5, frame_id='body') +set_attitude(roll=0, pitch=-0.3, yaw=0, thrust=0.5, frame_id='body') rospy.sleep(0.3) set_position(frame_id='body') input('Use set_attitude to fly right [enter]') -set_attitude(pitch=0, roll=0.3, yaw=0, thrust=0.5, frame_id='body') +set_attitude(roll=0.3, pitch=0, yaw=0, thrust=0.5, frame_id='body') rospy.sleep(0.5) set_position(frame_id='body') diff --git a/clover/src/simple_offboard.cpp b/clover/src/simple_offboard.cpp index e7a1ef26..1c23800a 100644 --- a/clover/src/simple_offboard.cpp +++ b/clover/src/simple_offboard.cpp @@ -101,7 +101,7 @@ PoseStamped nav_start; PointStamped setpoint_position; PointStamped setpoint_altitude; Vector3Stamped setpoint_velocity; -float setpoint_yaw, setpoint_pitch, setpoint_roll; +float setpoint_yaw, setpoint_roll, setpoint_pitch; Vector3 setpoint_rates; string yaw_frame_id; float setpoint_thrust; @@ -216,11 +216,11 @@ bool getTelemetry(GetTelemetry::Request& req, GetTelemetry::Response& res) res.vx = NAN; res.vy = NAN; res.vz = NAN; - res.pitch = NAN; res.roll = NAN; + res.pitch = NAN; res.yaw = NAN; - res.pitch_rate = NAN; res.roll_rate = NAN; + res.pitch_rate = NAN; res.yaw_rate = NAN; res.voltage = NAN; res.cell_voltage = NAN; @@ -659,7 +659,7 @@ inline float safe(float value) { #define ENSURE_NON_INF(var) { if (std::isinf(var)) throw std::runtime_error(#var " argument cannot be Inf"); } bool serve(enum setpoint_type_t sp_type, float x, float y, float z, float vx, float vy, float vz, - float pitch, float roll, float yaw, float pitch_rate, float roll_rate, float yaw_rate, // editorconfig-checker-disable-line + float roll, float pitch, float yaw, float roll_rate, float pitch_rate, float yaw_rate, // editorconfig-checker-disable-line float lat, float lon, float thrust, float speed, string frame_id, bool auto_arm, // editorconfig-checker-disable-line uint8_t& success, string& message) // editorconfig-checker-disable-line { @@ -699,12 +699,12 @@ bool serve(enum setpoint_type_t sp_type, float x, float y, float z, float vx, fl ENSURE_NON_INF(vy); ENSURE_NON_INF(vz); } else if (sp_type == ATTITUDE) { - ENSURE_NON_INF(pitch); ENSURE_NON_INF(roll); + ENSURE_NON_INF(pitch); ENSURE_NON_INF(thrust); } else if (sp_type == RATES) { - ENSURE_NON_INF(pitch_rate); ENSURE_NON_INF(roll_rate); + ENSURE_NON_INF(pitch_rate); ENSURE_NON_INF(yaw_rate); ENSURE_NON_INF(thrust); } @@ -968,11 +968,11 @@ bool setVelocity(SetVelocity::Request& req, SetVelocity::Response& res) { } bool setAttitude(SetAttitude::Request& req, SetAttitude::Response& res) { - return serve(ATTITUDE, NAN, NAN, NAN, NAN, NAN, NAN, req.pitch, req.roll, req.yaw, NAN, NAN, NAN, NAN, NAN, req.thrust, NAN, req.frame_id, req.auto_arm, res.success, res.message); + return serve(ATTITUDE, NAN, NAN, NAN, NAN, NAN, NAN, req.roll, req.pitch, req.yaw, NAN, NAN, NAN, NAN, NAN, req.thrust, NAN, req.frame_id, req.auto_arm, res.success, res.message); } bool setRates(SetRates::Request& req, SetRates::Response& res) { - return serve(RATES, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, req.pitch_rate, req.roll_rate, req.yaw_rate, NAN, NAN, req.thrust, NAN, "", req.auto_arm, res.success, res.message); + return serve(RATES, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, req.roll_rate, req.pitch_rate, req.yaw_rate, NAN, NAN, req.thrust, NAN, "", req.auto_arm, res.success, res.message); } bool land(std_srvs::Trigger::Request& req, std_srvs::Trigger::Response& res) diff --git a/clover/srv/GetTelemetry.srv b/clover/srv/GetTelemetry.srv index b9ae484e..a5b6e9e7 100644 --- a/clover/srv/GetTelemetry.srv +++ b/clover/srv/GetTelemetry.srv @@ -13,11 +13,11 @@ float32 alt float32 vx float32 vy float32 vz -float32 pitch float32 roll +float32 pitch float32 yaw -float32 pitch_rate float32 roll_rate +float32 pitch_rate float32 yaw_rate float32 voltage float32 cell_voltage diff --git a/clover/srv/SetAttitude.srv b/clover/srv/SetAttitude.srv index b41c1072..ef8cf8b2 100644 --- a/clover/srv/SetAttitude.srv +++ b/clover/srv/SetAttitude.srv @@ -1,5 +1,5 @@ -float32 pitch float32 roll +float32 pitch float32 yaw float32 thrust string frame_id diff --git a/clover/srv/SetRates.srv b/clover/srv/SetRates.srv index f6ebddf9..b284a5c8 100644 --- a/clover/srv/SetRates.srv +++ b/clover/srv/SetRates.srv @@ -1,5 +1,5 @@ -float32 pitch_rate float32 roll_rate +float32 pitch_rate float32 yaw_rate float32 thrust bool auto_arm diff --git a/clover_blocks/www/blocks.js b/clover_blocks/www/blocks.js index b10e315f..e3b2f861 100644 --- a/clover_blocks/www/blocks.js +++ b/clover_blocks/www/blocks.js @@ -59,8 +59,8 @@ function updateSetpointBlock(e) { this.getInput('VY').setVisible(velocity); this.getInput('VZ').setVisible(velocity); this.getInput('YAW').setVisible(attitude); - this.getInput('PITCH').setVisible(attitude); this.getInput('ROLL').setVisible(attitude); + this.getInput('PITCH').setVisible(attitude); this.getInput('THRUST').setVisible(attitude); this.getInput('RELATIVE_TO').setVisible(type != 'RATES'); @@ -163,14 +163,14 @@ Blockly.Blocks['setpoint'] = { this.appendValueInput("VZ") .setCheck("Number") .appendField("vz"); - this.appendValueInput("PITCH") - .setCheck("Number") - .appendField("pitch") - .setVisible(false); this.appendValueInput("ROLL") .setCheck("Number") .appendField("roll") .setVisible(false); + this.appendValueInput("PITCH") + .setCheck("Number") + .appendField("pitch") + .setVisible(false); this.appendValueInput("YAW") .setCheck("Number") .appendField("yaw") @@ -247,7 +247,7 @@ Blockly.Blocks['get_attitude'] = { init: function () { this.appendDummyInput() .appendField("current") - .appendField(new Blockly.FieldDropdown([["pitch", "PITCH"], ["roll", "ROLL"], ["pitch rate", "PITCH_RATE"], ["roll rate", "ROLL_RATE"], ["yaw rate", "YAW_RATE"]]), "FIELD"); + .appendField(new Blockly.FieldDropdown([["roll", "ROLL"], ["pitch", "PITCH"], ["roll rate", "ROLL_RATE"], ["pitch rate", "PITCH_RATE"], ["yaw rate", "YAW_RATE"]]), "FIELD"); this.setOutput(true, "Number"); this.setColour(COLOR_STATE); this.setTooltip("Returns current orientation or angle rates in degree or degree per second (not radian)."); diff --git a/clover_blocks/www/index.html b/clover_blocks/www/index.html index 8f394198..fcd4060f 100644 --- a/clover_blocks/www/index.html +++ b/clover_blocks/www/index.html @@ -69,8 +69,8 @@ 0 0 0 - 0 0 + 0 0 0.5 0 diff --git a/clover_blocks/www/python.js b/clover_blocks/www/python.js index 1589cfdf..66e35c53 100644 --- a/clover_blocks/www/python.js +++ b/clover_blocks/www/python.js @@ -328,11 +328,11 @@ Blockly.Python.setpoint = function(block) { } else if (type == 'ATTITUDE') { rosDefinitions.setAttitude = true; simpleOffboard(); - return `set_attitude(pitch=${pitch}, roll=${roll}, yaw=${yaw}, thrust=${thrust}, frame_id=${frameId})\n`; + return `set_attitude(roll=${roll}, pitch=${pitch}, yaw=${yaw}, thrust=${thrust}, frame_id=${frameId})\n`; } else if (type == 'RATES') { rosDefinitions.setRates = true; simpleOffboard(); - return `set_rates(pitch_rate=${pitch}, roll_rate=${roll}, yaw_rate=${yaw}, thrust=${thrust})\n`; + return `set_rates(roll_rate=${roll}, pitch_rate=${pitch}, yaw_rate=${yaw}, thrust=${thrust})\n`; } } diff --git a/docs/en/parameters.md b/docs/en/parameters.md index caef83fd..6bf4b2d3 100644 --- a/docs/en/parameters.md +++ b/docs/en/parameters.md @@ -60,8 +60,8 @@ The `SYS_MC_EST_GROUP` parameter defines the estimator subsystem to use. Estimator subsystem is a group of modules that calculates the current state of the copter using readings from the sensors. The copter state includes: -* Angle rate of the copter – pitch_rate, roll_rate, yaw_rate; -* Copter orientation (in the local coordinate system) – pitch, roll, yaw (one of presentations); +* Angle rate of the copter – roll_rate, pitch_rate, yaw_rate; +* Copter orientation (in the local coordinate system) – roll, pitch, yaw (one of presentations); * Copter position (in the local coordinate system) – x, y, z; * Copter speed (in the local coordinate system) – vx, vy, vz; * Global coordinates of the copter – latitude, longitude, altitude; diff --git a/docs/en/simple_offboard.md b/docs/en/simple_offboard.md index 14985dfa..de0a8186 100644 --- a/docs/en/simple_offboard.md +++ b/docs/en/simple_offboard.md @@ -51,11 +51,11 @@ Response format: * `lat, lon` – drone latitude and longitude *(degrees)*, requires [GPS](gps.md) module; * `alt` – altitude in the global coordinate system (according to [WGS-84](https://ru.wikipedia.org/wiki/WGS_84) standard, not AMSL!), requires [GPS](gps.md) module; * `vx, vy, vz` – drone velocity *(m/s)*; -* `pitch` – pitch angle *(radians)*; * `roll` – roll angle *(radians)*; +* `pitch` – pitch angle *(radians)*; * `yaw` — yaw angle *(radians)*; -* `pitch_rate` — angular pitch velocity *(rad/s)*; * `roll_rate` – angular roll velocity *(rad/s)*; +* `pitch_rate` — angular pitch velocity *(rad/s)*; * `yaw_rate` – angular yaw velocity *(rad/s)*; * `voltage` – total battery voltage *(V)*; * `cell_voltage` – battery cell voltage *(V)*. @@ -261,22 +261,22 @@ set_velocity(vx=1, vy=0.0, vz=0, frame_id='body') ### set_attitude -Set pitch, roll, yaw and throttle level (similar to [the `STABILIZED` mode](modes.md)). This service may be used for lower level control of the drone behavior, or controlling the drone when no reliable data on its position is available. +Set roll, pitch, yaw and throttle level (similar to [the `STABILIZED` mode](modes.md)). This service may be used for lower level control of the drone behavior, or controlling the drone when no reliable data on its position is available. Parameters: -* `pitch`, `roll`, `yaw` – requested pitch, roll, and yaw angle *(radians)*; +* `roll`, `pitch`, `yaw` – requested roll, pitch, and yaw angle *(radians)*; * `thrust` — throttle level, ranges from 0 (no throttle, propellers are stopped) to 1 (full throttle). * `auto_arm` – switch the drone to `OFFBOARD` mode and arm automatically (**the drone will take off**); * `frame_id` – [coordinate system](frames.md) for `yaw` (Default value: `map`). ### set_rates -Set pitch, roll, and yaw rates and the throttle level (similar to [the `ACRO` mode](modes.md)). This is the lowest drone control level (excluding direct control of motor rotation speed). This service may be used to automatically perform aerobatic tricks (e.g., flips). +Set roll, pitch, and yaw rates and the throttle level (similar to [the `ACRO` mode](modes.md)). This is the lowest drone control level (excluding direct control of motor rotation speed). This service may be used to automatically perform aerobatic tricks (e.g., flips). Parameters: -* `pitch_rate`, `roll_rate`, `yaw_rate` – pitch, roll, and yaw rates *(rad/s)*; +* `roll_rate`, `pitch_rate`, `yaw_rate` – pitch, roll, and yaw rates *(rad/s)*; * `thrust` — throttle level, ranges from 0 (no throttle, propellers are stopped) to 1 (full throttle). * `auto_arm` – switch the drone to `OFFBOARD` and arm automatically (**the drone will take off**); diff --git a/docs/en/snippets.md b/docs/en/snippets.md index 315e1f55..052270b5 100644 --- a/docs/en/snippets.md +++ b/docs/en/snippets.md @@ -144,7 +144,7 @@ Determine whether the copter is turned upside-down: PI_2 = math.pi / 2 telem = get_telemetry() -flipped = abs(telem.pitch) > PI_2 or abs(telem.roll) > PI_2 +flipped = abs(telem.roll) > PI_2 or abs(telem.pitch) > PI_2 ``` ### # {#angle-hor} @@ -155,8 +155,8 @@ Calculate the copter horizontal angle: PI_2 = math.pi / 2 telem = get_telemetry() -flipped = not -PI_2 <= telem.pitch <= PI_2 or not -PI_2 <= telem.roll <= PI_2 -angle_to_horizon = math.atan(math.hypot(math.tan(telem.pitch), math.tan(telem.roll))) +flipped = not -PI_2 <= telem.roll <= PI_2 or not -PI_2 <= telem.pitch <= PI_2 +angle_to_horizon = math.atan(math.hypot(math.tan(telem.roll), math.tan(telem.pitch))) if flipped: angle_to_horizon = math.pi - angle_to_horizon ``` @@ -324,7 +324,7 @@ def flip(): while True: telem = get_telemetry() - flipped = abs(telem.pitch) > PI_2 or abs(telem.roll) > PI_2 + flipped = abs(telem.roll) > PI_2 or abs(telem.pitch) > PI_2 if flipped: break diff --git a/docs/ru/parameters.md b/docs/ru/parameters.md index 312de3e0..089a3742 100644 --- a/docs/ru/parameters.md +++ b/docs/ru/parameters.md @@ -60,8 +60,8 @@ Estimator это подсистема, которая вычисляет текущее состояние (state) коптера, используя показания с датчиков. В состояние коптера входит: -* угловая скорость коптера – pitch_rate, roll_rate, yaw_rate; -* ориентация коптера (в локальной системе координат) – pitch (тангаж), roll (крен), yaw (рысканье) (одно из представлений); +* угловая скорость коптера – roll_rate, pitch_rate, yaw_rate; +* ориентация коптера (в локальной системе координат) – roll (крен), pitch (тангаж), yaw (рысканье) (одно из представлений); * позиция коптера (в локальной системе координат) – x, y, z; * скорость коптера (в локальной системе координат) – vx, vy, vz; * глобальные координаты коптера – latitude, longitude, altitude; diff --git a/docs/ru/simple_offboard.md b/docs/ru/simple_offboard.md index c9d51474..36a948d9 100644 --- a/docs/ru/simple_offboard.md +++ b/docs/ru/simple_offboard.md @@ -51,11 +51,11 @@ land = rospy.ServiceProxy('land', Trigger) * `lat, lon` – широта, долгота *(градусы)*, необходимо наличие [GPS](gps.md); * `alt` – высота в глобальной системе координат (стандарт [WGS-84](https://ru.wikipedia.org/wiki/WGS_84), не AMSL!), необходимо наличие [GPS](gps.md); * `vx, vy, vz` – скорость коптера *(м/с)*; -* `pitch` – угол по тангажу *(радианы)*; * `roll` – угол по крену *(радианы)*; +* `pitch` – угол по тангажу *(радианы)*; * `yaw` – угол по рысканью *(радианы)*; -* `pitch_rate` – угловая скорость по тангажу *(рад/с)*; * `roll_rate` – угловая скорость по крену *(рад/с)*; +* `pitch_rate` – угловая скорость по тангажу *(рад/с)*; * `yaw_rate` – угловая скорость по рысканью *(рад/с)*; * `voltage` – общее напряжение аккумулятора *(В)*; * `cell_voltage` – напряжение аккумулятора на ячейку *(В)*. @@ -265,7 +265,7 @@ set_velocity(vx=1, vy=0.0, vz=0, frame_id='body') Параметры: -* `pitch`, `roll`, `yaw` – необходимый угол по тангажу, крену и рысканью *(радианы)*; +* `roll`, `pitch`, `yaw` – необходимый угол по тангажу, крену и рысканью *(радианы)*; * `thrust` – уровень газа от 0 (нет газа, пропеллеры остановлены) до 1 (полный газ); * `auto_arm` – перевести коптер в `OFFBOARD` и заармить автоматически (**коптер взлетит**); * `frame_id` – [система координат](frames.md), в которой задан `yaw` (по умолчанию: `map`). @@ -276,7 +276,7 @@ set_velocity(vx=1, vy=0.0, vz=0, frame_id='body') Параметры: -* `pitch_rate`, `roll_rate`, `yaw_rate` – угловая скорость по тангажу, крену и рыканью *(рад/с)*; +* `roll_rate`, `pitch_rate`, `yaw_rate` – угловая скорость по тангажу, крену и рыканью *(рад/с)*; * `thrust` – уровень газа от 0 (нет газа, пропеллеры остановлены) до 1 (полный газ). * `auto_arm` – перевести коптер в `OFFBOARD` и заармить автоматически (**коптер взлетит**); diff --git a/docs/ru/snippets.md b/docs/ru/snippets.md index 45b1be6f..89d15d60 100644 --- a/docs/ru/snippets.md +++ b/docs/ru/snippets.md @@ -154,7 +154,7 @@ new_pose = tf_buffer.transform(pose, frame_id, transform_timeout) PI_2 = math.pi / 2 telem = get_telemetry() -flipped = abs(telem.pitch) > PI_2 or abs(telem.roll) > PI_2 +flipped = abs(telem.roll) > PI_2 or abs(telem.pitch) > PI_2 ``` ### # {#angle-hor} @@ -165,7 +165,7 @@ flipped = abs(telem.pitch) > PI_2 or abs(telem.roll) > PI_2 PI_2 = math.pi / 2 telem = get_telemetry() -flipped = not -PI_2 <= telem.pitch <= PI_2 or not -PI_2 <= telem.roll <= PI_2 +flipped = not -PI_2 <= telem.roll <= PI_2 or not -PI_2 <= telem.pitch <= PI_2 angle_to_horizon = math.atan(math.hypot(math.tan(telem.pitch), math.tan(telem.roll))) if flipped: angle_to_horizon = math.pi - angle_to_horizon @@ -335,7 +335,7 @@ def flip(): while True: telem = get_telemetry() - flipped = abs(telem.pitch) > PI_2 or abs(telem.roll) > PI_2 + flipped = abs(telem.roll) > PI_2 or abs(telem.pitch) > PI_2 if flipped: break