Activity

amronos

I spent a lot of time improving the Nix setup, switching to a more efficient cache for the ROS packages and significantly enhancing direnv support by utilising ros-direnv.
I also accidentally rmed the robot’s CAD design, and therefore deleted like 20 hours of my work. I will have to redesign it; hopefully, it will take less time than before and be better as well.

Attachment
0
amronos
  1. Added formatting and linting rules through Prettier, ESLint, and pre-commit.
  2. Created some GitHub CI workflows that run linting, builds, and tests.
  3. Configured Dependabot to automatically raise PRs for updating GitHub Actions, pnpm, and Cargo dependencies.
Attachment
Attachment
Attachment
Attachment
0
amronos

Made the UI better and fixed the ghost scrollbar issue. It was caused by a bug in Blockly that occurs when using Tailwind CSS.
All of this is going to change a lot, this is just something basic to get started with.

Attachment
0
amronos

I added Tailwind CSS and shadcn/ui to the project, then cleaned up the code a bit by deleting CSS that is no longer needed and moving CSS for specific components to their definitions, instead of having it defined globally. Some UI bugs have happened because of that, but I am working on fixing it.

Attachment
0
amronos

To implement block-coding, I am going to use Blockly.
I first ported the Blockly sample app into Svelte and tried to get it functioning with Tauri.
The web version of the app looked fine and worked as intended, but for some reason, when run natively, everything was squished to a corner, causing it to appear glitched and making the app unusable.
I spent a lot of time trying to debug this issue. Turns out the problem was a bug in Tauri that caused incorrect DPI scaling with Wayland. To fix it, I temporarily got the app to use X11 by setting export GDK_BACKEND=x11.

Attachment
0
amronos
  1. I experimented with different theia plugins for a bit, there are way too many of them.
  2. I tried to make my own Theia plugin, but implementing custom functionality proved to be too difficult.
  3. I have now decided to just make my own app in Tauri; it is not required for me to have a text editor and other such things in it, as users can use something else instead for code editing and use Sprocket for its unique features.
Attachment
0
amronos

Instead of just having a plate at the front, which could be swapped. I decided that it would be better to make the entire base of the robot that controls movement swappable. This would allow for multiple types of movement systems, both wheel-based and legged.
For this devlog, I mainly spent time creating a new base for mecanum drive, calibrating the motor’s position, and creating a coupling to attach the mecanum wheel to the motor.
During this, I learnt more about creating sub-assemblies and groups for models in FreeCAD and some of the quirks associated with those features.

Attachment
0
amronos

I was so invested that I forgot to devlog :(.

I went ahead and created the GitHub repository that will contain all of the robot’s code, documentation, CAD files, and other relevant materials. Here’s a list of what I did and the difficulties I faced:

  1. Created GitHub action workflows that build and test the robot’s code. There are two workflows, one that uses APT to install dependencies and the other that uses Nix. - Required a lot of testing and tweaking to get them working perfectly as I wanted.
  2. Created an installation guide for installing/building the code. There are two ways: one is to use APT on Ubuntu 24.04, and the other (the one I love) is to use Nix to quickly install everything in one command on basically any OS.
  3. Created ROS 2 launch files that allow for launching a basic RViz window that visualizes the robot description. This would be helpful while 3D modelling the robot. - I created these in yaml (much better), unlike how I did it with my past projects, where I used Python.
  4. Wrote configurations for pre-commit.
  5. Wrote the flake.nix file, I pretty much used ros2nix to generate it alongside a shell.nix. I then merged them into a single file and cleaned the code up a bit.
  6. Added patches for joint_state_publisher into my flake.nix to allow joint_state_publisher to support infinite revolute joints defined in SDF files better, these are present in the APT installation method by using vcs to clone a .repos file.
Attachment
0
amronos

I decided to use the Theia platform to make this project.
I spent a large amount of time shifting the hello-world example from the documentation to use pnpm, and I also created a flake.nix for the project. I got the browser IDE working, but even after a lot of debugging, I couldn’t get the Electron one to start.

Attachment
0
amronos

I have decided to put the wheels inside the robot instead of outside so that they are protected, and the robot looks more aesthetically pleasing.
To support multiple drive modes, the plan is to have a system where you can change the front plate of the robot to accommodate different types of steering at the front (will probably support only Ackermann and normal for now). One of the plates will have two circular holes for the two steerable wheels, and another will have two rectangular holes for non-steerable wheels (in differential and mecanum drive). This system will also include different motors and mounts that will steer/rotate the wheels and keep them in place.

Attachment
0