robocadV
Добро пожаловать на сайт документации robocadV. Здесь вы сможете найти всю необходимою информацию о robocadV.
Список изменений
Здесь вы можете посмотреть список изменений в каждой версии robocadV.
Версия 0.1.7.0:
Добавлено:
Полностью изменен интерфейс приложения
Изменение картинки робота на главном экране после выбора робота
Теперь, при нажатии на робота (в меню выбора робота), можно его покрутить
На поле FE-21 добавлена возможность настройки эелементов - Светофоры, Знаки, Контейнеры, Коробки для выгрузки, Таблички с цветом, Таблички с QR кодом. При нажатии на них будет появляться панель для настройки выбранного элемента
При открытии файла с неправильным форматом в меню выбора поля и конструкторе будет появляться окно с ошибкой
Добавлена кнопка остановки времени в конструкторе полей. Это нужно, чтобы физичные объекты не подвергались силе гравитации
Добавлены элементы перевозки
Добавлены элементы поля FE-21 в конструктор полей. (Совет: останавливайте время при “вытаскивании” контейнера с шарами, шары улетают вниз, если не остановить)
Добавлены настройки скорости перемещения и вращения камеры для конструктора. В дальнейшем эти настройки будут перенесены прямо в меню конструктора
Навигация по папкам в меню элементов конструктора теперь происходит простым нажатием на папку
Добавлены шумы на датчики - на гироскоп, инфракрасные, ультразвуковые и датчик линии
Добавлено реалистичное поведение моторов, теперь пользователю придется использовать PID
Добавлены настройки для отключения реалистичного поведения моторов и датчиков
Теперь открытие панели управления робота происходит с помощью нажатия на синюю кнопку слева-сверху, либо с сочетания клавиш Ctrl+E
Добавлены ограничения на полет камеры в конструкторе полей
Добавлено ограничение на количество триггеров спавна робота в конструкторе полей
Добавлена возможность поворота триггера спавна робота, чтобы указывать напрвление робота при спавне
Добавлено “красивое” окружение для сцен (я правда старался)
Добавлена настройка для отключения деревьев и травы в окружении
Изменена максимальная дальность камеры от робота с 1.8 метра до 2.6 метра
Добавлена настройка отключения коллайдера у камеры
Исправлено:
Теперь робот не может перемещаться в воздухе и имеет реалистичный вес
На все недоступные кнопки теперь нельзя нажать :)
Исправлена ошибка при вытягивании элемента из списка с нажатием двух кнопок сразу
Исправлена ошибка “отклеивания” захвата у робота RT-2
Теперь робот не скатывается вниз на наклонных поверхностях
Исправлен выбор объектов в конструкторе через интерфейс
Исправлен поворот камеры в конструкторе через интерфейс
Исправлены изначальные повороты объектов в конструкторе полей
Исправлена проблема с поворотом камеры пользователя в конструкторе полей
Исправлена проблема “падения” канваса вместе в объектом
Не исправлено:
Прохождение шаров через контейнеры
“Примагничивание” объектов к захвату
Роботы
Здесь вы можете изучить робота, которого хотите запрограммировать. Читайте документыцию на выбранном вами языке программирования, а полезные примеры помогут вам лучше понять принципы робототехники. Удачи!
Робот RT1
Разделы робота RT1
Моторы
Описание функций и примеры использования:
Расположение и название: RT1.right_motor_speed, RT1.left_motor_speed, RT1.back_motor_speed
Входные данные:
float - скорость на мотор
Выходные данные:
---
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # робот будет двигаться вперед в течение 10 секунд from robocadSim.robots import RT1 import time robot = RT1.RT1() robot.connect() robot.right_motor_speed = -10 robot.left_motor_speed = 10 time.sleep(10) robot.right_motor_speed = 0 robot.left_motor_speed = 0 time.sleep(0.1) robot.disconnect() |
Дополнительная информация:
Минимальная скорость - -100, максимальная - 100
Расположение и название: RT1.setRightMotorSpeed(), RT1.setLeftMotorSpeed(), RT1.setBackMotorSpeed()
Входные данные:
float - скорость на мотор
Выходные данные:
---
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // робот будет двигаться вперед в течение 10 секунд import robots.RT1; public class Main { public static void main(String[] args) throws InterruptedException //static method { RT1 robot = new RT1(); robot.connect(); robot.setRightMotorSpeed(-10); robot.setLeftMotorSpeed(10); Thread.sleep(10000); robot.setRightMotorSpeed(0); robot.setLeftMotorSpeed(0); Thread.sleep(100); robot.disconnect(); } } |
Дополнительная информация:
Минимальная скорость - -100, максимальная - 100
Сенсоры
Описание функций и примеры использования:
Расположение и название: RT1.left_ir, RT1.right_ir, RT1.left_us, RT1.right_us, RT1.imu
Входные данные:
---
Выходные данные:
float - значение датчика (см. или градус)
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # робот будет двигаться вперед, пока стенка не будет слишком близко from robocadSim.robots import RT1 import time robot = RT1.RT1() robot.connect() robot.right_motor_speed = -10 robot.left_motor_speed = 10 time.sleep(0.1) while robot.left_ir > 20: pass robot.right_motor_speed = 0 robot.left_motor_speed = 0 time.sleep(0.1) robot.disconnect() |
Дополнительная информация:
Максимальная видимость ИК датчика - 40 см.
Максимальная видимость УЗ датчика - 100 см.
Минимальный угол поворота - -180, максимальный - 180
Расположение и название: RT1.getLeftIR(), RT1.getRightIR(), RT1.getLeftUS(), RT1.getRightUS(), RT1.getIMU()
Входные данные:
---
Выходные данные:
float - значение датчика (см. или градус)
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // робот будет двигаться вперед, пока стенка не будет слишком близко import robots.RT1; public class Main { public static void main(String[] args) throws InterruptedException //static method { RT1 robot = new RT1(); robot.connect(); robot.setRightMotorSpeed(-10); robot.setLeftMotorSpeed(10); Thread.sleep(100); while (robot.getLeftIR() > 20) { } robot.setRightMotorSpeed(0); robot.setLeftMotorSpeed(0); Thread.sleep(100); robot.disconnect(); } } |
Дополнительная информация:
Максимальная видимость ИК датчика - 40 см.
Максимальная видимость УЗ датчика - 100 см.
Минимальный угол поворота - -180, максимальный - 180
Расположение и название: robocadSimLV -> robocadSim -> robots -> RT1 -> RT1
Входные данные:
---
Выходные данные:
float - значение датчика (см. или градус)
Пример:
В этом примере робот просто постоянно едет вперед и выводит на фронт панель значение правого инфракрасного датчика
Дополнительная информация:
Максимальная видимость ИК датчика - 40 см.
Максимальная видимость УЗ датчика - 100 см.
Минимальный угол поворота - -180, максимальный - 180
Энкодеры
Описание функций и примеры использования:
Расположение и название: RT1.right_motor_enc, RT1.left_motor_enc, RT1.back_motor_enc
Входные данные:
---
Выходные данные:
float - значение энкодера (тик)
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # робот будет двигаться вперед, пока не насчитает по правому энкодеру 3000 from robocadSim.robots import RT1 import time robot = RT1.RT1() robot.connect() robot.right_motor_speed = -10 robot.left_motor_speed = 10 time.sleep(0.1) while abs(robot.right_motor_enc) < 3000: pass robot.right_motor_speed = 0 robot.left_motor_speed = 0 time.sleep(0.1) robot.disconnect() |
Дополнительная информация:
Это бета версия работы энкодеров
Расположение и название: RT1.getRightMotorEnc(), RT1.getLeftMotorEnc(), RT1.getBackMotorEnc()
Входные данные:
---
Выходные данные:
float - значение энкодера (тик)
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // робот будет двигаться вперед, пока не насчитает по правому энкодеру 3000 import robots.RT1; public class Main { public static void main(String[] args) throws InterruptedException //static method { RT1 robot = new RT1(); robot.connect(); robot.setRightMotorSpeed(-10); robot.setLeftMotorSpeed(10); Thread.sleep(100); while (Math.abs(robot.getRightMotorEnc()) < 3000) { } robot.setRightMotorSpeed(0); robot.setLeftMotorSpeed(0); Thread.sleep(100); robot.disconnect(); } } |
Дополнительная информация:
Это бета версия работы энкодеров
Расположение и название: robocadSimLV -> robocadSim -> robots -> RT1 -> RT1
Входные данные:
---
Выходные данные:
float - значение энкодера (тик)
Пример:
В этом примере робот просто постоянно едет вперед и выводит на фронт панель значение правого энкодера
Дополнительная информация:
Это бета версия работы энкодеров
Обнуление
Описание функций и примеры использования:
Расположение и название: RT1.reset_right_enc, RT1.reset_left_enc, RT1.reset_back_enc, RT1.reset_imu
Входные данные:
bool - нужно ли обнулять
Выходные данные:
---
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # робот будет двигаться вперед 10 секунд, а потом обнулит правый энкодер from robocadSim.robots import RT1 import time robot = RT1.RT1() robot.connect() robot.right_motor_speed = -10 robot.left_motor_speed = 10 time.sleep(10) print(robot.right_motor_enc) # -5560.0 robot.reset_right_enc = True robot.right_motor_speed = 0 robot.left_motor_speed = 0 time.sleep(0.1) print(robot.right_motor_enc) # 0.0 robot.reset_right_enc = False robot.disconnect() |
Дополнительная информация:
---
Расположение и название: RT1.setResetRightEnc(), RT1.setResetLeftEnc(), RT1.setResetBackEnc(), RT1.setResetImu()
Входные данные:
boolean - нужно ли обнулять
Выходные данные:
---
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // робот будет двигаться вперед 10 секунд, а потом обнулит правый энкодер import robots.RT1; public class Main { public static void main(String[] args) throws InterruptedException //static method { RT1 robot = new RT1(); robot.connect(); robot.setRightMotorSpeed(-10); robot.setLeftMotorSpeed(10); Thread.sleep(10000); System.out.println(robot.getRightMotorEnc()); // -5560.0 robot.setResetRightEnc(true); robot.setRightMotorSpeed(0); robot.setLeftMotorSpeed(0); Thread.sleep(100); System.out.println(robot.getRightMotorEnc()); // 0.0 robot.setResetRightEnc(false); robot.disconnect(); } } |
Дополнительная информация:
---
Робот RT2
Разделы робота RT2
Камера
Описание функций и примеры использования:
Расположение и название: RT2.bytes_from_camera
Входные данные:
---
Выходные данные:
bytes - массив байтов изображения
Пример с использованием библиотеки OpenCV:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # этот пример кода позволит вам получать изображение с робота в течение 10 секунд from robocadSim.robots import RT2 import numpy as np import cv2 robot = RT2.RT2() robot.connect() st_time = time.time() while time.time() - st_time < 10: nparr = np.frombuffer(robot.bytes_from_camera, np.uint8) if nparr.size > 0: img_rgb = nparr.reshape(480, 640, 3) img_bgr = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR) cv2.imshow("robot image", img_bgr) cv2.waitKey(1) robot.disconnect() |
Пример с использованием библиотеки PIL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # этот пример кода сохраняет изображение с камеры робота from robocadSim.robots import RT2 import numpy as np from PIL import Image robot = RT2.RT2() robot.connect() while len(robot.bytes_from_camera) == 0: pass img = Image.frombytes("RGB", (640, 480), robot.bytes_from_camera) img.save(r"image_from_robot.png", "PNG") robot.disconnect() |
Дополнительная информация:
---
Расположение и название: RT2.getBytesFromCamera()
Входные данные:
---
Выходные данные:
byte[] - массив байтов изображения
Пример с использованием библиотеки awt/swing:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | // этот пример кода позволит вам получать изображение с робота в течение 10 секунд import robots.RT2; import javax.swing.*; import java.awt.*; import java.awt.image.BufferedImage; public class Main { public static void main(String[] args) //static method { JFrame jFrame = new JFrame(); JPanel panel = new JPanel(); jFrame.setLayout(new FlowLayout()); jFrame.setSize(640, 480); panel.setSize(640, 480); JLabel jLabel = new JLabel(); panel.add(jLabel); jFrame.add(panel); panel.setVisible(true); jFrame.setVisible(true); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); RT2 robot = new RT2(); robot.connect(); long stTime = System.currentTimeMillis(); BufferedImage icon = new BufferedImage(1, 1, BufferedImage.TYPE_3BYTE_BGR); while (System.currentTimeMillis() - stTime < 10000) { if (robot.getBytesFromCamera().length > 0) icon = Converter(robot.getBytesFromCamera()); jLabel.setIcon(new ImageIcon(icon)); jFrame.repaint(); } jFrame.setVisible(false); jFrame.dispose(); robot.disconnect(); } private static BufferedImage Converter(byte[] array) { int height = 480; int width = 640; BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); int ctr=0; for(int i = height - 1; i >= 0; i--) { for(int j = 0; j < width; j++) { Color color = new Color(array[ctr] & 0xff, array[ctr + 1] & 0xff, array[ctr + 2] & 0xff); newImage.setRGB(j, i, color.getRGB()); ctr += 3; } } return newImage; } } |
Пример с использованием библиотеки JavaCV:
---
Дополнительная информация:
---
Моторы
Описание функций и примеры использования:
Расположение и название: RT2.right_motor_speed, RT2.left_motor_speed, RT2.back_motor_speed
Входные данные:
float - скорость на мотор
Выходные данные:
---
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # робот будет двигаться вперед в течение 10 секунд from robocadSim.robots import RT2 import time robot = RT2.RT2() robot.connect() robot.right_motor_speed = -10 robot.left_motor_speed = 10 time.sleep(10) robot.right_motor_speed = 0 robot.left_motor_speed = 0 time.sleep(0.1) robot.disconnect() |
Дополнительная информация:
Минимальная скорость - -100, максимальная - 100
Расположение и название: RT2.setRightMotorSpeed(), RT2.setLeftMotorSpeed(), RT2.setBackMotorSpeed()
Входные данные:
float - скорость на мотор
Выходные данные:
---
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // робот будет двигаться вперед в течение 10 секунд import robots.RT2; public class Main { public static void main(String[] args) throws InterruptedException //static method { RT2 robot = new RT2(); robot.connect(); robot.setRightMotorSpeed(-10); robot.setLeftMotorSpeed(10); Thread.sleep(10000); robot.setRightMotorSpeed(0); robot.setLeftMotorSpeed(0); Thread.sleep(100); robot.disconnect(); } } |
Дополнительная информация:
Минимальная скорость - -100, максимальная - 100
Сенсоры
Описание функций и примеры использования:
Расположение и название: RT2.left_ir, RT2.right_ir, RT2.left_us, RT2.right_us, RT2.imu
Входные данные:
---
Выходные данные:
float - значение датчика (см. или градус)
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # робот будет двигаться вперед, пока стенка не будет слишком близко from robocadSim.robots import RT2 import time robot = RT2.RT2() robot.connect() robot.right_motor_speed = -10 robot.left_motor_speed = 10 time.sleep(0.1) while robot.left_ir > 20: pass robot.right_motor_speed = 0 robot.left_motor_speed = 0 time.sleep(0.1) robot.disconnect() |
Дополнительная информация:
Максимальная видимость ИК датчика - 40 см.
Максимальная видимость УЗ датчика - 100 см.
Минимальный угол поворота - -180, максимальный - 180
Расположение и название: RT2.getLeftIR(), RT2.getRightIR(), RT2.getLeftUS(), RT2.getRightUS(), RT2.getIMU()
Входные данные:
---
Выходные данные:
float - значение датчика (см. или градус)
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // робот будет двигаться вперед, пока стенка не будет слишком близко import robots.RT2; public class Main { public static void main(String[] args) throws InterruptedException //static method { RT2 robot = new RT2(); robot.connect(); robot.setRightMotorSpeed(-10); robot.setLeftMotorSpeed(10); Thread.sleep(100); while (robot.getLeftIR() > 20) { } robot.setRightMotorSpeed(0); robot.setLeftMotorSpeed(0); Thread.sleep(100); robot.disconnect(); } } |
Дополнительная информация:
Максимальная видимость ИК датчика - 40 см.
Максимальная видимость УЗ датчика - 100 см.
Минимальный угол поворота - -180, максимальный - 180
Расположение и название: robocadSimLV -> robocadSim -> robots -> RT2 -> RT2
Входные данные:
---
Выходные данные:
float - значение датчика (см. или градус)
Пример:
В этом примере робот просто постоянно едет вперед и выводит на фронт панель значение правого инфракрасного датчика
Дополнительная информация:
Максимальная видимость ИК датчика - 40 см.
Максимальная видимость УЗ датчика - 100 см.
Минимальный угол поворота - -180, максимальный - 180
Энкодеры
Описание функций и примеры использования:
Расположение и название: RT2.right_motor_enc, RT2.left_motor_enc, RT2.back_motor_enc
Входные данные:
---
Выходные данные:
float - значение энкодера (тик)
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # робот будет двигаться вперед, пока не насчитает по правому энкодеру 3000 from robocadSim.robots import RT2 import time robot = RT2.RT2() robot.connect() robot.right_motor_speed = -10 robot.left_motor_speed = 10 time.sleep(0.1) while abs(robot.right_motor_enc) < 3000: pass robot.right_motor_speed = 0 robot.left_motor_speed = 0 time.sleep(0.1) robot.disconnect() |
Дополнительная информация:
Это бета версия работы энкодеров
Расположение и название: RT2.getRightMotorEnc(), RT2.getLeftMotorEnc(), RT2.getBackMotorEnc()
Входные данные:
---
Выходные данные:
float - значение энкодера (тик)
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // робот будет двигаться вперед, пока не насчитает по правому энкодеру 3000 import robots.RT2; public class Main { public static void main(String[] args) throws InterruptedException //static method { RT2 robot = new RT2(); robot.connect(); robot.setRightMotorSpeed(-10); robot.setLeftMotorSpeed(10); Thread.sleep(100); while (Math.abs(robot.getRightMotorEnc()) < 3000) { } robot.setRightMotorSpeed(0); robot.setLeftMotorSpeed(0); Thread.sleep(100); robot.disconnect(); } } |
Дополнительная информация:
Это бета версия работы энкодеров
Расположение и название: robocadSimLV -> robocadSim -> robots -> RT2 -> RT2
Входные данные:
---
Выходные данные:
float - значение энкодера (тик)
Пример:
В этом примере робот просто постоянно едет вперед и выводит на фронт панель значение правого энкодера
Дополнительная информация:
Это бета версия работы энкодеров
Обнуление
Описание функций и примеры использования:
Расположение и название: RT2.reset_right_enc, RT2.reset_left_enc, RT2.reset_back_enc, RT2.reset_imu
Входные данные:
bool - нужно ли обнулять
Выходные данные:
---
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | # робот будет двигаться вперед 10 секунд, а потом обнулит правый энкодер from robocadSim.robots import RT2 import time robot = RT2.RT2() robot.connect() robot.right_motor_speed = -10 robot.left_motor_speed = 10 time.sleep(10) print(robot.right_motor_enc) # -5560.0 robot.reset_right_enc = True robot.right_motor_speed = 0 robot.left_motor_speed = 0 time.sleep(0.1) print(robot.right_motor_enc) # 0.0 robot.reset_right_enc = False robot.disconnect() |
Дополнительная информация:
---
Расположение и название: RT2.setResetRightEnc(), RT2.setResetLeftEnc(), RT2.setResetBackEnc(), RT2.setResetImu()
Входные данные:
boolean - нужно ли обнулять
Выходные данные:
---
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | // робот будет двигаться вперед 10 секунд, а потом обнулит правый энкодер import robots.RT2; public class Main { public static void main(String[] args) throws InterruptedException //static method { RT2 robot = new RT2(); robot.connect(); robot.setRightMotorSpeed(-10); robot.setLeftMotorSpeed(10); Thread.sleep(10000); System.out.println(robot.getRightMotorEnc()); // -5560.0 robot.setResetRightEnc(true); robot.setRightMotorSpeed(0); robot.setLeftMotorSpeed(0); Thread.sleep(100); System.out.println(robot.getRightMotorEnc()); // 0.0 robot.setResetRightEnc(false); robot.disconnect(); } } |
Дополнительная информация:
---
Поля
Здесь вы можете выбрать поле и узнать о нем больше.
Поле FE21
Здесь вы можете изучить поле FE21.
Светофоры
На поле есть два светофора, которые имеют три разных цвета (ожидаемо):
Красный цвет (5 секунд)
Желтый цвет (2 секунды)
Зеленый цвет (8 секунд)
Красный:
Робот должен остановиться перед черной линией, если горит красный свет. И продолжать движение, если загорелся зеленый свет:

