.NET (Core and Framework)
I am not sure this is simulation.
To me simulation is calculating somethings behavior based on a mathematical model, without
having the actual object in existence, or without having it provide information
(such as measured position, angle, velocity, ...)
What you describe sounds more like visualisation: again you create a mathematical model
but now you let it mimic the observed behavior of the real object, by taking
measurements and feeding these in your model.
Anyway I think you can do this in C# (or another hi-level language) like so:
1. create a form with a Panel (for some reason I prefer drawing into a panel);
in the end you will want that to be a double-buffered panel (NET 2.0 knows about
that, under 1.1 you need to derive from Panel and use SetStyles)
2. create some classes that represent parts of the robot arm (upper arm, under arm,
wrist, hand, ...); let them all inherit from a base class "Part".
3. create the model by instantiating the above classes and keep all those instances
in an ArrayList "myModel".
4. give each part class a Paint() method that paints itself in the Panel, so your
entire drawing could consist of foreach(Part p of myModel) p.Paint();
5. introduce a coordinate system (say xyz)
6. assume all angles are known (from measurements)
7. all parts have known lengths and one has a known position; all the others
can be calculated provided you know the direction; some math is involved here.
8. create a periodic timer (I would suggest a Forms.Timer) that iterates over your
model, so it:
- performs all measurements
- recalculates all positions
- redraws the entire model
- the position calculation and drawing seems rather straightforward, they wont
hamper a smooth display
- the most critical part AFAIK would be performing the measurements and getting them
into the PC. You should try to evaluate the time it will take to do all measurements once
before developing all the code, since that may prove it is not possible to get
enough iterations per second, and/or you have to change your micro-to-PC communication
and/or you have to introduce threads (plus the problem that not all measurements
belong to the same point in time).
BTW: you will have noticed I didnt model any motors, the above just knows
positions/angles and visualizes everything.
Hope this sets you on the right track...
General News Suggestion Question Bug Answer Joke Praise Rant Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.