From d99a25269b73358960d139d256f47e2148b28d4e Mon Sep 17 00:00:00 2001 From: PX4 Build Bot Date: Thu, 12 Dec 2024 17:00:25 +1100 Subject: [PATCH] New Crowdin updates (#3491) * New translations main.md (Japanese) * New translations main.md (Korean) * New translations main.md (Turkish) * New translations main.md (Ukrainian) * New translations main.md (Chinese Simplified) * New translations safety.md (Japanese) * New translations safety.md (Korean) * New translations safety.md (Turkish) * New translations safety.md (Ukrainian) * New translations safety.md (Chinese Simplified) * New translations collision_prevention.md (Japanese) * New translations collision_prevention.md (Korean) * New translations collision_prevention.md (Turkish) * New translations collision_prevention.md (Ukrainian) * New translations collision_prevention.md (Chinese Simplified) * New translations index.md (Japanese) * New translations index.md (Korean) * New translations index.md (Turkish) * New translations index.md (Ukrainian) * New translations index.md (Chinese Simplified) * New translations docs.md (Japanese) * New translations docs.md (Korean) * New translations docs.md (Turkish) * New translations docs.md (Ukrainian) * New translations docs.md (Chinese Simplified) --- ja/computer_vision/collision_prevention.md | 112 +++++++++++++++++- ja/config/safety.md | 7 +- ja/contribute/docs.md | 13 ++- ja/releases/main.md | 4 +- ja/sim_gazebo_classic/index.md | 3 +- ko/computer_vision/collision_prevention.md | 126 ++++++++++++++++++--- ko/config/safety.md | 7 +- ko/contribute/docs.md | 13 ++- ko/releases/main.md | 4 +- ko/sim_gazebo_classic/index.md | 5 +- tr/computer_vision/collision_prevention.md | 112 +++++++++++++++++- tr/config/safety.md | 7 +- tr/contribute/docs.md | 13 ++- tr/releases/main.md | 4 +- tr/sim_gazebo_classic/index.md | 3 +- uk/computer_vision/collision_prevention.md | 126 ++++++++++++++++++--- uk/config/safety.md | 7 +- uk/contribute/docs.md | 13 ++- uk/releases/main.md | 4 +- uk/sim_gazebo_classic/index.md | 39 ++++--- zh/computer_vision/collision_prevention.md | 126 ++++++++++++++++++--- zh/config/safety.md | 7 +- zh/contribute/docs.md | 13 ++- zh/releases/main.md | 4 +- zh/sim_gazebo_classic/index.md | 5 +- 25 files changed, 666 insertions(+), 111 deletions(-) diff --git a/ja/computer_vision/collision_prevention.md b/ja/computer_vision/collision_prevention.md index a8f9de01fc8e..2c2721f9f436 100644 --- a/ja/computer_vision/collision_prevention.md +++ b/ja/computer_vision/collision_prevention.md @@ -144,7 +144,7 @@ All relevant parameters are listed below: The data from all sensors are fused into an internal representation of 72 sectors around the vehicle, each containing either the sensor data and information about when it was last observed, or an indication that no data for the sector was available. When the vehicle is commanded to move in a particular direction, all sectors in the hemisphere of that direction are checked to see if the movement will bring the vehicle closer than allowed to any obstacles. If so, the vehicle velocity is restricted. -The Algorithm then can be split intwo two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. +The Algorithm then can be split into two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. :::info If there is no sensor data in a particular direction, movement in that direction is restricted to 0 (preventing the vehicle from crashing into unseen objects). @@ -153,7 +153,8 @@ If you wish to move freely into directions without sensor coverage, this can be ### Acceleration Constraining -For this we split out Acceleration Setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. +For this we split out the acceleration setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. + ![Scalefactor](../../assets/computer_vision/collision_prevention/scalefactor.png) @@ -213,7 +214,106 @@ The diagram below shows a simulation of collision prevention as viewed in Gazebo ![RViz image of collision detection using the x500\_lidar\_2d model in Gazebo](../../assets/simulation/gazebo/vehicles/x500_lidar_2d_viz.png) -## Sensor Data Overview (Implementation Details) +## Development Information/Tools + +### Plotting Obstacle Distance and Minimum Distance in Real-Time with PlotJuggler + +[PlotJuggler](../log/plotjuggler_log_analysis.md) can be used to monitor and visualize obstacle distances in a real-time plot, including the minimum distance to the closest obstacle. + + + +To use this feature you need to add a reactive Lua script to PlotJuggler, and also configure PX4 to export [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic data. +The Lua script works by extracting the `obstacle_distance_fused` data at each time step, converting the distance values into Cartesian coordinates, and pushing them to PlotJuggler. + +The steps are: + +1. Follow the instructions in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md) + +2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler): + + Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4: + + ```sh + - topic: /fmu/out/obstacle_distance_fused + type: px4_msgs::msg::ObstacleDistance + ``` + + For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in _uXRCE-DDS (PX4-ROS 2/DDS Bridge)_. + +3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section. + In the **Script Editor** tab, add following scripts in the appropriate sections: + + - **Global code, executed once:** + + ```lua + obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy") + obs_dist_min = Timeseries.new("obstacle_distance_minimum") + ``` + + - **function(tracker_time)** + + ```lua + obs_dist_fused_xy:clear() + + i = 0 + angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset") + increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment") + min_dist = 65535 + + -- Cache increment and angle_offset values at tracker_time to avoid repeated calls + local angle_offset_value = angle_offset:atTime(tracker_time) + local increment_value = increment:atTime(tracker_time) + + if increment_value == nil or increment_value <= 0 then + print("Invalid increment value: " .. tostring(increment_value)) + return + end + + local max_steps = math.floor(360 / increment_value) + + while i < max_steps do + local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i) + local distance = TimeseriesView.find(str) + if distance == nil then + print("No distance data for: " .. str) + break + end + + local dist = distance:atTime(tracker_time) + if dist ~= nil and dist < 65535 then + -- Calculate angle and Cartesian coordinates + local angle = angle_offset_value + i * increment_value + local y = dist * math.cos(math.rad(angle)) + local x = dist * math.sin(math.rad(angle)) + + obs_dist_fused_xy:push_back(x, y) + + -- Update minimum distance + if dist < min_dist then + min_dist = dist + end + end + + i = i + 1 + end + + -- Push minimum distance once after the loop + if min_dist < 65535 then + obs_dist_min:push_back(tracker_time, min_dist) + else + print("No valid minimum distance found") + end + ``` + +4. Enter a name for the script on the top right, and press **Save**. + Once saved, the script should appear in the _Active Scripts_ section. + +5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md). + You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left. + +Note that to run the script again after clearing the data, you have to press **Save** again. + +### Sensor Data Overview Collision Prevention has an internal obstacle distance map that divides the plane around the drone into 72 Sectors. Internally this information is stored in the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) UORB topic. @@ -225,11 +325,11 @@ The angles in the `obstacle_distance` topic are defined as follows: The data from rangefinders, rotary lidars, or companion computers, is processed differently, as described below. -### Rotary Lidars +#### Rotary Lidars Rotary Lidars add their data directly to the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) uORB topic. -### Rangefinders +#### Rangefinders Rangefinders publish their data to the [`distance_sensor`](../msg_docs/DistanceSensor.md) uORB topic. @@ -241,7 +341,7 @@ For example, a distance sensor measuring from 9.99° to 10.01° the measurements the quaternion `q` is only used if the `orientation` is set to `ROTATION_CUSTOM`. ::: -### Companion Computers +#### Companion Computers Companion computers update the `obstacle_distance` topic using ROS2 or the [OBSTACLE_DISTANCE](https://mavlink.io/en/messages/common.html#OBSTACLE_DISTANCE) MAVLink message. diff --git a/ja/config/safety.md b/ja/config/safety.md index 7e44bc8278cc..52f568f8bdb4 100644 --- a/ja/config/safety.md +++ b/ja/config/safety.md @@ -196,10 +196,9 @@ If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../a The relevant parameters for all vehicles shown below. -| Parameter | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [COM_POS_FS_DELAY](../advanced_config/parameter_reference.md#COM_POS_FS_DELAY) | Delay after loss of position before the failsafe is triggered. | -| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | Position control navigation loss response during mission. Values: 0 - assume use of RC, 1 - Assume no RC. | +\| Parameter | Description | +\| ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | +\| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | Position control navigation loss response during mission. Values: 0 - assume use of RC, 1 - Assume no RC. | Parameters that only affect Fixed-wing vehicles: diff --git a/ja/contribute/docs.md b/ja/contribute/docs.md index 19a1aa250ee7..d91db5fe1bca 100644 --- a/ja/contribute/docs.md +++ b/ja/contribute/docs.md @@ -150,7 +150,18 @@ Build the library locally to test that any changes you have made have rendered p This will be something like: `http://localhost:5173/px4_user_guide/`. - Stop serving using **CTRL+C** in the terminal prompt. -5. You can build the library as it would be done for deployment: +5. Open previewed pages in your local editor: + + First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library. + For example, on Windows command line you can enable VSCode as your default editor by entering: + + ```sh + set EDITOR=code + ``` + + The **Open in your editor** link at the bottom of each page will then open the current page in the editor (this replaces the _Open in GitHub_ link). + +6. You can build the library as it would be done for deployment: ```sh # Ubuntu diff --git a/ja/releases/main.md b/ja/releases/main.md index 0ee2b3925256..e3dfbde9ab99 100644 --- a/ja/releases/main.md +++ b/ja/releases/main.md @@ -29,9 +29,11 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### Common -- [Battery level estimation improvements](../config/battery.md) ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). +- [Battery level estimation improvements](../config/battery.md). ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). - [Voltage-based estimation with load compensation](../config/battery.md#voltage-based-estimation-with-load-compensation) now uses a real-time estimate of the internal resistance of the battery to compensate voltage drops under load (with increased current), providing a better capacity estimate than with the raw measured voltage. - Thrust-based load compensation has been removed (along with the `BATn_V_LOAD_DROP` parameters, where `n` is the battery number). +- The [Position (GNSS) loss failsafe](../config/safety.md#position-gnss-loss-failsafe) configurable delay (`COM_POS_FS_DELAY`) has been removed. + The failsafe will now trigger 1 second after position has been lost. ([PX4-Autopilot#24063](https://github.com/PX4/PX4-Autopilot/pull/24063)). - [Log Encryption](../dev_log/log_encryption.md) now generates an encrypted log that contains the public-key-encrypted symmetric key that can be used to decrypt it, instead of putting the key into a separate file. This makes log decryption much easier, as there is no need to download or identify a separate key file. ([PX4-Autopilot#24024](https://github.com/PX4/PX4-Autopilot/pull/24024)). diff --git a/ja/sim_gazebo_classic/index.md b/ja/sim_gazebo_classic/index.md index 4d7b2f0f0f25..25a94e9e1293 100644 --- a/ja/sim_gazebo_classic/index.md +++ b/ja/sim_gazebo_classic/index.md @@ -371,8 +371,7 @@ The camera also supports video streaming. It can be used to test camera capture, in particular within survey missions. The camera emits the [CAMERA_IMAGE_CAPTURED](https://mavlink.io/en/messages/common.html#CAMERA_IMAGE_CAPTURED) message every time an image is captured. -The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/tmp/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). - +The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/src/modules/simulation/simulator_mavlink/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). To simulate a plane with this camera: ```sh diff --git a/ko/computer_vision/collision_prevention.md b/ko/computer_vision/collision_prevention.md index cb27436fa930..23202b56ccf5 100644 --- a/ko/computer_vision/collision_prevention.md +++ b/ko/computer_vision/collision_prevention.md @@ -144,7 +144,7 @@ All relevant parameters are listed below: The data from all sensors are fused into an internal representation of 72 sectors around the vehicle, each containing either the sensor data and information about when it was last observed, or an indication that no data for the sector was available. When the vehicle is commanded to move in a particular direction, all sectors in the hemisphere of that direction are checked to see if the movement will bring the vehicle closer than allowed to any obstacles. 그러한 경우에는, 차량 속도가 제한됩니다. -The Algorithm then can be split intwo two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. +The Algorithm then can be split into two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. :::info If there is no sensor data in a particular direction, movement in that direction is restricted to 0 (preventing the vehicle from crashing into unseen objects). @@ -153,7 +153,8 @@ If you wish to move freely into directions without sensor coverage, this can be ### Acceleration Constraining -For this we split out Acceleration Setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. +For this we split out the acceleration setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. + ![Scalefactor](../../assets/computer_vision/collision_prevention/scalefactor.png) @@ -169,21 +170,21 @@ The delay associated with collision prevention, both in the vehicle tracking vel This should be [tuned](#delay_tuning) to the specific vehicle. If the sectors adjacent to the commanded sectors are 'better' by a significant margin, the direction of the requested input can be modified by up to the angle specified in [CP_GUIDE_ANG](#CP_GUIDE_ANG). -이는 장애물에 걸리지 않고 장애물 주변으로 차량을 '안내'하기 위하여 사용자 입력을 미세 조정하는 데 도움이 됩니다. +This helps to fine-tune user input to 'guide' the vehicle around obstacles rather than getting stuck against them. -### 범위 데이터 손실 +### Range Data Loss If the autopilot does not receive range data from any sensor for longer than 0.5s, it will output a warning _No range data received, no movement allowed_. -이렇게하면 xy의 속도 설정값이 0이 됩니다. +This will force the velocity setpoints in xy to zero. After 5 seconds of not receiving any data, the vehicle will switch into [HOLD mode](../flight_modes_mc/hold.md). If you want the vehicle to be able to move again, you will need to disable Collision Prevention by either setting the parameter [CP_DIST](#CP_DIST) to a negative value, or switching to a mode other than [Position mode](../flight_modes_mc/position.md) (e.g. to _Altitude mode_ or _Stabilized mode_). -여러 센서가 연결되어 있고, 그 중 하나와의 연결이 끊어진 경우에도 보고 센서의 시야 (FOV) 내부를 비행할 수 있습니다. -결함이 있는 센서의 데이터가 만료되고, 이 센서가 포함하는 영역이 커버되지 않은 것으로 처리되므로 그 곳으로 이동할 수 없습니다. +If you have multiple sensors connected and you lose connection to one of them, you will still be able to fly inside the field of view (FOV) of the reporting sensors. +The data of the faulty sensor will expire and the region covered by this sensor will be treated as uncovered, meaning you will not be able to move there. :::warning Be careful when enabling [CP_GO_NO_DATA=1](#CP_GO_NO_DATA), which allows the vehicle to fly outside the area with sensor coverage. -여러 센서 중 하나라도 연결이 끊어지면 결함이있는 센서의 영역이 무시되어, 제약없이 이동할 수 있습니다. +If you lose connection to one of multiple sensors, the area covered by the faulty sensor is also treated as uncovered and you will be able to move there without constraint. ::: ## Companion Setup {#companion} @@ -196,7 +197,7 @@ If using a companion computer or external sensor, it needs to supply a stream of The minimum rate at which messages _must_ be sent depends on vehicle speed - at higher rates the vehicle will have a longer time to respond to detected obstacles. Initial testing of the system used a vehicle moving at 4 m/s with `OBSTACLE_DISTANCE` messages being emitted at 10Hz (the maximum rate supported by the vision system). -시스템은 상당히 빠른 속도와 낮은 주파수 거리 업데이트에서 잘 작동 할 수 있습니다. +The system may work well at significantly higher speeds and lower frequency distance updates. ## Gazebo Simulation @@ -213,7 +214,106 @@ The diagram below shows a simulation of collision prevention as viewed in Gazebo ![RViz image of collision detection using the x500\_lidar\_2d model in Gazebo](../../assets/simulation/gazebo/vehicles/x500_lidar_2d_viz.png) -## Sensor Data Overview (Implementation Details) +## Development Information/Tools + +### Plotting Obstacle Distance and Minimum Distance in Real-Time with PlotJuggler + +[PlotJuggler](../log/plotjuggler_log_analysis.md) can be used to monitor and visualize obstacle distances in a real-time plot, including the minimum distance to the closest obstacle. + + + +To use this feature you need to add a reactive Lua script to PlotJuggler, and also configure PX4 to export [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic data. +The Lua script works by extracting the `obstacle_distance_fused` data at each time step, converting the distance values into Cartesian coordinates, and pushing them to PlotJuggler. + +단계는 다음과 같습니다: + +1. Follow the instructions in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md) + +2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler): + + Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4: + + ```sh + - topic: /fmu/out/obstacle_distance_fused + type: px4_msgs::msg::ObstacleDistance + ``` + + For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in _uXRCE-DDS (PX4-ROS 2/DDS Bridge)_. + +3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section. + In the **Script Editor** tab, add following scripts in the appropriate sections: + + - **Global code, executed once:** + + ```lua + obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy") + obs_dist_min = Timeseries.new("obstacle_distance_minimum") + ``` + + - **function(tracker_time)** + + ```lua + obs_dist_fused_xy:clear() + + i = 0 + angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset") + increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment") + min_dist = 65535 + + -- Cache increment and angle_offset values at tracker_time to avoid repeated calls + local angle_offset_value = angle_offset:atTime(tracker_time) + local increment_value = increment:atTime(tracker_time) + + if increment_value == nil or increment_value <= 0 then + print("Invalid increment value: " .. tostring(increment_value)) + return + end + + local max_steps = math.floor(360 / increment_value) + + while i < max_steps do + local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i) + local distance = TimeseriesView.find(str) + if distance == nil then + print("No distance data for: " .. str) + break + end + + local dist = distance:atTime(tracker_time) + if dist ~= nil and dist < 65535 then + -- Calculate angle and Cartesian coordinates + local angle = angle_offset_value + i * increment_value + local y = dist * math.cos(math.rad(angle)) + local x = dist * math.sin(math.rad(angle)) + + obs_dist_fused_xy:push_back(x, y) + + -- Update minimum distance + if dist < min_dist then + min_dist = dist + end + end + + i = i + 1 + end + + -- Push minimum distance once after the loop + if min_dist < 65535 then + obs_dist_min:push_back(tracker_time, min_dist) + else + print("No valid minimum distance found") + end + ``` + +4. Enter a name for the script on the top right, and press **Save**. + Once saved, the script should appear in the _Active Scripts_ section. + +5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md). + You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left. + +Note that to run the script again after clearing the data, you have to press **Save** again. + +### Sensor Data Overview Collision Prevention has an internal obstacle distance map that divides the plane around the drone into 72 Sectors. Internally this information is stored in the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) UORB topic. @@ -225,11 +325,11 @@ The angles in the `obstacle_distance` topic are defined as follows: The data from rangefinders, rotary lidars, or companion computers, is processed differently, as described below. -### Rotary Lidars +#### Rotary Lidars Rotary Lidars add their data directly to the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) uORB topic. -### Rangefinders +#### Rangefinders Rangefinders publish their data to the [`distance_sensor`](../msg_docs/DistanceSensor.md) uORB topic. @@ -241,7 +341,7 @@ For example, a distance sensor measuring from 9.99° to 10.01° the measurements the quaternion `q` is only used if the `orientation` is set to `ROTATION_CUSTOM`. ::: -### 보조 컴퓨터 +#### 보조 컴퓨터 Companion computers update the `obstacle_distance` topic using ROS2 or the [OBSTACLE_DISTANCE](https://mavlink.io/en/messages/common.html#OBSTACLE_DISTANCE) MAVLink message. diff --git a/ko/config/safety.md b/ko/config/safety.md index 752df0ef04b4..971ad7418233 100644 --- a/ko/config/safety.md +++ b/ko/config/safety.md @@ -196,10 +196,9 @@ If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../a The relevant parameters for all vehicles shown below. -| 매개변수 | 설명 | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | -| [COM_POS_FS_DELAY](../advanced_config/parameter_reference.md#COM_POS_FS_DELAY) | 위치 손실 후 안전 장치 동작 지연 여부 설정 | -| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | 임무 중 위치 제어 탐색 손실 응답. 값 : 0 - RC 사용 가정, 1 - RC 없음 가정. | +\| Parameter | Description | +\| ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | +\| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | Position control navigation loss response during mission. 값 : 0 - RC 사용 가정, 1 - RC 없음 가정. | Parameters that only affect Fixed-wing vehicles: diff --git a/ko/contribute/docs.md b/ko/contribute/docs.md index 7c0eee558d97..69acd72958dd 100644 --- a/ko/contribute/docs.md +++ b/ko/contribute/docs.md @@ -151,7 +151,18 @@ For these kinds of changes we suggest using the same approach as for _code_: This will be something like: `http://localhost:5173/px4_user_guide/`. - Stop serving using **CTRL+C** in the terminal prompt. -5. 다음을 사용하여 라이브러리를 빌드합니다. +5. Open previewed pages in your local editor: + + First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library. + For example, on Windows command line you can enable VSCode as your default editor by entering: + + ```sh + set EDITOR=code + ``` + + The **Open in your editor** link at the bottom of each page will then open the current page in the editor (this replaces the _Open in GitHub_ link). + +6. 다음을 사용하여 라이브러리를 빌드합니다. ```sh # Ubuntu diff --git a/ko/releases/main.md b/ko/releases/main.md index 0ab7d0c13bbc..e6b1f873dc55 100644 --- a/ko/releases/main.md +++ b/ko/releases/main.md @@ -29,9 +29,11 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### 공통 -- [Battery level estimation improvements](../config/battery.md) ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). +- [Battery level estimation improvements](../config/battery.md). ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). - [Voltage-based estimation with load compensation](../config/battery.md#voltage-based-estimation-with-load-compensation) now uses a real-time estimate of the internal resistance of the battery to compensate voltage drops under load (with increased current), providing a better capacity estimate than with the raw measured voltage. - Thrust-based load compensation has been removed (along with the `BATn_V_LOAD_DROP` parameters, where `n` is the battery number). +- The [Position (GNSS) loss failsafe](../config/safety.md#position-gnss-loss-failsafe) configurable delay (`COM_POS_FS_DELAY`) has been removed. + The failsafe will now trigger 1 second after position has been lost. ([PX4-Autopilot#24063](https://github.com/PX4/PX4-Autopilot/pull/24063)). - [Log Encryption](../dev_log/log_encryption.md) now generates an encrypted log that contains the public-key-encrypted symmetric key that can be used to decrypt it, instead of putting the key into a separate file. This makes log decryption much easier, as there is no need to download or identify a separate key file. ([PX4-Autopilot#24024](https://github.com/PX4/PX4-Autopilot/pull/24024)). diff --git a/ko/sim_gazebo_classic/index.md b/ko/sim_gazebo_classic/index.md index 86179c7854b0..a84cb5daa63b 100644 --- a/ko/sim_gazebo_classic/index.md +++ b/ko/sim_gazebo_classic/index.md @@ -371,8 +371,7 @@ The camera also supports video streaming. It can be used to test camera capture, in particular within survey missions. The camera emits the [CAMERA_IMAGE_CAPTURED](https://mavlink.io/en/messages/common.html#CAMERA_IMAGE_CAPTURED) message every time an image is captured. -The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/tmp/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). - +The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/src/modules/simulation/simulator_mavlink/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). To simulate a plane with this camera: ```sh @@ -428,7 +427,7 @@ For example, you could do this by forcing a [Geofence violation](../config/safet - [Parachute](../peripherals/parachute.md) - [Safety Configuration (Failsafes)](../config/safety.md) -## 동영상 스트리밍 +## Video Streaming PX4 SITL for Gazebo Classic supports UDP video streaming from a camera sensor attached to a simulated vehicle model. When streaming is enabled, you can connect to this stream from _QGroundControl_ (on UDP port 5600) and view video of the Gazebo Classic environment from the simulated vehicle - just as you would from a real camera. diff --git a/tr/computer_vision/collision_prevention.md b/tr/computer_vision/collision_prevention.md index a8f9de01fc8e..2c2721f9f436 100644 --- a/tr/computer_vision/collision_prevention.md +++ b/tr/computer_vision/collision_prevention.md @@ -144,7 +144,7 @@ All relevant parameters are listed below: The data from all sensors are fused into an internal representation of 72 sectors around the vehicle, each containing either the sensor data and information about when it was last observed, or an indication that no data for the sector was available. When the vehicle is commanded to move in a particular direction, all sectors in the hemisphere of that direction are checked to see if the movement will bring the vehicle closer than allowed to any obstacles. If so, the vehicle velocity is restricted. -The Algorithm then can be split intwo two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. +The Algorithm then can be split into two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. :::info If there is no sensor data in a particular direction, movement in that direction is restricted to 0 (preventing the vehicle from crashing into unseen objects). @@ -153,7 +153,8 @@ If you wish to move freely into directions without sensor coverage, this can be ### Acceleration Constraining -For this we split out Acceleration Setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. +For this we split out the acceleration setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. + ![Scalefactor](../../assets/computer_vision/collision_prevention/scalefactor.png) @@ -213,7 +214,106 @@ The diagram below shows a simulation of collision prevention as viewed in Gazebo ![RViz image of collision detection using the x500\_lidar\_2d model in Gazebo](../../assets/simulation/gazebo/vehicles/x500_lidar_2d_viz.png) -## Sensor Data Overview (Implementation Details) +## Development Information/Tools + +### Plotting Obstacle Distance and Minimum Distance in Real-Time with PlotJuggler + +[PlotJuggler](../log/plotjuggler_log_analysis.md) can be used to monitor and visualize obstacle distances in a real-time plot, including the minimum distance to the closest obstacle. + + + +To use this feature you need to add a reactive Lua script to PlotJuggler, and also configure PX4 to export [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic data. +The Lua script works by extracting the `obstacle_distance_fused` data at each time step, converting the distance values into Cartesian coordinates, and pushing them to PlotJuggler. + +The steps are: + +1. Follow the instructions in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md) + +2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler): + + Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4: + + ```sh + - topic: /fmu/out/obstacle_distance_fused + type: px4_msgs::msg::ObstacleDistance + ``` + + For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in _uXRCE-DDS (PX4-ROS 2/DDS Bridge)_. + +3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section. + In the **Script Editor** tab, add following scripts in the appropriate sections: + + - **Global code, executed once:** + + ```lua + obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy") + obs_dist_min = Timeseries.new("obstacle_distance_minimum") + ``` + + - **function(tracker_time)** + + ```lua + obs_dist_fused_xy:clear() + + i = 0 + angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset") + increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment") + min_dist = 65535 + + -- Cache increment and angle_offset values at tracker_time to avoid repeated calls + local angle_offset_value = angle_offset:atTime(tracker_time) + local increment_value = increment:atTime(tracker_time) + + if increment_value == nil or increment_value <= 0 then + print("Invalid increment value: " .. tostring(increment_value)) + return + end + + local max_steps = math.floor(360 / increment_value) + + while i < max_steps do + local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i) + local distance = TimeseriesView.find(str) + if distance == nil then + print("No distance data for: " .. str) + break + end + + local dist = distance:atTime(tracker_time) + if dist ~= nil and dist < 65535 then + -- Calculate angle and Cartesian coordinates + local angle = angle_offset_value + i * increment_value + local y = dist * math.cos(math.rad(angle)) + local x = dist * math.sin(math.rad(angle)) + + obs_dist_fused_xy:push_back(x, y) + + -- Update minimum distance + if dist < min_dist then + min_dist = dist + end + end + + i = i + 1 + end + + -- Push minimum distance once after the loop + if min_dist < 65535 then + obs_dist_min:push_back(tracker_time, min_dist) + else + print("No valid minimum distance found") + end + ``` + +4. Enter a name for the script on the top right, and press **Save**. + Once saved, the script should appear in the _Active Scripts_ section. + +5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md). + You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left. + +Note that to run the script again after clearing the data, you have to press **Save** again. + +### Sensor Data Overview Collision Prevention has an internal obstacle distance map that divides the plane around the drone into 72 Sectors. Internally this information is stored in the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) UORB topic. @@ -225,11 +325,11 @@ The angles in the `obstacle_distance` topic are defined as follows: The data from rangefinders, rotary lidars, or companion computers, is processed differently, as described below. -### Rotary Lidars +#### Rotary Lidars Rotary Lidars add their data directly to the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) uORB topic. -### Rangefinders +#### Rangefinders Rangefinders publish their data to the [`distance_sensor`](../msg_docs/DistanceSensor.md) uORB topic. @@ -241,7 +341,7 @@ For example, a distance sensor measuring from 9.99° to 10.01° the measurements the quaternion `q` is only used if the `orientation` is set to `ROTATION_CUSTOM`. ::: -### Companion Computers +#### Companion Computers Companion computers update the `obstacle_distance` topic using ROS2 or the [OBSTACLE_DISTANCE](https://mavlink.io/en/messages/common.html#OBSTACLE_DISTANCE) MAVLink message. diff --git a/tr/config/safety.md b/tr/config/safety.md index 7e44bc8278cc..52f568f8bdb4 100644 --- a/tr/config/safety.md +++ b/tr/config/safety.md @@ -196,10 +196,9 @@ If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../a The relevant parameters for all vehicles shown below. -| Parameter | Description | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [COM_POS_FS_DELAY](../advanced_config/parameter_reference.md#COM_POS_FS_DELAY) | Delay after loss of position before the failsafe is triggered. | -| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | Position control navigation loss response during mission. Values: 0 - assume use of RC, 1 - Assume no RC. | +\| Parameter | Description | +\| ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | +\| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | Position control navigation loss response during mission. Values: 0 - assume use of RC, 1 - Assume no RC. | Parameters that only affect Fixed-wing vehicles: diff --git a/tr/contribute/docs.md b/tr/contribute/docs.md index e4f5276b93c8..e955f6a6cc97 100644 --- a/tr/contribute/docs.md +++ b/tr/contribute/docs.md @@ -150,7 +150,18 @@ Build the library locally to test that any changes you have made have rendered p This will be something like: `http://localhost:5173/px4_user_guide/`. - Stop serving using **CTRL+C** in the terminal prompt. -5. You can build the library as it would be done for deployment: +5. Open previewed pages in your local editor: + + First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library. + For example, on Windows command line you can enable VSCode as your default editor by entering: + + ```sh + set EDITOR=code + ``` + + The **Open in your editor** link at the bottom of each page will then open the current page in the editor (this replaces the _Open in GitHub_ link). + +6. You can build the library as it would be done for deployment: ```sh # Ubuntu diff --git a/tr/releases/main.md b/tr/releases/main.md index a81849aec492..562e9ed3f964 100644 --- a/tr/releases/main.md +++ b/tr/releases/main.md @@ -29,9 +29,11 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### Common -- [Battery level estimation improvements](../config/battery.md) ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). +- [Battery level estimation improvements](../config/battery.md). ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). - [Voltage-based estimation with load compensation](../config/battery.md#voltage-based-estimation-with-load-compensation) now uses a real-time estimate of the internal resistance of the battery to compensate voltage drops under load (with increased current), providing a better capacity estimate than with the raw measured voltage. - Thrust-based load compensation has been removed (along with the `BATn_V_LOAD_DROP` parameters, where `n` is the battery number). +- The [Position (GNSS) loss failsafe](../config/safety.md#position-gnss-loss-failsafe) configurable delay (`COM_POS_FS_DELAY`) has been removed. + The failsafe will now trigger 1 second after position has been lost. ([PX4-Autopilot#24063](https://github.com/PX4/PX4-Autopilot/pull/24063)). - [Log Encryption](../dev_log/log_encryption.md) now generates an encrypted log that contains the public-key-encrypted symmetric key that can be used to decrypt it, instead of putting the key into a separate file. This makes log decryption much easier, as there is no need to download or identify a separate key file. ([PX4-Autopilot#24024](https://github.com/PX4/PX4-Autopilot/pull/24024)). diff --git a/tr/sim_gazebo_classic/index.md b/tr/sim_gazebo_classic/index.md index 64d6e0552093..bdb3240851f5 100644 --- a/tr/sim_gazebo_classic/index.md +++ b/tr/sim_gazebo_classic/index.md @@ -371,8 +371,7 @@ The camera also supports video streaming. It can be used to test camera capture, in particular within survey missions. The camera emits the [CAMERA_IMAGE_CAPTURED](https://mavlink.io/en/messages/common.html#CAMERA_IMAGE_CAPTURED) message every time an image is captured. -The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/tmp/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). - +The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/src/modules/simulation/simulator_mavlink/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). To simulate a plane with this camera: ```sh diff --git a/uk/computer_vision/collision_prevention.md b/uk/computer_vision/collision_prevention.md index 2bb97de6e814..26e77a9aa507 100644 --- a/uk/computer_vision/collision_prevention.md +++ b/uk/computer_vision/collision_prevention.md @@ -144,7 +144,7 @@ All relevant parameters are listed below: The data from all sensors are fused into an internal representation of 72 sectors around the vehicle, each containing either the sensor data and information about when it was last observed, or an indication that no data for the sector was available. When the vehicle is commanded to move in a particular direction, all sectors in the hemisphere of that direction are checked to see if the movement will bring the vehicle closer than allowed to any obstacles. Якщо так, то швидкість транспортного засобу буде обмежена. -The Algorithm then can be split intwo two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. +The Algorithm then can be split into two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. :::info If there is no sensor data in a particular direction, movement in that direction is restricted to 0 (preventing the vehicle from crashing into unseen objects). @@ -153,7 +153,8 @@ If you wish to move freely into directions without sensor coverage, this can be ### Acceleration Constraining -For this we split out Acceleration Setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. +For this we split out the acceleration setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. + ![Scalefactor](../../assets/computer_vision/collision_prevention/scalefactor.png) @@ -169,21 +170,21 @@ The delay associated with collision prevention, both in the vehicle tracking vel This should be [tuned](#delay_tuning) to the specific vehicle. If the sectors adjacent to the commanded sectors are 'better' by a significant margin, the direction of the requested input can be modified by up to the angle specified in [CP_GUIDE_ANG](#CP_GUIDE_ANG). -Це допомагає точно налаштувати вхідні дані користувача, щоб "вести" транспортний засіб навколо перешкод, а не застрявати на них. +This helps to fine-tune user input to 'guide' the vehicle around obstacles rather than getting stuck against them. -### Втрата даних про дальність +### Range Data Loss If the autopilot does not receive range data from any sensor for longer than 0.5s, it will output a warning _No range data received, no movement allowed_. -Це змусить встановити швидкість у ху до нуля. +This will force the velocity setpoints in xy to zero. After 5 seconds of not receiving any data, the vehicle will switch into [HOLD mode](../flight_modes_mc/hold.md). If you want the vehicle to be able to move again, you will need to disable Collision Prevention by either setting the parameter [CP_DIST](#CP_DIST) to a negative value, or switching to a mode other than [Position mode](../flight_modes_mc/position.md) (e.g. to _Altitude mode_ or _Stabilized mode_). -Якщо у вас підключено кілька датчиків і ви втратили зв'язок з одним з них, ви все одно зможете літати в полі зору (FOV) датчиків, що звітують. -Дані несправного датчика втратять чинність, а область, що покривається цим датчиком, буде вважатися непокритою, тобто ви не зможете там пересуватися. +If you have multiple sensors connected and you lose connection to one of them, you will still be able to fly inside the field of view (FOV) of the reporting sensors. +The data of the faulty sensor will expire and the region covered by this sensor will be treated as uncovered, meaning you will not be able to move there. :::warning Be careful when enabling [CP_GO_NO_DATA=1](#CP_GO_NO_DATA), which allows the vehicle to fly outside the area with sensor coverage. -Якщо ви втратите зв'язок з одним з декількох датчиків, зона, яку охоплює несправний датчик, також буде вважатися відкритою, і ви зможете пересуватися там без обмежень. +If you lose connection to one of multiple sensors, the area covered by the faulty sensor is also treated as uncovered and you will be able to move there without constraint. ::: ## Companion Setup {#companion} @@ -196,7 +197,7 @@ If using a companion computer or external sensor, it needs to supply a stream of The minimum rate at which messages _must_ be sent depends on vehicle speed - at higher rates the vehicle will have a longer time to respond to detected obstacles. Initial testing of the system used a vehicle moving at 4 m/s with `OBSTACLE_DISTANCE` messages being emitted at 10Hz (the maximum rate supported by the vision system). -Система може добре працювати при значно вищих швидкостях і менших частотах оновлення відстані. +The system may work well at significantly higher speeds and lower frequency distance updates. ## Gazebo Simulation @@ -213,7 +214,106 @@ The diagram below shows a simulation of collision prevention as viewed in Gazebo ![RViz image of collision detection using the x500\_lidar\_2d model in Gazebo](../../assets/simulation/gazebo/vehicles/x500_lidar_2d_viz.png) -## Sensor Data Overview (Implementation Details) +## Development Information/Tools + +### Plotting Obstacle Distance and Minimum Distance in Real-Time with PlotJuggler + +[PlotJuggler](../log/plotjuggler_log_analysis.md) can be used to monitor and visualize obstacle distances in a real-time plot, including the minimum distance to the closest obstacle. + + + +To use this feature you need to add a reactive Lua script to PlotJuggler, and also configure PX4 to export [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic data. +The Lua script works by extracting the `obstacle_distance_fused` data at each time step, converting the distance values into Cartesian coordinates, and pushing them to PlotJuggler. + +Кроки наступні: + +1. Follow the instructions in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md) + +2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler): + + Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4: + + ```sh + - topic: /fmu/out/obstacle_distance_fused + type: px4_msgs::msg::ObstacleDistance + ``` + + For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in _uXRCE-DDS (PX4-ROS 2/DDS Bridge)_. + +3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section. + In the **Script Editor** tab, add following scripts in the appropriate sections: + + - **Global code, executed once:** + + ```lua + obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy") + obs_dist_min = Timeseries.new("obstacle_distance_minimum") + ``` + + - **function(tracker_time)** + + ```lua + obs_dist_fused_xy:clear() + + i = 0 + angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset") + increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment") + min_dist = 65535 + + -- Cache increment and angle_offset values at tracker_time to avoid repeated calls + local angle_offset_value = angle_offset:atTime(tracker_time) + local increment_value = increment:atTime(tracker_time) + + if increment_value == nil or increment_value <= 0 then + print("Invalid increment value: " .. tostring(increment_value)) + return + end + + local max_steps = math.floor(360 / increment_value) + + while i < max_steps do + local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i) + local distance = TimeseriesView.find(str) + if distance == nil then + print("No distance data for: " .. str) + break + end + + local dist = distance:atTime(tracker_time) + if dist ~= nil and dist < 65535 then + -- Calculate angle and Cartesian coordinates + local angle = angle_offset_value + i * increment_value + local y = dist * math.cos(math.rad(angle)) + local x = dist * math.sin(math.rad(angle)) + + obs_dist_fused_xy:push_back(x, y) + + -- Update minimum distance + if dist < min_dist then + min_dist = dist + end + end + + i = i + 1 + end + + -- Push minimum distance once after the loop + if min_dist < 65535 then + obs_dist_min:push_back(tracker_time, min_dist) + else + print("No valid minimum distance found") + end + ``` + +4. Enter a name for the script on the top right, and press **Save**. + Once saved, the script should appear in the _Active Scripts_ section. + +5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md). + You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left. + +Note that to run the script again after clearing the data, you have to press **Save** again. + +### Sensor Data Overview Collision Prevention has an internal obstacle distance map that divides the plane around the drone into 72 Sectors. Internally this information is stored in the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) UORB topic. @@ -225,11 +325,11 @@ The angles in the `obstacle_distance` topic are defined as follows: The data from rangefinders, rotary lidars, or companion computers, is processed differently, as described below. -### Rotary Lidars +#### Rotary Lidars Rotary Lidars add their data directly to the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) uORB topic. -### Rangefinders +#### Rangefinders Rangefinders publish their data to the [`distance_sensor`](../msg_docs/DistanceSensor.md) uORB topic. @@ -241,7 +341,7 @@ For example, a distance sensor measuring from 9.99° to 10.01° the measurements the quaternion `q` is only used if the `orientation` is set to `ROTATION_CUSTOM`. ::: -### Супутні комп'ютери +#### Супутні комп'ютери Companion computers update the `obstacle_distance` topic using ROS2 or the [OBSTACLE_DISTANCE](https://mavlink.io/en/messages/common.html#OBSTACLE_DISTANCE) MAVLink message. diff --git a/uk/config/safety.md b/uk/config/safety.md index 25f36c15c6d8..18c03d2990dd 100644 --- a/uk/config/safety.md +++ b/uk/config/safety.md @@ -194,10 +194,9 @@ If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../a Відповідні параметри для всіх транспортних засобів наведено нижче. -| Параметр | Опис | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [COM_POS_FS_DELAY](../advanced_config/parameter_reference.md#COM_POS_FS_DELAY) | Затримка після втрати позиції перед спрацюванням аварійного режиму. | -| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | Відповідь на втрату навігації контролю позиції під час місії. Значення: 0 - припускати використання RC, 1 - Припустити відсутність RC. | +\| Parameter | Description | +\| ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | +\| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | Position control navigation loss response during mission. Значення: 0 - припускати використання RC, 1 - Припустити відсутність RC. | Параметри, які впливають лише на повітряні судна з фіксованим крилом: diff --git a/uk/contribute/docs.md b/uk/contribute/docs.md index 45dc6aa6677a..8b9976b16de1 100644 --- a/uk/contribute/docs.md +++ b/uk/contribute/docs.md @@ -150,7 +150,18 @@ For these kinds of changes we suggest using the same approach as for _code_: This will be something like: `http://localhost:5173/px4_user_guide/`. - Stop serving using **CTRL+C** in the terminal prompt. -5. Побудуйте бібліотеку за допомогою: +5. Open previewed pages in your local editor: + + First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library. + For example, on Windows command line you can enable VSCode as your default editor by entering: + + ```sh + set EDITOR=code + ``` + + The **Open in your editor** link at the bottom of each page will then open the current page in the editor (this replaces the _Open in GitHub_ link). + +6. Побудуйте бібліотеку за допомогою: ```sh # Ubuntu diff --git a/uk/releases/main.md b/uk/releases/main.md index 5c1501d67e24..f013451e9f15 100644 --- a/uk/releases/main.md +++ b/uk/releases/main.md @@ -29,9 +29,11 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### Загальні -- [Battery level estimation improvements](../config/battery.md) ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). +- [Battery level estimation improvements](../config/battery.md). ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). - [Voltage-based estimation with load compensation](../config/battery.md#voltage-based-estimation-with-load-compensation) now uses a real-time estimate of the internal resistance of the battery to compensate voltage drops under load (with increased current), providing a better capacity estimate than with the raw measured voltage. - Thrust-based load compensation has been removed (along with the `BATn_V_LOAD_DROP` parameters, where `n` is the battery number). +- The [Position (GNSS) loss failsafe](../config/safety.md#position-gnss-loss-failsafe) configurable delay (`COM_POS_FS_DELAY`) has been removed. + The failsafe will now trigger 1 second after position has been lost. ([PX4-Autopilot#24063](https://github.com/PX4/PX4-Autopilot/pull/24063)). - [Log Encryption](../dev_log/log_encryption.md) now generates an encrypted log that contains the public-key-encrypted symmetric key that can be used to decrypt it, instead of putting the key into a separate file. This makes log decryption much easier, as there is no need to download or identify a separate key file. ([PX4-Autopilot#24024](https://github.com/PX4/PX4-Autopilot/pull/24024)). diff --git a/uk/sim_gazebo_classic/index.md b/uk/sim_gazebo_classic/index.md index f74b9fcd4943..eb6b88e8d23e 100644 --- a/uk/sim_gazebo_classic/index.md +++ b/uk/sim_gazebo_classic/index.md @@ -371,9 +371,8 @@ The _Gazebo Classic_ survey camera simulates a [MAVLink camera](https://mavlink. Вона може бути використана для перевірки захоплення камери, зокрема в політних завданнях спостереження. The camera emits the [CAMERA_IMAGE_CAPTURED](https://mavlink.io/en/messages/common.html#CAMERA_IMAGE_CAPTURED) message every time an image is captured. -The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/tmp/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). - -Для симуляції літака з цією камерою: +The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/src/modules/simulation/simulator_mavlink/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). +To simulate a plane with this camera: ```sh make px4_sitl_default gazebo-classic_plane_cam @@ -387,33 +386,33 @@ The camera also supports/responds to the following MAVLink commands: [MAV_CMD_RE The simulated camera is implemented in [PX4/PX4-SITL_gazebo-classic/main/src/gazebo_camera_manager_plugin.cpp](https://github.com/PX4/PX4-SITL_gazebo-classic/blob/main/src/gazebo_camera_manager_plugin.cpp). ::: -## Симуляція камери глибини +## Simulated Depth Camera The _Gazebo Classic_ [depth camera model](https://github.com/PX4/PX4-SITL_gazebo-classic/blob/main/models/depth_camera/depth_camera.sdf.jinja) simulates an Intel® RealSense™ D455 stereo depth camera using the [Openni Kinect plugin](https://classic.gazebosim.org/tutorials?tut=ros_gzplugins#OpenniKinect). This publishes depth images and camera information on the `/camera/depth/image_raw` and `/camera/depth/camera_info` ROS topics respectively. -Щоб використовувати ці зображення, потрібно встановити ROS або ROS 2. -Зверніть увагу на попередження зверху цієї сторінки про те, як "уникнути конфліктів встановлення" під час встановлення ROS і Gazebo. +To use these images, you will need to install ROS or ROS 2. +Note the warning at the top of this page about how to "avoid installation conflicts" when installing ROS and Gazebo. -Можна симулювати квадрокоптер з камерою глибини що дивиться вперед: +You can simulate a quadrotor with a forward-facing depth camera: ```sh make px4_sitl gazebo-classic_iris_depth_camera ``` -або квадрокоптер з камерою глибини, що дивиться вниз: +or a quadrotor with a downward-facing depth camera: ```sh make px4_sitl gazebo-classic_iris_downward_depth_camera ``` -## Симуляція парашутування при припиненні польоту +## Simulated Parachute/Flight Termination _Gazebo Classic_ can be used to simulate deploying a [parachute](../peripherals/parachute.md) during [Flight Termination](../advanced_config/flight_termination.md) (flight termination is triggered by the PWM command that is simulated in _Gazebo Classic_). The `if750a` target has a parachute attached to the vehicle. -Для симуляції засобу виконайте наступну команду: +To simulate the vehicle, run the following command: ```sh make px4_sitl gazebo-classic_if750a @@ -428,13 +427,13 @@ For example, you could do this by forcing a [Geofence violation](../config/safet - [Parachute](../peripherals/parachute.md) - [Safety Configuration (Failsafes)](../config/safety.md) -## Трансляція відео +## Video Streaming -PX4 SITL для Gazebo Classic підтримує трансляцію відео по UDP з датчика камери, приєднаної до симуляції моделі рухомого засобу. +PX4 SITL for Gazebo Classic supports UDP video streaming from a camera sensor attached to a simulated vehicle model. When streaming is enabled, you can connect to this stream from _QGroundControl_ (on UDP port 5600) and view video of the Gazebo Classic environment from the simulated vehicle - just as you would from a real camera. The video is streamed using a _gstreamer_ pipeline and can be enabled/disabled using a button in the Gazebo Classic UI. -Симуляція датчику камери підтримується/увімкненно на наступних планерах: +The simulated camera sensor is supported/enabled on the following frames: - [Typhoon H480](#typhoon_h480) @@ -447,10 +446,10 @@ The required dependencies should already have been [installed when you set up Ga FYI only, the dependencies include: `gstreamer1.0-plugins-base`, `gstreamer1.0-plugins-good`, `gstreamer1.0-plugins-bad`, `gstreamer1.0-plugins-ugly`, `libgstreamer-plugins-base1.0-dev`. ::: -### Запустити/Зупинити відеотрансляцію +### Start/Stop Video Streaming -Трансляція відео автоматично запускається, якщо підтримується цільовим засобом. -Наприклад, щоб розпочати трансляцію відео на Typhoon H480: +Video streaming is automatically started when supported by the target vehicle. +For example, to start streaming video on the Typhoon H480: ```sh make px4_sitl gazebo-classic_typhoon_h480 @@ -460,7 +459,7 @@ Streaming can be paused/restarted using the Gazebo UI _Video ON/OFF_ button.. ![Video ON/OFF button](../../assets/simulation/gazebo_classic/sitl_video_stream.png) -### Як переглянути відео Gazebo +### How to View Gazebo Video The easiest way to view the SITL/Gazebo Classic camera video stream is in _QGroundControl_. Simply open **Application Settings > General** and set **Video Source** to _UDP h.264 Video Stream_ and **UDP Port** to _5600_: @@ -476,7 +475,7 @@ The Typhoon world is not very interesting. ::: It is also possible to view the video using the _Gstreamer Pipeline_. -Просто введіть наступну команду терміналу: +Simply enter the following terminal command: ```sh gst-launch-1.0 -v udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' \ @@ -485,7 +484,7 @@ gst-launch-1.0 -v udpsrc port=5600 caps='application/x-rtp, media=(string)video ### Докладне ведення журналу -SITL нічого не виводить при помилці, коли щось не так з моделлю. +SITL fails silently when there is something wrong with the model. You can enable more verbose logging using `VERBOSE_SIM`, as shown: ```sh @@ -506,7 +505,7 @@ The code is available on the [sitl_gazebo repository](https://github.com/PX4/PX4 :::info The build system enforces the correct GIT submodules, including the simulator. -Вона перезапише зміни в файлах та директоріях. +It will not overwrite changes in files in the directory. ::: ## Подальша інформація diff --git a/zh/computer_vision/collision_prevention.md b/zh/computer_vision/collision_prevention.md index 9d05d42b5b08..25e00062d7b5 100644 --- a/zh/computer_vision/collision_prevention.md +++ b/zh/computer_vision/collision_prevention.md @@ -144,7 +144,7 @@ All relevant parameters are listed below: The data from all sensors are fused into an internal representation of 72 sectors around the vehicle, each containing either the sensor data and information about when it was last observed, or an indication that no data for the sector was available. When the vehicle is commanded to move in a particular direction, all sectors in the hemisphere of that direction are checked to see if the movement will bring the vehicle closer than allowed to any obstacles. 如果是这样,无人机的速度就会受到限制。 -The Algorithm then can be split intwo two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. +The Algorithm then can be split into two parts, the constraining of the acceleration setpoint coming from the operator, and the compensation of the current velocity of the vehicle. :::info If there is no sensor data in a particular direction, movement in that direction is restricted to 0 (preventing the vehicle from crashing into unseen objects). @@ -153,7 +153,8 @@ If you wish to move freely into directions without sensor coverage, this can be ### Acceleration Constraining -For this we split out Acceleration Setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. +For this we split out the acceleration setpoint into two components, one parallel to the closest distance to the obstacle and one normal to it. Then we scale each of these components according the the figure below. + ![Scalefactor](../../assets/computer_vision/collision_prevention/scalefactor.png) @@ -169,21 +170,21 @@ The delay associated with collision prevention, both in the vehicle tracking vel This should be [tuned](#delay_tuning) to the specific vehicle. If the sectors adjacent to the commanded sectors are 'better' by a significant margin, the direction of the requested input can be modified by up to the angle specified in [CP_GUIDE_ANG](#CP_GUIDE_ANG). -这有助于微调用户输入,以“引导”机身绕过障碍物,而不是卡在障碍物上。 +This helps to fine-tune user input to 'guide' the vehicle around obstacles rather than getting stuck against them. -### 航程数据丢失 +### Range Data Loss If the autopilot does not receive range data from any sensor for longer than 0.5s, it will output a warning _No range data received, no movement allowed_. -这会导致强制将 xy 的速度设置为 0。 +This will force the velocity setpoints in xy to zero. After 5 seconds of not receiving any data, the vehicle will switch into [HOLD mode](../flight_modes_mc/hold.md). If you want the vehicle to be able to move again, you will need to disable Collision Prevention by either setting the parameter [CP_DIST](#CP_DIST) to a negative value, or switching to a mode other than [Position mode](../flight_modes_mc/position.md) (e.g. to _Altitude mode_ or _Stabilized mode_). -如果连接了多个传感器,但是其中有一个传感器失去连接,仍然能够在有传感器数据上报的视野(FOV)范围内飞行。 -故障传感器的数据会失效,并且该传感器覆盖的区域会被视为未覆盖区域,意味着无法移动到该区域。 +If you have multiple sensors connected and you lose connection to one of them, you will still be able to fly inside the field of view (FOV) of the reporting sensors. +The data of the faulty sensor will expire and the region covered by this sensor will be treated as uncovered, meaning you will not be able to move there. :::warning Be careful when enabling [CP_GO_NO_DATA=1](#CP_GO_NO_DATA), which allows the vehicle to fly outside the area with sensor coverage. -如果多个传感器中有一个失去连接,故障传感器所覆盖的区域将被视为未覆盖,可以在该区域移动不受限制。 +If you lose connection to one of multiple sensors, the area covered by the faulty sensor is also treated as uncovered and you will be able to move there without constraint. ::: ## Companion Setup {#companion} @@ -196,7 +197,7 @@ If using a companion computer or external sensor, it needs to supply a stream of The minimum rate at which messages _must_ be sent depends on vehicle speed - at higher rates the vehicle will have a longer time to respond to detected obstacles. Initial testing of the system used a vehicle moving at 4 m/s with `OBSTACLE_DISTANCE` messages being emitted at 10Hz (the maximum rate supported by the vision system). -在更高的速度或更低的距离信息更新频率下,该系统应该也能达到不错的效果。 +The system may work well at significantly higher speeds and lower frequency distance updates. ## Gazebo Simulation @@ -213,7 +214,106 @@ The diagram below shows a simulation of collision prevention as viewed in Gazebo ![RViz image of collision detection using the x500\_lidar\_2d model in Gazebo](../../assets/simulation/gazebo/vehicles/x500_lidar_2d_viz.png) -## Sensor Data Overview (Implementation Details) +## Development Information/Tools + +### Plotting Obstacle Distance and Minimum Distance in Real-Time with PlotJuggler + +[PlotJuggler](../log/plotjuggler_log_analysis.md) can be used to monitor and visualize obstacle distances in a real-time plot, including the minimum distance to the closest obstacle. + + + +To use this feature you need to add a reactive Lua script to PlotJuggler, and also configure PX4 to export [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic data. +The Lua script works by extracting the `obstacle_distance_fused` data at each time step, converting the distance values into Cartesian coordinates, and pushing them to PlotJuggler. + +步骤如下: + +1. Follow the instructions in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md) + +2. Configure PX4 to publish obstacle distance data (so that it is available to PlotJuggler): + + Add the [`obstacle_distance_fused`](../msg_docs/ObstacleDistance.md) UORB topic to your [`dds_topics.yaml`](https://github.com/PX4/PX4-Autopilot/blob/main/src/modules/uxrce_dds_client/dds_topics.yaml) so that it is published by PX4: + + ```sh + - topic: /fmu/out/obstacle_distance_fused + type: px4_msgs::msg::ObstacleDistance + ``` + + For more information see [DDS Topics YAML](../middleware/uxrce_dds.md#dds-topics-yaml) in _uXRCE-DDS (PX4-ROS 2/DDS Bridge)_. + +3. Open PlotJuggler and navigate to the **Tools > Reactive Script Editor** section. + In the **Script Editor** tab, add following scripts in the appropriate sections: + + - **Global code, executed once:** + + ```lua + obs_dist_fused_xy = ScatterXY.new("obstacle_distance_fused_xy") + obs_dist_min = Timeseries.new("obstacle_distance_minimum") + ``` + + - **function(tracker_time)** + + ```lua + obs_dist_fused_xy:clear() + + i = 0 + angle_offset = TimeseriesView.find("/fmu/out/obstacle_distance_fused/angle_offset") + increment = TimeseriesView.find("/fmu/out/obstacle_distance_fused/increment") + min_dist = 65535 + + -- Cache increment and angle_offset values at tracker_time to avoid repeated calls + local angle_offset_value = angle_offset:atTime(tracker_time) + local increment_value = increment:atTime(tracker_time) + + if increment_value == nil or increment_value <= 0 then + print("Invalid increment value: " .. tostring(increment_value)) + return + end + + local max_steps = math.floor(360 / increment_value) + + while i < max_steps do + local str = string.format("/fmu/out/obstacle_distance_fused/distances[%d]", i) + local distance = TimeseriesView.find(str) + if distance == nil then + print("No distance data for: " .. str) + break + end + + local dist = distance:atTime(tracker_time) + if dist ~= nil and dist < 65535 then + -- Calculate angle and Cartesian coordinates + local angle = angle_offset_value + i * increment_value + local y = dist * math.cos(math.rad(angle)) + local x = dist * math.sin(math.rad(angle)) + + obs_dist_fused_xy:push_back(x, y) + + -- Update minimum distance + if dist < min_dist then + min_dist = dist + end + end + + i = i + 1 + end + + -- Push minimum distance once after the loop + if min_dist < 65535 then + obs_dist_min:push_back(tracker_time, min_dist) + else + print("No valid minimum distance found") + end + ``` + +4. Enter a name for the script on the top right, and press **Save**. + Once saved, the script should appear in the _Active Scripts_ section. + +5. Start streaming the data using the approach described in [Plotting uORB Topic Data in Real Time using PlotJuggler](../debug/plotting_realtime_uorb_data.md). + You should see the `obstacle_distance_fused_xy` and `obstacle_distance_minimum` timeseries on the left. + +Note that to run the script again after clearing the data, you have to press **Save** again. + +### Sensor Data Overview Collision Prevention has an internal obstacle distance map that divides the plane around the drone into 72 Sectors. Internally this information is stored in the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) UORB topic. @@ -225,11 +325,11 @@ The angles in the `obstacle_distance` topic are defined as follows: The data from rangefinders, rotary lidars, or companion computers, is processed differently, as described below. -### Rotary Lidars +#### Rotary Lidars Rotary Lidars add their data directly to the [`obstacle_distance`](../msg_docs/ObstacleDistance.md) uORB topic. -### Rangefinders +#### Rangefinders Rangefinders publish their data to the [`distance_sensor`](../msg_docs/DistanceSensor.md) uORB topic. @@ -241,7 +341,7 @@ For example, a distance sensor measuring from 9.99° to 10.01° the measurements the quaternion `q` is only used if the `orientation` is set to `ROTATION_CUSTOM`. ::: -### 机载电脑 +#### 机载电脑 Companion computers update the `obstacle_distance` topic using ROS2 or the [OBSTACLE_DISTANCE](https://mavlink.io/en/messages/common.html#OBSTACLE_DISTANCE) MAVLink message. diff --git a/zh/config/safety.md b/zh/config/safety.md index 294b5a6ff665..c8ffb6370f2f 100644 --- a/zh/config/safety.md +++ b/zh/config/safety.md @@ -196,10 +196,9 @@ If VTOLs have are configured to switch to hover for landing ([NAV_FORCE_VT](../a The relevant parameters for all vehicles shown below. -| 参数 | 描述 | -| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| [COM_POS_FS_DELAY](../advanced_config/parameter_reference.md#COM_POS_FS_DELAY) | 失去位置后到触发故障保护前的延迟。 | -| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | 执行任务期间的位置控制导航丢失响应。 值:0——假设使用遥控,1——假设没有遥控。 | +\| Parameter | Description | +\| ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | | +\| [COM_POSCTL_NAVL](../advanced_config/parameter_reference.md#COM_POSCTL_NAVL) | Position control navigation loss response during mission. 值:0——假设使用遥控,1——假设没有遥控。 | Parameters that only affect Fixed-wing vehicles: diff --git a/zh/contribute/docs.md b/zh/contribute/docs.md index 79388aa1fdae..3ac3042c5034 100644 --- a/zh/contribute/docs.md +++ b/zh/contribute/docs.md @@ -150,7 +150,18 @@ The instructions below explain how to get git and use it on your local computer. This will be something like: `http://localhost:5173/px4_user_guide/`. - Stop serving using **CTRL+C** in the terminal prompt. -5. You can build the library as it would be done for deployment: +5. Open previewed pages in your local editor: + + First specify a local text editor file using the `EDITOR` environment variable, before calling `yarn start` to preview the library. + For example, on Windows command line you can enable VSCode as your default editor by entering: + + ```sh + set EDITOR=code + ``` + + The **Open in your editor** link at the bottom of each page will then open the current page in the editor (this replaces the _Open in GitHub_ link). + +6. You can build the library as it would be done for deployment: ```sh # Ubuntu diff --git a/zh/releases/main.md b/zh/releases/main.md index 208f9f92652f..38d1cebc965b 100644 --- a/zh/releases/main.md +++ b/zh/releases/main.md @@ -29,9 +29,11 @@ Please continue reading for [upgrade instructions](#upgrade-guide). ### Common -- [Battery level estimation improvements](../config/battery.md) ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). +- [Battery level estimation improvements](../config/battery.md). ([PX4-Autopilot#23205](https://github.com/PX4/PX4-Autopilot/pull/23205)). - [Voltage-based estimation with load compensation](../config/battery.md#voltage-based-estimation-with-load-compensation) now uses a real-time estimate of the internal resistance of the battery to compensate voltage drops under load (with increased current), providing a better capacity estimate than with the raw measured voltage. - Thrust-based load compensation has been removed (along with the `BATn_V_LOAD_DROP` parameters, where `n` is the battery number). +- The [Position (GNSS) loss failsafe](../config/safety.md#position-gnss-loss-failsafe) configurable delay (`COM_POS_FS_DELAY`) has been removed. + The failsafe will now trigger 1 second after position has been lost. ([PX4-Autopilot#24063](https://github.com/PX4/PX4-Autopilot/pull/24063)). - [Log Encryption](../dev_log/log_encryption.md) now generates an encrypted log that contains the public-key-encrypted symmetric key that can be used to decrypt it, instead of putting the key into a separate file. This makes log decryption much easier, as there is no need to download or identify a separate key file. ([PX4-Autopilot#24024](https://github.com/PX4/PX4-Autopilot/pull/24024)). diff --git a/zh/sim_gazebo_classic/index.md b/zh/sim_gazebo_classic/index.md index b843bce0ac28..d76a33751edb 100644 --- a/zh/sim_gazebo_classic/index.md +++ b/zh/sim_gazebo_classic/index.md @@ -371,8 +371,7 @@ The camera also supports video streaming. It can be used to test camera capture, in particular within survey missions. The camera emits the [CAMERA_IMAGE_CAPTURED](https://mavlink.io/en/messages/common.html#CAMERA_IMAGE_CAPTURED) message every time an image is captured. -The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/tmp/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). - +The captured images are saved to: `PX4-Autopilot/build/px4_sitl_default/src/modules/simulation/simulator_mavlink/frames/DSC_n.jpg` (where _n_ starts as 00000 and is iterated by one on each capture). To simulate a plane with this camera: ```sh @@ -428,7 +427,7 @@ For example, you could do this by forcing a [Geofence violation](../config/safet - [Parachute](../peripherals/parachute.md) - [Safety Configuration (Failsafes)](../config/safety.md) -## 视频流 +## Video Streaming PX4 SITL for Gazebo Classic supports UDP video streaming from a camera sensor attached to a simulated vehicle model. When streaming is enabled, you can connect to this stream from _QGroundControl_ (on UDP port 5600) and view video of the Gazebo Classic environment from the simulated vehicle - just as you would from a real camera.