Comments (18)
Калибровка камеры своя для каждого разрешения, конечно.
Сегодня отключил optical flow, дальномер в clever.launch и estimate_poses в aruco_detect.
Производительности стало лучше, на 320х240 framerate вернулся практически к 40.
После переключения в 640х480 - из /aruco_map/pose
максимум удалось выжать где-то 12 герц.
На 12 герцах в POSCTL, в принципе, аппарат висит. Но быстро летать - не очень получится...
При этом loadavg на 320х240 = ~4.7, а на 640х480 - уже аж 5.9 - 6.3. Т.е., похоже, упираемся в физический предел производительности.
Думаю, на этом issue можно закрывать. Спасибо за консультации!
from clover.
А на той калибровке, что уже лежит в Клевере под 640х480, не пробовал?
from clover.
Попробовал. Всё ещё хуже происходит на стандартной - в rviz в ней кажется, что до потолка ~2 метра а не 3. И коптер при стандартной калибровке в потолок ещё уверенней и резче летит.
И mocap.z и local_position.z сильнее расходятся - причём mocap более на правду похож:
from clover.
А подлёт с разрешением 320х240 выглядит вот так (только разрешение камеры поменял, остальное без изменений):
Коптер видит, что по Z он взлетел на 1,5 м, а не на 1м. Но дальше он в потолок не бьётся - только мотается выше целевой точки, и через 30 секунд по команде land() садится. pos_mocap.z и local_position.z не сильно расходятся на всём полёте.
from clover.
Вообще говоря, есть планы попробовать завести всю эту систему на EKF2. Возможно, какие-то проблемы уйдут.
В любом случае, я изучу твои логи. Хотя желательно, все-таки, приложить их в виде файлов.
from clover.
Да, конечно, логи высылаю.
logs.zip
3, 4 - попытки взлёта 640х480 с типовой калибровкой камеры, неудачные
5 - когда вернул в 320х240, удачный
Вот ещё лог 2 - взлёт 640х480 с нетиповой калибровкой, полученной с помощью camera_calibrator.
log_2.zip
from clover.
@copterspace, issue ещё актуален? Как обстоит дело на последней версии образа?
from clover.
На следующей неделе могу поставить камеру наверх, скачать последний образ и протестить. С тех пор мы летали только на 320х240.
На EKF - у меня по потолочным маркерам летал хорошо (320х240). Но по половым, которые он не видит в момент взлёта - в момент когда маркеры видит в первый раз - EKF начинает думать, что падает - и фырит в потолок. На этом пока завершились мои попытки тестов EKF.
from clover.
Чё-то новый образ (брал от НТИ, clever_0.16-nti2019-nvg.1.img ) не хочет есть нашу карту.
Сгенерировал карту скриптом rosrun aruco_pose genmap.py. С виду всё хорошо (файл прилагаю cospa_map.txt).
Но после того как я пытаюсь подставить этот файл в aruco.launch вместо nti_novgorod.txt - при запуске Клевер падает с ошибкой:
OpenCV Error: Assertion failed (id < bytesList.rows) in drawMarker, file /home/pi/ros_catkin_ws/src/opencv3/opencv_contrib/aruco/src/dictionary.cpp, line 167
[FATAL] [1542130560.742547325]: Failed to load nodelet '/aruco_detect` of type `aruco_pose/aruco_detect` to manager `nodelet_manager'
[FATAL] [1542130560.742933992]: Failed to load nodelet '/aruco_map` of type `aruco_pose/aruco_map` to manager `nodelet_manager'
[FATAL] [1542130560.743252273]: Failed to load nodelet '/main_camera` of type `cv_camera/CvCameraNodelet` to manager `nodelet_manager'
[FATAL] [1542130560.743684252]: Failed to load nodelet '/optical_flow` of type `clever/optical_flow` to manager `nodelet_manager'
[nodelet_manager-9] process has died [pid 19111, exit code -11, cmd /opt/ros/kinetic/lib/nodelet/nodelet manager __name:=nodelet_manager __log:=/home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/nodelet_manager-9.log].
log file: /home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/nodelet_manager-9*.log
[mavros-1] process has finished cleanly
log file: /home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/mavros-1*.log
[aruco_detect-5] process has died [pid 19060, exit code 255, cmd /opt/ros/kinetic/lib/nodelet/nodelet load aruco_pose/aruco_detect nodelet_manager image_raw:=main_camera/image_raw camera_info:=main_camera/camera_info __name:=aruco_detect __log:=/home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/aruco_detect-5.log].
log file: /home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/aruco_detect-5*.log
[optical_flow-8] process has died [pid 19102, exit code 255, cmd /opt/ros/kinetic/lib/nodelet/nodelet load clever/optical_flow nodelet_manager image_raw:=main_camera/image_raw camera_info:=main_camera/camera_info __name:=optical_flow __log:=/home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/optical_flow-8.log].
log file: /home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/optical_flow-8*.log
[main_camera-14] process has died [pid 19147, exit code 255, cmd /opt/ros/kinetic/lib/nodelet/nodelet load cv_camera/CvCameraNodelet nodelet_manager __name:=main_camera __log:=/home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/main_camera-14.log].
log file: /home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/main_camera-14*.log
[aruco_map-6] process has died [pid 19076, exit code 255, cmd /opt/ros/kinetic/lib/nodelet/nodelet load aruco_pose/aruco_map nodelet_manager image_raw:=main_camera/image_raw camera_info:=main_camera/camera_info markers:=aruco_detect/markers __name:=aruco_map __log:=/home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/aruco_map-6.log].
log file: /home/pi/.ros/log/f59908de-e767-11e8-a266-b827eb346319/aruco_map-6*.log
Ставлю обратно nti_novgorod.txt - ошибка исчезает.
Т.е. понятно, что где-то в карте собака порылась - но её ж такую скрипт сгенерил, и при осмотре текстового файла внешних изъянов я пока не нашёл...
from clover.
У нас по умолчанию в aruco_detect
выбран словарь на 250 маркеров (DICT_4X4_250).
Чтобы поменять словарь на DICT_4X4_1000, надо добавить параметр dictionary
в настройки aruco_detect
'а (https://github.com/CopterExpress/clever/blob/master/clever/launch/aruco.launch#L9):
<param name="dictionary" value="3"/>
Вот, кстати, список словарей.
from clover.
Спасибо, Олег. Не только aruco_detect
'a, но и ещё и aruco_map
'a, если быть точным - там он также пытается взять словарь из параметра ноды (стр.91), и именно из-за aruco_map
'a он и падал, как оказалось.
Ок, карта отобразилась, поеду дальше...
from clover.
На 640х480 получается маловатая частота расчёта позы карты, имхо:
pi@raspberrypi:~ $ rostopic hz /aruco_map/pose
subscribed to [/aruco_map/pose]
average rate: 10.478
min: 0.056s max: 0.176s std dev: 0.04461s window: 10
average rate: 10.794
min: 0.054s max: 0.176s std dev: 0.04128s window: 21
average rate: 10.568
min: 0.054s max: 0.176s std dev: 0.04029s window: 31
average rate: 10.643
min: 0.054s max: 0.176s std dev: 0.03784s window: 42
average rate: 10.365
min: 0.054s max: 0.176s std dev: 0.03687s window: 51
И это на 1 маркере. Если карту показать - ещё на %10-20 падает framerate.
На 320х240 Клевер 16 выдаёт мне 20-22 Гц максимум. А 13-й Клевер у меня в тех же условиях выдаёт 33-35 Гц.
С 10-герцовой частотой позы я на своём одометре пробовал летать - было сильно "не очень".
Полётные тесты позже проведу, но из-за низкой частоты прогноз на летабельность 640х480 пока отрицательный...
У вас получается ли больший framerate для rostopic hz /aruco_map/pose
из RPI выжать? (может, у меня чего не так настроено...)
from clover.
Т. е. ты говоришь, что с 13-й версии до 16-й образа частота распознавалки арук деградировала? Мы просто этого не замечали.
@Alamoris
from clover.
Сегодняшние полётные тесты подтвердили предположения о деградации частоты распознавания арук, пока только в POSCTL.
320х240 - висит в точке хоть как-то, 640х480 (поменялось только разрешение камеры) - не держит точку совсем. Отличается только framerate, в rviz карту видно примерно одинаково в обоих случаях. Кстати можно ещё данный тезис проверить поставив framerate = 10 для 320х240 - должна тоже улетать прочь...
примеры логов:
320х240 - https://logs.px4.io/plot_app?log=d8068dab-702a-4382-bfeb-e557e6e4a901
640х480 - https://logs.px4.io/plot_app?log=60d47fed-5f02-4d82-a645-669b4f660886
для сравнения, на 13-м Клевере летала более стабильно, примерно вот так: https://www.youtube.com/watch?v=RNG2Y_IHx6Y
from clover.
А калибровку ты меняешь?
from clover.
Камеры? - Да. Я пробовал и с нашей и с не нашей. С нашей калибровкой всё лучше, до потолка 2.4м, а с вашей она думает, что до карты на потолке 1.4 м.
from clover.
Калибровка камера должна соответствовать разрешению. На каждое разрешение своя калибровка. (Хотя можно и автоматически camera_matrix пересчитывает, cv_camera
это, кстати умеет).
from clover.
@Alamoris, а у нас вроде лучше результаты? Вполне возможно, что на разных Raspberry могут быть разные результаты.
from clover.
Related Issues (20)
- RLException: Unable to launch [sitl_0-3]. HOT 28
- catkin make fail due to missing files error HOT 11
- Cannot receive status message HOT 1
- Mavros cannot connect to Pixhawk 6C HOT 2
- catkin_make [Errno 13] Permission denied: '/home/user/catkin_ws/build' HOT 9
- Error: No connection to FCU HOT 4
- RLException HOT 2
- Error: name 'set_yaw' is not defined HOT 4
- Error with Hardware Implementation HOT 7
- Jetson nano clover drone HOT 4
- Gazebo simulation px4 1.14 or later version operation error HOT 8
- only aruco take off error HOT 17
- No output obtained from sensor on gazebo. Error: Unable to parse message of type[sensor_msg.msgs.Airspeed] HOT 1
- Can any one help me please i have problem with connecting remote control ? HOT 1
- AttributeError: module 'cv2.aruco' has no attribute 'DetectorParameters_create' HOT 5
- ERROR [px4] Startup script returned with return value: 256 HOT 11
- Questions regarding ROS2 / ROS1 future plans for adoption HOT 2
- disabling VL53L1X Rangefinder overall HOT 4
- Advice for calling `/gazebo/reset_world` service without ruining calibration HOT 4
- odometry data corrupted
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from clover.