Jump to content

Biped Cam-Operated Walker Tutorial w/Advanced Techniques [Stock + Infernal Robotics]


Fengist

Recommended Posts

TutIntro.jpg

Introduction

Ok, I'm sure your first impression looking at that picture is... geez that thing looks hideous. Well, IMHO, you'd be correct. This beast is my attempt at recreating a stock version of this: Mun Runner. When I first saw that challenge I was mostly underwhelmed by the entries (no offense to the entrants but I was looking for a 'real' walker.) The closest thing I saw to what I wanted was the entry by Parallax. You can find his walker for download here. His impressed me. It was agile, wasn't lethargic and looked like a real walker. Though it's speed was still rather slow it was at least able to climb hills. After studying what he created, I saw a major problem with his design. It requires a script to run it. I assumed he had either a programmable keyboard or something like the Nostromo. I discovered he uses uses a program called AutoKey. He basically programs a sequence of keyboard strokes into a piece of sofware that are timed properly. When he's ready to walk, he hits a keyboard command and Autokey plays them back in order to achieve movement. While his walker does work, it was a lot more complex than I wanted.

With only 4 gigs of ram and an ancient AMD quad core, I needed a 'fire and forget' walker that required nothing else to work. Turn it on, it walks. And that embarked me upon a month-long quest of building and refining. As a result of bloodying my head against the wall numerous times, I have decided to share what I have learned in order to help prevent any further emergency room visits by KSP addicts.

What I came up with is what I'm describing as a rotary cam-operated walker. Using only 4 Rotatrons as it's propulsion method, I've created a unique walker design that's both agile, powerful and, as walkers go, fast.

This tutorial will teach you the VERY BASICS of rotary cam-operated walker design. My hope, by providing this tutorial, is that some of you brilliant engineering types will take this info and run with it, thus providing me with solutions to some of the problems I've yet to master.

Now that you have some background on my insanity let me give you some warnings before you continue.

  • If you anger easily and break things, stop reading here. This tutorial will lead to immense frustration.
  • If you are not into reading a wall of text, stop here. I'm going to go into some extreme detail on KSP walker construction. You are warned.

Before you start

Before you begin constructing your walker you're going to need the Infernal Robotics (IR) mod. Until Squad comes up with something close to IR, this mod is essential for any walker construction.

The Physics of Rotary Cams

If you're unfamiliar with how a cam operates, Wikipedia has a pretty decent article on their design and uses. Basically, it looks like this:

220px-Nockenwelle_ani.gif

A cam rotates. But rather than being completely round, one side of the rotating part has an extension or offset called the 'lobe'. The lobe allows the conversion of rotary motion into vertical motion. And by duplicating a cam in KSP, we're going to change the IR Rotatrons into cams and thus, converting their round and round movement into an up and down movement that will make the legs of a walker move up and down.

The Art of Falling Down

Once upon a time, I read somewhere that bipedal walking was the art of falling down and not getting hurt. Each step you take you essentially fall forward. Before you land on your face, your other leg moves forward and stops you from falling, it then, makes you fall forward again. When designing a walker in KSP, that's exactly what you have to achieve. To fall forward, stop, then fall forward again. If you look at many of the robotic designs currently out there, like Asimo,

175px-ASIMO_4.28.11.jpg

You'll see one big problem with all of them. They're slow. It's amazing how quickly the human brain is able to determine balance and react to imbalances and move your feet in order to keep you upright. Trying to duplicate that in KSP will be currently impossible. But, we can duplicate a subset of that motion. While your hip is on a rotating ball joint and can move in multiple directions, we're going to have to be satisfied with simply up and down.

The Up and Down

Since I've already described cam's, let's start with those. If you noticed the image above, that cam is 'fixed' in that the lobe can never change. The valves you see it opening will always open the same exact distance (discounting lobe wear). We're going to improve on that design and create a cam that is variable so that we can easily change how much rotary movement gets transferred into up and down movement. Here's a closeup of two of the cams on my design.

TutRotors.jpg

