Ah, the spoils of war! In Duane's furious rush to be the first mecanum to drive the figure 8 like a regular 4WD bot, he overlooked one of the mecanum's obvious advantages. They can pivot perfectly around 4 points just by driving the two most remote wheels. The stationary nearest mecanums fix the radius. I present two perfect circles, the easy way.
The two Rover 5s are sharing a single control board. It doesn't take long to switch the board over to the over Rover 5 but I wanted to try a few more tweaks with the Mecanum wheeled Rover 5 before trying the treads again.
Hey, mine is still 4WD. I am actively driving the wheels at zero speed. A 2WD bot's freewheeling wheels would interfere with those beautiful circles!
Okay, I'll let yours pass as a "4WD" if you let this pass as a figure 8:
I'm using different software with this Mecanum bot than my previous one. The previous software needed two cogs to control the four PWM channels. This version uses a single cog to drive all four channels. This new code is still rough around the edges.
Heck, I'll give it a NINE! Your start & end points might be a tad off center (but symmetrical), but the bot does a stellar job of holding heading (not rotating) while translating in nice smooth curves. Well done!
That's particularly nice for treads, which aren't known for repeatability. Even if your program has a hissy fit a the end, I'm curious how consistent it is if you run it several times in a row. Does it trace the same path all the time, and how about a hardwood/linoleum floor instead of carpet? Let's see THAT video...
You got more done than me yesterday. All I did was test my Stingray motors via a direct battery connection. A slight left hook, moving ~1.5 feet per second, using my low gear ratio motors from China. That's plenty fast. I'm more convinced than ever that the original 30:1 gearmotor are undergeared and simply too fast for this robot. IMO moving faster than 2 feet per second (indoors, navigating using sensors) is asking for a bloody nose (and a dented robots & baseboards).
Hmmm well its not great but it is my first attempt.
@Erco, I did it now we can talk
In all seriousness I signed up for a udacity physics class, and got a trig book. Once there are encoders on this babey id like to make a much more accurate circle function. All I did here was kind of calibrate the speed difference in the motors then use a ration to draw the same circle the other way. Its funny I did a whole lot better ones on test runs, and I did a whole lot worse ones, all the same code. As soon as I tried it on a hard rug the thing wouldn't even complete a circle, it made more of an arc turn. This experience shows just how important encoders are if you want to get anything done and repeat it with any kind of accuracy. Come to think of it ramping the motors may have helped this figure 8 look a little better, but considering im at a 20% duty cycle on the faster wheel there's not a whole lot of ramping to do noting under 11% pushes the thing even at a 60hz frequency.
What I find very strange is the bot starts centered, stops in the center after the first circle, then stop centered again at the end. but that second circle looks a lot looser than the first... anyone else see that?
What I find very strange is the bot starts centered, stops in the center after the first circle, then stop centered again at the end. but that second circle looks a lot looser than the first... anyone else see that?
The second loop is almost always not as clean looking as the first. You get to place the robot where you want it to be at the beginning of the first loop but the second loop begins wherever the first loop happens to end. I thought the bot looked a little forward and to the right after the first loop. I thought both loops looked great.
Hey I was wondering if any of you guys using encoders have been able to place two objects down and have your Bot do multiple figure 8s around them without knocking them over, if not it sounds like a good challenge
I'm hesitant to post this here since I've already posted a video of this robot doing a figure 8 in 4 wheel drive mode, but this time the navigation is done differently. This time the robot is using a compass to know when to switch directions and when to stop.
I have more details about the new code in my project thread.
Now I just need to find some snow so the treaded Rover 8 can make a nice big "8" (the snow has all melted around our house).
Excellenct Duane, are you using a 5883l or whatever the common one is?
Also I know you have to get the compass away from any magnetic sources, did you really need to mount it that hi?! I planed on building a 6 inch tower for mine, but now you got me second guessing that!
Excellenct Duane, are you using a 5883l or whatever the common one is?
Also I know you have to get the compass away from any magnetic sources, did you really need to mount it that hi?! I planed on building a 6 inch tower for mine, but now you got me second guessing that!
Yes, it was the HM5883L. I think I have both a Parallax and a SparkFun board. I found the SparkFun board first so I used it.
I don't think the compass needs to be raised nearly as high as I have it. That was just the first piece of carbon fiber rod I could find that wasn't even longer so I used it. I have since found some 6" pieces that I'll probably use. I haven't tested how far away the compass needs to be from the motors yet. I'll make sure I test for interference before switching to the shorter rod.
I'm not sure if the compass outputs a heading or not. The sample code I found gave the raw x, y and z values and that's what I used. Since I was already using the F32 floating point object to calculated Mecanum wheels speeds, I used F32's Atan2 method to compute the heading from the raw x and y values.
I'm going to get my robotic arm up and running and give this a try. I don't have any IK code for my arm but I'm hoping my experience with the hexapod will make writing some IK code for my arm possible.
Thanks Duane. You leg IK code should give you a head start, but I have IK code in Spin and C++, so let me know if you hit any issues. I based mine on a spreadsheet I found on Lynx Motion:
Tracing a figure eight with a pencil in the end effector? That sounds impossible, you would need to make the pencil large enough to grip. I forbid you to try it.
Comments
Speaking of geared-down motors, I started another bot this weekend. You can see where this is going.
I plan to have some nice round omni directional Mecanum wheel movements soon.
Edit(3/5/20): Fixed YouTube Link
Still, pretty very cool.
I just finished turning two more rimmed wheels into barrels. I'll hopefully have another entry to this challenge in the near future.
Hey, mine is still 4WD. I am actively driving the wheels at zero speed. A 2WD bot's freewheeling wheels would interfere with those beautiful circles!
It turns out nought tonight.
The two Rover 5s are sharing a single control board. It doesn't take long to switch the board over to the over Rover 5 but I wanted to try a few more tweaks with the Mecanum wheeled Rover 5 before trying the treads again.
Okay, I'll let yours pass as a "4WD" if you let this pass as a figure 8:
I'm using different software with this Mecanum bot than my previous one. The previous software needed two cogs to control the four PWM channels. This version uses a single cog to drive all four channels. This new code is still rough around the edges.
Edit(3/5/20): Fixed YouTube Link
Heck, I'll give it a NINE! Your start & end points might be a tad off center (but symmetrical), but the bot does a stellar job of holding heading (not rotating) while translating in nice smooth curves. Well done!
Not long ago, I would have doubted this tight of a figure 8 would have been possible with a treaded version of a Rover 5.
Isn't it beautiful?! (Not counting the fit it threw at the end.)
Rims bad, barrels good.
Erco once again saves the day (see this thread from more details).
That's particularly nice for treads, which aren't known for repeatability. Even if your program has a hissy fit a the end, I'm curious how consistent it is if you run it several times in a row. Does it trace the same path all the time, and how about a hardwood/linoleum floor instead of carpet? Let's see THAT video...
You got more done than me yesterday. All I did was test my Stingray motors via a direct battery connection. A slight left hook, moving ~1.5 feet per second, using my low gear ratio motors from China. That's plenty fast. I'm more convinced than ever that the original 30:1 gearmotor are undergeared and simply too fast for this robot. IMO moving faster than 2 feet per second (indoors, navigating using sensors) is asking for a bloody nose (and a dented robots & baseboards).
@Erco, I did it now we can talk
In all seriousness I signed up for a udacity physics class, and got a trig book. Once there are encoders on this babey id like to make a much more accurate circle function. All I did here was kind of calibrate the speed difference in the motors then use a ration to draw the same circle the other way. Its funny I did a whole lot better ones on test runs, and I did a whole lot worse ones, all the same code. As soon as I tried it on a hard rug the thing wouldn't even complete a circle, it made more of an arc turn. This experience shows just how important encoders are if you want to get anything done and repeat it with any kind of accuracy. Come to think of it ramping the motors may have helped this figure 8 look a little better, but considering im at a 20% duty cycle on the faster wheel there's not a whole lot of ramping to do noting under 11% pushes the thing even at a 60hz frequency.
What I find very strange is the bot starts centered, stops in the center after the first circle, then stop centered again at the end. but that second circle looks a lot looser than the first... anyone else see that?
That was great!
The second loop is almost always not as clean looking as the first. You get to place the robot where you want it to be at the beginning of the first loop but the second loop begins wherever the first loop happens to end. I thought the bot looked a little forward and to the right after the first loop. I thought both loops looked great.
When you do those really tight figure 8s around plates, is the becuase you have feedback/encoders, or can you do them open loop also?
Hey I was wondering if any of you guys using encoders have been able to place two objects down and have your Bot do multiple figure 8s around them without knocking them over, if not it sounds like a good challenge
I have more details about the new code in my project thread.
Now I just need to find some snow so the treaded Rover 8 can make a nice big "8" (the snow has all melted around our house).
Edit(3/5/20): Fixed Links
Next, I wanna see Martin H do a figure 8 by ultrasonically navigating around 2 different reference points.
Then I want everyone to send me 8 dollars.
Figures! :0)
Also I know you have to get the compass away from any magnetic sources, did you really need to mount it that hi?! I planed on building a 6 inch tower for mine, but now you got me second guessing that!
Yes, it was the HM5883L. I think I have both a Parallax and a SparkFun board. I found the SparkFun board first so I used it.
I don't think the compass needs to be raised nearly as high as I have it. That was just the first piece of carbon fiber rod I could find that wasn't even longer so I used it. I have since found some 6" pieces that I'll probably use. I haven't tested how far away the compass needs to be from the motors yet. I'll make sure I test for interference before switching to the shorter rod.
I'm not sure if the compass outputs a heading or not. The sample code I found gave the raw x, y and z values and that's what I used. Since I was already using the F32 floating point object to calculated Mecanum wheels speeds, I used F32's Atan2 method to compute the heading from the raw x and y values.
I'm going to get my robotic arm up and running and give this a try. I don't have any IK code for my arm but I'm hoping my experience with the hexapod will make writing some IK code for my arm possible.
http://www.lynxmotion.com/images/html/proj057.htm
But I've added primitives like moveX, MoveY, moveZ, and moveXY which allows smooth movement between Cartesian points.
Do you mean a robot arm on a wheeled base traveling in a figure eight, or a robot arm drawing a figure eight while moving?
Or some robotic equivalent of this (kids, no try at home!): http://www.youtube.com/watch?v=ZV0qVmZ4DsU
You have learned my tactics well, Grasshopper. The student has become the master!