[CFC] Improve/rewrite the Herborist interface (configuration of Dynamixel motors)


We have a several robustness issue with Herborist.
Indeed it has been done quickly one day and not really maintained since (last commit one year ago…).

Unfortunately if you want to configure Dynamixel motors without typing command lines, there is no other alternative on Unix systems… therefore until now we keept it.

However, with the recent increase in the number of Poppy Humanoid built, several people has been blocked during the very first step of the assembly, when it is require to use Herborist. And this is a very bad introduction to the lovely Poppy world !


Are there some software developers interested in making Herborist more stable and easy to setup ?

A great and simple way to start would be to get ride of the PyQt dependency and rather build a web interface using the pypot server package.

As usual, you can contribute by forking the project and send pull requests !


If you are looking for an alternative you can try this tool:

We developed it for our own needs some time ago, but we still use it once in a while.

1 Like

Or maybe pull ressources with other Inria teams to make this the new standard?https://github.com/emericg/SmartServoFramework

It does both Dynamixel and Herkulex in a unified framework.

1 Like

I try to make graphical interface with Tk but it does not work when I include a graphical interface in a Pypot primitive.
I see here you want to get rid of PyQt dependency. What are the reason ?

Half of problem we have with herborist come from a bad installation of PyQt, moreover this dependency is only needed for herborist.
Also there are plenty frameworks to build beautiful interface with web techno.

Ok, I now understand, I had some :unamused:

Moreover, we have almost no experience with Qt and thus are not able to do something easily maintainable.

I’m guessing here that Tk need to have control of the main running loop?

unfortunately yes…

I would love to have an option to not use any graphical interface to setup a new motor, something like:

sudo herborist --newmotor 12

to configure a brand new motor (ID1, baudrate 57000) to ID 12.

I will do it when I have time if no one did it before.

With @daweeed and the Inmediats people we want to do something similar. Our idea was to write a simple ipython notebook to do that. As it would make it clearer what’s happening.

Having a simple command line script would definitely be the way to go for “experimented” users!

There is a pending pull request to do exaclty that you want:

I did my own script in all cases, but good to know it exists.

I just pushed a script which does pretty much this:

Mundaka:~ pierrerouanet$ poppy-motor-reset 23
Resetting to factory settings...
Setting the motor to a "poppy" configuration
Changing the id to 23...
Changing the return delay time to 0...
Changing the angle limit to [-150, 150]...
Changing the baudrate to 1000000...
Now, checking that everything went well...

You can add extra option such as setting an angle limit, a specific position…

You can find it here:

Do not hesitate to pull request to add features or to develop your own script !


Well it’s not a full rewrite but this change would help to display the FULL gui on small screens :


Hope this help… I could do better , but my interest is most focused onto rebuilding / porting the whole embeded system and my (unpaid) time is pretty rare :smile:


Thanks !! I just merged it.

Can you tell me more ? You got my attention :slight_smile:

Sorry I did not notice your messages earlier…

Yes i am a community FLOSS geek and worked for different GNU/Linux distros (Tizen is my latest one) … you can email me at rzr(a)gna.org or ping irc:RzR@#ros

May I ask about entry point about setting up the existing opensource software on reference hardware I have serveal ARM and x86 boards waiting to boot the skynet :slight_smile:

You can find information on how to setup your Odroid U3 for poppy here. It’s basically only creating a SD card with a basic linux distribution. Then we have a simple bash script to install all our dependencies (few python packages).

The bash script can also be run on a raspberry pi (tested with raspbian) and should run (without too much modifications) on any “standard” linux.

Then we have a simple bash script to install all our dependencies (few python packages).

@Pierre This link is broken.

(By the way, thank you so much for all the work you’ve done over the years on this project and for this community!)