First little play with Engineer kit1

After a couple of days of playing with the Robotis Engineer kit 1 I make a little program for Dr-R for my youngest kids to play with see https://fb.watch/7caevqZY-z/

Here is the code that was running on the robot in the video. Dropbox - demo.py - Simplify your life

I must say I am very impressed with the hardware and my mind boggles with all the possibilities this kits brings.

1 Like

Hi @Out_of_the_BOTS, thanks so much for sharing this post!

The custom program for Dr. R looks like it’s running great, and it’s fantastic to have the code shared for the community members as well!

I think my favorite part was seeing the little “dance” Dr. R does while playing the music in your video. Either that, or the “sad” reaction to shutting down. It really gives the robot a lot of personality!

I’m definitely looking forward to any other ideas you have for your ENGINEER Kit! Please keep us updated :slight_smile:

@Newbie, @roboteer, @moverstreet007, check this out!

1 Like

Yes kids love it when robots have personality.

I think the Dr-R is a very good robot for kids to play with because the smart phone allows you to add so much personality and the fact it isn’t bipedal so you don’t get the robot falling over problem.

I am good at engineering and not so good at creative stuff, I would love for a more creative kid to play with a dancing Dr-R as the smart phone allows for pictures or video and sound then the 12DOF of the body allows for way better dance moves than what I did in the demo

@Out_of_the_BOTS, thanks for sharing the demo code. It is instructive to me to see that an additional “layer of information hiding” would help beginner programmers.
I saw the definition of dynamixel_wait() but I did not see its use in your code. Also you used motion.play() so you could have used motion.status() for this purpose too. The dynamixel_wait() function can be handy if the programmer is doing single servo goal position programming though.

@roboteer you are very correct with all these points and usually I would be able to cover them but the current CM-550 port of micropython has a lot of the functionality removed that main line micropython has.

First the layer of hiding. Normally the Phone class and Dynamixel class that I made would be saved in a seperate file then imported. For example I would save them in a file called “CM_550.py” then in my new program I would use “from CM_550 import *”. For a good example of this watch my video here https://www.youtube.com/watch?v=jHuljPoPoBc from about 5:30 I show the motor API that I made that I save to the file system then import in to my main code.

AS for the double up

First the python API that I am wrapping isn’t finished and sort of evolved a bit while I was learning the system and will continue to evolve and probably get refracted as I learn.

Second python class inheritance has been removed in this port of micropython. Normally if you have a class that has some functionality and you want to build on top you make a child class that inherits all the methods of the parent class, this way any functionality that already exists you don’t need to rewrite or create a wrapper to call it.

One of the big reasons for using OOP is to organize code, i.e group like code together in it’s own object. In my program some of the smart phone funtionality is in Phone class and some is in smart class. Also in my phone class it actually calls the smart class to do the low level writing and reading from the smart command register. This also defeats the purpose of OOP, if Phone class could inherit the methods from smart class then it would have all the reading and writing methods contained within the Phone class rather than calling the smart class. The dynamixel class is the same.

I am hoping as this port continues to develop it will end up as a full featured micropython with the dynamixel functionality added on top much the same as the Ardunio port for Opencm is a full featured port of Ardunio with just the dynamixel functionality added on top.