Желтый:
Робот должен остановиться перед черной линией, если горит желтый свет. И продолжать движение, если загорелся зеленый свет. Но, если робот уже пересекает черную линию, в то время как загорелся желтый, он должен продолжить свое движение:

Дорожные знаки
Всего может быть четыре вида знаков:
Поворот налево
Поворот направо
Движение прямо
Знак стоп
Поворот налево:
Например, если у вас знак Поворот налево около зоны старта (зеленый прямоугольник), вы должны двигаться как показано на рисунке:

или так:

и проверить следующий знак (красный прямоугольник), если это необходимо.
Поворот направо:
Например, если в Maple Lane стоит знак Поворот направо (зеленый прямоугольник), вы должны двигаться как показано на рисунке:

или так:

и проверить следующий знак (красный прямоугольник), если это необходимо.
Движение прямо:
Например, если у вас знак Движение прямо около зоны старта (зеленый прямоугольник), вы должны двигаться как показано на рисунке:

и проверить следующий знак (красный прямоугольник), если это необходимо.
Знак стоп:
Например, если у вас Знак стоп около зоны старта (зеленый прямоугольник), вы должны остановиться перед знаком (или черной линией) и подождать минимум 2 секунды. После этого вы можете продолжить свое движение в любом направлении. Пример:

