• Welcome to БрикМания БГ - Лего обществото на България.
 

Pybricks - програмиране на Техник хъб

Започната от vladoniki, 30, Август, 2021, 07:51:29 AM

« назад - напред »

0 Потребители и 1 гост преглеждат тази тема.

vladoniki

Наскоро открих https://pybricks.com/ и се опитвам да редактирам намерени в Интернет програми - гола вода съм в програмирането... Темата е продължение на Powered UP и Control+ управление с Gamepad.

За начало гледам 2 програми за 42124:

- Програма 1;
- Програма 2.

В програма 1 е заложено drive_speed += 1000, а в програма 2: drive_speed += 100.

И в 2-та случая бъгите се движи на максимална скорост (до колкото мога да преценя визуално). Въпросът ми е защо в единия случай макс е 100, а в другия e 1000, а крайният резултат е еднакъв?

Поиграх си и със "steer.run_target(500, steer_angle, wait=False)" - когато сменя 500 с 1000 завиващият мотор се движи по-бързо и на практика по-бързо достига максималния ъгъл на колелетата.

Като цяло ми се струва, че има някакво забавяне при обръщане на посоката на движение напред-назад. Сякаш след натискане на противоположния бутон, има забавяне и колата изчаква някакво време (части от секундата), преди да тръгне в обратна посока. При контролиране на хъба с оригиналната програма на Лего не съм забелязал подобно забавяне. За това има ли причина в програмата (кода) или е ограничение от самия хъб или Pybricks firmware-а?

Темата е обширна и мисля, че и други казуси ще изникват с времето.


ender

Така както аз го чета:
    # Choose the drive speed based on the right controls.
    drive_speed = 0
    if Button.RIGHT_PLUS in pressed:
        drive_speed += 1000
    if Button.RIGHT_MINUS in pressed:
        drive_speed -= 1000

    # Apply the selected speed.
    front.run(drive_speed)
...
     # Wait.
    wait(10)

На всеки цикъл от по 10 милисекунди, т.е. една стотна, скоростта се презаписва с 0, 1000 или -1000
Не се ДОБАВЯ към текущата, а се подменя с една от тези 3. Така реално или е макс напред, или макс назад, или неподвижен
Щом казваш, че няма разлика между 100 и 1000, може би 100 е максимума.
Ако искаш да се държи като влаковете, т.е. едно цъкане на плюса го задвижва, второ го ускорява, и т.н., мога да се пробвам с нов код. Ако искаш продължително натискане да ускорява все повече, и това може да се случи... Всичко това е на база само на този код, и логични заключения :D

vladoniki

Още една питанка по темата - отново преработвам готова програма и сменям параметри, докато ми хареса резултатът, но запецнах.

Тук моторът на завиването измерва максималният ъгъл от крайно ляво до крайно дясно положение на гумите:

#steering calibration sequence
steering.run_until_stalled(500)
steering.reset_angle(0)
steering.run_until_stalled(-500)
maxAngle = steering.angle()
steering.run_target(500, (maxAngle/2))
steering.reset_angle(0)

А тук - при натискане на бутон + или - на дистанционното, завива в определената посока с 1/2 от максималния ъгъл на завиване:

#commands to steer
    if Button.RIGHT_PLUS in pressed:
        steering.run_target(2000, (maxAngle/2), Stop.HOLD,False)
    elif Button.RIGHT_MINUS in pressed:
        steering.run_target(2000, -(maxAngle/2), Stop.HOLD,False)
    else:
        steering.run_target(2000, 0, Stop.HOLD, False)


Питането ми е има ли начин да му "кажа" да завива с по 10 градуса по-малко от половината от максималния ъгъл в посока? Тоест - условно ъгълът от най-ляво до най-дясно, ако е 180 градуса (да речем, че толкова го е измерил), да завива не с по 90 градуса в посока, а с 80 градуса.

Пробвах с различни комбинации на скоби, знак "-" и числото 10, но програмата никак не ме "разбра". Не знам какъв е словоредът на нейния език...  8)

