Software modifications and upgrades of Hexy


I want to start by saying “great job” to Michal for all the work that he has done here.

Next, I would like to say to all listening that I believe it important to preserve the original serial command mechanisms because it provides an easy way to test things by hand and it will maintain backwards compatibility. Also, it should not cause any problems switching between them both the way Michal is currently doing.

That said, I believe that the switch to binary mode should not be triggered using the ‘$’ character because it would be too easy to input this by accident during hand testing. That is because ‘$’ is next to ‘#’ on most keyboards. Accidentally doing this by hand could be disastrous.

My first thought was to move this to ‘&’ because its keyboard is reasonably far away to avoid accidents. However, I have come up with an even better idea, use -4 (0xFB); this will be impossible to type by accident on most keyboards.


Hi guys I have a moving problem. The problem is when I make my hexy move forward or back ward hexy turns a little to the left and after moving forward a few times he’s turn like 20 degrees! I’ve seen michals PoMoCo kinematics control and It moves straight. I think my move problem is hexy is moving to fast. How do I import your kinematics control into the normal PoMoCo?
I have your PoMoCo 1.2 and the kinematics control is NOT working at all. :confused: If you don’t know how to import can you tell me how to fix your PoMoCo? I’m not him. :arrow_right: :ugeek:



[quote=“michal”]Optimized Servotor32 for faster servo position update

The impact of the below listed changes to current PoCoMo-controlled Hexy is minimal. You will most probably appreciate this information if you are trying to transfer more control into Servotor32 and you are trying to squeeze some CPU cycles.

First of all great work Michal, PoMoCo 2.1 is awesome.

I notice that since the release of 2.1 you have made a lot of changes you have mentioned in this thread. Is there any chance that you will be releasing a new version with all these improvements?

Also, I would like to use your version of PoMoCo with a PS3 controller. I will be trying to adapt the code you have to work for both joysticks. Let me know if you are interested in this.



Anyone have a idea on how would i bind the gait selection to a joystick. Im also trying to find a way to get pomoco to change to the Kinematic control screen as soon as it starts up so i don’t need to physically use a mouse to select that tab.

Btw. Michal i cant seam to get your pomoco working. i get this

['BTHENUM\\{00001101-0000-1000-8000-00805F9B34FB}_LOCALMFG&000F\\8&3470B7BB&0&0015FFF41115_C00000002', 'Standard Serial over Bluetooth link (COM4)', 'COM3', 'COM4', 'Standard Serial over Bluetooth link (COM3)', 'BTHENUM\\{00001101-0000-1000-8000-00805F9B34FB}_LOCALMFG&0000\\8&3470B7BB&0&000000000000_00000004'] Attempting to connect to Servotor Connection to Servotor failed. No robot movement will occur. Initializing servos. Servos initialized. Killing all servos. Connect Successful! Connected on port: COM3

The gui opens just fine but no servo movement.


Hello everyone!

We’ll I just ordered, received and installed the new metal gear motor replacements offered by the Arcbotics store!

When installing them, I found that I had to use he new white horns provided as well as the smaller gear mount screw (the new horns have a smaller hole, the new screw was simply too small for the old mount horns.) These motors are very smooth and do not slide in the gear mount like the original motors. They look pretty solid and I expect they will last much longer!

I now have a extra white wire for each motor which believe tells me its current analog position, this could be very nice for more fluid movement transitions from one move to another. Once I figure out a good way to implement it. :slight_smile: My guess is that each motor group on the the controller has a extra 3 pin row, I’m guessing that these could be set within the controller to be analog and they could be then used to get the position of each motor, this in turn would use this value as an offset for moment calculations. Has anyone looked into this already, any idea if my assumptions are correct?

I just wanted to check before I start digging, to save me any time/frustration before I go down this path… I’d love to hear from anyone else who has started using these.



Finally got my Hexy working with a TV stick so no need to have my PC in the loop anymore


That’s awesome! How difficult did you find the process of installing PicUntu? Can’t wait till I have some time to try the same :slight_smile:


Thanks, I’m really glad I finally got it working. Its taken a lot longer than I expected.

I spent a couple month stuffing around with different kernels and missing drivers, and eventually compiling kernels. My Linux experience was minimal before this project so took me a while to get my head around the problem. Now that I’ve got it all nutted out its relatively easy: install drivers, flash the kernel, flash the base filesystem, then run through the process of configuring Linux to do what you want.

While its working at the moment I’m missing a few things like auto running PoMoCo on boot and having a nice way to do a clean shutdown. I’m also looking into an easy way to stream video from an onboard camera


Try MJPEG-Streamer:


Im doing the same thing with a raspberry pi right now. I would love if you put down a tutorial for doing this on picuntu. I have the same stick you have at home.


