So I am happy to show some pictures of the MAC-BOT concept and prototype.  The MAC-BOT is based on the PC-BOT 914 robot with a Mac Mini computer running OSX. 
The MAC-BOT concept is a joint venture between White Box Robotics Inc and Cogmation Robotics Inc.
The prototype is in the early stages of development and the design has not been finalized, so please, no comments the the placement of the Mini :~)
If you have any questions or comments please feel free to contact Cogmation Robotics orWhite Box Robotics directly.

PCBOT AVOID

(Click on Picture to launch video)

 

After writing the PC-BOT driver I thought I should do something interesting now that it is integrated in robotFoundry. I quickly developed an IR avoidance routine and let our PC-BOT loose in the office. Eventually these routines will be part of the stock robotFoundry behaviours. 

If you look closely in the video one might notice a wire coming out of the back of the PC-BOT.  The wire is used to connect the PC-BOT’s M3 Drive system to an external computer system.  Can you guess what type of system is controlling the PC-BOT?

Last week I finally completed the robotFoundry driver for the PC-BOT.  The 914 is very solid platform and think it is a very good platform for commercial robot systems.  Next I will finish the PC-BOT simulation model, most of the work has been completed, I just need to calibrate it.

 We will also be adding a simulated laser scanner to the front of the simulated PC-BOT and maybe a sonar ring.  The laser scanner will be a great addition to the model and will benefit end user who don’t have a physical scanner.

Once the sim has been completed we will be announcing a limited beta release to members of the 914PCBOTS community.  If you are not a member of this community and would like to test the software out, send me an email.

This week I was invited to give a talk to the department of Engineering at the University of Manitoba.  The talk was about graphical coding / visual programing of robotic systems and how leveraging the power of these tools can lower development costs and speed up development time.  One other benefit of using these tools is students can immediately see the results of there work and from past experiences this actually gets students excited about science and technology.

I am starting on another robotSuite project.  We have received a PC-BOT 914 from White Box Robotics and we will fully support this robot in robotSim and robotFoundry.  We have already completed a 3D model and I am now starting to do the integration ( writing the low level drivers) of the physical robot with robotFoundry.  I plan on posting a lot of details about the robot and the progress of the integration.

PC-BOT 914

PC-BOT 914

Simulated PC-BOT 914

Simulated PC-BOT 914

Today, I finally managed to get a 22 DOF humanoid robot simulated in robotSim.  Man what a lot of work.  I really thought it would have taken a lot less time, but thats how it goes.  Most of the problems were with Unity’s lack of documentation on configurable joints.  I had to really understand the PhysX 6DOF joint and translate the parameters to Unity configurable joint parameters (same joint different names).   

Once I get the Ok, I will be able to post some nice screen shots and movies.

Ok,

So it looks like my assumption was correct that manipulating the individual segments directly, somehow bypasses the physics calculations.  

I actually managed to rig my model with configurable joints and make the joints stable ( no jitter ).  The biggest gotcha that I found is to make sure that the colliders that are attached to the rigid bodies do not intersect.  If they do then there will be joint instability (jitter).

Now that I have the joints working and the slip problem solved, it is on to finish the simulation.  I have a basic walk almost finished, still needs some tweaking.

I will post some screenshots when I can

Over the course of the last few weeks I have been developing a humanoid robot simulation for robotSim

This has not been a very easy task and I seriously thought that it would take a lot less time than it did.

After getting all of the kinks out of the 3d model we started to rig the model with the different physX joints that the Unity engine had available. We first tried hinge joints and then configurable joints ( not a lot of good documentation on these joints). After the model was rigged with the joints we found that there was some very large instability in the physics calculations and the joints started to jitter, come out of their sockets and magically move the robot across the floor. We tried different parameters, bumping up the solver iteration count, reducing the projections distance / angle values and setting configure in world space true. This did help but their was still lots of jitter.

At this point we had the bright idea to just manually rotate the joints around their respective pivot points using transforms. This worked great, the robot did not jitter it could stand up and do basic stationary moves. Now, if the world was fair everything would JUST work! But it is not and we now encountered the problem of the robot not being able to move. When we start the walking algorithm the joints move like they should, but the robot starts to move on the spot! The problem looked to be that the feet were slipping with the floor.

After changing the materials of the floor / feet to rubber and doing some major testing we found that using transforms to move the joints does not actually work. What looks to be happening is that when we manually move the joints we are actually bypassing the physics calculations which causes the feet to slip because legs are not being updated by the physic engine.  

Now it is back to using joints again.  I hope this time I can get them to work properly!!!

Simulating humanoid robots are not a simple task.  I have been working on simulating joints and discovered that the current PhysX engine does not implement certain functions and that this will change the way we simulate joints.

Currently PhysX cannot report back how much torque is being applied to a joint, so there is know way of knowing when a joint has exceeded its maximum load.  This torque information is critical when simulating a robot trying to standup or pushup when it is on the ground.

I will simulate the joint torque using a method similar to the one that I have come up with to simulate a pressure sensor.  Basically I will use the Center of Mass(COM) and position of joint(fulcrum).

Once I get the formulas worked out I will post them along with some data and screenshots of one of the simulated (real) robots that I am working with.

I have been working on simulating a pressure sensor for humanoid robots. Pressure sensors mounted on both feet of a humanoid can provide a measure of how the weight of the robot is distributed across its entire body. This information is useful for humanoid robot balancing and stable walking algorithms.

There are a couple of different methods to simulate a pressure sensor and I have been looking at two.  The first method is to measure or read the force that is acting on the sensor and the second is to calculate the force directly using center of mass (COM) and acceleration.

Depending on the physics or game engine that you are using, getting the force on an object might not be an easy task.    I am using the Unity engine with integrated Ageia PhysX so one would think that this force information is available to Unity developers, but it is not!  On to the second method!

Simulating pressure using COM.  If we ignore external forces( servo forces should be negligible for small humanoids, but I will have to experiment with standing and squatting to be sure  ) applied to the robot, the force on a pressure sensor should be directly related to the mass or weight applied and gravity.  So basically to calculate pressure I will:

1.) Calculate the COM
2.) Calculate the applied mass using COM and 3d position of the pressure sensor
3.) Force = M*G

I think this should work.  I have read Pratt’s dissertation on “Exploiting Inherent Robustness and Natural Dynamics in the Control of Bipedal Walking Robots” and have used this information before for implementing basic walking algorithms.

As a first pass I will be implementing this on a simulated Robonova.  Keep ya posted!

 

robonova balancing on one foot

robonova balancing on one foot

 

simulated RoboNova

simulated RoboNova

Next Page »