Posts with «robot» label

A Pi Robot Without a Hat

Daughter boards for microcontroller systems, whether they are shields, hats, feathers, capes, or whatever, are a convenient way to add sensors and controllers. Well, most of the time they are until challenges arise trying to stack multiple boards. Then you find the board you want to be mid-stack doesn’t have stackable headers, the top LCD board blocks the RF from a lower board, and extra headers are needed to provide clearance for the cabling to the servos, motors, and inputs. Then you find some boards try to use the pins for different purposes. Software gets into the act when support libraries want to use the same timer or other resources for different purposes. It can become a mess.

The alternative is to unstack the stack and use external boards. I took this approach in 2013 for a robotics competition. The computer on the robots was an ITX system which precluded using daughter boards, and USB ports were my interface of choice. I used a servo controller and two motor controllers from Pololu. They are still available and I’m using them on a rebuild, this time using the Raspberry Pi as the brain. USB isn’t the only option, though. A quick search found boards at Adafruit, Robotshop, and Sparkfun that use I2C.

This approach has challenges and benefits. A stack of daughter boards makes a neat package, where external boards makes a tangle of wires. Random sizes can make mounting a challenge. Providing power can also be a hassle because of the random placement of power pins. You can’t rely on USB power, especially from a Raspberry Pi whose USB is power limited.

On the other hand, external boards can offload processing from your main processor. Once a command is sent, these boards handle all the details including refresh requirements. They are likely to provide capabilities beyond the microcontroller software libraries since their processors are dedicated to the task.

I am using an 18-channel board from the Pololu Maestro Servo Controller family of boards that control from 6 to 24 servos using a single board. You might find the Adafruit 16 channel I2C board a useful alternative. For motor control I turned to the Pololu Simple Motor Controller family using one that will handle 18 amps. Others will handle from 7 to 25 amps. Or consider the Sparkfun Serial Controlled Motor Driver. Another source for USB controllers is Phidgets. I experimented with one of their spatial devices for the original robot. I should have used it to measure the tilt since one of my robots rolled over on a hill. Ooops!

Servo Control

The board currently installed on my robot is the Mini Maestro 18. The Maestro provides control over the servo speed, acceleration and movement limits. A home position can be set for startup or when errors occur. You can even do scripting or set movement sequences to play on command.

On the hardware side, the Maestro also allows channels to be used for digital input or output, and some channels for analog input. On some there is one channel for pulse width modulation output. An onboard regulator converts the servo power input to the voltage needed by the processor, simplifying part of the power distribution challenge.

My previous robot used the Maestro to control pan and tilt servos for camera positioning, a servo to lift samples from the ground, and a safety LED. Two analog inputs from current sensors on the motors helped avoid burnout during stalls, and four inputs from a simple RF key fob transmitter provided control. The latter came in handy for testing. I’d program a test sequence such as starting a 360° camera scan for landmarks or drive onto the starting platform and drop the sample. A button press on the key fob would initiate the activity. One button was always set up as an emergency halt to stop a rampaging robot. The rebuild is following this pattern with some additions.

Motor Controller

The two Simple Motor Controllers (SMC) each handled the three motors on either side of the Wild Thumper chassis. The SMC does more than just control the motor speed and direction. You can set acceleration, braking, and whether forward and reverse operate at the same or different speeds. The board monitors a number of error conditions for safety. These stop the motor and prohibit movement until cleared. Such blocking errors include lost communications, low input voltage, or drivers overheating.

An additional capability I found extremely helpful is the ability to read signals from a radio control (RC) receiver. These signals can be used to control the motor and, with some cross wiring between two controllers, provide differential drive control. This is useful for driving the robot to a new location using an RC transmitter. I didn’t use the RC inputs directly. Instead I read the RC inputs and issued the control commands from my program. This let me monitor the speed in my program logs for correlation with the other logged data. I also used an input to command the robot into autonomous or RC control operations. There are also two analog inputs that can be used to directly control the motor and can be read through commands.

Serial Communications

USB ports were my choice for communications but there is also a TTL level serial port with the standard RX and TX pins. This port can be used by the Raspberry Pi, Arduino, or any other microcontroller that has a TTL serial port.

The Maestro boards using USB appear as two serial ports. One is the command port that communications with the Maestro processor. The other is a TTL port. This port can serve as simply a USB to TTL serial port converter to allow communications with other boards, even from another vendor. Another use of the TTL port is to daisy chain Pololu boards. I could attach the SMC boards in this manner and save two USB ports for other devices. These boards support this by having a TXIN pin that ANDs the TX signal from the connected board with the TX on the board.

Both of these controllers support a few different communications protocols. I use the one Pololu created and is available on some of their other products. The command details are different between the boards, but the basic command structure is the same. They call it their binary protocol, and the basic format follows:

0xAA, <device address>, <command>, <optional data>, <crc>

