u/SphericalCowww

Cubic Doggo found a nice spot on the ramp 🐾 (Sim-vs-Real)

Doggo is chill and calm in the simulation, but in real life, he's having uncontrollable happy wiggles trying to balance himself while finding the right spot on the ramp.

Repo: 06Z Neucommu
Audio Credit: Soul_Serenity_Sounds from Pixabay

u/SphericalCowww — 5 days ago
▲ 22 r/ROS+1 crossposts

Cubic Doggo Update: On Gazebo!

Finally managed to get the Cubic Doggo 06R model on Gazebo. I am really happy Gazebo works so smoothly, with servo effort and IMU behavior readily available in simulation :)

I think the only caveat is that the minick joints for the translation rod don't quite work in simulation, but that part doesn't change the walk gait.

The commands issued to the robot can be seen in the bottom center window.

Moving to Pybullet next for Cubic Doggo 06Z Neucommu.

u/SphericalCowww — 6 days ago
▲ 48 r/ROS+1 crossposts

Cubic Doggo Upgrade: Walking with IMU!

Hello hello, development of the upgrade, CubicDoggo 06R (High Mobility, sort of), is now complete, and the full project is documented on GitHub: https://github.com/SphericalCowww/CubicDoggo_06R

The previous post can be found here.

But yeah, the performance is not as ideal. You can see it's still wobbling when just standing there, and the IMU is not even balanced to be parallel to the ground. The effect of the IMU during walking is also difficult to notice because of how wonky it walks to begin with and how bad I am at controlling it to walk in a straight line, lol.

However, you can see the subtle sign right before it stops walking. Its front-right leg is fully extended. This is also why I hit the stop button, because the next step may make the joint flip backwards, causing it to fall. Happened a few times, actually. Without IMU, though, what happens is worse, in that it simply tumbles and rolls over. Also happened a few times, oh well.

Next step will be 06Z Neucommu with simulation and RL, and 07B Wouf with stronger servos (a lot of mechanical reinforcement was actually planned for 07B). This is no Unitree superdog, but I am still excited about its progress and enjoy all the Reddit discussions :)

u/SphericalCowww — 27 days ago

Cubic Doggo Update: What does it takes to lift its feet up 4mm?

Update since: https://www.reddit.com/r/ROS/comments/1ugw66z/cubic_doggo_update_returning_to_basics_after_all/

Hello hello, I made some mechanical updates to Cubic Doggo 06R, just for it to lift its feet while walking. The black padding is measured to be around 4 mm thick. I really thought this would be simpler than the IMU, but with all the changes, this is as good as it can get. The servo load (3rd on for the feet joint) easily reaches 70%, so I have a feeling this is the best it can do. I hesitate to make the body's 3D-printed frame lighter because that can make it less sturdy, and most of the weight is from the servo and batteries (yeah, also, I get a bit lazy just thinking about all those bolts and screws).

Any more suggestions would be great!
Changes made are m

The next step is to walk with IMU, and then finally going to do some simulation and RL.

Original Cubic Doggo post.

u/SphericalCowww — 1 month ago

3D-printed compliant robot legs?

Hello hello, I am currently exploring the options for fully 3D-printable compliant legs, since my 4-legged robot has a difficult time lifting all 4 legs in a walking gait.

My original design is the one on the left, which I was told by LLM that it is a horrible design, as it's very vulnerable to shear force. And this statement is indeed true, as my robot squats involuntarily, bending all its legs sideways and outward.

The LLM recommended design is the one on the right. I printed it out, but it does not feel compliant at all. So I am wondering, is this just some AI hallucinations, or do I instead need some adjustment in dimensions? Anyone who happens to have experience in this narrow topic has thoughts/recommendations?

u/SphericalCowww — 2 months ago
▲ 159 r/ROS+1 crossposts

Cubic Doggo Update: returning to basics after all the PID tuning for IMU

Ever since the post from last time:
https://www.reddit.com/r/robotics/comments/1u1iql9/cubic_doggo_update_wobbly_imu/

I have tried to implement all the suggestions from the previous posts (thank you guys :)), and then spent way too much time tuning the PID, hoping it could perfectly balance the robot without wobbling. And the first video is showing my best full PID result so far: it can achieve perfect balance, BUT with randomly occurring spasms. A bubble level is added on its head. After standing+leveling, the platform is put on a slope. The bubble shifts, and the robot is trying to adjust it back

