Отслеживание объектов вокруг
- Войдите на сайт для отправки комментариев
Втр, 07/10/2014 - 14:24
Нужно находить растояние до объектов вокруг платки, допустим в радиусе 5-10метров.
посоветуйте как это делать?
Пока представляю только вариант с крутящимся туда сюда по кругу датчиком расстояния.
ИК-диод - посылка - прием ответа (если есть) - изменение положения.
А что лучше? И дальше по расстоянию.
И быстрее отклик?
Поищите по слову lidar - это дорогое решение, либо по ultrasonic sensor - это подешевле будет.
Зависит от величины объекта (угловая величина), отсюда и расстояние на котором будет нормально обнаруживаться.
Задача не поставленна абсолютно. Наличие предметов при начале сканирования учитывать? А если там уже предмет который надо засекать? Если палатка туристическая, то соответственно увеличение стоимости/сложности возрастает в геометрической прогресси при данном ряде Дарвина:
Тиранозавр - мамонт - верблюд - медведь - страус - волк - писец - заяц - мышь - змея - тарантул - муравей
Предметы живые? Они двигаются? Они прячутся? Они быстрые?
Продолжать можно до морковинного заговеня.
Да, при первом сканировании запоминание откликов.
Но лучше, если живые - PIR датчики - 10 метров берут запросто.
Люди двигающиеся в помещении вокруг объекта.
Если люди стоят друг за другом по прямой от объекта, то поулчается учитываем только ближайшего. Хотя можно и всех, но это видимо дорого\сложно)
Люди двигающиеся в помещении вокруг объекта.
Если люди стоят друг за другом по прямой от объекта, то поулчается учитываем только ближайшего. Хотя можно и всех, но это видимо дорого\сложно)
Еще бы знать как?!
Вы про то как всех? Или как люди двигаются? )
Всех если помещение. банально сунуть по углам датчики растояния ультразвуковые с какимнибудь углом вращения, головы всем найдет почти.
Вобщем я так понимаю ультрзвуковой сенсор растояния крутить туда сюда? Но мне тут не нравится что в конструктиве ящика для всего нужно продумывать отвертсие по кругу.
Инфракрасный датчик оргстекло пробивает?
Инфракрасный датчик оргстекло пробивает?
смотря как сильно кинуть и какой толщины оргстекло.
Чет я запутался. Палатка - это где туристы или которые сникерсами торгуют?
Палатка это которая плащ-палатка. И в ней партизаны.
Я чото ваще не понял, речь то о комнате? ну всмысле твёрдой комнате из бетона и т. п. Или тут мягкая комната?? :)
короче. в твёрдой комнате на потолке можно укрепить ультразвуковые датчики, которые смотрят вниз. Через полметра допустим. по принципу матрицы. Допустим комната 3*4 м. тогда у нас получится "камера" с разрешающей способностью 6*8 пикселов. Которая будет давать heightmap - карту высоты. По карте можно определять движение.
В нетвёрдой комнате не знаю как сделать.
Можно мультиплексировать у датчиков TRIG через 595 и ECHO через 165, быстродействие будет в десятки-сотни герц. По мне - вполне достаточно.
Ой как тут интересно. Обьекты набежали. Их тут отслеживают. А я "Мухой" сходу в отслеживателя? Вот и проблемы нет.
лазерные рулетки не подойдут?
а не проще барьерные ик датчики поставить? при пересечении луча включаеться тревога , ну или еще что нибудь..)
Нужно находить растояние до объектов вокруг платки, допустим в радиусе 5-10метров.
посоветуйте как это делать?
Пока представляю только вариант с крутящимся туда сюда по кругу датчиком расстояния.
Датчик УЗВ. HS-04 - для этой цели явно "плохое решение" без его доработок. У него широкий луч, около 15грд по паспорту, а в реале около 20. Кроме этого он хорошо ловит левые отражения сигналов боковыми лепестками своей диаграммы направленности. Увы. Ну и дальность. В принципе справляется с расстоянием в 5.5метров, но это уже так... "условно".
Тоже уже ставил его на серву и посканировал "пространство в комнате" ... итог: "всё плохо". Можно делать по 5-10 измерений по направлению, отсеивать резко отличющиеся результаты и усреднять остаток. Будет несколько лучше, но не существенно. Но, тогда время обзора возрастает критично (0.08 .. 0.16 сек на направление). "объекты" (мой кот к примеру) успевают уползать... :)
http://item.taobao.com/item.htm?id=9608536388
https://www.google.ru/?gws_rd=ssl#newwindow=1&q=RPLIDAR
Доброго времени суток всем. По данной теме есть вопрос.
Задача поставленна так же как и у автора темы. Нашел решение на али
https://ru.aliexpress.com/item/053-eai-ydlidar-x4/32850437159.html?spm=a...
или
https://ru.aliexpress.com/item/RPLIDAR-360-Degree-Laser-Scanning-Range-F...
Нашел описание обработки, к сожелению на (En).
http://www.robopeak.com/blog/?p=611
Мог бы кто то объснить принцип обработки сигналов? Либо ссылку дать на русский вариант?
Доброго времени суток всем. По данной теме есть вопрос.
Задача поставленна так же как и у автора темы. Нашел решение на али
https://ru.aliexpress.com/item/053-eai-ydlidar-x4/32850437159.html?spm=a...
или
https://ru.aliexpress.com/item/RPLIDAR-360-Degree-Laser-Scanning-Range-F...
Нашел описание обработки, к сожелению на (En).
http://www.robopeak.com/blog/?p=611
Мог бы кто то объснить принцип обработки сигналов? Либо ссылку дать на русский вариант?
Так там же особо описания нет, в примерах есть немного
/* * RoboPeak RPLIDAR Arduino Example * This example shows how to control an RGB led based on the scan data of the RPLIDAR * * The RGB led will change its hue based on the direction of the closet object RPLIDAR has been detected. * Also, the light intensity changes according to the object distance. * * USAGE: * --------------------------------- * 1. Download this sketch code to your Arduino board * 2. Connect the RPLIDAR's serial port (RX/TX/GND) to your Arduino board (Pin 0 and Pin1) * 3. Connect the RPLIDAR's motor ctrl pin to the Arduino board pin 3 * 4. Connect an RGB LED to your Arduino board, with the Red led to pin 9, Blue led to pin 10, Green led to pin 11 * 5. Connect the required power supplies. * 6. RPLIDAR will start rotating when the skecth code has successfully detected it. * 7. Remove objects within the 0.5 meters' radius circule range of the RPLIDAR * 8. Place some object inside the 0.5 meters' range, check what will happen to the RGB led :) */ /* * Copyright (c) 2014, RoboPeak * All rights reserved. * RoboPeak.com * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ // This sketch code is based on the RPLIDAR driver library provided by RoboPeak #include <RPLidar.h> // You need to create an driver instance RPLidar lidar; // Change the pin mapping based on your needs. ///////////////////////////////////////////////////////////////////////////// #define LED_ENABLE 12 // The GPIO pin for the RGB led's common lead. // assumes a common positive type LED is used #define LED_R 9 // The PWM pin for drive the Red LED #define LED_G 11 // The PWM pin for drive the Green LED #define LED_B 10 // The PWM pin for drive the Blue LED #define RPLIDAR_MOTOR 3 // The PWM pin for control the speed of RPLIDAR's motor. // This pin should connected with the RPLIDAR's MOTOCTRL signal ////////////////////////////////////////////////////////////////////////////// #define NEO_RGBSPACE_MAX (byte)(200L*255/360) int _r, _g, _b; //Set current RGB with the hue: HSV(hue, x, x) void hue_to_rgb( _u8 hue) { /*` Hue(in Degree): 0 (RED) ----> 60 (Yello) ----> 120 (Green) --...... ----> 360 Hue'(fit to _u8):0 ----> 60/360*255 ----> 120/260*255 --...... ----> 255 */ //convert HSV(hue,1,1) color space to RGB space if (hue < 120L*255/360) //R->G { _g = hue; _r = NEO_RGBSPACE_MAX - hue; _b = 0; }else if (hue < 240L*255/360) //G->B { hue -= 120L*255/360; _b = hue; _g = NEO_RGBSPACE_MAX - hue; _r = 0; }else //B->R { hue -= 240L*255/360; _r = hue; _b = NEO_RGBSPACE_MAX - _r; _g = 0; } } void displayColor(float angle, float distance) { //1. map 0-350 deg to 0-255 byte hue = angle*255/360; hue_to_rgb(hue); //2. control the light int lightFactor = (distance>500.0)?0:(255-distance*255/500); _r *=lightFactor; _g *=lightFactor; _b *=lightFactor; _r /= 255; _g /= 255; _b /= 255; analogWrite(LED_R, 255-_r); analogWrite(LED_G, 255-_g); analogWrite(LED_B, 255-_b); } void setup() { // bind the RPLIDAR driver to the arduino hardware serial lidar.begin(Serial); // set pin modes pinMode(RPLIDAR_MOTOR, OUTPUT); pinMode(LED_ENABLE, OUTPUT); pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); digitalWrite(LED_ENABLE, HIGH); analogWrite(LED_R,255); analogWrite(LED_G,255); analogWrite(LED_B,255); } float minDistance = 100000; float angleAtMinDist = 0; void loop() { if (IS_OK(lidar.waitPoint())) { //perform data processing here... float distance = lidar.getCurrentPoint().distance; float angle = lidar.getCurrentPoint().angle; if (lidar.getCurrentPoint().startBit) { // a new scan, display the previous data... displayColor(angleAtMinDist, minDistance); minDistance = 100000; angleAtMinDist = 0; } else { if ( distance > 0 && distance < minDistance) { minDistance = distance; angleAtMinDist = angle; } } } else { analogWrite(RPLIDAR_MOTOR, 0); //stop the rplidar motor // try to detect RPLIDAR... rplidar_response_device_info_t info; if (IS_OK(lidar.getDeviceInfo(info, 100))) { //detected... lidar.startScan(); analogWrite(RPLIDAR_MOTOR, 255); delay(1000); } } }У лидара есть моторчик и лазер. Моторчик мотает по кругу лазер и приемник. Лазер палит в объект, объект отражает луч, приемник его ловит. По времени прохождения света вычисляется дистанция. Т.е. с лидара можно получить угол, на который в данный момент повернут лазер с приемником и дистанцию. Это помогает нарисовать карту окружающих препятствий.
Ну это как раз понятно. Как Arduino это все обработать?
Ардуино, например, может складывать дистанцию с величиной угла. Или перемножать. Ей вообще пофигу, что делать. Думать, что ей полагается делать - это ваша задача.
Вот такое https://www.youtube.com/watch?v=OOT3UIXZztE пора прикручивать, на raspberry, а ардуина пускай крутит двигатели )))
Мне конкретно бы понять что на выходе? Градус поворота и расстояние на этом градусе?