Coding with Beaglebone and BluPants

Learn how to code the fun way with a real robot. Affordable and easy to use hardware with free web based coding environment.

Categories: Intermediate

void main(){

Robot4(Humans);
}

After assembling the robot, you should be able to program it using the BluPants
Studio
. Watch the video and check out how learning to code can be fun and easy.

The video shows lessons 1 and 2 from BluPants coding class. Find more lessons
here
. Other than the basic drag and drop coding blocks shown, it also natively supports Python and advanced coding blocks set. For more information about BluPants visit
www.blupants.com
or watch our
Intro to BluPants
video.

In order to get a robot similar to the video, you will need to complete all the 4 tutorials in the BluPants robots series:

It is up to you how many extra gadgets you want to add to your bot. But regardless whether or not you add more things to it, keep in mind that the basic/MVP robot is already a very good start for learning how to code. Let’s see how you can start creating your own Beaglebone robot and learn to code with BluPants.

Parts (Basic Robot)

The basic robot is the minimum viable product (MVP) that can be used with BluPants. It will only navigate in all directions (forward, backwards, turn left and turn right). It is the bare bone you will use to build more sophisticated bots in the future.

It is recommended to assemble the MVP first, and add extra features later (distance sensor, gripper claw, camera, extra servos, etc) as you get more experienced. The parts for the extra features are marked as "optional" on the "Things used in this project" section.

For the basic MVP robot, we are going to need the parts bellow:

Basic robot (MVP) parts

Now that we know what we need, we have only one more thing to do before going to the actual assembling: check the motors polarity.

Motor Polarity

The polarity of the motors and how we attach them to the chassis will define whether the robot will move forward or backward when power is provided. It is very important to make sure you figure out the motors polarity/direction properly, before soldering the wires.

In order to do that, download the
BluPants image
file available on this
link
and flash it to a micro SD card (4G minimum). We want to make sure that the forward command will make the wheels spin in the correct direction and make the robot move the way we want.

You may refer to the official
BeagleBoard page
, or to this
video
for instructions on how to flash an SD card using
Balena Etcher
. Regardless the documentation you use, just make sure you flash the correct
BluPants image
file to your SD card.

Connecting the motors to your Beaglebone

Once you have your SD card ready with the latest BluPants image, power off your Beaglebone Blue, and insert the card to the board as shown bellow.

Insert micro SD card with BluPants image to your Beaglebone

Attach the JST connectors to the DC motor driver 1 and 2 on the board.

Connect JST wires to DC motor drivers 1 and 2

DC motor driver 1 will be connected to the left motor, and the driver 2 to the right motor.

DC motor drivers 1 and 2 connected

Now, connect the wires to the motors, but no soldering yet. You may need to invert the cables to revert the polarity in the case the wheels spin in the wrong direction. For now, just make sure you have a good physical connection between the wires and the motors.

Wires connected to the motor. No soldering yet

Mark your motors as left (connected to driver 1) and right (connected to driver 2). Define the forward direction to the opposed end where you connected the wires, as shown on the picture bellow:

Motors connected and tagged with Left and Right. Forward direction defined.

Now connect the battery, and power on your Beaglebone.

Connect battery and power on the BeagleBone

Wait for the Beaglebone to completely boot, and connect it to your WiFi network. If it is the very first time you boot it with the BluPants image, you will need to manually connect it to the WiFi. In order to setup your WiFi network properly, please refer to the official BeagleBoard documentation:
Enable network connection
, then setup
WiFi connection
.

Checking the motor polarity/direction

Once you have your Beaglebone connected to the WiFi, open a browser and visit
http://blupants.org
. Make sure the computer you are using to browse is also connected to the same WiFi network you connected your Beaglebone.

On the "Robot" drop-down menu (bottom right), select the WiFi IP address of your Beaglebone and click "Play":

Connecting to Beaglebone with BluPants

In this example the Beaglebone WiFi address is "10.0.0.119". If you cannot see any IP address try reloading the page, or opening and closing the browser. If you still can’t connect, please refer to "Troubleshooting BluPants connection" section.

Now that you are connected, drag and drop one or two "move forward" command blocks, and click "Play" to execute it.

Run forward command and observe the motors

Watch the two motors, and make sure they move to the "forward" direction.

If the motors do not run on the desired direction as shown on the video, invert the red and black wires connection to revert the polarity and run the test again.

Once you confirm the connections are good, you can go ahead with the soldering.

Soldering the motors

Now that we have our motors and wires
soldered
, and have already defined left, right motors, and forward direction, let’s start assembling our robot!

Assembling the robot

Turn off your Beaglebone and disconnect the battery. Get the chassis, and put it on the top of the motors with the exact setup we currently have on our table:

Motors disposition to have the chassis mounted on top Disconnect the Beaglebone to make assembling easierPut the chassis on the top of the two motorsInsert the two internal fasteners and hold the motors close to the chassis

Hold the motors to the chassis and flip it. Notice that the letter "L" and "R" will no longer be visible because the chassis is attached to the motor on the same surface we had written the letters.

Attach the two remaining external fasteners and use the bolts to fix themThe nuts should be fixed to the internal side of the chassis