Each one consists of basically 4 parts. The Rotatron motor, a sliding gantry rail, a FREE docking washer, and two stock adapters to act as the lobe. The way it works is, you turn the Rotatrons on and they begin spinning which in turn, causes the gantry rails to spin. To create a cam, you extend the gantry rails. This moves the two adapters away from the center of the Rotatrons. The FREE docking washer is there to ensure that all that rotary motion doesn't get transferred into the adapters. As the Rotatrons spin, the adapters will still move freely. This allows us to attach various parts to them, a strut in our case, and transfer all that rotary motion into an up and down motion. The further out away from the center of the Rotatrons that the adapters move on the rails, the more up and down motion we achieve.

Leg bone connected to the... hip bone

Now, by creating our own adjustable cam, we have up and down motion at our command. The next objective in creating a biped, is to have some legs. For this particular design, I'm going to keep things EXTREMELY simple. I have experimented with designs that have up to 7 pivot points per leg, for this tutorial, we're going to stick to 2 basic ones and a mechanical one.

If you look at the image at the top of this tutorial, you're gong to see 3 joints. The hip, the knee and an ankle. Believe me when I say that the most CRITICAL joint of all those is... the ankle. For that reason, we're going to use a mechanical hinge for that joint because changing ankle angle is, believe it or not, going to give us both stability and directional movement. The hip and the knee are going to be VERY simple. They're again, FREE docking washers (Note that I emphasize free. There are two types of washers, those that move freely and those that are powered. All of the ones used in this tutorial are the FREE moving variety.)

The Hip

Let's take a closer look at the joints, starting with the hip:

TutHip.jpg

The first BIG thing you'll notice in that image are the inline reaction wheels. I'll get to those later. For now, notice that between them I have a free docking washer. That allows the two outer reaction wheels to spin freely. Stuck to those is a 'Radial attachment point.' For some reason, Squad and most every modder has yet to realize that some of us NEED 90 degree parts. Since there aren't any really good ones, we're using the radial attachment point to create one. Attached to that is another adapter (for looks mostly) and to that I have an adjustable cylinder from the IR mod. That cylinder is going to allow us to experiment with leg length later. If you were to take this joint and hang it from a launch stability enhancer and launch, you'd see the hip rotate downward and the entire leg would begin to swing freely. What we want from this hip is completely free motion. No power at all.

The Knee

The knee is very similar to the hip in that it contains a single free docking washer. Much like your own hip and knee, we want them to pivot freely and let the muscles, or in our case, the cams, to do the work.

TutKnee.jpg

Now for the knee another problem arises, especially when using stock parts. Instead of a 90 degree part, we need to essentially build 180 degrees from the upper leg in order to get a decent angle on the lower leg. For this, you'll see I used more radial adapters and a short girder. While it's not pretty, it does work. Buried in that mess is the all critical, free docking washer.

The Ankle

Once you begin experimenting with walkers, you're going to QUICKLY learn that the most important parts to success are the foot and the ankle. Since our hip is a simple pivot rather than a ball joint, and since our cams are going to have a limited range (lift your feet too high and they'll splode when you bring them down) the foot and ankle are going to determine our direction of travel and how well we travel. In a perfect Kerbin, we could mimic real muscle attachment locations and have our cams pull back and forth rather than up and down on the leg. However, the physical world that Kerbals live in is vastly different. If you try to do that on Kerbin, you end up yanking the joints apart rather than swinging them. Instead, you'll see the rotors roughly placed directly above the corresponding joint and it's also why the legs are slightly bent. Because we can't mimic the full range of motion of a real leg, we're going to have to rely on the foot to do a lot of the work. By making very minute adjustments to the angle of the ankle when we walk, we end up pitching our entire walker either forward or backward. Just like I described in walking, our walker will 'fall' forward. The ankle angle determines how far above or below horizontal our walker leans. For this reason, we're using an active hinge from the IR pack.

