From d4208e751c53475069f8dd7bfcdc3da79c41d3be Mon Sep 17 00:00:00 2001 From: wonderfullook <123hyx456@gmail.com> Date: Sat, 4 Mar 2023 22:26:03 +0800 Subject: [PATCH] update --- .../maixsense-a075v/install_drivers.md | 7 +- .../maixsense-a075v/maixsense-a075v.md | 1 - .../maixsense-a075v/install_drivers.md | 5 + .../maixsense-a075v/maixsense-a075v.md | 2 +- .../maixsense_075_tutorial.ipynb | 362 ------------------ 5 files changed, 12 insertions(+), 365 deletions(-) delete mode 100644 docs/hardware/zh/maixsense/maixsense-a075v/maixsense_075_tutorial.ipynb diff --git a/docs/hardware/en/maixsense/maixsense-a075v/install_drivers.md b/docs/hardware/en/maixsense/maixsense-a075v/install_drivers.md index a828cc57..8f2eb2a6 100644 --- a/docs/hardware/en/maixsense/maixsense-a075v/install_drivers.md +++ b/docs/hardware/en/maixsense/maixsense-a075v/install_drivers.md @@ -9,7 +9,12 @@ RNDIS is the abbreviation of Remote Network Driver Interface Specification, is a In Windows7 and later operating systems, RNDIS is already built-in. But we need do some operations to make the computer generally recognize the relevant RNDIS-compliant device. -### Install drivers +### Download driver + + +**Windows Driver:**[Click me](https://dl.sipeed.com/fileList/MaixSense/Drivers/Ethernet_RNDIS_drivers_20220808.zip) + +### Install driver Connect the device with computer, then we can see Serial Device in computer device manager. If there is no Serial Device in the computer device manager, maybe because of insufficient power supply. For desktop we recommend use the USB port on the back, for those who use USB hub we recommend use extra power supply for the hub, and we suggest to use the USB 3.0 port because USB 2.0 may lack of power to drive. diff --git a/docs/hardware/en/maixsense/maixsense-a075v/maixsense-a075v.md b/docs/hardware/en/maixsense/maixsense-a075v/maixsense-a075v.md index 19dc0e22..d303f40a 100644 --- a/docs/hardware/en/maixsense/maixsense-a075v/maixsense-a075v.md +++ b/docs/hardware/en/maixsense/maixsense-a075v/maixsense-a075v.md @@ -12,7 +12,6 @@ MS-A075V is a 3D TOF camera module with RGB designed by Sipeed, can display the To run preview MaixSense-A075V on Windows, install the driver. -**Windows Driver:**[Click Get](https://dl.sipeed.com/shareURL/MaixSense/Drivers) **Windows Installation driver tutorial:**[Click to view](./install_drivers.md) ### On-page preview diff --git a/docs/hardware/zh/maixsense/maixsense-a075v/install_drivers.md b/docs/hardware/zh/maixsense/maixsense-a075v/install_drivers.md index 9c1680f5..d54a3237 100644 --- a/docs/hardware/zh/maixsense/maixsense-a075v/install_drivers.md +++ b/docs/hardware/zh/maixsense/maixsense-a075v/install_drivers.md @@ -10,6 +10,11 @@ RNDIS 全称为 Remote Network Driver Interface Specification,即远程网络 在 Windows7 及其以上的操作系统中,均已经内置了 RNDIS,但是如果不进行一些特殊操作的话,电脑一般是识别不到相关符合 RNDIS 设备的。 +### 下载驱动 + + +**Windows 驱动**:[点击获取](https://dl.sipeed.com/fileList/MaixSense/Drivers/Ethernet_RNDIS_drivers_20220808.zip) + ### 安装驱动 将目标设备与电脑通过 USB 接口连接起来,且能够在电脑的设备管理器中看到串行设备。如果没有看到有串行设备的话大概率是供电不足所导致的:对于台式机建议使用主机背部的 USB 接口;使用 USB hub 的话建议使用带有额外供电的;另外建议使用 USB 3.0 的数据口,因为 USB 2.0 驱动供电可能不足。 diff --git a/docs/hardware/zh/maixsense/maixsense-a075v/maixsense-a075v.md b/docs/hardware/zh/maixsense/maixsense-a075v/maixsense-a075v.md index 6d81d66d..9b99a0ed 100644 --- a/docs/hardware/zh/maixsense/maixsense-a075v/maixsense-a075v.md +++ b/docs/hardware/zh/maixsense/maixsense-a075v/maixsense-a075v.md @@ -17,7 +17,7 @@ ### 准备工作 在 Windows 系统上运行预览 **MaixSense-A075V** 的话需要安装驱动。 -**Windows 驱动**:[点击获取](https://dl.sipeed.com/shareURL/MaixSense/Drivers) + **Windows 安装驱动教程**:[点击查看](./install_drivers.md) ### 网页上位机预览 diff --git a/docs/hardware/zh/maixsense/maixsense-a075v/maixsense_075_tutorial.ipynb b/docs/hardware/zh/maixsense/maixsense-a075v/maixsense_075_tutorial.ipynb deleted file mode 100644 index 61643012..00000000 --- a/docs/hardware/zh/maixsense/maixsense-a075v/maixsense_075_tutorial.ipynb +++ /dev/null @@ -1,362 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Frame encode and decode impl\n", - "\n", - "**structure of one frame**\n", - "\n", - "| packet | field | size | type | description |\n", - "| ------ | ------------ | -------- | ------ | ------------------------------------------------ |\n", - "| frame | frame_id | 8B | uint64 | indicate which frame is it |\n", - "| | frame_stamp | 8B | uint64 | xxx ms passed |\n", - "| | config | 12B | config | info needed by decode |\n", - "| | deep_size | 4B | int32 | size of deepth data |\n", - "| | rgb_size | 4B | int32 | size of rgb data |\n", - "| | payload | adaptive | bytes | payload data, size is not fixed |\n", - "| config | trigger_mode | 1B | uint8 | 0:STOP 1:AUTO 2:SINGLE |\n", - "| | deep_mode | 1B | uint8 | 0:16bit 1:8bit |\n", - "| | deep_shift | 1B | uint8 | shift xxx from 16bit, just working for 8bit mode |\n", - "| | ir_mode | 1B | uint8 | 0:16bit 1:8bit |\n", - "| | status_mode | 1B | uint8 | 0:16bit 1:2bit 2:8bit 3:1bit |\n", - "| | status_mask | 1B | uint8 | just working for 1bit mode 1:1 2:2 4:3 |\n", - "| | rgb_mode | 1B | uint8 | 0:YUV 1:JPG 2:NULL |\n", - "| | rgb_res | 1B | uint8 | 0:800\\*600 1:1600\\*1200 |\n", - "| | expose_time | 4B | int32 | expose time of this tof, 0 means AE(auto expose) |" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import struct\n", - "import numpy as np\n", - "import cv2\n", - "\n", - "\n", - "def frame_config_decode(frame_config):\n", - " '''\n", - " @frame_config bytes\n", - "\n", - " @return fields, tuple (trigger_mode, deep_mode, deep_shift, ir_mode, status_mode, status_mask, rgb_mode, rgb_res, expose_time)\n", - " '''\n", - " return struct.unpack(\"> with_config[1]\n", - " deepth_img = struct.unpack(\"<%us\" % deepth_size, frame_payload[:deepth_size])[\n", - " 0] if 0 != deepth_size else None\n", - " frame_payload = frame_payload[deepth_size:]\n", - "\n", - " # 0:16bit 1:8bit, resolution: 320*240\n", - " ir_size = (320*240*2) >> with_config[3]\n", - " ir_img = struct.unpack(\"<%us\" % ir_size, frame_payload[:ir_size])[\n", - " 0] if 0 != ir_size else None\n", - " frame_payload = frame_payload[ir_size:]\n", - "\n", - " status_size = (320*240//8) * (16 if 0 == with_config[4] else\n", - " 2 if 1 == with_config[4] else 8 if 2 == with_config[4] else 1)\n", - " status_img = struct.unpack(\"<%us\" % status_size, frame_payload[:status_size])[\n", - " 0] if 0 != status_size else None\n", - " frame_payload = frame_payload[status_size:]\n", - "\n", - " assert(deep_data_size == deepth_size+ir_size+status_size)\n", - "\n", - " rgb_size = len(frame_payload)\n", - " assert(rgb_data_size == rgb_size)\n", - " rgb_img = struct.unpack(\"<%us\" % rgb_size, frame_payload[:rgb_size])[\n", - " 0] if 0 != rgb_size else None\n", - "\n", - " if (not rgb_img is None):\n", - " if (1 == with_config[6]):\n", - " jpeg = cv2.imdecode(np.frombuffer(\n", - " rgb_img, 'uint8', rgb_size), cv2.IMREAD_COLOR)\n", - " if not jpeg is None:\n", - " rgb = cv2.cvtColor(jpeg, cv2.COLOR_BGR2RGB)\n", - " rgb_img = rgb.tobytes()\n", - " else:\n", - " rgb_img = None\n", - " # elif 0 == with_config[6]:\n", - " # yuv = np.frombuffer(rgb_img, 'uint8', rgb_size)\n", - " # print(len(yuv))\n", - " # if not yuv is None:\n", - " # rgb = cv2.cvtColor(yuv, cv2.COLOR_YUV420P2RGB)\n", - " # rgb_img = rgb.tobytes()\n", - " # else:\n", - " # rgb_img = None\n", - "\n", - " return (deepth_img, ir_img, status_img, rgb_img)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Frame capture from network impl" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import cv2\n", - "import requests\n", - "\n", - "HOST = '192.168.233.1'\n", - "PORT = 80\n", - "\n", - "def post_encode_config(config=frame_config_encode(),host=HOST, port=PORT):\n", - " r = requests.post('http://{}:{}/set_cfg'.format(host, port), config)\n", - " if(r.status_code == requests.codes.ok):\n", - " return True\n", - " return False\n", - "\n", - "def post_CameraParmsBytes(cameraParms:bytes,host=HOST, port=PORT):\n", - " r = requests.post('http://{}:{}/calibration'.format(host, port), cameraParms)\n", - " if(r.status_code == requests.codes.ok):\n", - " print(\"ok\")\n", - "\n", - "def get_frame_from_http(host=HOST, port=PORT):\n", - " r = requests.get('http://{}:{}/getdeep'.format(host, port))\n", - " if(r.status_code == requests.codes.ok):\n", - " print('Get deep image')\n", - " deepimg = r.content\n", - " print('Length={}'.format(len(deepimg)))\n", - " (frameid, stamp_msec) = struct.unpack('" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "if post_encode_config(frame_config_encode(1,0,255,0,2,7,1,0,0)):\n", - " p = get_frame_from_http()\n", - " show_frame(p)\n", - " # with open(\"rgbd.raw\", 'wb') as f:\n", - " # f.write(p)\n", - " # f.flush()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### local file example" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "with open(\"rgbd.raw\", 'rb') as fp:\n", - " file_data = fp.read()\n", - " fp.close()\n", - " show_frame(file_data)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### local file example (3D)\n", - "\n", - "need library open3d, your python version should be less than 3.9(included)\n", - "\n", - "website: https://pypi.org/project/open3d/\n", - "\n", - "install: pip install open3d" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import open3d as o3d\n", - "\n", - "points = o3d.io.read_point_cloud(\"rgbd.pcd\")\n", - "o3d.visualization.draw_geometries([points])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## utils" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ok\n" - ] - } - ], - "source": [ - "with open(\"./sipeed/CameraParms.json\", \"rb\") as f:\n", - " post_CameraParmsBytes(f.read())" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.7.13 ('py37')", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.13" - }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "8ce286fba0fa4337a93db67ec8bc015b9f43ea414d09b2c8c4fd9997664f03d8" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -}