Skip to content

Commit

Permalink
Release/fw1.10.x
Browse files Browse the repository at this point in the history
  • Loading branch information
dekchafa committed Dec 13, 2024
1 parent 83b9f8c commit 5b785be
Show file tree
Hide file tree
Showing 117 changed files with 2,308 additions and 1,789 deletions.
2 changes: 1 addition & 1 deletion CalibrationRoutines/MCC/mcc_with_iVA.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Motion Camera Calibration is a camera calibration software provided by ifm based on an ifm specific checkerboard that estimates the rotational parameters of the camera head with respect to the user coordinate system.

This application is available free of charge and included in the embedded O3R firmware (`version >= 1.1.30`) and the GUI ifm Vision Assistant (`version >= 2.7.6`). To use this application, users must install the ifmVisionAssistant tool, which can be downloaded [here](https://www.ifm.com/us/en/product/OVP800?tab=documents). To get started with the ifmVisionAssistant, please refer to this [documentation](index_iVA.md).
This application is available free of charge and included in the embedded O3R firmware (`version >= 1.1.30`) and the GUI ifm Vision Assistant (`version >= 2.7.6`). To use this application, users must install the ifmVisionAssistant tool, which can be downloaded [here](https://www.ifm.com/us/en/product/OVP800?tab=documents). To get started with the ifmVisionAssistant, please refer to this [documentation](../../SoftwareInterfaces/iVA/index_iVA.md).

## Pre-requisites

Expand Down
2 changes: 1 addition & 1 deletion CompatibilityMatrix/compatibility_matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
| OVP800 <br> M04239 | O3R222 <br> 03R225 | FW 1.0.14 | 1.2.6 | 2.6.14 |

:::{note}
- Other combinations of versions than the ones listed in the table above could work but are not officially supported by ifm. [See table below](#suggested-hardware)
- Other combinations of versions than the ones listed in the table above could work but are not officially supported by ifm. [See table below](#recommended-hardware)
- Newer API versions are aimed to be backward compatible. Please verify via the API release notes and changelog.
:::

Expand Down
73 changes: 73 additions & 0 deletions Firmware/ReleaseNotes/FW_1.10.x/FW_1.10.x_release_notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Firmware 1.10.13 release notes
The following release note provides an overview of the features of the **Firmware 1.10.13** version.

The firmware update file for the OVP81x devices is available on [ifm.com](https://www.ifm.com).

## Compatibility
### Previous releases
The previous version is v1.4.30.

### Compatible software versions
This firmware release works with the following software package versions.

| Software | Version |
| ------------------------ | -------- |
| ifmVisionAssistant | >= 2.9.9 |
| ifm3d library | 1.5.3 |
| ifm3d-ros ROS(1) wrapper | >= 1.1.2 |
| ifm3d-ros2 ROS2 wrapper | >= 1.2.0 |

### Compatible processing platforms
:::{warning}
FW 1.10.13 does not support the OVP80x family at the moment.
**Do not update an OVP80x with this firmware. Such a FW update will fail, and the device will reboot to the previous FW version installed.**
:::

This firmware release can be applied to the following ifm video processing platforms:

| Article | Description |
| ------- | --------------------------------------------------------------------------- |
| OVP810 | Series product with TX2-NX NVIDIA board. |
| OVP811 | Series product with TX2-NX NVIDIA board, including an ODS license. |
| OVP812 | Series product with TX2-NX NVIDIA board, including a PDS license. |
| OVP813 | Series product with TX2-NX NVIDIA board, including ODS and PDS licenses. |

### Supported camera articles
This firmware release supports the following ifm camera articles:

| Camera Article | Description |
| -------------- | ----------------------------------------------------------- |
| O3R222 | 3D: 38k 224x172, 60°x45° IP50 <br> 2D: 1280x800, 127°x80° |
| O3R225 | 3D: 38k 224x172, 105°x78° IP50 <br> 2D: 1280x800, 127°x80° |

## Base device
### Changed
- The default `channelValue` for 3D port number X [0..5] is changed to 2*X.
- The L4T kernel version is updated to r32.7.5.

## ODS application
### Added
- **Diagnostics for decalibrated camera ports:** A new error, `ERROR_ODSAPP_CAMERA_DECALIBRATED`, is raised if any active camera port is likely to be decalibrated. In this case, the camera calibration should be verified.
- A new parameter, `rangeOfInterest`, allows users to define the maximum range of vision in meters (in robot coordinates). This setting directly impacts the grid shape, which is always square with each dimension containing (`rangeOfInterest`/0.05) × 2 cells at the default resolution of 5 cm.
- ODS supports polygons on the zone interface, allowing for the definition of both convex and concave shapes.
- A preset feature is implemented where the user can load a predefined zone configuration.

### Changed
- The maximum number of points to define a zone is increased from 6 to 16.
- The ODS diagnosis sources are now attached to the specific camera port rather than the overall ODS application, for the following diagnostic messages:
- `ERROR_ODSAPP_FOV_INSUFFICIENT_FOR_NEGATIVE_OBSTACLES`
- `ERROR_ODSAPP_CAMERA_DECALIBRATED`
- `ERROR_ODSAPP_EXTR_DI_CALIB_IMPLAUSIBLE`
- `ERROR_ODSAPP_VO_EXTR_DI_CALIB_IMPLAUSIBLE`
- A maximum of one ODS instance is allowed. It is expected to use a single ODS application, which is always in `RUN` mode, and to switch the `activePorts` to change which cameras are used.
- The conditions for raising the `ERROR_ODSAPP_VO_EXTR_DI_CALIB_IMPLAUSIBLE` diagnostic message were relaxed.

### Known issues
- The diagnostics activated by the ODS application during the `RUN` state will not be deactivated when the application is set to the `CONF` or `IDLE` state.
- If the negative obstacle feature is enabled, it may happen that the diagnostic message `ERROR_ODSAPP_FOV_INSUFFICIENT_FOR_NEGATIVE_OBSTACLES` is raised even thought the field of view conditions are fulfilled. In this case, negative obstacles will not be properly detected. To fix this, the application should be set to `CONF`, and then to `RUN` again.

## PDS application

- A new Pick and Drop System (PDS) application is added. This is a new feature with firmware 1.10.13. Refer to [the PDS documentation](../../../PDS/index_pds.md) for an overview of the available features.


1 change: 1 addition & 0 deletions Firmware/ReleaseNotes/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Release notes for firmware version 0.16.23 and lower are available upon request.
:::

:::{toctree}
OVP81x: version 1.10.x <FW_1.10.x/FW_1.10.x_release_notes>
OVP81x: version 1.4.30 <FW_1.4.x/index>
OVP81x: version 1.1.41 <FW_1.1.41/FW_1.1.41_Release_Notes>
OVP80x: version 1.4.32 <FW_1.4.32/FW_1.4.32_release_notes>
Expand Down
68 changes: 16 additions & 52 deletions Firmware/fw_update.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,19 @@ In the instructions below, we expect that the user extracted the downloaded ZIP
- Select the file and the update process will start.
- Once the update is complete, the device will reboot.

### With the ifm3d API or the web interface

#### Reboot to recovery
When the starting firmware is version 1.0.0 and above, a reboot to recovery state is necessary to perform an update.
:::{note}
The firmware update using the iVA Linux AppImage may fail on the first attempt, causing the VPU to remain in recovery mode.
If this happens, refer to [the instructions below](#rebooting-to-productive-mode) to reboot to productive mode, using the ifm3d API.
:::
### With the ifm3d API

In the instructions below, replace `<path/to/firmware_image.swu>` with the path to the firmware file you downloaded from [ifm.com](https://www.ifm.com/).

:::::{tabs}
::::{group-tab} CLI
```bash
$ ifm3d reboot --recovery
$ ifm3d swupdate --file=<path/to/firmware_image.swu>
```
::::
::::{group-tab} c++
Expand All @@ -57,11 +61,10 @@ $ ifm3d reboot --recovery
...
auto o3r = std::make_shared<ifm3d::O3R>();
auto sw = std::make_shared<ifm3d::SWUpdater>(o3r);
sw->RebootToRecovery();
if (sw->WaitForRecovery()) {
std::cout << "System in recovery mode" << std::endl;
if (sw->FlashFirmware("<path/to/firmware_image.swu>")){
sw->WaitForProductive();
std::cout << "System ready!" << std::endl;
}
...
```
::::
::::{group-tab} Python
Expand All @@ -70,50 +73,6 @@ from ifm3dpy.swupdater import SWUpdater
from ifm3dpy.device import O3R
o3r = O3R()
sw = SWUpdater(o3r)
sw.reboot_to_recovery()
if sw.wait_for_recovery():
print("System in recovery mode)
```
::::
:::::

:::{note}
If you happen to be stuck in recovery mode, the device will not be "ping-able." To reboot to productive, you have two options:
- You can update the system again. If the update is successful, the system will reboot to productive, or,
- You can use the ifm3d API to reboot to productive without updating. With the command line interface, you can use `ifm3d swupdate -r`. In Python you can use the [`reboot_to_productive` function](https://api.ifm3d.com/stable/_autosummary/ifm3dpy.swupdater.SWUpdater.html#ifm3dpy.swupdater.SWUpdater.reboot_to_productive) and in C++ the [`RebootToProductive` function](https://api.ifm3d.com/stable/cpp_api/classifm3d_1_1SWUpdater.html#a5ed7d927b9ff35a6808394345bdced8e).
:::

#### With the web interface

Once the device is in recovery mode (see section above), you can open the web interface:

1. Open [http://192.168.0.69:8080/](http://192.168.0.69:8080/) in web browser. The `SWUpdate` web interface is shown.
2. Drag and drop the `*.swu` firmware file into the `software update`-window. The upload procedure starts.

The system will automatically reboot in productive mode. The web interface will not be available anymore (it is only available in recovery mode).

#### With ifm3d

Once the device is in recovery mode, you can use ifm3d to update the firmware.
In the instructions below, replace `<path/to/firmware_image.swu>` with the path to the firmware file you downloaded from [ifm.com](https://www.ifm.com/).
The code below is continued from the "reboot to recovery" section.

:::::{tabs}
::::{group-tab} CLI
```bash
$ ifm3d swupdate --file=<path/to/firmware_image.swu>
```
::::
::::{group-tab} c++
```cpp
if (sw->FlashFirmware("<path/to/firmware_image.swu>")){
sw->WaitForProductive();
std::cout << "System ready!" << std::endl;
}
```
::::
::::{group-tab} Python
```python
if sw.flash_firmware('<path/to/firmware_image.swu>'):
sw.wait_for_productive()
print("System ready!")
Expand Down Expand Up @@ -146,6 +105,11 @@ o3r.get(["/device/swVersion/firmware"])
::::
:::::

#### Rebooting to productive mode
If you happen to be stuck in recovery mode, the device will not be "ping-able." To reboot to productive, you have two options:
- You can update the system again. If the update is successful, the system will reboot to productive, or,
- You can use the ifm3d API to reboot to productive without updating. With the command line interface, you can use `ifm3d swupdate -r`. In Python you can use the [`reboot_to_productive` function](https://api.ifm3d.com/stable/_autosummary/ifm3dpy.swupdater.SWUpdater.html#ifm3dpy.swupdater.SWUpdater.reboot_to_productive) and in C++ the [`RebootToProductive` function](https://api.ifm3d.com/stable/cpp_api/classifm3d_1_1SWUpdater.html#a5ed7d927b9ff35a6808394345bdced8e).

#### The full example script

We provide a full Python script to help you update the firmware using the API. You can find this script [in the `ifm3d-examples` repository](https://github.com/ifm/ifm3d-examples/blob/main/ovp8xx/python/ovp8xxexamples/core/fw_update_utils.py).
54 changes: 0 additions & 54 deletions GettingStarted/ifmVisionAssistant/iVA_with_wine.md

This file was deleted.

8 changes: 0 additions & 8 deletions GettingStarted/ifmVisionAssistant/index_iVA.md

This file was deleted.

2 changes: 1 addition & 1 deletion GettingStarted/index_sw_stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Multiple software stacks are available: pick your favorite one below and follow

:::{toctree}
:maxdepth: 1
ifmVisionAssistant <ifmVisionAssistant/index_iVA>
ifmVisionAssistant <../SoftwareInterfaces/iVA/index_iVA>
Python <https://api.ifm3d.com/html/examples/index.html>
C++ <https://api.ifm3d.com/html/examples/index.html>
:::
Loading

0 comments on commit 5b785be

Please sign in to comment.