(Note: in the real world, we'd use our hips to slightly lean forward when walking. By adjusting our walker's ankle angle, it actually achieves a similar effect. Because the hip swings freely, you'll see the legs stay mostly upright while the upper structure of the walker pitches forward.)

TutAnkle.jpg

You'll also notice we're using a full size cylinder from IR for the lower leg. This will again let us experiment with leg length later. One of the other reasons for using an active hinge for the ankle is for when you fall down. You'll find that by lifting the landing gear and rotating the ankle around, you may actually be able to stand back up. For now, keep in mind that your ankle and foot angle are going to have two drastic effects.

  1. Whether you fall down or not when launching
  2. Speed

For these reasons, the ankle needs a full range of motion.

TutAnkleRotation.jpg

The Foot

And finally, the bane of my existence, the KSP foot. If you begin experimenting with walkers, you're going to spend a LOT of time on foot design. Especially if you're trying to achieve speed or stability. Designing a proper working foot... well I haven't created one I'm satisfied with yet. Here's the issue with Kerbal feet.

Landing gear. They are pretty much essential. If you try to use any other part for the feet you'll find they tend to explode. If you try to push the limits of walker speed and leg height, landing gear will be essential. Especially now that they have built-in shock absorbers.

IF... your landing gear are angled too far from vertical, they explode when you sit your foot down.

IF... your forward toes are at the wrong angle, you'll stumble a lot. Landing gear are designed to sit firmly on a spot on the ground and they do that too well. We're going to be putting them on the ground, back up again and back down. They don't like that much. The best way I can describe the effect that the wrong angle has is, you end up stubbing your toe. It'll briefly, for example, hang on the pavement of the runway in mid stride and cause your entire walker to pitch forward.

IF... you don't have enough angle on your heel, you'll just stomp your feet and go nowhere. The rear facing landing gear actually creates a lot of your forward motion. As they absorb the shock of hitting the ground, they tend to rebound, thus pushing forward.

Getting the angles of the toes and the heel just right, will drive you nuts. I've created perfectly good walkers and had them fall on their face because of the feet. Or I've had them go nowhere, or... I've had them go backward from my intended direction. Feet and ankle angle are critical. The one I've shown here is... an all-purpose foot. It does achieve decent speeds (10-15m/s) but, it's far from perfect.

TutFoot.jpg

You'l also find that, if you have forward pointing toes, they can often (and unexpectedly) create a braking action. Too much braking and you'll fall on your face.

Connecting it all together

Now that you understand the basics of our cams and our legs, let's start attaching all these pieces together so we can see how they work.

The first thing we're going to need to do is to transfer the motion from our cams into our legs. We're only going to have two attachment points per leg. One at the knee, in order to lift the upper leg, and one at the ankle in order to lift and swing forward. We'll use struts to accomplish that task.

TutStruts.jpg

Here's where you need to pay a bit of attention to details. First, the upper struts on the forward cam is attached to the lobes (adapters) on our cams. The other end is connected to the inside of the knee. Make sure you connect it to the INNER part of the leg and that you don't attach it to the docking washer. The whole purpose of the forward cam is to simply lift the upper leg. When it does so, that upper leg should move freely. If you accidentally attach it to the docking washer, you just locked the knees motion. Take a better look at the screenshot of the knee and you'll see that I attached mine to the radial adapter.

The rear cam is attached just above the ankle. Again, it's purpose is to provide lift for the leg and some forward motion. In the screenshot you'll see that I've attached mine to the end of the cylinder. IF you attach it to the foot, keep in mind, that you just negated the ankle hinge. While it will still flex, every time you do flex the ankle, you'll end up pulling or pushing on the cam.

Transferring Power

Now that we have everything attached, we need to make sure that we can turn the motors on. Here's where you'll need at least one action group. While you can play around with these settings I'm going to try to describe simple forward motion. Other ways of configuring this will lead to... well unpredictable results or... leap frogging (My video of Mun Walker shows it leaping... predictably). First, make sure all four rotors are set to speed 1 (right click on them). Next create your action group so that all the Rotatrons on one side (left or right) spin in the same direction usually by setting them both plus or both minus.

Next, depending on how you attached your rotors, the ones on the opposite side will need to be set to spin the opposite direction. The goal here is to get all of the rotors spinning either forward or backward.

TutRotorDirection.jpg

You may have to attach a launch stabilizer and make a few test launches to make sure you have them all spinning the right way. Once you do, create another action group and have them spin the opposite of the previous group. In your experimentation you'll want to test them in both directions. They do have an affect on how the legs work.

Next, you'll want to test your gantry rails. The objective here is to have opposing sides. For example, when you launch and click on the servo to slide the rails, the two on the left side should slide forward and the two on the right side should slide backward. The reason for this is to have the motion of your legs opposed. If, for example, all of your rails slide forward, when you turn on the rotors, both legs make the exact same movement and, you end up jumping.

Whether the rails slide forward or backward on any one side is irrelevant, as long as the OTHER side slides the opposite way.

TutGantryDir.jpg

The final thing you'll need to do is to organize your servos in the IR popup. (Screen shot in a bit to show you my organization) You'll want hinges, gantry rails, rotors and cylinders all in their own group. The washers, since they should be free moving, don't do a thing when you activate a servo after launching so they can go anywhere. Usually I put them into their own group and never use it.

Let's go for a walk

Ok, now it's time to launch. Once you do, the very FIRST thing you want to do is turn SAS on. You'll notice that I have a number of reaction wheels on my design. It's unfortunate, but in KSP there is no 'inner ear' to keep things balanced. Instead, we have the good old gyroscope. Without these, walking in KSP would be... difficult, not impossible but you'd spend a LOT of time correcting and balancing. They're also the reason you see a lot of thermo generators sticking out of my design, they eat gobs of power. Another option here that I've seen on some designs is to use RCS to maintain balance. While this does work, monopropellant is a consumable. It may offer more stability than my basic design but, I don't have to stop and refill anything. In your experimentation, keep your options open.

So now, if you turned SAS on, hopefully you're balanced. For your first test run, make sure the rotors all spin the right way and the gantry rails slide the right way. (if you're using my craft file, the action group to spin the rotors forward is 1). If they do, it's time to experiment.

