Skip to content

Commit

Permalink
Move from mono-repo
Browse files Browse the repository at this point in the history
  • Loading branch information
usedhondacivic committed Aug 25, 2024
0 parents commit 101677f
Show file tree
Hide file tree
Showing 14 changed files with 376 additions and 0 deletions.
1 change: 1 addition & 0 deletions CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
little-red-rover.com
Empty file added Contributing
Empty file.
121 changes: 121 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
Creative Commons Legal Code

CC0 1.0 Universal

CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.

Statement of Purpose

The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").

Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.

For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.

1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:

i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.

2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.

3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.

4. Limitations and Disclaimers.

a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.
15 changes: 15 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Little Red Docs

![Wireframe image of LRR](_images/inverted_lrr.png)

ROS enabled robots are (really) expensive, preventing many aspiring robotic engineers using powerful ROS tools.

Little Red Rover (LRR) is a highly capable, differential drive, ROS 2 robot designed for an amateur budget.
While none of the rovers' specs are top of the line, LRR gives students, hobbyists, and educators a representative ROS 2 experience and an entry point into the wonderful world of research robotics.
Extensive development tooling, example code / projects, and documentation is provided to smooth the learning curve.

## Thanks <!-- {docsify-ignore} -->

LRR is part of my Masters of Engineering (MEng) thesis for Cornell University.