After flipping the chassis, put the other two external fasteners close to the motors and use the bolts to fix them. The bolts should come from the outside to the inside. The nuts should be attached from the inside of the chassis.

Bring the JST connectors to the top of the chassis.

JST connectors should be brought to the top

Connect the two motor wheels and install the swivel wheel to the back of the chassis.

Connect the wheels to the motorsMount the swivel wheel on the backMount the swivel wheelScrew the bottomBolts the top to finish assembling the chassis

With the chassis ready, connect the JST connectors to the motor drivers (left JST to the driver 1 and right JST to the motor driver number 2). Then connect the battery, and power on your Beaglebone.

Connect JST to the DC motor driversConnect the battery and power on your Beaglebone

Wait for the Beaglebone to boot, open
http://blupants.org
on your web browser and you are ready to start coding with your new robot!

As you noticed on the video, our MVP robot may require some tuning. Check out the next section for more details.

Tuning BluPants robot

For a better performance and more accuracy, it is strongly recommended that you tune the BluPants robot for your environment. But, before doing that, make sure you have a proper weight distribution and have the parts on the top of the chassis well fixed to it.

At the end of the
video
we notice the robot slip when performing the turn to the right because the battery and the Beaglebone board were not attached to the chassis at all. As the battery and the Begaleboard move during the turn, the robot oversteered to the right. So before attempting to tune it, make sure your robot is steady and does not have any loosely attached part.

For tuning and customization, you need to edit the file "/root/blupants.json" on your Beaglebone. The
blupants.json
file will be reloaded every time you click the play button and execute your code.

For instance, you may want the robot to move further when executing the "move_forward()" command. For that, all you need to do is to increase the default value of

"block_length": 0.5,

to something like

"block_length": 0.9,

Or maybe you want the robot to go slower by applying a factor to the duty cycle (by default it uses half of the dc). Change the current value from

"duty": 0.5,

to something like

"duty": 0.3,

You can also compensate physical issues such as one motor running faster than the other (which prevents the robot from moving straight).

Let’s say you want you motor 2 (the motor on the right) to run 20% slower. In order to do that, you change the second value of the duty_ratio from 1.0 to 0.8.

Original setup:

"beagleboneblue":

{
"motor":
{
"duty_ratio": [1.0, 1.0, 1.0, 1.0],
}
}

Setup with motor on the right running 20% slower:

"beagleboneblue":

{
"motor":
{
"duty_ratio": [1.0, 0.8, 1.0, 1.0],
}
}

Feel free to edit the file and test your code until you get the accuracy you are looking for. If for some reason, you break the json file and the robot no longer works, just download the original copy from
github
.

wget https://raw.githubusercontent.com/blupants/blupants/master/src/python/blupants/blupants.json

You may need to restart the service after restoring a broken
blupants.json
file. For restarting the service, open a command prompt, then run:

sudo service blupants restart

Feel free to add any comments to this article if you need any further help.

Troubleshooting BluPants connection

If you cannot connect your browser to your Beaglebone, make sure your BluPants service is running. Login to your Beaglebone (default credentials are user:
root
, password:
temppwd
) and open a command prompt. Then run the command:

sudo service blupants status

The expected result should be something like this:

BluPants service status

If you need to restart your service, you can try:

sudo service blupants restart

And check the status again. Once you confirm the service is running properly, visit
http://blupants.org
on your browser and try to connect to your Beaglebone again.

Alternatively, you can try to provide your Beaglebone WiFi IP address directly on the URL. In order to manually get your WiFi IP address, run the following command from your Beaglebone command shell:

ifconfig wlan0

You should get something similar to this:

Beaglebone WiFi IP address

The IP address is shown on the third line (inet) as "10.0.0.119". Your IP will very likely be different. Now that we know our IP address, we can use it directly on our browser URL like this:

http://blupants.org/?robot_ip=10.0.0.119

Make sure you replace "10.0.0.119" by your own IP address and paste it to your browser address bar. Open the page and click the "Play" button to connect.

Manually connecting to the robot IP address

If you need any further help, please add any comments to this article, and we will provide you assistance.

What’s next?

Stay tuned for more tutorials, so you can expand your basic robot. For instance, we have a tutorial available on how to
add a claw to your robot
and another one for
adding a distance sensor to Beaglebone Blue
. The distance sensor is completely compatible with the robot we created today. Feel free to follow the instructions from the other tutorial and perform expansions to your basic MVP robot.

In the future we will be covering topics such as adding a camera with pan and tilt servos, adding a gripper claw, text to speech, computer vision with OpenCV 4, etc. All those things are already natively included in the BluPants image you just flashed to your micro SD card today.

You may want to explore it further and try new things yourself. If you feel it, check out all the parts we marked as optional on this tutorial and try building more stuff yourself. BluPants is a platform designed to allow you to learn by doing.

If you want to drop us a line, please feel free to add comments and/or reach out to us directly. Follow us on
Twitter
to stay tuned with all new releases

See you next time!

Robot4()

{
return Humans++;
}

Thank you note

The BluPants image is based on the open source project
Beagleboard
. We would like to thank all the Begaleboard community for the amazing and high quality open source hardware platform you support. If you want learn more about Beagleboard, please visit:
https://beagleboard.org
.

Comments are not currently available for this post.