Still cannot figure out the reason after quite some updates, though, but 50Hz reading rate with ~10ms lag, and legs lifting the whole body weight while changing tiny position probably are the culprit.

So maybe it really doesn't need perfect leveling; it just needs some corrections on a slope. The second video is with P-only, fast reacting and no oscillation.

Maybe this is showing the limitation of PID as compared to reinforcement learning? I am not at all sure. For now, though, I still want to see how P-only leveling performs during a walk gait.

Link to the previous walking post without IMU: https://www.reddit.com/r/robotics/comments/1tghftd/cubic_doggo_full_github_record_it_can_now_walk/

u/SphericalCowww — 2 months ago
▲ 164 r/ROS+1 crossposts

Cubic Doggo Update: Wobbly IMU

Honestly, I don't know how other people can do IMU balancing so elegantly; my PID oscillates like it's on life support. I have been tuning the PID the whole night, but then again, I don't have a lot of experience other than following some manuals, so any advice would be great! I am using BNO055 for IMU.

Work in progress GitHub: https://github.com/SphericalCowww/CubicDoggo_06R
Original Cubic Doggo: https://github.com/SphericalCowww/CubicDoggo

u/SphericalCowww — 2 months ago
▲ 77 r/ROS

Cubic Doggo full GitHub record: it can now walk and turn!

The walking video can be found here:
https://www.reddit.com/r/robotics/comments/1tghftd/cubic_doggo_full_github_record_it_can_now_walk/

But linking another video here instead. I just find it so cool that the robot moves in sync with RViz :)

Next steps will be to incorporate IMU using CHAMP:
https://github.com/chvmp/champ
If anyone has a recommendation on where to start, like a tutorial or guide, that would be much appreciated.

u/SphericalCowww — 3 months ago

Cubic Doggo full GitHub record: it can now walk and turn!

The robot can now turn in its walk mode, which is the reason for it having 4 extra servos (technically, 8 servos is all it needs for walking). The turning isn't super smooth, though. Will need some additional designs to make it more sturdy.

And here is the full record for the current version of Cubic Doggo (DYNAMIXEL XL430-W250-T with ROS2 Jazzy):
https://github.com/SphericalCowww/CubicDoggo
It covers sections on running 1 servo, 1 leg, and the full robot.

This project was developed by someone in his bedroom who has no robotic background. So no machining, no custom PCB, no special motor,  no gears or tiny delicate parts, and use only free software such as FreeCAD/Cura. Everything is brute, minimalistic, and "cubic". So, no curves in CAD design, all servos are the same, and all connections are made by electronics you can order online.

But if anyone is like me, who tried out the Stanford series and realized, geez, that's tough as heck. Feel free to try out my recipe :)

u/SphericalCowww — 3 months ago
▲ 125 r/ROS+1 crossposts

Cubic Doggo Update: phew, it finally walks with proper gaits

Update since: https://www.reddit.com/r/robotics/comments/1sq4rip/comment/oioxsel/

Resolved two subtle issues that I would never have been aware of without pondering for days about what the heck could go wrong with a manually coded walking gait. Hopefully, it can help someone in the future who tries to implement the same thing:

  1. Avoid cycle-boundary pauses: when using trajectory solvers like TimeOptimalTrajectoryGeneration or RuckigSmoothing traj_gen, the solution always ends at the origin with 0 velocity as intended. To implement continuous gait, however, the JointTrajectory publisher should be used instead.
  2. Avoid teleportation: teleportation happens when joints position changes without a trajectory. Like at the end of each gait cycle, I was assuming it always returns to the origin. But in a real robot, it rarely ends up exactly on the origin. Why does this matter? This turned out to be extremely problematic when I applied high friction on my feet (with kitchen sponge clothes), small relative motion on the ground exerted tremendous force in a completely unintended direction, which snapped out the robot's legs. To fix this, the gait needs to be state-aware: the gait starts not from the exact origin, but from when the last gait ends.
  3. Extra: Wait for the clock on the Raspberry Pi before running ROS2; otherwise, quite a few nodes will die from having crazy timestamps for reference.

Will add directionality control next, still manually though, and finally tidy up the GitHub for those who are interested. Afterward, I really want to try out RL on ROS2, but will need to enable the IMU and probably strengthen the second servo joint first (the LIDAR so far is just a counterweight, lol)

Full ROS2 + all commercial/3D-print part:
https://github.com/SphericalCowww/CubicDoggo

u/SphericalCowww — 3 months ago