All the fields are single bytes except for the data field which is frequently 2 bytes to transmit 16-bit data. The returned data is only one or two bytes with no additional formatting. Note they provide for detecting errors in the message by using a CRC (cyclical redundancy check). This is probably not critical over USB but a TTL line might receive noise from motors, servos, and other devices. A CRC error sets a bit in the error register that can be read if the command is critical.

I wrote my own code, C++ of course, for the PC and converted it just now to the Raspberry Pi. The main change is the different serial port code needed by Linux and Windows. Pololu now provides Arduino source for the protocol making it easy to use these boards with that family of controller boards.

Wrap Up

The chassis, Pi, and these boards are now installed on the Wild Thumper chassis along with a pan and tilt controlled by servos. A safety LED is on when power is applied and flashes when the robot is actively controlling the system. A LiPo battery powers all but the Pi because I need to configure a battery eliminator circuit to provide five volts. I’m powering it temporarily using a USB battery pack.

A test program, cross compiled from my desktop, moves the robot forward, pivots left than right, and then reverses. The pan / tilt moves and the LED flashes. I originally used a web camera for vision processing but will switch to the Pi camera since it is better. The Neato lidar discussed in a previous article will soon find a place onboard, along with an accelerometer to detect possible rollovers.

I’m sure I could have done this using Pi daughter boards despite the challenges I mentioned earlier. There are trade-offs to both approaches that need to be considered when working on a project. But there is one final advantage to the external boards: they have a lot of twinkly LEDs.

Product photos from Pololu.


Filed under: Arduino Hacks, Raspberry Pi, robots hacks

A Robot In A Day

While building a robot (nearly) from scratch isn’t easy, it needn’t be a lengthy process.  Is it possible to build a bot in a single day? With some musical motivation (a 10 hour loop of the A-Team theme song), [Tyler Bletsch] answers with a resounding ‘yes’ in the shape of his little yellow robot that he built for a local robotics competition.

Designing and fabricating on the fly, [Bletsch] used Sketchup to design the chassis, and OpenSCAD to model the wheels while the former was being 3D printed. Anticipating some structural weakness, he designed another version that could bolt to wood if the original failed, but the addition of some metal support rods provided enough stability. Mouse pad material gave the wheels ample traction. An Arduino with the L298 control module receives input via an HC-06 Bluetooth board. Eight AA batteries provide 12V of power to two Nextrox mini 12V motors with an integrated voltmeter to measure battery life.

Lacking a proper drive belt provided a bit of a challenge, so [Bletsch] — in an ingenious expression of resourcefulness — cobbled together an effective solution with some superglue and 3D printing filament packaging; the heat pressed parts proved to be strong and flexible. Waste not maker skills in action!

Arduino code was borrowed from a TerrorBytes student — the organization hosting the competition — and adapted by [Bletsch]. A python script combined with a joystick emulator he made in Google App inventor and some control equations from WPILiB allowed him to control his new robot from his phone.

Whether they are expressing your maker skills, assisting with your luggage or with your board meetings, robots can be a valuable inclusion in everyday life — or just a fun way to spend one day of it.


Filed under: robots hacks

Multipurpose Robot For the Masses

As the cost of almost every technology comes falling down, from electronics to batteries to even tools like 3D printers, the cost to build things formerly out of reach of most of us becomes suddenly very affordable. At least, that’s what [John Choi] has found by building a completely DIY general purpose robot for around $2000.

OK, so $2000 isn’t exactly “cheap” but considering that something comparable (like Baxter) costs north of what a new car would cost means that [John] has dropped the price for a general-purpose robot by an order of magnitude. And this robot doesn’t skimp on features, either. It has a platform that allows it to navigate rooms, two manipulating limbs with plenty of servos, a laptop “head” that allows for easy interface, testing, and programming, and an Arduino Mega that allows it to interface with any sensors or other hardware with ease. It’s also modular so it can be repaired and transported easily, and it uses open source software and open hardware so it’s easy to build on.

This robot is an impressive piece of work that should help bring this technology to more than just high-end factories and research labs. They’ve already demonstrated the robot watering plants, playing the piano, picking things up, and many other tasks. We’d say that they’re well on their way to their goal of increasing the number of students and hobbyists who have access to this technology. If the $2k price tag is still too steep, though, there are other ways of getting into robotics without diving headfirst into a Baxter-like robot.

 

 


Filed under: robots hacks

Quadrupede bluetooth Spider

 

After printing pieces to Prusa I3 is the new 4-legged spider with bluetooth comm :)

    

read more

Let's Make Robots 07 Jun 20:27
32 servo controler  6v  arduino  balance  battery  biped  bluetooth  fast  greek  grrobot  hands  head  hexapod  humanoid  led  legs  mg995  mini servo  move  one leg  program  relay  robot  robotics  servos  slow  ssc32  step  vb.net  walk  warior  

Win a Jetduino robotics board for the JetsonTK1

