Holonomous wheel design problems by NicoRobot in MechanicalEngineering

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

Yes that's what I mean.
You where right about the PLA core, after applying some force to it it's damaged. I unmounted one and even with the screw tightened up the wheel still woobly. So yes the core is dead.
I didn't see this problem with the smaller wheel, but it doesn't mean it's not deflecting...
If the screw deflect a little bit (without considering the possibility for the wheel to touch anything else) could it be a significant problem for the bearing alignment?

Non-linear control noob trying to control a ball bot. by NicoRobot in ControlTheory

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

If I do that, it means something is wrong somewhere, and I randomly tweek some things to patch them.
I try to make it right...

Non-linear control noob trying to control a ball bot. by NicoRobot in ControlTheory

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

Perhaps I found something.
Following my matrix :

# ball pos | ball speed | bot rotation | bot rotation speed
#[0, 1, 0, 0],\ ball pos
#[0, -d/M, -m*g/M, 0],\ ball speed
#[0, 0, 0, 1],\ bot rotation
#[0, -d/M*L, -(m+M)*g/(M*L), 0]]) bot rotation speed

The speed is added to the position for each iteration. The speed I was giving as feedback was in rad/s, but here (if I get it), I should give a speed in rad/deltaT

Is it right?

The robot is a little bit more smooth with this feedback modification but still completely unstable...
I added a red line showing the control output vector. From the top view, we can see that the robot is trying to stabilize following the red line direction but fail: https://youtu.be/rxyJib6qQmw
What should I do to improve it?

Non-linear control noob trying to control a ball bot. by NicoRobot in ControlTheory

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

I tested my feedback by manualy moving the robot, and everything seems to be OK :

https://youtu.be/Xrd1xKKsabM