Все примеры:
Вот пример движений робота, если ему нужно взять контейнер (контейнеры) из зоны Accorn Court:


Funcad
Здесь вы можете почитать о библиотеке Funcad. Она бывает очень полезной при программировании роботов :)
FromAxisToMotors
Функция FromAxisToMotors используется для преобразования осевых скоростей в скорости на моторы для трехколесного робота.
Раположение и название: Funcad.fatm()
Входные данные:
float скорость на ось X
float скорость на ось Y
float скорость на ось Z
Выходные данные:
tuple, который включает в себя:
Скорость на правый мотор
Скорость на левый мотор
Скорость на задний мотор
Пример:
1 2 3 4 | from robocadSimPy.funcad import Funcad out = Funcad.fatm(5, -5, 3) # выходные данные - (2.273672, -9.273672, 4.) |
Дополнительная информация:
---
FromMotorsToAxis
Функция FromAxisToMotors используется для преобразования скоростей моторов в осевые скорости для трехколесного робота.
Раположение и название: Funcad.fmta()
Входные данные:
float скорость на правый мотор
float скорость на левый мотор
float скорость на задний мотор
Выходные данные:
tuple that includes:
Скорость на ось X
Скорость на ось Y
Скорость на ось Z
Пример:
1 2 3 4 | from robocadSimPy.funcad import Funcad out = Funcad.fmta(5, -5, 0) # выходные данные - (8.66, 0., 0.) |
Дополнительная информация:
---
InRangeBool
Функция InRangeBool проверяет, входит ли значение в заданный промежуток.
Раположение и название: Funcad.in_range_bool()
Входные данные:
float входное значение
float нижняя граница
float верхняя граница
Выходные данные:
bool входит ли заданное значение в промежуток
Пример:
1 2 3 4 | from robocadSimPy.funcad import Funcad out = Funcad.in_range_bool(5, 0, 12) # выходные данные - True |
Дополнительная информация:
---
InRange
Функция InRange используется для отсечения значения переменной по нижней и верхней границе.
Раположение и название: Funcad.in_range()
Входные данные:
float входное значение
float нижняя граница
float верхняя граница
Выходные данные:
float значение, входящее в заданный промежуток
Пример:
1 2 3 4 | from robocadSimPy.funcad import Funcad out = Funcad.in_range(5, 0, 12) # выходные данные - 5 |
Дополнительная информация:
---
Transfunction
Функция Transfunction преобразует входное значение в зависимости от заданных массивов.
Раположение и название: Funcad.transfunc_np()
Входные данные:
np.ndarray двумерный массив входных и выходных данных
float значение для преобразования
Выходные данные:
float преобразованное значение
Пример:
1 2 3 4 5 | from robocadSimPy.funcad import Funcad import numpy as np out = Funcad.transfunc_np(np.array([[2, 10], [20, 100]]), 5) # выходные данные - 50 |
Дополнительная информация:
---
ReImToPolar
Функция ReImToPolar преобразует прямоугольные компоненты комплексного числа в его полярные компоненты (полярная система координат).
Раположение и название: Funcad.reim_to_polar()
Входные данные:
float значение X
float значение Y
Выходные данные:
tuple, который включает в себя:
Значение R
Значение Theta
Пример:
1 2 3 4 | from robocadSimPy.funcad import Funcad out = Funcad.reim_to_polar(30, 20) # выходные данные - (36.05551275463989, 0.5880026035475675) |
Дополнительная информация:
---
PolarToReIm
Функция PolarToReIm преобразует полярные компоненты комплексного числа в его прямоугольные компоненты (прямоугольная система координат).
Раположение и название: Funcad.polar_to_reim()
Входные данные:
float значение R
float значение Theta
Выходные данные:
tuple, который включает в себя:
Значение X
Значение Y
Пример:
1 2 3 4 | from robocadSimPy.funcad import Funcad out = Funcad.polar_to_reim(30, 20) # выходные данные - (12.242461854401759, 27.38835752182883) |
Дополнительная информация:
---
Библиотеки
Здесь вы можете выбрать ваш любимый язык программирования и прочитать, как установить библиотеку для программирования роботов на нем.
Python
Здесь вы можете найти информацию о том, как установить Python библиотеку для robocadV.
Первый способ:
Откройте PyChram -> нажмите на File -> Settings

