Bioloid Control (Open Source Project)

Bioloid robot kit from Korean company Robotis; CM5 controller block, AX12 servos..
50 postsPage 1 of 41, 2, 3, 4
50 postsPage 1 of 41, 2, 3, 4

Bioloid Control (Open Source Project)

Post by cosa » Tue Apr 22, 2008 12:00 pm

Post by cosa
Tue Apr 22, 2008 12:00 pm

Hi,

I've created a new sourceforge project (under the GPL) concerning the Bioloid Comprehensive Kit. It offers complete control of a Bioloid robot including a 3d visualisation, xml-based robot modelling, a custom scripting language, the capture of robot movement, a custom firmware, different interpolation types and more. It can be configured to work with different types of robots (I've tested it with a custom-built hexapod and a modified humanoid):
Picture of Humanoid
Picture of Hexapod

If you're interested you can check the Project page, the Web page (under construction) and a few videos.

If you have any problems/questions or want to participate in the project as a developer write me an email to rainer DOT jaekel AT g o o g l e m a i l DOT c o m or post on the project forums.

Details:
Robot Controller:
* Command based communication with the pc (config the robot and the controller, read/write data from servos and sensors)
* Buffers target positions (calculated by pc program) and calculates (smooth) point to point movement to these positions.
* Support of different motion/acceleration profiles (constant velocity (linear), rectangular shaped and sinoidal acceleration (s-curves))
* (Experimental) battery recharging functions (thanks to kess and pieddemamouth (robosavvy-forums))

OpenGL visulisation:

* Displays polyhedrons (boxes most of the time :)) and error information (limbs turn red if a collision/out of range error occurs) on screen
* Communication with the main program via shared memory
* Linux and Windows version

Main program:
* Runs on Linux and Windows
* Simulation mode (can be used without a robot)
* Supports custom robot configurations (the geometric and kinematic model, frames and collision objects can be configured in a xml file)
* Easy hardware and software configuration via PC (f.e. Ax12-, PID-controller-, timing-parameters, selection of a movement profiles)
* 3d-Visualisation of the robot (OpenGL)
* Forward kinematics (based on Denavit Hartenberg matrices)
* Inverse kinematics (analytic solution for custom humanoid and custom hexapod, rudimentary numerical solution (transpose jacobian technique))
* Fast collision checking (Oriented Boundary Boxes)
* Online robot information in custom console (Linux only, needs ncurses)
* Fail-proof (CRC) communication via RS-232
* Scripting language: Complete control of the robot, extendable
* Capture (continuous and discrete), load, store and join robot movements
* Play motions with different interpolation types (linear, bezier (and splines) in cartesian and joint space)
* Point-To-Point movement in robot and joint space (can be mixed)
* Command system (f.e. walk, turnright)
* Supports Motion Editor files (thanks to Bullit)

Edit: Added a few videos (f.e. kinaesthetic programming).
Hi,

I've created a new sourceforge project (under the GPL) concerning the Bioloid Comprehensive Kit. It offers complete control of a Bioloid robot including a 3d visualisation, xml-based robot modelling, a custom scripting language, the capture of robot movement, a custom firmware, different interpolation types and more. It can be configured to work with different types of robots (I've tested it with a custom-built hexapod and a modified humanoid):
Picture of Humanoid
Picture of Hexapod

If you're interested you can check the Project page, the Web page (under construction) and a few videos.

If you have any problems/questions or want to participate in the project as a developer write me an email to rainer DOT jaekel AT g o o g l e m a i l DOT c o m or post on the project forums.

Details:
Robot Controller:
* Command based communication with the pc (config the robot and the controller, read/write data from servos and sensors)
* Buffers target positions (calculated by pc program) and calculates (smooth) point to point movement to these positions.
* Support of different motion/acceleration profiles (constant velocity (linear), rectangular shaped and sinoidal acceleration (s-curves))
* (Experimental) battery recharging functions (thanks to kess and pieddemamouth (robosavvy-forums))

OpenGL visulisation:

* Displays polyhedrons (boxes most of the time :)) and error information (limbs turn red if a collision/out of range error occurs) on screen
* Communication with the main program via shared memory
* Linux and Windows version