This particular design, I have had pretty dismal results with the rotors spinning at anything less than 15. To me, that's really too fast. All of my others work well at 10 and less. One thing you'll find is that once you turn the rotors on, they will create their own new gyroscopic effect. On the design I have shown, it leans the whole walker forward and causes it to veer slightly to the right. Nothing that isn't manageable though. If your rotor speed is too slow or your rails aren't out far enough, you'll just stay in one spot and wobble a lot. And I've discovered that each design has it's own 'personality.' The design I've shown should work at speed 10. But, if you try it at speed 10 some weird harmonics develop and your legs get off sync. So, if you're using my craft file, set the speed at 15. If you're designing your own, you'll need to experiment to find what rotor speeds work well with your design.

TutServo.jpg

At this point, you may want to lean backward or forward a bit depending on your design to compensate for the gyroscopic motion of the rotors. Plus, you're about to create forward motion and it will quickly pitch your walker backward. You need to be prepared for that shift and compensate. Using the servo buttons, SLOWLY... A FRACTION OF A DEGREE... adjust your ankles to lean the walker forward or backward depending on the angle you initially start at. You'll find that once you're walking even a SLIGHT change in ankle angle has huge a effect. Now, if everything went right, you're still standing upright with the rotors spinning. Next, using the servo control panel, slide your rails. On my craft file, it's safe to slide them all the way forward or backward, it's the same effect either direction. Once you start experimenting with different size rails, take it easy. Too much motion on those rails leads to too high lift and you'll end up slamming your foot down and things start sploding. Another thing to keep in mind is that the gantry rails, regardless of size, move the same exact distance. This means that when you activate the servos for the rails that a 1/4 size rail will be fully extended while a full size rail will be only 1/4 extended (in the same amount of time). You may want to adjust your rail speeds so that they all extend equally. In my craft file, they're all at the same speed so the 1/4 rail is fully extended while the 1/2 rail is only half extended.

Now that your cams are fully extended, you should be off and walking, if not running. If you're not moving very fast, slowwwly... adjust your ankle so that you're leaning a bit forward while manually maintaining your pitch. Eventually, you'll find the 'sweet spot' where the ankle angle is just right, the pitch is just right (usually -10 degrees or so) and the rails are positioned properly and it'll walk without you having to do anything.

An experimenter's dream... (nightmare)

With any luck at all, you were able to start walking. Some things to keep in mind if you had problems:

Ankle angle: I know I keep bringing this up but it's so critical. If you want to go forward, angle your ankles so that the entire walker leans forward. Make very SMALL adjustments and wait to see if they had an effect. If you want to slow down, angle them so the walker leans backward.

