New Processor: Robotis OpenCM9.04 w/ ARM Cortex M3

The last “brain” BETH had was a Raspberry Pi. The Pi worked well and was of course very powerful, but I started to get sick of it.

Having to power on, wait a minute for boot, SSH in, samba share my source files, run program, issue shutdown command, wait for shutdown, and power off all the time got old. I tried to improve things by hooking up an LCD that would run a start up menu on boot up. It would show me the IP address so i could remote-in easier and allow me to run the BETH program with a button press. It helped, but ultimately all it was doing was adding ever more complexity to both hardware and software. I began to realize that all of this was slowing down development because I often didn’t feel like going through the hoops to get started. (boo hoo, right?)

Another con to the Raspberry Pi was that relative to a microcontroller, it used a lot of power and battery life was much less than what it was with the Arbotix microcontroller.

Lastly, I no longer wanted to deal with the Linux overhead. Robot projects are fun, Linux projects are fun, but i’d rather keep them separate so i can focus on one thing at a time.

So all this drove me to find a new processor. The timing was right, though, because Robotis just released the OpenCM9.04.

Robotis OpenCM 9.04

Robotis OpenCM 9.04

This is a totally open-source ARM Cortex M3 based microcontroller designed for use with Dynamixel servos and general robotics use. It uses what’s essentially the Arduino IDE with an ARM toolchain hooked up. It’s very easy to use with the built in 3-pin Dynamixel connectors, voltage regulator, and 3 UARTs. For hardware, all I i had to do was run power, ground, TX, and RX to an Xbee break out board. The board is powered from my powered Dynamixel hub through the Dynamixel connector. The other nice thing is that this board is quite small, about half the size of the original Arbotix controller, and allows my to install the battery back inside the hex body.

For software, I reverted back to my Arduino BETH code, updated to my more recent Raspberry Pi trajectory/gait algorithms, and had it all running in a couple hours. The functioning code is on my GitHub.

I must say its refreshing to have an “instant-on” robot. It makes it much easier to casually boot up and work on it without having to commit for a few hours due to booting up, software updates, remote logins, etc. It’s also nice to focus purely on the software that is controlling the robot directly.

As for power, this is significantly more powerful than the ol AVR in the Arbotix controller (72MHz vs 16MHz, 32bit vs 8bit, etc). The only thing this lacks is a hardware FPU for floating point math. I think this will cut it for my FK/IK/trajectory type needs for now. I do have an upcoming project that may push this limit, but more on that later.

4 thoughts on “New Processor: Robotis OpenCM9.04 w/ ARM Cortex M3

  1. antonio

    Hi,

    I just bought this same board but i don´t want to use with the Robotis software (Arduino compatible), but Keil Uvision. I´m able to load the program, but it doesn´t run !!
    Have you tried to use the OpenCM9.04 with Keil or a different IDE ? i hope you could bring some help,

    regards,
    toni

    Reply
    1. Dan

      Sorry, I’ve only used the Robotis version of the Arduino IDE. Another possibility would be Atmel Studio if you need something more powerful.

      Reply
  2. Paul Tegler

    Dan…have read your entire series here on Beth. Love the detailed effort describing your code and what led to it’s current state. I was swapping to a CM9.04 (for program space) when I stumbled on your blog here.
    But as with the other major IK out there ( ‘Phoenix code’ route on this PhantomX hexapod) …. I’m left with the same question(s). Fist and foremost is how to add a gait to YOUR code base? 2- It appears you are using the default Trosessn commander here on B.E.T.H.?
    Once again…great work (and through documentation)
    p.s….. fo reference…my current operating status…. https://www.youtube.com/watch?v=ZZRpIQ8Tieg

    v/r
    ptegler

    Reply
  3. fikri

    I want to make this robot run automatically without using xbee, can you help me which part of the program should I change?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *