Skip to content

Public Repo for the Cornell Blossom Robot

License

Notifications You must be signed in to change notification settings

wenhaox/blossom-public

Repository files navigation

Blossom

Blossom is an open-hardware, open-source tensile robot that you can handcraft and accessorize to your liking. You can read more about the project in Evan Ackerman's IEEE Spectrum article.

Here are two examples of Blossom robots:

For any questions (assembly or software related), please check/make public issues.

Get repo

In a terminal, clone this repo

git clone https://github.com/hrc2/blossom-public/

Download through a package will be added in the future.

Setup Software Dependencies

Make sure you're using Python 2.7.

To check, run python2.7 in the terminal and make sure it says "Python 2.7...." on the first line.

Also ensure that pip is installed.

Make a venv (virtual environment) in the top blossom directory:

virtualenv -p `which python2.7` venv
source venv/bin/activate

General Setup

To install dependencies, run

pip install -r requirements.txt

Mac OSX: You may need to append --user to the pip command to circumvent installation issues:

pip install -r requirements.txt --user

If this still doesn't work, you may have to append sudo before pip:

sudo pip install -r requirements.txt --user

This may require you to run in sudo for subsequent steps.

It may take a while to install the dependencies; you may want to run pip verbose to make sure that it's still downloading: pip install -rv requirements.txt

If you run into an error opening a port, try changing Blossom's permissions: sudo chmod 777 /dev/ttyACM0. Alternatively, rerun everything with admin privileges.

If you're using OSX and getting strange errors, try:

sudo chown -R $USER /Library/Python/2.7

Installation will take longer on a Raspberry Pi, and you may need additional dependencies:

sudo apt-get install xvfb

Setup for Web / Mobile UI

To be able to run the web UI or start the mobile app, install yarn.

Then cd into the blossom_web directory and run yarn install.

Building Blossom

To build your own Blossom, check out the Build Guide. The rest of this document will teach you how to set up the software to run the robot.

Note that you need to have the basic software set up to correctly build Blossom

Running Blossom

CLI

To start the CLI, plug Blossom in and run

python start.py -n [robot_name]

For example, to start Woody:

python start.py -n woody

Additional flags:

-b do not start up web ui
-p denote the port
-i specify an IP address (won't work with localhost)

Linux may default to a loopback IP (127.0.1.1); in this case you must specify the IP address using -i.

To make Woody nod, type:

s -> Enter -> yes

Available commands:

  • l: list available sequences
  • s: perform a sequence, followed by the Enter key and the sequence name
  • To perform an idler (looped gesture), enter two sequence names separated by =, e.g. s -> Enter -> yes=no (play yes then loop no indefinitely until another sequence is played).
  • q: quit

GUI

The GUI should be accessible via localhost:8000 after starting up the CLI if -b was not specified. Otherwise, the CLI should print a message stating the server url.

Mobile app (Currently only supported for Android)

Installation

The app can be installed on Android via the Expo Client app. Then, find the last stable release by searching for https://exp.host/@psychomugs/blossom-app.

Controlling the robot

In the app, tap the Settings icon in the top right.

Enter the IP address of the host computer; this is listed under "Starting server on IP_address:8000" when first starting start.py or can be found other ways.

Once the IP address is entered, go back to the controller and toggle on Control Robot.

This allows you to control the robot's orientation (pitch, yaw, roll) by moving the phone and use sliders for the height.

If Blossom is not controllable at first, unfocus and refocus the app.

About

Public Repo for the Cornell Blossom Robot

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 96.4%
  • Python 2.8%
  • HTML 0.4%
  • Objective-C 0.1%
  • Ruby 0.1%
  • Java 0.1%
  • Other 0.1%