Need help with motion tracking for college project

Hi guys!

So, I'm a computer engineering student and this semester I received a pretty big project as part of one of my mandatory subjects.

The idea is to create a prototype of what will become a smart toothbrush, and one of the requirements is to track the toothbrush's position throughout the whole brushing process so that when it's done I can tell the user which parts of their mouth were brushed for more or less time than recommended.

As an initial approach to this, I thought about using an IMU sensor (MPU-6050) and double integrating the accelerations to acquire the 3D position, after applying some kind of filter to reduce drift, and use this to map the brushing process. But after a lot of research, and even trying some other motion tracking projects that uses the same idea, none of the results I achieved were good to my application, and I started doubting if my methodology is valid to what I need to build, or what I'm doing wrong.

As I need to track a toothbrush motion, which mainly consists of very short and fast movements, my conclusion is that integrating values of a somewhat imprecise sensor might not be a good idea, and that's why I'm not being successful, but I'm clueless if that's really the issue or not, and if there's a better idea/sensor/methodology I can use to solve this issue and move on with the project.

So, I'm looking for any suggestions on ways I can make all this work. Using an IMU is not mandatory, so if you guys know any other sensor that would better suit what I need to build, would be great!

I really need help with this. Can you guys help me to figure out how to get it done? Any ideas, sensors I should use, or any approach in general are very very welcome.

Thanks a lot :slight_smile:

Your topic has been moved to the Project Guidance category of the forum

I was just wondering exactly how tooth brushing cures COVID!

That won't work with consumer grade IMUs for several reasons.

For an explanation of just one of the major problems, see Using Accelerometers to Estimate Position and Velocity | CH Robotics

Your description of the task sounds like it is nearly impossible to solve, for a student with limited resources. If you actually were assigned such a task, I wonder if your instructors have any understanding of the problems that are involved.

Hi @hm945,

I would rather try to get a different task ...

Your concerns regarding the sensors are reasonable but there is even more to it:

  • As people may change their head position (which is "invisible" to the toothbrush's sensors) you have to either fix the person's head or have a separate system to track the head movement and add both movements in x,y,z correctly.
  • If you use an electric toothbrush, the sensor must also be able to cope with small but intense vibrations. You are better off with a simple mechanical toothbrush...

If a company like this would be interested in a project like yours (see https://polhemus.com/micro-sensors/ ) they might support you with hardware and expertise. But take care with applications for medical purposes as they usually require a high standard of quality assurance.

Yeah, the task is very real and it's been pretty challenging tbh.

I don't think I actually need a very accurate way of measuring the position, but I need some way to check if the toothbrush touched some specific points of the mouth.

I divided the mouth into four quadrants and upper and lower sections. Now I'm thinking that if I could find a way to check which of these eight quadrants the toothbrush is in during the process, that would probably be enough, at least for the prototype.

A consumer grade IMU can be used to determine 3D orientation, using a Madgwick or Mahony filter. I imagine that toothbrush orientation would be more useful than position.

What happens when a person changes hands with the brush?

Hi @ec2021!

Unfortunately, I don't think I can get another project, so, gotta work with what I got I suppose :confused:

The concerns you brought crossed my mind during my research, and yeah I couldn't find a way to cope with all that either, but as I hardly managed to get the position part done, I actually just ignored it for now.

But surely, they are big things to be considered

That sound promising.

If I can get the 3D orientation of the sensor, it might be enough for me to "know" which of the quadrants are being brushed, therefore I can assume the toothbrush's position.

The orientation you are talking about, would that be related to the pitch/yaw/roll of the sensor working along with the filters you introduced?

That's one of the things I plan to add to the initial disclaimer.

As of the first usage, the user will be prompted to create a "setup" to determine some of the brushing techniques, and if the left or right hand will be used. Than, during the process, it would be recommended to use only one hand (which I know is not how some people brush their teeth, but it is the way I found to mitigate some of those issues)

That is the idea. I have worked on such filters, but did not "introduce" any of the basic ideas.

You could have the person calibrate the sensor by having them orient the tootbrush in 3-4 "standard positions" (relative to their teeth) before brushing.

When I get a dental crown made these days the dentist uses a handheld 3d scanner to get a digital impression of the tooth gap and surrounding teeth. The scanner is about the size of an electric toothbrush and though handheld it seems to work to nearly micron precision. Maybe you should research the literature on how these work to see if there any lessons?

I'll definitely dig deeper into it then, it sounds like the solution tbh.

I now need to find a way to differentiate the orientation on the mirrored quadrants on the same jaw. Like, lets consider the last tooth on both sides of the lower jaw -> The IMU's 3D orientation would be the same for both of those points, right?

The calibration idea is exactly what I was thinking to solve this, but I got a little confused. How can I use different reference points to differ the two sides, for example?

Have the subject place the toothbrush in their mouth, say, in four defined orientations. Give the subject pictures of each one, labeled 1 to 4. Those then become the reference points.

It will take a bit of interesting math to relate the obtained orientation measurements to the standard orientations.

Thanks for the advice! I'll definitely take a look.

I imagine this kinda of 3D scanners might be a bit too expensive for me to use in the project, but as you mentioned, taking a look on the literature will probably give me an insight on some interesting ideas :slight_smile:

Sounds about right!

Actually, you gave me a great idea. If I can add an LCD screen to "guide" the user during the brushing process, I can have the system changing the reference point according to the recommendations.

Lets say, the system tells the user to brush the bottom left part first, then I know to use the predefined reference point for that part and can later store the data according to it.

It's not the best idea for the long term project considering ease of use, but sounds like a way to have something done by my deadline (I have two weeks lol)

Now it's time to bring all the ideas to life hahah

And as it gets better, I can work on the math to relate the orientation to the references, so later on the system might "know" which quadrant was brushed only based on the orientation itself.

@jremington and everyone, thanks a lot for the help

Will try to keep the thread posted as I implement all the ideas discussed :slight_smile:

If you can break it down to four quadrants the task becomes much easier than I thought in the beginning.

You might also include a sensor to measure the pressure applied to the brush side to check whether it is really used or just moved.

If you were allowed to use external instrumentation as well that would provide additional technical possibilities.

Good luck and success!

Dividing it sounds like the way to go. The orientation ideas we discussed, along with this quadrant division, might be the solution I was hoping for

I did not mention before, but part of the project (besides all we discussed) is also to monitor the pressure used while brushing, so the user don't go over or under the recommended values, but this is already kinda sorted. So yes, the original idea is just like you said, to use a pressure sensor so it's possible to check if there is an actual brushing or just moving :slight_smile:

About the external instrumentation, what do you think could be interesting to add? I haven't talked to my professor about using any external devices, and he would probably not be forward to it, but I'd be happy to take a look at any possibilities