Skip to content

Commit

Permalink
Merge pull request #9 from ifm/lm_getting_started
Browse files Browse the repository at this point in the history
Lm getting started
  • Loading branch information
lola-masson authored Oct 19, 2021
2 parents d59923c + 2f2e2ea commit 6bc86c9
Show file tree
Hide file tree
Showing 27 changed files with 50 additions and 225 deletions.
2 changes: 1 addition & 1 deletion O3R/Docker/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# README - Docker on O3R
# Docker on O3R

| Table of content|
|-|
Expand Down
3 changes: 2 additions & 1 deletion O3R/GettingStarted/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
# README - Getting Started
# Getting Started

| Table of content|
|-|
| [Unboxing](../GettingStarted/unboxing.md)|
| [Basic tutorials](https://ifm.github.io/ifm3d-docs/examples/o3r/index.html)|

This section should help you with the first steps using the O3R.
3 changes: 0 additions & 3 deletions O3R/GettingStarted/getting_started.md

This file was deleted.

Binary file removed O3R/GettingStarted/resources/2heads.PNG
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/[email protected]
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/amplitude.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/ampltiude.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/distance.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/highlight_distance.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/ifm_logo.png
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/pcl.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/pip_install_o3r.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/pip_install_viewer.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/stand.png
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/startViewer.mp4
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/thumbs.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/unzip.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/venv_activate.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/viewer.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/viewer_console.jpg
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/vpu_connections.png
Binary file not shown.
Binary file removed O3R/GettingStarted/resources/winpython_venv.jpg
Binary file not shown.
259 changes: 43 additions & 216 deletions O3R/GettingStarted/unboxing.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
# Unboxing
# How to: Unboxing O3R

If you received the starter kit (default package), following document will help you unbox and start the O3R system.
## Hardware unboxing

If nobody tampered with your O3R package, you should have following hardware:
- Camera head 1
- Camera head (two of them if you ordered the developer kit)
![HEAD](./resources/head.jpg "O3R - HEAD")
- Camera head 2
- VPU (Video Processing Unit)
- VPU (Video Processing Unit)
![VPU](./resources/vpu.jpg "O3R - VPU")
- FPD cables to connect the head(s) to the VPU


You need a strong enough power source: 2.5A and 24V minimum.

1) First, connect the head(s) to the VPU;
![CONNECTION-OVERVIEW](./resources/connection_overview.png "Connections")
2) Connect power to the VPU - <font color=red>ATTENTION: PIN2 is power! PIN3 is ground</font>
3) Connect the ethernet cable (not included in the package)
4) Wait until you see the ethernet LED flashing before pinging/connecting to the VPU.
1) First, connect the head(s) to the VPU; the only requirement is to connect pairs of same imager types together, for instance as shown below:
![CONNECTION-OVERVIEW](./resources/connection_overview.png "Connections")
2) Connect power to the VPU - <font color=red>ATTENTION: PIN2 is power! PIN3 is ground</font>
3) Connect the ethernet cable (not included in the package)
4) Wait until you see the ethernet LED flashing before pinging/connecting to the VPU.

That's it about the hardware. Next step: software installation
That's it about the hardware. Next step: software installation.

## Network configuration
The default IP address of the VPU is 192.168.0.69. A good first step is to make sure you can connect to the VPU:
Expand All @@ -32,17 +32,16 @@ If you do not receive an answer from the camera, you can try to adjust your netw

## Software installation

_Note: We recommend for testing purposes to install the ifmO3r package in an clean python environment first. You can use_ `python -m venv "venv-name"` _to create a new virtual environment.

The ifm3d(ifm3dpy) is the go to library for ifm's 3D cameras. It provides the possibility to easily change parameters, get images and even more. The next steps will cover the general usage of ifm3dpy, and how to unlock the O3R capabilities. Because the ifm3dpy installation is easy and straight forward (no compiling needed), we focus on this installation. You can find tutorials for both ifm3dpy and ifm3d (C++) within the ifm3d library topic on [ifm3d](https://ifm.github.io/ifm3d-docs/index.html)
The ifm3d (ifm3dpy, for python) is the go to library for ifm's 3D cameras. It provides the possibility to easily change parameters, get images and even more. The next steps will cover the general usage of ifm3dpy, and how to unlock the O3R capabilities.
### For python
> Note: We recommend for testing purposes to install the ifm3dpy package in an clean python environment first. You can use `python -m venv "venv-name"` to create a new virtual environment.
You can use the official PyPI package to install the ifm3dpy within your virtual environment:

```python
pip install ifm3dpy
```

## Check installation
#### Check installation

Let's verify quickly that the installation worked! This command should display the list of packages installed in your environment:

Expand All @@ -56,6 +55,8 @@ Open up a python shell with:
python.exe
OR
./python.exe
OR
python
```

Then try importing the package:
Expand All @@ -74,7 +75,7 @@ o3r = O3RCamera()
config = o3r.get() #get the configuration saved on the VPU
```

Using the package `json` provides an easier tool for displaying JSON-Strings. The configuration from the VPU is always a JSON-String.
Using the package `json` provides an easier tool for displaying JSON-Strings. The configuration from the VPU is always a JSON-String (output below shortened for display purposes).