Main program:
* Runs on Linux and Windows
* Simulation mode (can be used without a robot)
* Supports custom robot configurations (the geometric and kinematic model, frames and collision objects can be configured in a xml file)
* Easy hardware and software configuration via PC (f.e. Ax12-, PID-controller-, timing-parameters, selection of a movement profiles)
* 3d-Visualisation of the robot (OpenGL)
* Forward kinematics (based on Denavit Hartenberg matrices)
* Inverse kinematics (analytic solution for custom humanoid and custom hexapod, rudimentary numerical solution (transpose jacobian technique))
* Fast collision checking (Oriented Boundary Boxes)
* Online robot information in custom console (Linux only, needs ncurses)
* Fail-proof (CRC) communication via RS-232
* Scripting language: Complete control of the robot, extendable
* Capture (continuous and discrete), load, store and join robot movements
* Play motions with different interpolation types (linear, bezier (and splines) in cartesian and joint space)
* Point-To-Point movement in robot and joint space (can be mixed)
* Command system (f.e. walk, turnright)
* Supports Motion Editor files (thanks to Bullit)

Edit: Added a few videos (f.e. kinaesthetic programming).
Last edited by cosa on Sat May 17, 2008 5:26 pm, edited 4 times in total.
cosa offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by siempre.aprendiendo » Tue Apr 22, 2008 1:03 pm

Post by siempre.aprendiendo
Tue Apr 22, 2008 1:03 pm