I just launched a contest to give away 2 prototypes of the new Jetduino robotics interface board for the Jetson TK1. The Jetduino mounts on top of the TK1 and level shifts all of its GPIO, I2C, serial and SPI lines to 3.3V or 5v. It has Grove and 3-pin 2.54mm headers to make it very easy to connect commercial off-the-shelf sensors to the Jetson and communicate with them via Python or C++. It also has a built-in shield for any Mega or Uno form factor Arduino.

read more

Otto - build you own robot in two hours!

Primary image

What does it do?

Otto walks, dances, makes sounds and avoids obstacles, is completely open source, Arduino compatible, 3D printable, and with a social impact mission to create an inclusive environment for all kids.

Otto was inspired by another robot instructable BoB the BiPed and programmed using code from another open source biped robot called Zowi.

CC-BY-SA

Otto's differences are in the assembled size (11cm x 7cm x12cm), cleaner integration of components and expressions.

Cost to build

$49, 00

Embedded video

Finished project

Complete

Number

Time to build

2 hours

Type

URL to more information

Weight

250 grams

read more

Open Source Robotics With WireBeings

Everyone needs a cute robotic buddy, right? [Matthew Hallberg] created WireBeings, an open source 3D printed robotic platform. Looking like a cross between Wall-E and Danbo, WireBeings is designed around the Arduino platform. We do mean the entire platform. You can fit anything from an Arduino micro to a Mega2560 stacked with 3 shields in its oversized head. There’s plenty of room for breadboards and custom circuits.

WireBeings is designed to be 3D printed. All the non-printable parts are commonly available. Gear motors, wheels, the ubiquitous HC-SR04 ultrasonic sensor, and a few other parts are all that is needed to bring this robot to life. Sketches are downloaded via USB. Once running, WireBeings can communicate via an HC-06 Bluetooth module.  If the Arduino isn’t enough power for whatever project you’re working on, no problem. [Matt] designed WireBeings to carry a smartphone. Just connect the robot and phone via Bluetooth, and let the phone’s processor do all the heavy lifting. What if you don’t have a spare phone? Check our report on hacks using prepaid Android Smartphones.

We could see WireBeings as the centerpiece for a “learn Arduino” class at a hackerspace. Start with the classic blinky sketch on one of the robot’s eyes. Build from there until the students have a fully functioning robot.

There is definitely room for improvement on the WireBeings project. [Matt] made the rookie mistake of going with a single 9-volt battery to power his creation. While a 9V is fine for the Arduino, those motors will quickly drain it. [Matt’s] planning on moving to a LiPo in the future. Why not stop by the project page and give him a hand?


Filed under: robots hacks
Hack a Day 13 Apr 12:00

Simone Giertz Joins “Tested,” Builds Popcorn Feeding Helmet

Crappy robot maker, techno-humorists, and all-around awesome human, Simone Giertz, builds a popcorn helmet with Adam Savage.

Read more on MAKE

The post Simone Giertz Joins “Tested,” Builds Popcorn Feeding Helmet appeared first on Make: DIY Projects and Ideas for Makers.

Pipe in (Robot) Hand

How do you make a robot hand? If you are [Robimek], you start with some plastic spiral tubing, some servo motors, and some fishing line. Oh, and you also need an old glove.

The spiral tubing (or pipe, if you prefer) is cut in a hand-like shape and fused together with adhesive. The knuckle joints are cut out to allow the tubing to flex at that point. The fishing line connects the fingertips to the servo motors.

The project uses an Arduino to drive the servos, although you could do the job with any microcontroller. Winding up the fishing line contracts the associated finger. Reeling it out lets the springy plastic pipe pull back to its original position.The glove covers the pipes and adds a realistic look to the hand.

Granted, this is probably more practical as a display piece than a working hand. We’d like to put it in our next Halloween project. We’ve seen some simple hand builds before, but the glove is a nice touch. For some reason, many of our robot hand projects like to make rude gestures. You can see a video of [Robimek]’s hand working below.


Filed under: Arduino Hacks, robots hacks

Pipe in (Robot) Hand

How do you make a robot hand? If you are [Robimek], you start with some plastic spiral tubing, some servo motors, and some fishing line. Oh, and you also need an old glove.

The spiral tubing (or pipe, if you prefer) is cut in a hand-like shape and fused together with adhesive. The knuckle joints are cut out to allow the tubing to flex at that point. The fishing line connects the fingertips to the servo motors.

The project uses an Arduino to drive the servos, although you could do the job with any microcontroller. Winding up the fishing line contracts the associated finger. Reeling it out lets the springy plastic pipe pull back to its original position.The glove covers the pipes and adds a realistic look to the hand.

Granted, this is probably more practical as a display piece than a working hand. We’d like to put it in our next Halloween project. We’ve seen some simple hand builds before, but the glove is a nice touch. For some reason, many of our robot hand projects like to make rude gestures. You can see a video of [Robimek]’s hand working below.


Filed under: Arduino Hacks, robots hacks