```python
import json
Expand Down Expand Up @@ -176,205 +177,31 @@ print(json.dumps(config, indent=4))
},
"state": "RUN"
},
"port1": {
"acquisition": {
"framerate": 10.0,
"version": {
"major": 0,
"minor": 0,
"patch": 0
}
},
"data": {
"algoDebugConfig": {},
"availablePCICOutput": [],
"pcicTCPPort": 50011
},
"info": {
"device": "2301",
"deviceTreeBinaryBlobOverlay": "001-ov9782.dtbo",
"features": {
"fov": {
"horizontal": 127,
"vertical": 80
},
"resolution": {
"height": 800,
"width": 1280
},
"type": "2D"
},
"name": "",
"partNumber": "M03976",
"productionState": "AA",
"sensor": "OV9782",
"sensorID": "OV9782_127x80_noIllu_Csample",
"serialNumber": "000000000282",
"vendor": "0001"
},
"mode": "experimental_autoexposure2D",
"processing": {
"extrinsicHeadToUser": {
"rotX": 0.0,
"rotY": 0.0,
"rotZ": 0.0,
"transX": 0.0,
"transY": 0.0,
"transZ": 0.0
},
"version": {
"major": 0,
"minor": 0,
"patch": 0
}
},
"state": "RUN"
},
"port2": {
"acquisition": {
"exposureLong": 5000,
"exposureShort": 400,
"framerate": 10.0,
"offset": 0.0,
"version": {
"major": 0,
"minor": 0,
"patch": 0
}
},
"data": {
"algoDebugConfig": {},
"availablePCICOutput": [],
"pcicTCPPort": 50012
},
"info": {
"device": "3201",
"deviceTreeBinaryBlobOverlay": "001-irs2381c.dtbo",
"features": {
"fov": {
"horizontal": 60,
"vertical": 45
},
"resolution": {
"height": 480,
"width": 640
},
"type": "3D"
},
"name": "",
"partNumber": "M03976",
"productionState": "AA",
"sensor": "IRS2877C",
"sensorID": "IRS2877C_60x45_4x2W_60x45_B1",
"serialNumber": "000000000281",
"vendor": "0001"
},
"mode": "standard_range4m",
"processing": {
"diParam": {
"anfFilterSizeDiv2": 2,
"enableDynamicSymmetry": true,
"enableStraylight": true,
"enableTemporalFilter": true,
"excessiveCorrectionThreshAmp": 0.3,
"excessiveCorrectionThreshDist": 0.08,
"maxDistNoise": 0.02,
"maxSymmetry": 0.4,
"medianSizeDiv2": 0,
"minAmplitude": 20.0,
"minReflectivity": 0.0,
"mixedPixelFilterMode": 1,
"mixedPixelThresholdRad": 0.15
},
"extrinsicHeadToUser": {
"rotX": 0.0,
"rotY": 0.0,
"rotZ": 0.0,
"transX": 0.0,
"transY": 0.0,
"transZ": 0.0
},
"version": {
"major": 0,
"minor": 0,
"patch": 0
}
},
"state": "RUN"
},
"port3": {
"acquisition": {
"exposureLong": 5000,
"exposureShort": 400,
"framerate": 10.0,
"offset": 0.0,
"version": {
"major": 0,
"minor": 0,
"patch": 0
}
},
"data": {
"algoDebugConfig": {},
"availablePCICOutput": [],
"pcicTCPPort": 50013
},
"info": {
"device": "3201",
"deviceTreeBinaryBlobOverlay": "001-irs2381c.dtbo",
"features": {
"fov": {
"horizontal": 60,
"vertical": 45
},
"resolution": {
"height": 480,
"width": 640
},
"type": "3D"
},
"name": "",
"partNumber": "M03976",
"productionState": "AA",
"sensor": "IRS2877C",
"sensorID": "IRS2877C_60x45_4x2W_60x45_B1",
"serialNumber": "000000000282",
"vendor": "0001"
},
"mode": "standard_range4m",
"processing": {
"diParam": {
"anfFilterSizeDiv2": 2,
"enableDynamicSymmetry": true,
"enableStraylight": true,
"enableTemporalFilter": true,
"excessiveCorrectionThreshAmp": 0.3,
"excessiveCorrectionThreshDist": 0.08,
"maxDistNoise": 0.02,
"maxSymmetry": 0.4,
"medianSizeDiv2": 0,
"minAmplitude": 20.0,
"minReflectivity": 0.0,
"mixedPixelFilterMode": 1,
"mixedPixelThresholdRad": 0.15
},
"extrinsicHeadToUser": {
"rotX": 3.14,
"rotY": 1.8,
"rotZ": 0.0,
"transX": 0.2,
"transY": 0.0,
"transZ": 0.0
},
"version": {
"major": 0,
"minor": 0,
"patch": 0
}
},
"state": "RUN"
}
}
...
}
```

### For cpp

You will need to build from source. Clone the [ifm3d repository](https://github.com/ifm/ifm3d/tree/o3r/main-next) from github (make sure to use the o3r/main-next branch) and proceed as follows:

```console
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/usr ..
$ cmake --build .
$ sudo make install
```

To build the python bindings, use:
```console
$ cmake -DBUILD_MODULE_PYBIND11=ON ..
```

To build the examples, use:
```console
$ cmake -DBUILD_MODULE_PYBIND11=ON -DBUILD_EXAMPLES=ON ..
```

### For ROS: *coming soon*

2 changes: 1 addition & 1 deletion O3R/Parameters/AcquisitionSettings/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# README - Acquisition settings
# Acquisition settings

| Table of content|
|-|
Expand Down
2 changes: 1 addition & 1 deletion O3R/Parameters/Filters/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# README - Filters
# Filters

| Table of content|
|-|
Expand Down
2 changes: 1 addition & 1 deletion O3R/Parameters/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# README - Parameters
# Parameters

| Table of content|
|-|
Expand Down
2 changes: 1 addition & 1 deletion O3R/ProductsDescription/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# README - Products Description
# Products Description

| Table of content|
|--|
Expand Down

0 comments on commit 6bc86c9

Please sign in to comment.