Close

Does this project spark your interest?

Become a member to follow this project and don't miss any updates

Moti, a smart servo

Moti is a smart servo that simplifies the design of intricate robots.

37 253 201
Enjoy this project?
Share on twitter   Share on Facebook

This project was created on 03/01/2014 and last updated a day ago.

Description
Moti is a smart servo motor that makes it easier to build robots. Picture building a humanoid with lots of moving parts. You'd need a motor and a few sensors in each joint. You need additional circuitry to control everything, and you'd have a mess of cabling connecting it all together.

Moti makes it easier to build such systems by providing requisite features within the motor. There's a programmable microcontroller, breakout pins for attaching sensors, daisychain networking, and a continous rotation servo, with 360º position sensing inside each Moti. It eliminates the need for external circuitry.

We also want Moti to play well with the web and mobile devices, so there's a RESTful API for developing apps. And we've built the first one that gives you immediate control of your Moti-enabled robot.

There's more to do. Check out http://moti.ph
Details

Video overview of Moti:

The video is quite long as it is, so I'll discuss the server and app layer in a future video.

What the system diagram illustrates is that you can use our prebuilt web app to recognize, monitor, remote control & program your robot. Alternatively, you can build your own app (or use someone else's) that is customized for your application. Thirdly, you can program the motis directly to create an autonomous system.

Components
  • 1 × ATmega328p Main Microcontroller
  • 1 × 16MHZ Crystal
  • 1 × MCP1703 250mA 5V Voltage Regulator
  • 1 × AON4420L N-Channel Mosfet for Reverse Polarity Protection
  • 1 × ISL81487IBZ RS-485 Driver
  • 2 × 1x6 0.1" smd female header for breakout pins, including GPIO, A2D, I2C,
  • 1 × 2x4 0.1" smd male header to attach 2x RS-485 cables
  • 1 × 2x12 0.05" smd female header connects processor board to driver board, plus ISP header
  • 1 × VNH5180A Interface and IO ICs / Peripheral Drivers and Actuators
  • 1 × 10k thermistor

See all components

Project logs
  • Product Drawings

    a day ago • 0 comments

    Here's a rendering of a fully assembled moti:

    and here's an exploded view:

    The exploded view shows how the product assembles together. You can see how the magnetic spindle has a shaft that fits in the output gear. It's the same size as the potentiometer shaft used used in conventional servos. The spindle spins right above the magnetic encoder IC which is on the bottom side of the pcb.  The spindle maintains it's rotation axis by fitting a nipple (?) into a registration hole in the pcb. The design has changed a little since this model was generated but it's still quite close.

    Drawings were done in Solidworks. The same designs are used to generate .stl files that have been used to 3d print the case bottom and the housing for the magnetic spindle.

  • More Diagrams

    4 days ago • 0 comments

    I've been working on the firmware without actually doing a whole lot of coding. I'm kind of circling from the outside to suss it out without rushing in. My ideal is to improve the quality and so I'm looking into best, or at least better practices. Recently, I've been reading Making Embedded Systems. I recognize the risk of brown-nosing here as it's written by one of the judges, but it's also on my mind right now. See, I have no formal training in engineering, and in order to improve I need to see things in practice. This book contains some really nice design patterns for better organizing firmware, and shows examples of how to implement them. The book I discussed previously, turned out to be a bit too theoretical, which is fine if you have the training but left me wondering "ok, but how?"

    Anyways, some of what I've been working on includes the following diagrams. For the record, these kinds of diagrams are not discussed in the book. The first two are use cases. This one represents a sequence of actions, and invoked methods that occur when someone remote controls a Moti-enabled robot:

    The second shows a sequence of events that occur when someone is recording a sequence of manual manipulations of a Moti enabled robot, and then plays them back:

    These diagrams are not exhaustive. There's more steps involved. However it's enough to suggest that the model for breaking code apart could work. Okay, so having done the use cases I went on to make a UML class diagram. Now, I can imagine that many think it's a waste of time, but for me I wanted to try using one of the tools available to clarify each class and their relationship before writing them. 

    One thing I realized making the class diagram was that I could decouple the network hardware from the network protocol. Maybe that in itself made it worthwhile. 

    Anyways, it's all still new to me so If you see anything wrong with the diagrams please let me know. It's been a fun exercise and quite the opposite of how I usually dive right in...I kind of feel like George Costanza:

    By the way, if you want to use the same tools I did, try draw.io for the class diagrams, and the very cool web sequence diagrams for you guessed it, the sequence diagrams.

  • New Magnetic Encoder Available

    5 days ago • 0 comments

    I just discovered that Austria Microsystems (AMS), my preferred source for magnetic encoders have recently released the AS5600. It looks very promising compared to the AS5050A I have been using. It costs $1.65 (per 1000) versus $2.98 for the 5050, and has 12 bit resolution versus the 10 bit of the 5050. It also requires fewer external components, and can run at 3 or 5V levels. This means I can eliminate a voltage regulator, a level shifter, and several passives. Switching to the 5600 should reduce the BOM cost by at least a couple of dollars. It even uses I2C or Analog out, instead of SPI + interrupt line, so even fewer IO pins will be consumed. 

    At any rate, I will continue developing with the 5050 for now, and later swap to this newer chip. In theory, it shouldn't be too complicated to switch from one to the other, because Moti has a modular design where the encoder is broken out on it's own board.

    In fact, the flip side of the Moti encoder board was designed to the AS5161, which turned out is not appropriate for Moti. However, its SOIC-8 package, and the layout of the power pins and analog out pin are the same as the 5600, so I may be able to start working with it right away!

    Hmmm, it would be pretty awesome if I can use just an A2D pin to capture position, because then the encoder board could perhaps be swapped for a pot if the user wanted to try Moti circuits in regular servo motors.

View all 8 project logs

Discussions

VPugliese323 wrote a day ago 1 point

I have one question not addressed by your project logs. Are you planning on addressing security concerns; as a networked device, do you have any plans to make your device more secure that I gather it presently is? To be specific, after reading your project logs, it seems as if anyone could (in theory) SSH over to the server controlling the motors and control them. For an industrial robotics project, that would be extremely dangerous. I realize that you cannot have perfect security with this (or any connected) technology, however I did not see any mention of how the connections are secured. I may have missed something because I was reading quickly, if so then my apologies. This is an interesting project, I like it.

Are you sure? [yes] / [no]

nsted wrote a day ago null point

Thanks for the question. The short answer is that we haven't built any security features at this stage, but aim to as the project develops. We'll need help in that area. Do you have any suggestions?

Are you sure? [yes] / [no]

VPugliese323 wrote a day ago null point

For these kinds of things, I must admit I default to two good books on the matter that I have. http://www.amazon.com/Counter-Hack-Reloaded-Step-Step/dp/0131481045 and http://www.amazon.com/Secure-Coding-Edition-Software-Engineering/dp/0321822137

Are you sure? [yes] / [no]

PointyOintment wrote 2 months ago null point

You might find this interesting: https://www.youtube.com/watch?v=_g79mOSvSsE

Be sure to check out the link in the description.

Are you sure? [yes] / [no]

nsted wrote 2 months ago null point

Very very Cool, but the links redirect, or 404.

Are you sure? [yes] / [no]

Jasmine wrote 2 months ago null point

Hello nsted, now is the time to add a few more details to your project to give it the best chance of going through to the next round of The Hackaday Prize.

By August 20th you must have the following:
- A video. It should be less than 2 minutes long describing your project. Put it on YouTube (or Youku), and add a link to it on your project page. This is done by editing your project (edit link is at the top of your project page) and adding it as an "External Link"
- At least 4 Project Logs
- A system design document
- Links to code repositories, and remember to mention any licenses or permissions needed for your project. For example, if you are using software libraries you need to document that information.

You should also try to highlight how your project is 'Connected' and 'Open' in the details and video.

There are a couple of tutorial video's with more info here: http://hackaday.com/2014/07/26/4-minutes-to-entry/

Good luck!

Are you sure? [yes] / [no]

flaco wrote 3 months ago null point

Here's something really interesting ! :D

Are you sure? [yes] / [no]

Robot wrote 3 months ago null point

Wow. Such a worthy product; I'm sad to see that the kickstarter failed.

Are you sure? [yes] / [no]

crener wrote 3 months ago null point

Hmm, i wonder if i could put one of these in place get all the settings/timings that i need (e.g. for a hex) and then replace with a normal servo?

It should work as long as i don't use any sensors that are attached to it. I just "learn" a pattern with the smart servo and then swap it with a normal one one i have its positional informaltion captured.

Anybody think this could work?

Are you sure? [yes] / [no]

nsted wrote 3 months ago null point

That's an awesome idea that hasn't come up before. It should work as long as moti exceeds your max requirements in speed and torque.

Are you sure? [yes] / [no]

Tiago wrote 3 months ago null point

I really like this project, might buy a bunch if they are not too expensive. Already got a bunch of ideas in mind for them. When you say full rotation position tracking do you mean it has a range of 360 degrees, or continuous rotation with an encoder? If it is an encoder, then am I correct in assuming that they do not know their position on startup, only relative positions?

Are you sure? [yes] / [no]

nsted wrote 3 months ago null point

Thank you. A new development is that Moti has a 10-bit magnetic encoder with a 360º range, so the absolute position is always known. There are no mechanical obstructions limiting rotations, so it can continue rotating as long as needed, and every 360º/0º rollover is logged in a register, which you can clear when you like.

This can be used in several ways. For example, you could have it turn precisely 1001º. Or you could remote control it to go some distance, and then read back how many degrees/rotations were required to get there. You could even manually turn the motor, record the positions, and then replay the patterns.

Are you sure? [yes] / [no]

Tiago wrote 3 months ago null point

That's really cool, would be so helpful for a project I am working on at the moment :) How much will they cost, aproximately, and when will they be available?

Are you sure? [yes] / [no]

nsted wrote 3 months ago 1 point

It's still going to be a while before Moti is released. We'll probably start beta-testing the new design this fall, and hopefully have a release (at least of the boards) later this year. As for price, I'd like to keep it below $55 for a preassembled servo (and cheaper of course for just the assembled boards). I know that sounds expensive but the driver, encoder, Arduino and motor end up costing a fair bit. Actually, I'd love to hear reactions to that price?

Are you sure? [yes] / [no]

Tiago wrote 3 months ago null point

Sounds pretty cheap, actually. A 1.5 turn servo with position control will be much costier.

Are you sure? [yes] / [no]

mandoline wrote 3 months ago null point

Nice idea. Can these be RF controlled, because that would indeed be handy.
Also for robotics use a regular servo could be used as the backplate and its existing controller chip grafted onto the new board with the magnetic rotation sensor to add longevity.

Are you sure? [yes] / [no]

nsted wrote 3 months ago null point

We've got bluetooth and xbee already, but for other RF one could design a new shield.

Are you sure? [yes] / [no]

regiscruzbr wrote 3 months ago null point

Kick ass project...
I have an application for it on my home automation.

Are you sure? [yes] / [no]

pajolegault wrote 3 months ago null point

This is a great example of a project that makes the stuff to make the stuff.
Some development variations I could see working with this. Add a hall effect sensor and accessible positional PID so that the motor can monitor and report on its loading, be tuned, and work with a wider range of voltages.

A pickle adaptor for use as a remote and for training the embedded micro.

Slaving for systematic control. You control one servo and it can control at least three other servos. For example you could have the fast servo, have it control the ratchet directional- position locker toggle servo, and the slow geared ratchet drive high torque servo, and a weighted spring, hammer drive loading servo. Or simply use a push me pull you control between two servos so that when one servo winds in, it tells another servo to wind out.

Are you sure? [yes] / [no]

nsted wrote 3 months ago null point

Thanks for the feedback. Are you thinking hall effect for position, or current sensing, or something else? We've switched to a magnetic encoder for position, and current sensing is provided by the h-bridge. PID settings are open as you suggest. I hope to add more detail soon, and update the pics.

I have no idea what a pickle adapter is?! But it sounds like something awesome.

We're also switching from i2c to rs485 because of the extra distance it affords, with up to 128 nodes (at least in theory). You can customize the addressing, and program the nodes to achieve the desired network topology.

Are you sure? [yes] / [no]

pajolegault wrote 3 months ago null point

A pickle is just controls on a cable, so a wired remote. You can plug in a joystick for example. It might be jargon specific to some industries. I should have just said a wired remote.

Bluetooth would also work and no socket needed.

Are you sure? [yes] / [no]

pajolegault wrote 3 months ago null point

I was thinking of the Hall effect sensor for the motor current.

Current sensing is provided by the H-bridge or current limiting?

Are you sure? [yes] / [no]

nsted wrote 3 months ago null point

We're trying out the VNH5180a with built-in current sensing http://www.st.com/web/catalog/sense_power/FM1965/SC1039/PF250358
Will post how it works out.

Are you sure? [yes] / [no]

samern wrote 4 months ago null point

I have some many projects for this thing, the mind boggles. I wish I knew, I would've contributed to the Kickstarter.

Are you sure? [yes] / [no]

technolomaniac wrote 5 months ago null point

Awesome concept! Very cool to see and super interesting!

Are you sure? [yes] / [no]

dave.m.mcdonough wrote 5 months ago null point

Is this just a servo piggyback board or the complete package? Because I'm curious about the servo torque specs, or if I want to use a bigger motor..

Are you sure? [yes] / [no]

nsted wrote 5 months ago null point

The plan is to offer both a preassembled servo, as well as make the boards available so you can put them inside the servo motor of your choice (though they may not fit inside every case).

I don't have final specs on the on the torque of the preassembled servo, but conservatively it will be at least 11 kg*cm with metal gears. And one thing I'm looking forward to is the ability to use it with gearboxes to up the torque without having to hack the servo. (eg. https://www.sparkfun.com/products/12606).

Are you sure? [yes] / [no]

zack wrote 6 months ago 1 point

This is great, the added accessibility is really cool! My personal need is something with the specs of a Dynamixel AX-12, but with continuous rotation sensing. It'd be nice to see more than just Robotis serving the "smart servo" market.

Are you sure? [yes] / [no]

mbasecnc wrote 6 months ago null point

Very very nice, I saw your Kickstarter campaign, to bad you didn't make it.
The world needs a good open source servo board!
As in open source, where is the source?
Keep it cheap and you will be succesfull!

Are you sure? [yes] / [no]

nsted wrote 5 months ago null point

Thanks...the Kickstarter campaign was a disappointment, but we learned a lot from it. We haven't released the source yet, but we will once the first version of the servo is finalized and made available for sale.

Are you sure? [yes] / [no]

Eric Evenchick wrote 7 months ago null point

Hey, just wondering about latency on these. It looks like you're using the HC-05 modules, or something similar. I've had some issues with latency over Bluetooth in the past, so I'm just curious what your thoughts are on it.

Are you sure? [yes] / [no]

nsted wrote 7 months ago null point

Yes, the motor on the left shows a Bluetooth shield with HC-05. There's a bit of latency, which is on the list of todos. See for yourself: http://youtu.be/kR_jN62QUPI

The middle motor shows the pins that shields plug into. So you can connect your preferred serial module and set your own baud. For example, right now I'm using an FTDI cable while developing...I'll upload a pic.

Are you sure? [yes] / [no]

assadollahi wrote 7 months ago null point

isn't that a bit similar to the dynamixel servos (position aware, daisy-chainable)? except for the web-interface?

Are you sure? [yes] / [no]

nsted wrote 7 months ago null point

It’s more like an arduino and dynamixel combined. You can program moti directly, or add sensors, and so you don’t need an external microcontroller. Also, the 330º angle sensing limits of most dynamixels really bothered me…so we gave moti full-turn position tracking.

Are you sure? [yes] / [no]

tamberg wrote 7 months ago null point

+1

Are you sure? [yes] / [no]

brian kame wrote 7 months ago 2 points

Great job! I love the concept.

Are you sure? [yes] / [no]