This is a classic design problem. It starts with want you want something to do - a design specification. Hence there is no one right answer.
I have designed a number of both aerial and underwater drones, they vary greatly in design because each was to meet a specific problem. The approach I took for a sea glider to map an offshore reef and record the ...
With consideration cheap, strong enough, not ugly and easy to shape, then my recommendation is you can use clipboard. I have seen people win international robotic competition with robot made using clipboard. So this idea worth to try.
Figure 1. Clipboard
0.5mm 1x2m^2 sheet metal @ your local hardware store ~ 2EUR
metal cutting pliers ~ 4EUR
being able to cut it, fold it, punch* it for ventilation - priceless
* use a nail and hammer/stone; rest on a disposable plank; punch from out to in; protect any PCBs, motors and especially wires inside from the jagged edges or neutralise those with a file or sillicone
Cardboard on top of a cheap robot chassis can be quite effective. See this version of Openbot that does not use a 3d printer: https://custom-build-robots.com/raspberry-pi-robot-cars/openbot-your-smartphone-controls-a-robot-car-introduction/13860?lang=en
I will typically use hobby-board plywood as a base and cardboard as a second layer. Get the hobby-board ...
If you want to build a robot with lots of moving parts, or just a dedicated, aluminum building medium, and dont have a tight budget, you can use Actobotics building parts, from servo city.com (https://www.servocity.com/actobotics/)
They are metal pieces with holes, so you can attach screws, other Actobotics pieces, servos, motors, and they even have mounts ...
Consider things like food storage containers, dishpans, and household storage bins. Some (HDPE?) ones are reasonably stiff yet compliant, and you can readily cut them. Beware the beautiful, crystal-clear ones that are hard and brittle.
If you're in the US, take a walk through your local Target or Walmart, and see whether some Rubbermaid or Tupperware shapes ...
The tf2_ros::TransformListener takes up a relatively high amount of processing power because it subscribes to the publications of the high volume /tf topics and caches the results locally in memory. It's much more efficient to have one copy which you access from multiple places in your code by passing a reference to it and querying it directly rather than ...
Some potential ideas you could use are:
GPS + IMU
Probably the easiest solution and depending on how much you want to pay you can adjust for accuracy. You just measure the GPS coordinate of the center pitch, and then just do some simple subtraction to get relative pose.
Another advantage of this combination is that it is a simple system to build yourself. ...
Consider the traditional control diagram below.
If you set $C=(2\zeta\omega_ns+\omega_n^2)/(0.13s+1)$, then you'll get the following closed-loop system transfer function:
This can be achieved through zero-pole cancelation, which is doable since $G$ has a zero in LHP.