It seems very interesting, Rainer. Have you published the source code? (I can't find it)
It seems very interesting, Rainer. Have you published the source code? (I can't find it)
siempre.aprendiendo offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 559
Joined: Wed Aug 08, 2007 9:13 pm
Location: Barcelona

Post by cosa » Tue Apr 22, 2008 1:58 pm

Post by cosa
Tue Apr 22, 2008 1:58 pm

Ah, my fault (the CVS link was still active but I use Subversion). It's fixed now. You'll find the code at the sourceforge project page under code->svn.
Ah, my fault (the CVS link was still active but I use Subversion). It's fixed now. You'll find the code at the sourceforge project page under code->svn.
cosa offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by Rob » Tue Apr 22, 2008 10:12 pm

Post by Rob
Tue Apr 22, 2008 10:12 pm

That looks fantastic cosa a lot achieved in 3 months. What area(s) of this project:
-Did you enjoy the most?
-Find the hardest?
-Learn the most from?
That looks fantastic cosa a lot achieved in 3 months. What area(s) of this project:
-Did you enjoy the most?
-Find the hardest?
-Learn the most from?
Rob offline
Savvy Roboteer
Savvy Roboteer
Posts: 51
Joined: Sun Nov 25, 2007 2:05 pm

Post by Bullit » Wed Apr 23, 2008 1:34 pm

Post by Bullit
Wed Apr 23, 2008 1:34 pm

cosa can you provide any insight to getting glut installed on linux. I've been checking out your project and have gotten stuck trying to get it to compile with glut.

Thanks.
cosa can you provide any insight to getting glut installed on linux. I've been checking out your project and have gotten stuck trying to get it to compile with glut.

Thanks.
Bullit offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 291
Joined: Wed May 31, 2006 1:00 am
Location: Near robot

Post by cosa » Wed Apr 23, 2008 6:30 pm

Post by cosa
Wed Apr 23, 2008 6:30 pm

Rob wrote:That looks fantastic cosa a lot achieved in 3 months. What area(s) of this project:
-Did you enjoy the most?
-Find the hardest?
-Learn the most from?

(3 months + I've overhauled it in the last two months because it is used in a pratical course and a new term started lately).

Hmm,
1. Experimenting with the running system (of course), being able to inspect a robot program in the visualisation before testing it on the real robot was a big improvement and the development of an own scripting language
2. Implementing a good working, smooth, robot-independent servo control mechanism (I'm still not able to implement a good one). Right now, you can choose between several different control strategies, enable/disable simple speed/torque pid-controllers, but it's always a lot of work to find the best parameters.
3. Retrieving the analytic solution to inverse kinematics of the humanoid because I did it myself (although there's definitely a solution already published (max. 6 dofs)).


@bullit:
I use mesa3d (it's an opensource opengl implementation that includes glut) but there's also a free standalone version of glut named freeglut.

To install glut on a debian you can do:
sudo apt-get install freeglut3-dev

To install mesa3d on a debian I think you can do:
sudo apt-get install libglu1-mesa-dev mesa-common-dev
(if this doesn't work, try searching for mesa packages: apt-cache find mesa)

If you have another distribution check:
Mesa3d project page
freeglut project page.
Rob wrote:That looks fantastic cosa a lot achieved in 3 months. What area(s) of this project:
-Did you enjoy the most?
-Find the hardest?
-Learn the most from?

(3 months + I've overhauled it in the last two months because it is used in a pratical course and a new term started lately).

Hmm,
1. Experimenting with the running system (of course), being able to inspect a robot program in the visualisation before testing it on the real robot was a big improvement and the development of an own scripting language
2. Implementing a good working, smooth, robot-independent servo control mechanism (I'm still not able to implement a good one). Right now, you can choose between several different control strategies, enable/disable simple speed/torque pid-controllers, but it's always a lot of work to find the best parameters.
3. Retrieving the analytic solution to inverse kinematics of the humanoid because I did it myself (although there's definitely a solution already published (max. 6 dofs)).


@bullit:
I use mesa3d (it's an opensource opengl implementation that includes glut) but there's also a free standalone version of glut named freeglut.

To install glut on a debian you can do:
sudo apt-get install freeglut3-dev

To install mesa3d on a debian I think you can do:
sudo apt-get install libglu1-mesa-dev mesa-common-dev
(if this doesn't work, try searching for mesa packages: apt-cache find mesa)

If you have another distribution check:
Mesa3d project page
freeglut project page.
cosa offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by cosa » Sat May 17, 2008 6:59 pm

Post by cosa
Sat May 17, 2008 6:59 pm

@bullit: Did it work? If I remember it correctly I had to remove the -lGL on some linux systems in order to make it compile....
@bullit: Did it work? If I remember it correctly I had to remove the -lGL on some linux systems in order to make it compile....
cosa offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by jerome » Mon Jun 23, 2008 8:49 am

Post by jerome
Mon Jun 23, 2008 8:49 am

Hi Cosa,

This is great work!

I have downloaded and compiled with no problem on my Linux box. Now I understand that much is done on the CM-5 ... well at least the interpolation right?

What would it take to add the ability to drive the Bioloid bus through a UART/USB dongle and have all the scripting stuff run on a PC?

Best regards,

Jerome.
Hi Cosa,

This is great work!

I have downloaded and compiled with no problem on my Linux box. Now I understand that much is done on the CM-5 ... well at least the interpolation right?

What would it take to add the ability to drive the Bioloid bus through a UART/USB dongle and have all the scripting stuff run on a PC?

Best regards,

Jerome.
jerome offline
Robot Builder
Robot Builder
Posts: 16
Joined: Fri Oct 26, 2007 12:56 pm

Post by cosa » Sun Jun 29, 2008 12:07 pm

Post by cosa
Sun Jun 29, 2008 12:07 pm

Hi jerome,

thanks. :)

The pc program generates a smooth trajectory, samples it in intervals of 80ms (@115200 baud) and sends the interpolated values to the cm-5. Since 80ms is pretty long the cm-5 itself interpolates the already interpolated data and sends new data every ~10ms to the servos.

So if you dont want to use the cm-5 you can lower the interpolation pause on the pc program to f.e. 10ms and send the data directly to the bus. The only thing I have to do in order to make it work is to implement TxPacket, RxPacket like functions. Give me a few days for that. :)

(Using the cm-5 as a buffer to send data to the servos has the advantage that the timing (= delay between two sends) should be more precise than sending the data directly from a non-realtime operation system)
Hi jerome,

thanks. :)

The pc program generates a smooth trajectory, samples it in intervals of 80ms (@115200 baud) and sends the interpolated values to the cm-5. Since 80ms is pretty long the cm-5 itself interpolates the already interpolated data and sends new data every ~10ms to the servos.

So if you dont want to use the cm-5 you can lower the interpolation pause on the pc program to f.e. 10ms and send the data directly to the bus. The only thing I have to do in order to make it work is to implement TxPacket, RxPacket like functions. Give me a few days for that. :)

(Using the cm-5 as a buffer to send data to the servos has the advantage that the timing (= delay between two sends) should be more precise than sending the data directly from a non-realtime operation system)
cosa offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by cosa » Sun Jun 29, 2008 6:30 pm

Post by cosa
Sun Jun 29, 2008 6:30 pm

Update:
I've added support for an USB dongle. Please check out the new version (from the svn repository, it's not in the zipped release package).

You have to set <UseCM5>false</UseCM5> in your config file to make it work. I could only test it with the cm-5 toss mode so it would be nice if you could give me some feedback.
Update:
I've added support for an USB dongle. Please check out the new version (from the svn repository, it's not in the zipped release package).

You have to set <UseCM5>false</UseCM5> in your config file to make it work. I could only test it with the cm-5 toss mode so it would be nice if you could give me some feedback.
cosa offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by jerome » Wed Jul 02, 2008 10:42 am

Post by jerome
Wed Jul 02, 2008 10:42 am

Hi Cosa,

I have fetched the latest version and played with it yesterday evening. Unfortunately it fails to receive data from the Bioloid, whereas with my small serial port reader I can check that connection is right.

I have tried to debug a bit. The baudrate is set right (1000000) and init of serial port looks OK. Sending packets is no problem, but when receiving, the first 2 calls to CPlatform::RxD8Buffer return 12 bytes of 0's and then select never sees fdSerialPort as having data to be read.

I investigate more as time permit.

Best regards,

Jerome.
Hi Cosa,

I have fetched the latest version and played with it yesterday evening. Unfortunately it fails to receive data from the Bioloid, whereas with my small serial port reader I can check that connection is right.

I have tried to debug a bit. The baudrate is set right (1000000) and init of serial port looks OK. Sending packets is no problem, but when receiving, the first 2 calls to CPlatform::RxD8Buffer return 12 bytes of 0's and then select never sees fdSerialPort as having data to be read.

I investigate more as time permit.

Best regards,

Jerome.
jerome offline
Robot Builder
Robot Builder
Posts: 16
Joined: Fri Oct 26, 2007 12:56 pm

Post by cosa » Thu Jul 03, 2008 10:02 pm

Post by cosa
Thu Jul 03, 2008 10:02 pm

If you check out the current release you'll see that I've slightly changed the serial configuration (it should be blocking now with timeouts instead of non-blocking (works both for me)).

There are defines in platform.cpp to change the timeout values.
There's also a define to disable initialisation of the serial port (personally I trust stty -F /dev/ttyUSB0 speed 115200 raw cs8)

Can you change the baudrate of the USB dongle to a standard baudrate for testing (115200) or is it fixed?
If you check out the current release you'll see that I've slightly changed the serial configuration (it should be blocking now with timeouts instead of non-blocking (works both for me)).

There are defines in platform.cpp to change the timeout values.
There's also a define to disable initialisation of the serial port (personally I trust stty -F /dev/ttyUSB0 speed 115200 raw cs8)

Can you change the baudrate of the USB dongle to a standard baudrate for testing (115200) or is it fixed?
cosa offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by jerome » Thu Jul 03, 2008 10:07 pm

Post by jerome
Thu Jul 03, 2008 10:07 pm

Hey Cosa,

I sent you a private mail to the address you gave in the first post with my progress (communication works!) and my patches.

Best regards,

Jerome.
Hey Cosa,

I sent you a private mail to the address you gave in the first post with my progress (communication works!) and my patches.

Best regards,

Jerome.
jerome offline
Robot Builder
Robot Builder
Posts: 16
Joined: Fri Oct 26, 2007 12:56 pm

Post by cosa » Thu Jul 03, 2008 11:15 pm

Post by cosa
Thu Jul 03, 2008 11:15 pm

Hi,

great!

Since my mailbox is empty :) I've sent you a private forum message with my email address.
Hi,

great!

Since my mailbox is empty :) I've sent you a private forum message with my email address.
cosa offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 40
Joined: Mon Dec 04, 2006 1:00 am

Post by jerome » Fri Jul 04, 2008 9:38 am

Post by jerome
Fri Jul 04, 2008 9:38 am

OK

Resent message with correct address :)
OK

Resent message with correct address :)
jerome offline
Robot Builder
Robot Builder
Posts: 16
Joined: Fri Oct 26, 2007 12:56 pm

Next
Next
50 postsPage 1 of 41, 2, 3, 4
50 postsPage 1 of 41, 2, 3, 4
cron