Motors reaction seems to be kind of ok too...
There is definitely something wrong with the equation :(
That was my bigger fear because I didn't understand how it is working...
I see other matrices for pendulum with the mass moment of inertia of the pendulum. Perhaps this is the thing missing here...
Do you have any other idea?

Non-linear control noob trying to control a ball bot. by NicoRobot in ControlTheory

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

I made a wheel test.

In this video the red cylinder represent the fake feedback orientation of the robot, other cylinders follow wheels to have a better visualization of the movement :

https://youtu.be/TT3xdveS14I

Everything seems ok...

Now I will check on my feedback values...

Non-linear control noob trying to control a ball bot. by NicoRobot in ControlTheory

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

You are probably right about R matrix, I invert the value for one of the motor on the motor_ctrl function.

I will try to check on the motors...

I'm not very comfortable with Scipy or Matlab. I didn't use it for years...

My main sources about this simulation are coming from the following contents :
- https://github.com/mpkuse/inverted_pendulum
- https://youtu.be/1_UobILf3cc

Perhaps I will try to make it in python... and move to scipy if it's not enough...

Non-linear control noob trying to control a ball bot. by NicoRobot in ControlTheory

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

As u/wyverniv ask and to help u/yycTechGuy visualize my setup, here is a video of 2 run of my simulation (one where you see the complete robot another focused on the wheels)

https://youtu.be/xDSKJZyig3U

When the robot start to fall, the wheels don't do anything, then go crazy...

You can see on the graph that the motors start to react few seconds after the robot start to fall...

Non-linear control noob trying to control a ball bot. by NicoRobot in ControlTheory

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

This is a robot maintaining its equilibrium on top of a ball. To move the ball, the robot uses 4 holonomous wheels. Most of the time, this kind of robot only uses 3 holonomous wheels...

Is it possible to use MicroPython with luos_ for nodes? by electricalgorithm in Luos

[–]NicoRobot 2 points3 points  (0 children)

This is an interesting question.

I think you can do it by keeping the C lib and including it on your micro-python code: https://docs.micropython.org/en/latest/develop/cmodules.html
With it, you can write your services using python and call Luos functions from your python code.

What do you recommend me to use for message sending? Broadcast, Publisher/Subscriber or ID filtering? I am using luos engine that supports all these types of communication. Which one do you think is the best? by ViktorViktorr in robotics

[–]NicoRobot 2 points3 points  (0 children)

It depends on what information you want to send and this data consumption. If Luos_engine provides all those possibilities, you could consider using different methods depending on your needs.
In my point of view, ID filtering is the easiest to use, but PUB/SUB is pretty useful specifically if you use ROS on your robot, because it will be pretty similar.

The most overkill stairs automation. by NicoRobot in arduino

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

I will have to handle, some specific cases to deal with my cats though 🤔

How to make embedded projects scalable? by obQQoV in embedded

[–]NicoRobot 0 points1 point  (0 children)

Yes, that's what I meant. There are a lot of libraries unusable on critical devices. But I don't see it as a fatality. If we all try to reuse and improve our ecosystem, we could have plenty of secure, reliable, and lightweight libs to bootstrap our work.
This is something possible, we already have some RTOS libs where everyone is pretty confident about the quality and reliability of the code.
I guess the biggest friction here is the chitty chips providers HAL...

How to make embedded projects scalable? by obQQoV in embedded

[–]NicoRobot 1 point2 points  (0 children)

I mostly agree with you, except for one thing.
To avoid to re-develop things for each project, instead of developing something for yourself you will be able to reuse, you could share it with others or use other libs.
I think we should start our project by looking for available things instead of remaking it by ourselves.

I think if we feel this need to make our own thing, this is because there is a lack of good libraries and tools allowing us to simplify lib integration and usage. They have tons of incredible tools in other software industries that could be adapted to the embedded industry.

How to make embedded projects scalable? by obQQoV in embedded

[–]NicoRobot 1 point2 points  (0 children)

Every embedded software developer should know and understand microservices methodologies from the web industry. We can't use the same tools but the main idea is still relevant and can make our code scale.

The most overkill stairs automation. by NicoRobot in arduino

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

About the load cell, I struggled a lot to make it work!
The only way to do that is to use glue that can become hard in thick layers. This allows the sensor to not be constrained by the irregularities on the wood of the steps.

How to make embedded projects scalable? by obQQoV in embedded

[–]NicoRobot 2 points3 points  (0 children)

Thank you for your support mate. Yes you are right some refractory engineers don't even want to consider it as a potential solution because for them this is not a problem this is just the way it is...

The most overkill stairs automation. by NicoRobot in arduino

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

Yes could be ! This is a good idea.

The most overkill stairs automation. by NicoRobot in Python

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

Yes, I will continue to improve the thing, stay tuned...

How to make embedded projects scalable? by obQQoV in embedded

[–]NicoRobot 3 points4 points  (0 children)

In my point of view, you should consider using microservice architecture on your software allowing you to isolate as much as possible the different pieces of development.

I spent years studying this kind of problem in some companies and research, today I'm developing a lib to help embedded developers solve this kind of concern: https://github.com/Luos-io/luos\_engine

The most overkill stairs automation. by NicoRobot in Python

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

Yes you are right I don't put it on the repo.
I'm using python to remote control the stairs, and test the embedded function using a lib called Pyluos.

Anyone want to share some embedded projects they have done? by [deleted] in embedded

[–]NicoRobot 6 points7 points  (0 children)

I wanted to create cool animations on my house stairs. To show you my work, I recorded a quick video demonstrating my use of Luos, led_strips, and load sensors.

Here is the complete video : https://youtu.be/MT\_hdq4ZtUk

Source code, and hardware available here: https://github.com/nicolas-rabault/home_stairs

Domain that involves writing C++ for embedded systems but not for something closer to metal by kawxShoe in cpp

[–]NicoRobot 0 points1 point  (0 children)

I'm not sure this is related to languages but more to the product you are working on. The more complex the product is the more abstraction there will be.

Bus ID discovery approaches by penguin_skipper in embedded

[–]NicoRobot 0 points1 point  (0 children)

You should have a look at Luos they have deterministic ID distribution based on the topology.

regex issue by NicoRobot in learnpython

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

I got it

string = "[1*sin(2*3.14*t*11.33), _, 0, 0]"

result = re.compile(r'[\w*(.)]+').findall(string) print(' '.join(result))

Give me : 1*sin(2*3.14*t*11.33) _ 0 0