Giter Site home page Giter Site logo

Comments (12)

JasonWong08 avatar JasonWong08 commented on August 18, 2024 1

Hi, thanks for the update. Unfortunately, I can't check it at the moment. You know what happens in Ukraine. Bittle is waiting at home until the war is over.πŸ‡ΊπŸ‡¦

Take care bro.

from opencat.

borntoleave avatar borntoleave commented on August 18, 2024

from opencat.

sskorol avatar sskorol commented on August 18, 2024

@borntoleave it'd probably work. But the main logical issue here is that each skill behaves like an infinite loop of repetitive operations. In this case, we always want to prevent redundant commands sending (aka duplicates) by checking what was the last action. Otherwise, teleop tools that are designed to constantly send the recent state would just DDOS the Bittle. And that's why in the most of implementations people add an additional protection to serial code e.g. if current_command != previous_command. That's what I did as well. Yeah, I can still send the command twice if I want. But the things might become much easier if apart from the skills there will be implemented a more common for ROS technic, when we move objects based on (x, y, z, th) vectors. Then I can constantly send just coordinates's updates, and Bittle would decide how to reach those points.

from opencat.

sskorol avatar sskorol commented on August 18, 2024

BTW, can you provide a pattern for a single "step"? E.g. when we walk or crawl, such skills consist of a number of repetitive steps I guess. I want to extract it for testing.

from opencat.

borntoleave avatar borntoleave commented on August 18, 2024

BTW, can you provide a pattern for a single "step"? E.g. when we walk or crawl, such skills consist of a number of repetitive steps I guess. I want to extract it for testing.

Yes, in instinctBittle.h, you can find the frames of gaits. The explanation of the format can be found at https://bittle.petoi.com/11-tutorial-on-creating-new-skills.

from opencat.

sskorol avatar sskorol commented on August 18, 2024

@borntoleave I checked the guide but it's not really clear what are 1-7 joint angles for in the provided table? And what would happen if I change 1-7 values while calibration?

image

Moreover, I see that we can set the head's angle for static postures. But it's missing for gaits. Can you elaborate on that? And how can I control it? If we talk about camera usage, I'd prefer disabling the head's rotation while moving, as RPi can't stabilize the video and streaming becomes awful.

from opencat.

sskorol avatar sskorol commented on August 18, 2024

Seems like I found where the head is controlled in code: https://github.com/PetoiCamp/OpenCat/blob/main/OpenCat.ino#L828-L833

But it's not really convenient that I need to disable it globally. Would be great to have some option probably for the more flexible head control.

P.S. The question regarding 1-7 joint angles is still actual.

from opencat.

borntoleave avatar borntoleave commented on August 18, 2024

Seems like I found where the head is controlled in code: https://github.com/PetoiCamp/OpenCat/blob/main/OpenCat.ino#L828-L833

But it's not really convenient that I need to disable it globally. Would be great to have some option probably for the more flexible head control.

P.S. The question regarding 1-7 joint angles is still actual.

The 1~7 joints are reserved for our 12 DOF robot, with head, tail, and should roll angles.

The joints are grouped by four for the convenience of logic conditions in the code:

head pan head tilt tail pan N/A
shoulder roll LF shoulder roll RF shoulder roll RB shoulder roll LB
shoulder pitch LF shoulder pitch RF shoulder pitch RB shoulder pitch LB
knee pitch LF knee pitch RF knee pitch RB knee pitch LB

where L means Left, R means Right, F means Front, B means Back.

Gaits use periodical data. If I include the head and unused joints' angles (0-7th joints), it will double the flash memory usage and exceed the available SRAM on ATmega328P. So for the 8 DOF models, I only save 8 joints (8-15th joints) per frame for the gaits. The postures and behaviors have only one frame or a few frames, so I kept all the joints for better compatibility for my future models. Changing the calibration value of 1-7 joints won't affect anything because no servos are attached to those ports.

The head movement is generated on the fly as a function of the period of the gait. It's a trade-off for limited flash space. The good part is that you may adjust the amplitude and period of the rotation to compensate for the wobbling of the body.

from opencat.

sskorol avatar sskorol commented on August 18, 2024

Ok, thanks for clarification! I'll play with head's rotation.

Let me know when you find the root cause of the original issue with serial commands please.

from opencat.

borntoleave avatar borntoleave commented on August 18, 2024

Hi,
I have fixed the issue and pushed a big update to the firmware: https://github.com/PetoiCamp/OpenCat/tree/2.0
You can read the changelog for the major updates: https://github.com/PetoiCamp/OpenCat/blob/2.0/ChangeLog.md

from opencat.

sskorol avatar sskorol commented on August 18, 2024

Hi, thanks for the update. Unfortunately, I can't check it at the moment. You know what happens in Ukraine. Bittle is waiting at home until the war is over.πŸ‡ΊπŸ‡¦

from opencat.

borntoleave avatar borntoleave commented on August 18, 2024

Fixed in the 2.0 branch

from opencat.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.