Special thanks to my advisor, [Professor Tapomayukh Bhattacharjee](https://robotics.cornell.edu/faculty/tapomayukh-bhattacharjee-bio/) of the [EmPRISE Lab](https://emprise.cs.cornell.edu/). LRR was inspired by his course, Foundations of Robotics, and his help on the project has been invaluable.
8 changes: 8 additions & 0 deletions _coverpage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Little Red Rover

Enjoyable, extendable, affordable robotics for everyone

[Read the docs](#little-red-docs)
[GitHub](https://github.com/usedhondacivic/little_red_rover)

![color](#ffffff)
Binary file added _fonts/Randomn4yy-Regular.ttf
Binary file not shown.
Binary file added _images/inverted_lrr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions _sidebar.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
- [Hello!](/)
- [Quick start](quickstart.md "LRR | Quickstart")
- [Developing](developing/ "LRR | Developing")
- [Linux survival guide](developing/linux.md "LRR | testing")
3 changes: 3 additions & 0 deletions developing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Developing with Little Red Rover

ROS, the Robot Operating System, is a conglomeration
4 changes: 4 additions & 0 deletions developing/linux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Linux Is Awesome

Here's what you need to get started in ROS.
todo
Empty file added developing/testing.md
Empty file.
Empty file added developing/what_is_ros.md
Empty file.
103 changes: 103 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<title>Little Red Rover</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="description" content="Description">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-defaults.css">

<style>
@font-face {
font-family: 'Randomn4yy';
src: url('./_fonts/Randomn4yy-Regular.ttf');
}

.cover-main {
font-family: 'Randomn4yy', monospace;
}

.cover-main p {
font-size: 1.5em;
}

:root {
--base-background-color: #080808;

--theme-lightness: 100%;

/* Monochrome shades (darker) and tints (lighter) */
--mono-tint3: hsl(var(--mono-hue), var(--mono-saturation), 20%);
--mono-tint2: hsl(var(--mono-hue), var(--mono-saturation), 30%);
--mono-tint1: hsl(var(--mono-hue), var(--mono-saturation), 40%);
--mono-base: hsl(var(--mono-hue), var(--mono-saturation), 50%);
--mono-shade1: hsl(var(--mono-hue), var(--mono-saturation), 70%);
--mono-shade2: hsl(var(--mono-hue), var(--mono-saturation), 89%);
--mono-shade3: hsl(var(--mono-hue), var(--mono-saturation), 97%);

--sidebar-name-font-family: 'Randomn4yy', monospace;
--sidebar-name-font-size: 2.5em;
--sidebar-nav-link-border-color: transparent;
--sidebar-nav-link-border-color--active: var(--theme-color);
--sidebar-nav-link-border-width: 0 4px 0 0;
--sidebar-nav-link-color--active: var(--theme-color);
--sidebar-nav-link-margin: 0 -25px 0 0;
--sidebar-nav-link-text-decoration: none;
--sidebar-nav-link-text-decoration--active: none;
--sidebar-nav-link-text-decoration--hover: underline;

--heading-font-family: 'Randomn4yy', monospace;
--heading-h1-font-size: var(--font-size-xxxl);
--heading-h2-font-size: var(--font-size-xxl);
--heading-h3-font-size: var(--font-size-xl);
--heading-h4-font-size: var(--font-size-m);
--heading-h5-font-size: var(--font-size-s);
--heading-h6-font-size: var(--font-size-xs);
--heading-margin: 2.5rem -0.1em -0.25em;
}
</style>
</head>

<body>
<div id="app"></div>
<script>
window.$docsify = {
name: 'Little Red Docs',
loadSidebar: true,
alias: {
'/.*/_sidebar.md': '/_sidebar.md'
},
subMaxLevel: 2,
maxLevel: 4,
plugins: [
function add_padding(hook, vm) {
var header = ['<br>'].join('');
var footer = [
'<hr/>',
'<br>',
].join('');
hook.afterEach(function (html) {
return (
header +
html +
footer
);
});
},
],
}
</script>
<!-- Docsify v4 -->
<script src="//cdn.jsdelivr.net/npm/docsify@4"></script>

<!-- Required -->
<script src="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/js/docsify-themeable.min.js"></script>

<!-- Recommended -->
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/search.js"></script>
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/zoom-image.min.js"></script>
</body>

</html>
117 changes: 117 additions & 0 deletions quickstart.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Quickstart

This guide will get you setup with Little Red Rover, and should take less than an hour. In the end you'll have an autonomous robot running ROS's [NAV2 tools]().

## Unboxing / Assembly

Included in the box you'll find the following:

* One circuit board
* One LD-20 lidar
* Two orange wheels
* Two motors with encoders
* One 18650 LiIon battery, 5000 mah
* One 4-pin JST GH 1.25mm straight across cable
* Two 6-pin JST PH 2.0mm reversed cables
* An assortment of 3D printed parts
- One front skid
- Two motor holders
- Two motor spacing shims
- Two motor attachment shims
- Two wheel spacers
* Three M3-8 machine screws
* One M2.5 hex wrench
* One USB-C to C charging cable

With these parts in hand, you're ready to assembly your robot.

TODO: Assembly video

## Software

### Dependencies

Little Red Rover uses Docker as a compatability layer with your host operating system ([what is docker?]()).
The steps for installing Docker differ depending on your host OS.

TODO: Docker installation for Mac, windows, linux, ect

For a new user, Docker can have a steep learning curve. Luckily, the [DevContainers]() project allows for seamless integration within your editor.
VSCode has first class support for DevContainers, and is the recommended editor for LRR.

TODO: VsCode installation for Mac, windows, linux, ect

Once VSCode is installed, use the extension manager to install the DevContainers extension.

TODO: How to install extension

Lastly, LRR uses Git / Github for source code management. To download the source code, you must first install git.

TODO: How to install Git

### Setting Up Your Development Environment

Our first step is to download the LRR source.

TODO

Next, we need to open the project in VSCode.

TODO

Finally, open the project using the DevContainers extension. This first installation will take some time (you're downloading all of Ubunutu and ROS2 after all).
It's recommended to use a strong internet connection during this initial setup.

TODO

Congrats! Your development enviroment is now setup.

### Connection to the Robot

On first setup, and whenever you take your robot to a new location, a network connection needs to be configured.

First, power on your robot. To do so, insert your battery and move the power switch (located just next to the USB port) to the on position.


### Rock and Roll

Now that the robot is setup, lets have some fun. To start a demo, run the following commands in your VSCode shell:

To build the ROS2 project:

bash
```
lrr_build
```

To run the demo:

bash
```
lrr_run
```

Your robot is now running, but we have no way to see whats going on!
For that, we use a program called [Foxglove]().

## Caring for your robot

### Battery Charging and Care

LRR comes with a rechargable 5000 MAh lithium ion battery. To recharge the battery, attach the provided USB cable between the robot and a power source.
LRR contains two red status LEDs for power, located next to the USB-C port.
The first, labeled `PWR GOOD`, turns on when the USB-C connection is supplying ample power to the system.
The second, labeled `CHARGING`, turns on when the battery is actively charging. Once your battery is fully charged, this light will turn off.

> [!WARNING]
> NEVER, ever ever ever, charge lithium batteries unattended.
> Both LRR and the provided battery contain protection circuitry, but there is still a NON-ZERO CHANCE THAT THE BATTERY WILL CATCH FIRE.
> This issue is intrinsic to all cells with high power density, and it is your responsibility to use them safely.
### Storage and Transport

Little Red Rover's packaging is carefully designed to protect your robot once its assembled. Remove and lose foam and place the robot back into the box for transport.

## Troubleshooting

firewall port

0 comments on commit 101677f

Please sign in to comment.