Stopping: When you're ready to stop, keep in mind that this walker design, particularly my craft file, moves on average at 9-10 m/s. If you try to stop too quickly, you'll end up on your nose. To stop, you need to 'center' the gantry rails. Hit the '0' button on their servo control for a second, (you'll see me do this in the video) wait, watch for slowing down, adjust your angle backward a bit if needed, then hit it again. If you simply hold the button down, you'll stop too quickly.

Stomping: On my craft file, one of the peculiarities of the design is that it will stomp in place. If you hit the action key '2' the rotors spin backward. The net effect is, the walker goes nowhere. If you adjust the ankle angle a bit, you can move backward. Another use is to spin completely around. By lifting the legs in place it has 0 forward motion but is still able to turn.

Running: Just like waking and running IRL, there is a point whereby you can travel faster than your legs can move. The same applies to walkers. The further forward you lean them the faster they'll move. But, if you overcome the ability of the reaction wheels to keep you upright, you leave lots of parts on the ground behind you. Finding that balance is... a trick.

Leg Length: You'll soon discover that just about every part, piece, angle... everything has an effect on walkers. I usually include some method to adjust the length of the legs. While this does change a lot of angles on things, just by extending the legs on the Mun Walker design I went from 10 m/s to 18 m/s. Now I realize to jet pilots that doesn't sound like much but for a pair of mechanical legs... that's haulin'.

And now, if you dare...

Before you click this link... I've shown you the VERY BASICS of walker design using cams. Unlike aircraft or rockets or even rovers in KSP, the affect that even small changes have on the design can lead to huge or disastrous results. Even changing leg angles, rotor locations, attachment points, creating better washers, everything you do to a walker makes a huge change. I can tell you I haven't even BEGUN to explore the possibilities using cam power.

I created this tutorial because, despite all the other fun things I've done in KSP this... I consider my greatest accomplishment. I've just fed you with an idea of how to do the same and even improve on my design. If you can figure it out without downloading my craft file, I can tell you that the first time your walker actually WALKS... you'll be amazed. And if you can do as I did and get it to another body like the Mun... it was a blast. Climbing a nearly vertical crater by walking up it was something I seriously didn't expect it to do. Every wheeled rover I've tried that with ended up at the bottom of the crater, usually on it's roof. I'm hoping, if you can accomplish this with just my instructions then your sense of amazement and achievement will equal mine.

If, however, my explanation was lacking (a very distinct possibility) the craft file is yours to experiment with. Again, it is only the beginning.

NOTE: The craft file for this walker requires previous versions of IR. Since IR's creator has decided to use TweakScale to resize his parts and since I refuse to load 2 mods in order to use just one, this craft file is broken with the current version of IR.

Stock + IR Bipedal Walker.craft

(Apparently there were some issues with the craft file. little did I realize that Remote Tech took over the basic antenna. It should be fixed now.)

A very short video of this craft file doing it's thing.


Advanced Cam Walker Design

I'm not going to supply a craft file for this because I use so many mods in it's design that I'm certain not everyone has them. But, I'm going to describe for you some of the techniques I've experimented with in order to create a more stable and more life-like design.

TutAdv1.jpg

Here's an advanced walker design. One of the first things you'll notice is that the leg design is radically different from the stock design. When working with cam operated walkers, the only limitation is what your particular computer can handle. You can literally come up with hundreds of leg designs and cam locations. This particular experiment was designed to keep the center of gravity more centrally located over the foot and allow all the joint flexing to occur over the foot.

As I've mentioned before, one of the BIG problems with designing a walker is stubbing your toes. If the landing gear protruding out the front of the foot hits the ground at the wrong angle, you come to a rather drastic stop. This design attempts to 'fix' that problem by creating a foot that also rotates as it moves forward. This is accomplished by using a free docking washer to create a flexible ankle as well as a IR hinge to allow adjustment of that angle.

Another 'problem' this design attempts to correct is the 'wobbling' of parts. In the stock design you may have notice that many of the parts don't stay perfectly aligned. This is caused by the stresses place on the parts by the struts. In this design the knee joint has a double docking washer and the strut is connected to the center of that joint. One problem you'll discover is that when you attempt to connect a strut to your legs, the struts really like to maintain the original angle you designed them in. This creates a problem in the flexible joints because the strut 'pulls' the joint at a fixed angle and can lead to the parts becoming misaligned. This design allows the strut to keep that original angle. As the strut pulls and pushes the knee, the center portion of this joint rotates to match the strut angle.

Finally, when you watch the video, you'll notice I did something different. The rotors do not all rotate in the same direction as in the stock craft. One thing you'll want to experiment with is rotor direction and rail placement. I typically set up 4 action groups on my walkers. Two of those action groups have the rotors on the same side turning in the same direction (forward and reverse). I then set up 2 more action groups that have the rotors turning in the opposite direction on the same side. One thing you'll learn quickly is to never assume that your walker will perform best with the rotors going a particular direction. You may even discover, as I have many times, that you walker ends up going backwards better than it does forward.

TutAdv2.jpg

Here's the knee joint. You'll notice that I used 2 of the docking washers with 2 B9 end caps in the middle. The strut is connected to the end caps. This allows the center portion of this joint to rotate freely as the strut pushes and pulls on it while also allowing the upper and lower leg to swing freely.

TutAdv3.jpg

Here's a closeup of the ankle joint. You'll notice that I added in a free docking washer and that the strut is connected to the rear of the ankle. The effect this has is that when the cam pulls up on the ankle it actually rotates the ankle. When you look at the video below play close attention to how the foot 'rolls' through a cycle much like your real foot. The heel hits the ground first and then rotates to use the toes for added propulsion. The really nice part of this design is that it drastically reduced the 'toe stubbing' effect when you try to slow down. The forward landing gear is lifted each time the foot is rotated and reduces the chance that those 'toes' will jam into the ground and pitch your walker forward.

TutAdv4.jpg

Here's this design on EVE. One thing to take BIG notice of is gravity. While your walker may work just perfect on Kerbin, every planet has different gravity and thus, puts more or less stress on the legs. While this design does work on EVE, the height of the foot lift is much lower and, the upper body tends to bob and weave as the legs are moved. Thus, the speed is greatly reduced and the walking effect is considerably more violent. Finding the balance between leg weight and upper body weight is a science all in itself.

If you look REALLY close, you'll notice that a lot of my parts are misaligned. This occurred during the transfer to EVE. Make sure if you do put walkers on the launch pad that everything is locked down well.

And here's a short video of this advanced design. Again, take note of the foot rotation. This was all still accomplished with 2 rotors per leg. Oh, and you'll also take note that walking is not the only way to get where you're going.

Edited by Fengist
Link to comment
Share on other sites

Awesome! also the download doesn't work :/

You'll need to right click and 'save to file'. Annnnd... I went through the craft file and found some issues that could cause problems. Mainly, remote tech seems to modify stock parts and, KAS adds it's 'module grab' to a lot of stock parts. I went in, edited the craft and loaded it into a vanilla+magic smoke KSP and it works. So hopefully, there will be no more issues with mods not being available to the craft file.

Edited by Fengist
Link to comment
Share on other sites

  • 5 months later...
You'll need to right click and 'save to file'. Annnnd... I went through the craft file and found some issues that could cause problems. Mainly, remote tech seems to modify stock parts and, KAS adds it's 'module grab' to a lot of stock parts. I went in, edited the craft and loaded it into a vanilla+magic smoke KSP and it works. So hopefully, there will be no more issues with mods not being available to the craft file.

Sadly, something seems to have broken the craft file again. I most certainly have IR (and all associated parts) installed correctly, but attempting to load the stock walker gives several "part not found" errors.

Either way, thank you for the extensive tutorial. I'm almost terrified of the can of worms I've opened, getting my toes into this. Ker knows I have plenty on my plate already... sigh.gif

Link to comment
Share on other sites

Yea, when IR went to tweakscale, it busted the craft file. Since I'm running on a 32 bit Windows with limited memory, I have flatly refused to load a second mod in order to use the one I want. I'm still using the pre-tweak IR and haven't upgraded, which is why I never updated the craft file. One day, when I lose my old IR copy, I suppose I'll have to update it.

And if you get even half into it like I did, you have no idea just how big and absorbing that can is. I've been designing walkers for about 8 months now and, though I have some success at it, I still feel like a noob. You should see Parallax. Last I checked, he was working on designing an army of self-controlled walkers.

Edited by Fengist
Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...