Далее Project: Python -> Project Interpreter -> Install (Кнопочка с плюсиком)

Наберите robocadSimPy в Поисковой строке -> выберите robocadSimPy -> и нажмите Install Package

Теперь вы можете программировать виртуальных роботов, используя Python!
Второй способ (нужен предустановленный Python):
Win + R -> наберите cmd -> и нажмите Enter

Напишите pip install robocadSimPy или pip3 install robocadSimPy -> нажите Enter


Теперь вы можете программировать виртуальных роботов, используя Python!
Java
Здесь вы можете найти информацию о том, как установить Java библиотеку для robocadV.
Первый способ (Maven):
Откройте свой проект Maven в IntelliJ -> откройте файл pom.xml:

Добавляем следующие строчки в этот файл (Рекомендуется использовать самые последнии версии библиотеки, вот список всех версий):
1 2 3 4 5 6 7
<dependencies> <dependency> <groupId>io.github.soft-v</groupId> <artifactId>robocadSim4J</artifactId> <version>LATEST</version> </dependency> </dependencies>
чтобы выглядело примерно так:

Также лучше всего использовать 11 версию SDK и 11 версию языка (вы можете проверить это в File -> Project Structure). И еще лучше иметь 11 версию байткода на выходе, для этого нужно перейти в File -> Settings… -> Build, Execution, Deployment -> Compiler -> Java Compiler:

Теперь вы можете программировать виртуальных роботов, используя Java (Maven)!
LabVIEW
Здесь вы можете найти информацию о том, как установить LabVIEW библиотеку для robocadV.
Для использования этой библиотеки вам нужна утсановленная на ваш компьютер программа LabVIEW 2022 года или выше
Скачайте библиотеку по этой ссылке
Откройте скачанный файл с помощью программы VI Package Manager и нажмите на кнопку Install в открывшемся окне
Спустя некоторое время библиотека будет установлена и останется только нажать на кнопку Finish
Теперь вы можете программировать виртуальных роботов, используя LabVIEW!
Будьте нашим спонсором!
Необходима помощь?
Откройте issue в GitHub.
Что-то еще :)
Лицензия репозитория
MIT License
Copyright (c) 2022 Soft-V
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Реклама в SoftHub
По поводу рекламы писать на почту softvery@yandex.ru