Go Down

Topic: Arduino based robotic platform (mainly UAV)-suggestions/feedback needed (Read 2043 times) previous topic - next topic

Chobotnatec

Hi,
I am currently working on platform which is going to be used in our QuadCopter and then maybe on some other UAVs.
It should be object based, and provide common interfaces for sensors, filters, motors, etc. Also it should to take care of basic measure integration, stabilization and of course for communication with some other devices over Xbee in API mode.

So far i implemented few classes with enough functionality to safely take off and land again with our QuadCopter(yet not fully autonoumously and now i am polishing code and interfaces for v 0.1 of my platform so i need some oppinions an suggestion which functionality you would be glad to see or which should be done better or differently.

So here is the BIG PICTURE:
- Most important object is scheduler. This object takes care of running any object/task which implements interface "Schedulable" and its methods especially method run() which actually do the task . scheduler is able to to preempt any task in favor of task with higher priority. Also there is a way to disable Scheduler during critical sections.
(in future i hope i will be able to handle exclusive access to hardware resources like I2C automaticaly, but it will need rewriting of nearly all Arduino libraries)

- there are common interfaces for sensors like Gyro and Accelerometer(currently both are implemented by one sensor- ITG3200 and Adxl345).

-next there are interfaces providing common functionality for actuators especially motors,they are handling exclusive acces to IO pins of Arduino. I have implementation of Motor class which overrides setting of Arduino library in order to get finer resolution of PWMs generated by 16-bit counters (from 256 to 2096).

- Interface which provide abstraction over vehicle now used (basicaly all UAV needs to control moments along different axis, and thrusts along differen axis). Now implemented only by QuadCopter class

-Some other interfaces and their implementations:
   controller - one dimensional controller implemented by PID - universal pid regulator
   Filter - one dimension filter currently has one implementation -KalmannFilter
   Pilot - able stabilize QuadCopter in order to mantain given orientation against ground
   SerialParser - simple parser of incoming data also checks integrity of incoming data
   Sensor - one dimensional sensor of any kind, currently implemented UltrasonicDistanceSensor

-planned features:
  GPS
  barometer
  magnetometer
  Xbee-apiMode

I know its hard to say if something should be done differently without any posted code :smiley-mr-green: . My personal goal is to put complete sources on web in week or so. My main question is if you think that these approach is viable or some recomendations and advices from any of more skilled or experienced. Sorry for my bad English :~

   


zoomkat

Quote
My main question is if you think that these approach is viable or some recomendations and advices from any of more skilled or experienced.


So which parts of your project have you completed and are working?
Google forum search: Use Google Search box in upper right side of this page.
Why I like my 2005 Rio Yellow Honda S2000  https://www.youtube.com/watch?v=pWjMvrkUqX0

Chobotnatec

scheduler(interleaving not thoroughly tested yet), gyro(ITG3200), accelerometer(Adxl345), pid, kalmann filter, motors, QuadCopter(it distributes total thrust to motors in order to achieve given moments along axis), reading from ultrasonic sensors, and Integration of data from gyro and accelerometer in order to get orientation of robot.

Now robot is able to stabilize itself in air, achieve given orientation, and hold it's height against surface. It is not able to track it's position in space because of too much noise in accelerometer readings.

Go Up