diff --git a/shablons/README.md b/public/shablons/README.md similarity index 100% rename from shablons/README.md rename to public/shablons/README.md diff --git a/shablons/color.py b/public/shablons/color.txt similarity index 99% rename from shablons/color.py rename to public/shablons/color.txt index 2ae7ea2..6571542 100644 --- a/shablons/color.py +++ b/public/shablons/color.txt @@ -44,10 +44,6 @@ class ColorDetect(): else: self.color = None - - - - #в MAIN для вызова функции должно быть: # cd = ColorDetect() #color_sub = rospy.Subscriber('main_camera/image_raw', Image, @@ -56,4 +52,3 @@ class ColorDetect(): # print(cd.getColor()) #rospy.sleep(2) #color_sub.unregister() - diff --git a/shablons/emergency_and_navigate.py b/public/shablons/emergency_and_navigate.txt similarity index 95% rename from shablons/emergency_and_navigate.py rename to public/shablons/emergency_and_navigate.txt index 6bea297..708ff95 100644 --- a/shablons/emergency_and_navigate.py +++ b/public/shablons/emergency_and_navigate.txt @@ -18,8 +18,6 @@ navigate = rospy.ServiceProxy('navigate', srv.Navigate) #сервис для п land = rospy.ServiceProxy('land', Trigger) #сервис для посадки - - def navigate_wait(x=0, y=0, z=1, speed=0.5, frame_id='aruco_map', auto_arm=False, tolerance=0.2,sleep=2): """ Летит в указанную точку и ждет, пока дрон туда ДОЛЕТИТ. @@ -36,9 +34,6 @@ def navigate_wait(x=0, y=0, z=1, speed=0.5, frame_id='aruco_map', auto_arm=False rospy.sleep(sleep) - - - def emergency_stop(): """Функция экстренной остановки, срабатывает при нажатии Ctrl + C""" @@ -78,8 +73,6 @@ def emergency_stop(): print(f"Warning: {e}") - - def signal_handler(sig, frame): """Перехват Ctrl+C: вместо аварийного завершения программы @@ -98,12 +91,10 @@ def main(): #в дальнейшем не передавать переменной auto_arm значение True - # тут будут navigate_wait и подписчики - # navigate_wait(x=3,z=1,sleep=1) - # navigate_wait(y=5,x=2,z=1,sleep = 4) + <> land() #посадка if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/public/shablons/qr.txt b/public/shablons/qr.txt new file mode 100644 index 0000000..b31ddde --- /dev/null +++ b/public/shablons/qr.txt @@ -0,0 +1,26 @@ +class QrDetect(): + def __init__(self): + self.qr_data = '' + + def getQrData(self): + return self.qr_data + + def qr_detection(self,data): + '''сканирование qr кода''' + if self.qr_data!= '': + return + cv_image = bridge.imgmsg_to_cv2(data, 'bgr8') + barcodes = pyzbar.decode(cv_image) + + if barcodes: + self.qr_data = barcodes[0].data.decode('utf-8') + + +#в MAIN для вызова функции необходимо следующее: +#1. создаём и вызываем подписчика, который вызывает функцию чтения кьюаркода +qd = QrDetect() +qr_sub = rospy.Subscriber('main_camera/image_raw',Image, qd.qr_detection,queue_size=1) +#2. задаём время работы подписчика (за 1 секунду примерно 20 раз вызывается функция) +rospy.sleep(2) +#3. выключаем подписчика +qr_sub.unregister() diff --git a/shablons/qr.py b/shablons/qr.py deleted file mode 100644 index 8cd6251..0000000 --- a/shablons/qr.py +++ /dev/null @@ -1,26 +0,0 @@ -qr_data='' - -def qr_detection(data): - '''сканирование qr кода''' - global qr_data - if qr_data!= '': - return - cv_image = bridge.imgmsg_to_cv2(data, 'bgr8') - barcodes = pyzbar.decode(cv_image) - - if barcodes: - qr_data = barcodes[0].data.decode('utf-8') - - return qr_data - - - - -#в MAIN для вызова функции необходимо следующее: -#1. создаём и вызываем подписчика, который вызывает функцию чтения кьюаркода -qr_sub = rospy.Subscriber('main_camera/image_raw',Image, qr_detection,queue_size=1) -#2. задаём время работы подписчика (за 1 секунду примерно 20 раз вызывается функция) -rospy.sleep(2) -#3. выключаем подписчика -qr_sub.unregister() - diff --git a/src/App.vue b/src/App.vue index 6998a95..f61d5cb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -13,7 +13,6 @@ const isModalVisible = ref(false) let finallyText = ''; onMounted(()=>{ - for (let i = 0; i < 100; i++) { numbers.value.push({ variable: [], @@ -43,7 +42,10 @@ function setNumber(item) { //если нажимаем на ранее отмеченную клетку (не последнюю), то выводится ошибка listOfTrips.value.push(item) if (numbers.value[item.index].variable.at(-1) === clickCount.value-1) { - izitoast.error({title:'Ошибка', message:'Нельзя выбирать один и тот же aruco маркер 2 раза подряд'}) + izitoast.error({ + title:'Ошибка', + message:'Нельзя выбирать один и тот же aruco маркер 2 раза подряд' + }) return } numbers.value[item.index].variable.push(clickCount.value) @@ -53,14 +55,15 @@ function setNumber(item) { } function saveResult() { + let navigate_waites = '' for (const item of listOfTrips.value) { - finallyText += `navigate_wait(${item.x}, ${item.y})\n`; + navigate_waites += `navigate_wait(${item.x}, ${item.y})\n\t`; } - console.log(finallyText); - izitoast.info({ - title: 'Информация', - message: "Посмотри в консоли путь дрона. Ctrl + Shift + I или F12" - }); + fetch('/shablons/emergency_and_navigate.txt') + .then(response => response.text()) + .then(textOfCode => { + finallyText = textOfCode.replace('<>', navigate_waites); + }); isModalVisible.value = true } @@ -92,6 +95,14 @@ const handleKeydown = (event) => { } }; useEventListener('keydown', handleKeydown); + +function copyAndToast(text){ + copyToclipboard(text) + izitoast.success({ + title:'Успешно', + message:'Код скопирован в буфер обмена' + }) +} diff --git a/src/components/MyDialog.vue b/src/components/MyDialog.vue index a80c41e..3e9c43e 100644 --- a/src/components/MyDialog.vue +++ b/src/components/MyDialog.vue @@ -94,6 +94,12 @@ function closeModal() { padding: 5px; margin: 0 5px; } +.btn-green:hover { + background-color: #0fa386; +} +.btn-green:active { + background-color: #65ebd2; +} .modal-fade-enter, .modal-fade-leave-active {