Nice, I had thought about this but I think the RPi is just a little too big and little too underpowered for any kind of image processing tasks.
I don’t want to derail this thread, so I have replied in depth to your question in another thread Hexy with onboard Linux



I’ve installed all libraries and I am using your package v1.2, but when I start the head from Hexy is turning from right to left and stops at certain locations, just to start this all over again.

I’ll get this following error messages, too:

Traceback (most recent call last):
File “Z:\Program Files (x86)\Hexy\PoMoCo-1.0\”, line 54, in
File “PoMoCo\”, line 2822, in startGUI
app = App(root,controller)
File “PoMoCo\”, line 108, in init
self.DancingControls = groupDancingControl(self.frame, self.con, self.Dict, colX = 25, rowY = 0)
File “PoMoCo\”, line 2013, in init = = pyaudio.paInt16, channels = 1, rate = 44100, input = True, frames_per_buffer = self.chuck)
File “C:\Python27\lib\site-packages\”, line 747, in open
stream = Stream(self, *args, **kwargs)
File “C:\Python27\lib\site-packages\”, line 442, in init
self._stream =**arguments)
IOError: [Errno Invalid input device (no default output device)] -9996

I hope you guys can provide me some help, while I’m trying to fix this problem by myself. :slight_smile:


Thanks everyone for making Hexy an awesome Hexapod! Big thanks to those who share their skills in programming! Keep up the good work guys:)


Wanting to download and try using this (great work by the way - thanks) but my Norton Insight had blocked the Matplotlib as it “shows signs of being a threat” Is it ok to install?


Yeah its fine.


Hey guys,

well… umm… I just received and built my Hexy and wanted to give it a first try. But I was very unhappy with the result. A lot of jittering and it looks like, it doesn’t have enough power to get off the floor. Well, so I started searching for some help and now I landed here.

First of all: what a great work! It is my frist time that I get in contact with python (etc) but nevertheless, what you (Michal) did seems just awesome to me!

But now I need some help. As I just mentioned, this is the first time for me, to work with python und I want to upgrade my software environment for Hexy, as you did. Could anyone provide a step-by-step tutorial? I tried to install python and some libraries and so on, but unfortunately without success.

OS is Win7 64 Bit, default ArcBotics PoMoCo software installed including Servotor1.0 driver. Firmware on the Servotor is 2.0 from Arcbotics.

Thank you guys VERY much in advance!!!


Hi, I’m newbie with hexy and programming, but I’ve followed this topic and I’m trying to use the PoMoCo 2.1 - After successfully assembling hexy, using PoMoCo 1.0 and played with him for some time…

First of all, thanks to Michal and all other involved on this post for the GREAT stuff. :smiley: :smiley: :smiley:

I’ve installed everything (PoMoCo 2.1, numpy, matplotlib, pygame) and made it work… The kinematic controls, the drawing… I’m able to control it either via USB or bluetooth…
But there is an akward issue… :unamused:
The pre-set moves are not working properly… There is some problems with the ankles that does not allow the Hexy to “stand-up”.
i.e. When I use the “get up” move, hexy ends up with the ankles not touching the ground, but facing outside, the “first half” is right, but at the second, this happens.
It looks like the move files are wrong because it happens with all moves (but this isnt the problem because when I use the PoMoCo 1.0 with the same move files, there is no problem).
I can’t find a better way to describe this and as I don’t have a clue on what is happening I can’t even look for a solution… Can anybody help me, at least, identify the problem?

~I’m sorry if my english is crap :confused: anyway, cheers from Brazil! :wink:


I have had the same problem.

In line #21 I changed the angle offselt from 0.0 to 50. This seems to partially fix the problem, at the very least, it Hexy’s walking tooks better. hehe
.ankleOffset = 50.0


Fix bug in michal software “PoCoMo 1.2 - Michal.ZIP” (update from Pomoco 1.0)

It seem to be a bug that happend to the ankle of all the move in Michal update Pomoco for Vitual robot and stuff . It took me quite long time to find the bug.

This happend because he change the code in

if (footY < 75) and (footY > -75): kneeAngle = math.degrees(math.asin(float(footY)/75.0)) ankleAngle = ankleOffset - kneeAngle + footRx #problem here

i dont known what it mean to do but i just change it like the original Pomoco1.0 .Like this

        if (footY < 75) and (footY > -75):
            kneeAngle = math.degrees(math.asin(float(footY)/75.0))
            ankleAngle = 90-kneeAngle
          # ankleOffset - kneeAngle + footRx

Wha-la problem fixed. i hope this help.


Michal this is so funny, nice one on making Hexy even more cute.