Пробвах и да разделя максималния ъгъл (maxAngle/2) на 2 и нещо, но дори и това не помогна - Нито "." приема за десетична запетая, нито ","-та сработва.

vladoniki

Това е жестоко!!!

https://www.youtube.com/watch?v=fxInp9cutNg&ab_channel=RacingBrick

Някой може ли да предложи какъв джойстик би бил оптимален, ако има геймари наоколо...? :)

Ако правилно се ориентирам, нещо подобно май трябва да върши работа - Връзка.

Моля за мнение и препоръки за избора на безжичен джойстик за XBox.

mamun

Pybrciks-a e яко.
Слагал съм го на влаков хъб със сензор за цветове в долната част на влака ;)

vladoniki

Цитат на: mamun - 16, Февруари, 2024, 07:31:16 PM
Pybrciks-a e яко.
Слагал съм го на влаков хъб със сензор за цветове в долната част на влака ;)

Да, удобна опция за някоя влакова диорама. Duplo Train имат вграден сензор за цвят в базата и изпълняват 5 основни функции, като минат над съответния цвят. Имаме си вкъщи 10874 и сме посъбрали цветни тайлове. :)

mamun

Цитат на: vladoniki - 16, Февруари, 2024, 07:52:30 PM
Да, удобна опция за някоя влакова диорама. Duplo Train имат вграден сензор за цвят в базата и изпълняват 5 основни функции, като минат над съответния цвят. Имаме си вкъщи 10874 и сме посъбрали цветни тайлове. :)

Tочно от там взех идеята. като стигне бял тайл на релсата да обърне посоката ;)

vladoniki

Освен, че работи с хъба, контролът е пропорционален и за завиването и за движението... Уникален ъпдейт за всякакви модели!  :)


vladoniki

#8

vladoniki

#9
Управляваш Лего модела, блъскаш го в стената или моторите се натоварват от някое изкачване и контролерът вибрира в ръцете ти... Жестока нова опция за Force Feedback с XBOX контролер и PyBricks. Тествах го на катерача и работи отлично.

https://www.youtube.com/watch?v=ERWPdf0GllM&ab_channel=Pybricks

gibona

Член на Brick Hunters - български Lego клуб

vladoniki

Цитат на: gibona - 29, Август, 2024, 11:44:09 PM
Видео от събитието за Pybricks:
https://www.youtube.com/watch?v=EuoL1ghdmu8
Повече информация може да се намери на Как да програмираме Lego модели с Pybricks

Браво! Много интересно! :)

Аз съм нетърпелив кога PYBricks ще хванат цаката на навия хъб от 42176 Porsche GT4 e-Performance Race Car. Появиха се някакви видеа как се контролира сетът с XBox контролер, но системата е доста сложна и нямам идея как да го подкарам...

Хъбът и компактен и освен колички, мисля, че може да се измисли нещо верижно.

Освен това ми се върти в главата някоя бърза количка, която, поне леко, да дрифтва в завой. Но за целта трябва да не работи жироскопът, който е в хъба. А това без PYBricks, едва ли е възможно. :)

gibona

Работят по тази задача. Може да следиш напредъка тук: New LEGO Hub support - 42176 Porsche GT4 e-Performance
Относно дрифта - може и без жироскоп - Drifting LEGO® 42096 Porsche 911 RSR
Трябва да имаш различни мотори на задните колела и да ги управляваш като танк (с различна скорост).
https://www.youtube.com/watch?v=K_sgGgjQQOw
Член на Brick Hunters - български Lego клуб

mamun

Цитат на: vladoniki - 30, Август, 2024, 07:53:45 AM
Аз съм нетърпелив кога PYBricks ще хванат цаката на навия хъб от 42176 Porsche GT4 e-Performance Race Car.

Освен Размерите има ли някаква нова функционалност в него спрямо предишните PU хъбове ?

gibona

City hub - 1 бутон, 1 LED, 2 изхода
Technic hub - 1 бутон, 1 LED, 4 изхода
42176 hub - 1 бутон, 5 LED, 0 изхода, 3 мотора.
Член на Brick Hunters - български Lego клуб

gibona

Член на Brick Hunters - български Lego клуб