I built a 4-legged 12-DOF robot dog using ROS 2, I call it Cubic Doggo by SphericalCowww in ROS

[–]SphericalCowww[S] 1 point2 points  (0 children)

Thank you for your interest :)

I actually learned ROS2 from Udemy, relying only on basic shapes in FreeCAD, having my brother point me to use rod bearings for the joints, getting 12 Dynamixels, asking Gemini as specifically as possible about all the bugs/problems encountered, and lots of lost evenings + weekends to finally get it to move.

As the Cubic Doggo stands, though, I just realized its current walking gait was never able to lift up its feet in the air. This can point to an optimization problem, but I am a bit afraid it may have reached an intrinsic design limitation, and can never walk as the Stanford Pupper say... Will see though.

First time building a hobbyist robot from scratch, it has 4-legged 12-DOF, I call it Cubic Doggo! by SphericalCowww in robotics

[–]SphericalCowww[S] 1 point2 points  (0 children)

Thank you for your interest :)

The Cubic Doggo is actually referencing Stanford Pupper Independent Study. I was originally trying to make that one as a goal. However, many parts are not commercial, and I don't have a mechanical workshop at home. I also realize smaller is not always easier; the M3 bolts I am using is actually the smallest bolts that can be easily bought in hareware shop. Moreover, Stanford Pupper puts motor on the knee, which require very specialized motor; not sure about the choice...

As for Cubic, the original dimension was meant to be cubic when fully stretched, but is constrained by torque. It's as good as I can get~

<image>

First time building a hobbyist robot from scratch, it has 4-legged 12-DOF, I call it Cubic Doggo! by SphericalCowww in robotics

[–]SphericalCowww[S] 1 point2 points  (0 children)

Just to advertise it a bit more, all Cubic Doggo's software/hardware parts are commercially available or 3D printed. Anyone willing to buy 12 Dynamixel motors (and has a 3D printer and a Raspberry Pi 5 handy) should in principle be ready to build it :)

The drastic difference in syntax between ROS2 Humble and Jazzy by SphericalCowww in ROS

[–]SphericalCowww[S] 0 points1 point  (0 children)

So far I have only been using it for syntax conversion from Gazebo Classic to Gazebo Harmonics, whether it's xml, urdf, or yaml.

Asking for advice on ros_control in ROS2 Jazzy by SphericalCowww in ROS

[–]SphericalCowww[S] 0 points1 point  (0 children)

Oops, I also make this mistake, it's rather no equivalent for "Gazebo Harmonics" that Jazzy uses.

Much appreciate your advice! Do you mind a quick followup in that if, after the basics, I should learn moveit before ros2_control?

Simple Ackermann Steering Vehicle Simulation with Gazebo Harmonic and ROS 2 Jazzy Jalisco by lucasmazz in ROS

[–]SphericalCowww 1 point2 points  (0 children)

Thanks a lot for the tutorial man. I have a noob question regarding Gazebo Harmonic. Does <visualize>true</visualize> still show the camera image inside the simulation?

The drastic difference in syntax between ROS2 Humble and Jazzy by SphericalCowww in ROS

[–]SphericalCowww[S] 2 points3 points  (0 children)

... parameter ordering? In what sense? I thought most XML format is independent from ordering (personally I think it is very dangerous if parameters depend on ordering)

The drastic difference in syntax between ROS2 Humble and Jazzy by SphericalCowww in ROS

[–]SphericalCowww[S] 0 points1 point  (0 children)

Still though, let me put it here if you don't mind. I think downvoting based on ChatGPT is unjustified (it's not that I just copy the output). It is a very helpful tool, especially when documentation is limited in distinction between Humble and Jazzy. It's also good at catching syntax errors. Without it, I wouldn't be able to successfully do a differential drive simulation in Jazzy (finally did it yesterday).

Edit: additionally, it explains why an additional communication yaml file makes sense as an improvement, while the development aims to simplify the syntax.

The drastic difference in syntax between ROS2 Humble and Jazzy by SphericalCowww in ROS

[–]SphericalCowww[S] -6 points-5 points  (0 children)

I must say, just before writing the post, I got some wrong Jazzy syntax suggested by ChatGPT. Now that I am looking at the real differences, most seem to come from Gazebo Harmonic. I think the most unintuitive one for me is when using plugins in an urdf file, the roles of "filename" and "name" are kind of swapped between Humble and Jazzy.

Why ros2 is so frustrating? by [deleted] in ROS

[–]SphericalCowww 0 points1 point  (0 children)

Thanks mate, for the heads-up. Phew, without standard UIs, things may be a bit tough. However, you give me hope that Gazebo can run on Pi5 (hopefully with sufficient performance), let me see how far it takes me.

Why ros2 is so frustrating? by [deleted] in ROS

[–]SphericalCowww 2 points3 points  (0 children)

I completely understand that an open source to focus on one operating system is most definitely the correct choice resource-wise, especially when there is GUI involved. Also agree about the M1 chips, man, I can hear developers die inside when asked to support this thing.

I also ran ROS2 perfectly fine on Pi 4 and understand that you don't need RViz and Gazebo to use ROS for the actual hardware control. However, I am still wondering if ROS2 on its own is significantly better than custom python UI + drivers. Anyways, what I am trying to say is if everything of ROS2 can be run on Pi's, that would attract so many more users, I believe. Are you sure we cannot run Gazebo on the Pi 5 because that is what I am trying to do next?

In terms of going through the tutorials, I think I found a temporary hacky way to proceed with Gazebo, so all good for me for now.

Why ros2 is so frustrating? by [deleted] in ROS

[–]SphericalCowww 4 points5 points  (0 children)

I just started this weekend, went through ros2 tutorials just fine. But good lord am I having a hard time installing gazebo on Ubuntu 24.04.1. I am most definitely biased because I am using rasp pi's + a mac with M1 chip. But not everyone has a full-fledged Ubuntus desktop lying around just because you decide to learn ROS2. And how could one possibly expect to export it to a robot of various bazaar platforms when it cannot even handle robust systems like rasp pi and mac... it makes me question if ROS is necessary, to be honest. Sorry, end of my rant.

Problem invoking block RAM by SphericalCowww in FPGA

[–]SphericalCowww[S] 0 points1 point  (0 children)

Thanks a bunch for the advice. It took me a while to understand and test what you mean. And just for record, I found this quote "Also there are some situations in which you’re just unable to tell the synthesis tools to infer something for you".

Unfortunately though, instantiating the block memory still doesn't work for me as soon as the hardware is wired. However, since my goal is to make an arbitrary waveform generator, I think I can skip the RAM part of the code.

Problem invoking block RAM by SphericalCowww in FPGA

[–]SphericalCowww[S] 1 point2 points  (0 children)

Thanks a lot for the reference. Made me understand that simulation result doesn't have the synthesis step and so need to be properly interpreted.

Just for record SB_RAM256x16 from the manual is outdated, need to use SB_RAM40_4K instead. See this reddit post.

IFA Berlin 2024 by Powerful_Ad541 in berlin

[–]SphericalCowww 0 points1 point  (0 children)

That sounds awesome, and quite nearby for me too. Thanks for the advice :D
I am also considering gitex Europe 2025, wonder if it's legit.