Skip to content

Commit

Permalink
Merge back
Browse files Browse the repository at this point in the history
  • Loading branch information
tokk-nv committed Oct 1, 2020
1 parent 2f71703 commit 7df1be0
Show file tree
Hide file tree
Showing 17 changed files with 111 additions and 52 deletions.
5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<!--[<img src="https://img.shields.io/discord/553852754058280961.svg">](https://discord.gg/Ady6NtF) -->

> Looking for a quick way to get started with JetBot? Many third party kits are [now available](../../wiki/third-party-kits)!
> Looking for a quick way to get started with JetBot? Many third party kits are [now available](https://jetbot.org/master/third_party_kits.html)!
<img src="../..//wiki/images/jetson-jetbot-illustration_1600x1260.png" height="256">

Expand All @@ -14,7 +14,6 @@ JetBot is an open-source robot based on NVIDIA Jetson Nano that is

Building and using JetBot gives the hands on experience needed to create entirely new AI projects.

To get started, read the [JetBot Wiki](https://github.com/NVIDIA-AI-IOT/jetbot/wiki).
To get started, read the [JetBot documentation](https://jetbot.org).


[![Analytics](https://ga-beacon.appspot.com/UA-135919510-1/jetbot/README?pixel)](https://github.com/igrigorik/ga-beacon)
3 changes: 2 additions & 1 deletion docs/bill_of_materials.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,8 @@ You need a WiFi solution for each JetBot. Select an option and get the parts sp

#### Option 2 - USB Dongle

> Notice (5/17/2019): We're currently tracking an issue with the Linux driver for the below USB WiFi dongle that may cause connectivity issues. You can find information in [this forum post](https://devtalk.nvidia.com/default/topic/1049303/jetson-nano/jetson-nano-wifi-/post/5329699/#5329699). For now, we recommend using Option 1 listed above. Thank you to those who discovered this issue!
???+ info
Notice (5/17/2019): We're currently tracking an issue with the Linux driver for the below USB WiFi dongle that may cause connectivity issues. You can find information in [this forum post](https://devtalk.nvidia.com/default/topic/1049303/jetson-nano/jetson-nano-wifi-/post/5329699/#5329699). For now, we recommend using Option 1 listed above. Thank you to those who discovered this issue!

| **Part** | **Quantity** | **Cost** | **URL** | **Notes** |
| --- | --: | --: | --- | --- |
Expand Down
3 changes: 1 addition & 2 deletions docs/css/colors.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,5 @@
--md-primary-fg-color: #76B900;
--md-primary-fg-color--light: #C5E1A5;
--md-primary-fg-color--dark: #004D40;
--md-accent-fg-color: #004D40;
--md-accent-fg-color: #FF087F;
}

4 changes: 3 additions & 1 deletion docs/examples/basic_motion.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,6 @@ In this notebook we'll control JetBot by programming from a web browser.
2. Sign in with the default password ``jetbot``
3. Navigate to ``~/Notebooks/basic_motion/``
4. Open and follow the [``basic_motion.ipynb``](https://github.com/NVIDIA-AI-IOT/jetbot/blob/master/notebooks/basic_motion/basic_motion.ipynb) notebook
> Make sure JetBot has enough space to move around.

???+ warning
Make sure JetBot has enough space to move around.
7 changes: 5 additions & 2 deletions docs/examples/collision_avoidance.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ JetBot safe! We'll teach JetBot to detect two scenarios ``free`` and ``blocked`

#### Step 1 - Collect data on JetBot

> We provide a [pre-trained model](https://drive.google.com/open?id=1UsRax8bR3R-e-0-80KfH2zAt-IyRPtnW) so you can skip to step 3 if desired. This model was trained on a limited dataset using the Raspberry Pi V2 Camera with wide angle attachment.
???+ Hint
We provide a [pre-trained model](https://drive.google.com/open?id=1UsRax8bR3R-e-0-80KfH2zAt-IyRPtnW) so you can skip to step 3 if desired. This model was trained on a limited dataset using the Raspberry Pi V2 Camera with wide angle attachment.

<a href="https://raw.githubusercontent.com/wiki/NVIDIA-AI-IOT/jetbot/images/JL03a_Data-Collection.png"><img src="https://raw.githubusercontent.com/wiki/NVIDIA-AI-IOT/jetbot/images/JL03a_Data-Collection.png" height="320"></a>

Expand Down Expand Up @@ -50,4 +51,6 @@ JetBot safe! We'll teach JetBot to detect two scenarios ``free`` and ``blocked`
3. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...``
4. Navigate to ``~/Notebooks/collision_avoidance``
5. Open and follow the [``live_demo_resnet18_trt.ipynb``](https://github.com/NVIDIA-AI-IOT/jetbot/blob/master/notebooks/collision_avoidance/live_demo_resnet18_trt.ipynb) notebook to run the optimized model
> Start cautious and give JetBot enough space to move around.

???+ warning
Start cautious and give JetBot enough space to move around.
15 changes: 10 additions & 5 deletions docs/examples/object_following.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# Object Following

???+ attention
Please note that example for now only works with the SD card image based software setup.

In this example we'll have JetBot follow an object using a pre-trained model capable of detecting common objects like``Person``, ``Cup``, and ``Dog``. While doing this, JetBot will run the collision avoidance model from Example 3 to make sure it stays safe!

[![](http://img.youtube.com/vi/MBUEbU9Q6wg/0.jpg)](http://www.youtube.com/watch?v=MBUEbU9Q6wg "Dancing with JetBot")

> Please note that example for now only works with the SD card image based software setup.

1. Download the object detection model according to the table below

Expand All @@ -23,8 +24,12 @@ In this example we'll have JetBot follow an object using a pre-trained model cap
4. Navigate to ``~/Notebooks/object_following/``
5. Upload the pre-trained ``ssd_mobilenet_v2_coco.engine`` model to this folder

> Also make sure the collision avoidance model from Example 3 is in ``~/Notebooks/collision_avoidance``
4. Open and follow the ``live_demo.ipynb`` notebook
> Start cautious and give JetBot enough space to move around.
???+ info
Also make sure the collision avoidance model from Example 3 is in ``~/Notebooks/collision_avoidance``

6. Open and follow the ``live_demo.ipynb`` notebook

???+ warning
Start cautious and give JetBot enough space to move around.


4 changes: 3 additions & 1 deletion docs/examples/road_following.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,6 @@ In this example we'll collect an *image regression* dataset that will enable Jet
3. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...``
4. Navigate to ``~/Notebooks/road_following``
5. Open and follow the ``live_demo_trt.ipynb`` notebook to run the optimized model
> Start cautious and give JetBot enough space to move around.

???+ warning
Start cautious and give JetBot enough space to move around.
3 changes: 2 additions & 1 deletion docs/examples/teleoperation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Teleoperation

> This example requires a gamepad controller connected to your workstation.
???+ info
This example requires a gamepad controller connected to your laptop/workstation.

In this example we'll drive JetBot remotely, view live streaming video, and save snapshots!

Expand Down
32 changes: 25 additions & 7 deletions docs/getting_started.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,39 @@
# Getting Started

To get started with JetBot, just follow these steps
## Pick your vehicle!

To get started with JetBot, first pick your vehicle (hardware) you want to make.

1. Get the parts from the [bill of materials](bill_of_materials.md).
![](images/nvjetbot_vs_3rdparty.png)

> You can also start from one of the pre-bundled [third party kits](third_party_kits.md).
For details of NVIDIA-designed open-source JetBot hardware, check [Bill of Materials](bill_of_materials.md) page and [Hardware Setup](hardware_setup.md) page.

2. Follow the [hardware setup](hardware_setup.md)
To find kits available from 3rd parties, check [Third Party Kits](third_party_kits.md) page.

> If you get one of the third party kits, follow the manufacture's asssembly guide.

2. Follow the [software setup](software_setup/docker.md)
4. Run through the [examples](examples/basic_motion.md)
## Steps

Follow these steps to jump into the fun of learning AI with JetBot.

![JetBot Getting Started Steps](images/steps_nvjetbot_vs_3rdparty.png)

#### 1. Get the parts from the [bill of materials](bill_of_materials.md).

???+ hint
You can also start from one of the pre-bundled **[third party kits](third_party_kits.md)**.

#### 2. Follow the [hardware setup](hardware_setup.md)

???+ hint
If you are using a third party JetBot kit, follow the manufacture's assembly instruction.

#### 3. Follow the [software setup](software_setup/docker.md)
#### 4. Run through the [examples](examples/basic_motion.md)

After that, the rest is up to you!

## And more!

Take the examples, modify them, make JetBot do something new, or create an entirely new AI project of your own.

If you do something cool with JetBot, [let us know!](https://forums.developer.nvidia.com/c/agx-autonomous-machines/jetson-embedded-systems/jetson-projects)
Expand Down
37 changes: 26 additions & 11 deletions docs/hardware_setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ To build JetBot you'll need the following tools
3. Solder the 2-pin and 4-pin screw terminals to motor driver
4. Solder the 2-pin and 3-pin male headers to motor driver

> Pay careful attention to the position of the 3-pin header. It is
offset by 1-pin from the corner.
???+ danger
Pay careful attention to the position of the 3-pin header. It is offset by 1-pin from the corner.


### Step 4 - Strip motor driver power cable
Expand All @@ -71,7 +71,9 @@ To build JetBot you'll need the following tools

1. Select the depicted micro USB from the pack

> Pay careful attention to the image. The cables are not identical. The other micro USB cable will be used to power the Jetson Nano. Using the wrong power cable for Nano will block it's Ethernet port.
???+ danger
Pay careful attention to the image. The cables are not identical.
The other micro USB cable will be used to power the Jetson Nano. Using the wrong power cable for Nano will block it's Ethernet port.

2. Cut the depicted cable roughly ~20cm from the type-A terminal
2. Strip the rubber coating ~3cm from the cut
Expand All @@ -91,11 +93,16 @@ To build JetBot you'll need the following tools
1. Route the spliced cable through chassis

2. Secure exposed red (+) and black (-) wires to the power terminals on motor driver
> Pay attention to the markings on the motor driver. Incorrect wiring could damage the driver.

???+ danger
Pay attention to the markings on the motor driver. Incorrect wiring could damage the driver.

3. Route the spliced cable under the motor driver to organize and prevent stress on screw terminal
4. Secure motor driver to chassis using self taping screws
5. Secure left and right motor wires to motor screw terminals
> ***Notice (3/11/2019):*** We made a slight mistake: the red and black wires for the left and right motor are actually flipped in the image shown above. This will not cause damage, but the motors will spin backwards. Please flip them to the correct orientation.

???+ info
***Notice (3/11/2019):*** We made a slight mistake: the red and black wires for the left and right motor are actually flipped in the image shown above. This will not cause damage, but the motors will spin backwards. Please flip them to the correct orientation.

### Step 6 - Mount WiFi antennas

Expand Down Expand Up @@ -149,9 +156,11 @@ To build JetBot you'll need the following tools
1. Place the caster ball inside of shroud

2. Insert the caster base into shroud, securing the ball
> If the socket is too tight, file it some.

???+ info
If the socket is too tight, file it some.

3. Attach the assembled caster onto the chassis with self taping screws
> It will share two screw holes with the motor driver.

### Step 10 - Solder header onto *PiOLED* display

Expand All @@ -161,7 +170,9 @@ To build JetBot you'll need the following tools
1. Secure the 6-pin right angle header to PiOLED display by some method

2. Solder the pins depicted (3.3V, SDA, SCL, and GND solder seen when zoomed in on right image)
> The pins are close to the display screen, be careful to avoid the screen with soldering iron tip.

???+ warning
The pins are close to the display screen, be careful to avoid the screen with soldering iron tip.

### Step 11 - Wire motor driver to *PiOLED* display

Expand All @@ -170,12 +181,16 @@ To build JetBot you'll need the following tools
<a href="images/JB3-Assy_11-5.JPG"><img src="images/JB3-Assy_11-5.JPG" style="height:120px"></a>

1. Select 4 wire segment of female-female jumper cables.
> We use brown, red, orange, yellow segment. You can map the colors accordingly.

???+ info
We use brown, red, orange, yellow segment. You can map the colors accordingly.

2. Attach 3.3V (red), GND (brown), SDA (orange), and SCL (yellow) to motor driver as shown
3. Route the 4 wire jumper cable segment through chassis
4. Attach red, brown, orange and yellow wires to right angle header as depicted
> Pay close attention! Reversing the red / brown wires could damage the system.

???+ danger
Pay close attention! Reversing the red / brown wires could damage the system.

### Step 12 - Mount camera

Expand Down Expand Up @@ -230,4 +245,4 @@ To build JetBot you'll need the following tools

Once finished, your JetBot should look similar to this.

<a href="images/JB3-Assy_16-5.JPG"><img src="images/JB3-Assy_16-5.JPG"></a>
<a href="images/JB3-Assy_16-5.JPG"><img src="images/JB3-Assy_16-5.JPG"></a>
Binary file added docs/images/jetbot_getting_started_steps.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/nvjetbot_vs_3rdparty.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/steps_nvjetbot_vs_3rdparty.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 5 additions & 5 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ it because...

JetBot costs less than $250 in parts, <i>including</i> Jetson Nano. The DIY kit includes a bill of materials
which you must purchase and a 3D printed chassis that you can print, or order. If you're looking to get
up and running as quick as possible, there are also many <a href="getting_started/third_party_kits.md">third party kits</a> available
up and running as quick as possible, there are also many <a href="third_party_kits.html">third party kits</a> available
that come pre-bundled.


Expand All @@ -33,7 +33,7 @@ that come pre-bundled.

<img src="https://nvidia.box.com/shared/static/w88yo1c4bbzya2jxu11ncakt8kvqskpv.gif" style="max-width:256px;" align="left">

JetBot includes a set of <a href="notebooks">Notebooks</a> which cover basic robotics concepts like programatic motor control, to more advanced topics like training a custom AI for avoiding collisions. What you'll learn isn't limited to JetBot. You'll learn concepts related to neural network data collection and training that extend as far as your imagination.
JetBot includes a set of <a href="https://github.com/NVIDIA-AI-IOT/jetbot/tree/master/notebooks">Jupyter notebooks</a> which cover basic robotics concepts like programatic motor control, to more advanced topics like training a custom AI for avoiding collisions. What you'll learn isn't limited to JetBot. You'll learn concepts related to neural network data collection and training that extend as far as your imagination.

</div>

Expand All @@ -43,7 +43,7 @@ JetBot includes a set of <a href="notebooks">Notebooks</a> which cover basic rob

<img src="https://nvidia.box.com/shared/static/4kpi7p75z7evukuda83ymnyh2vwyjw5w.gif" style="max-width:256px;" align="right">

JetBot is programmed from your web browser. Just connect your JetBot to Wifi and launch the JetBot <a href="reference/docker">Docker Container</a>. This enables JetBot's web programming environment, which is available even after the JetBot reboots. Once your JetBot boots, just type it's IP address into your web browser and start programming.
JetBot is programmed from your web browser. Just connect your JetBot to Wifi and launch the JetBot <a href="software_setup/docker.html">Docker container</a>. This enables JetBot's web programming environment, which is available even after the JetBot reboots. Once your JetBot boots, just type it's IP address into your web browser and start programming.

</div>

Expand All @@ -62,7 +62,7 @@ related to AI, image processing and robotics. Our experiments have led us to ne
## Get Started


To get started with JetBot, follow the [Getting Started](getting_started) instructions. If you run into any issues along the way, please [let us know](https://github.com/NVIDIA-AI-IOT/jetbot/issues)!
To get started with JetBot, follow the [Getting Started](getting_started.md) instructions. If you run into any issues along the way, please [let us know](https://github.com/NVIDIA-AI-IOT/jetbot/issues)!

<div style="text-align: right;">
<a href="https://github.com/NVIDIA-AI-IOT/jetbot" class="md-button">Go to GitHub</a>
Expand All @@ -75,5 +75,5 @@ To get started with JetBot, follow the [Getting Started](getting_started) instru
We really appreciate any feedback related to JetBot, and also just enjoy seeing what you're working on! There is a growing community of Jetson Nano and JetBot users. It's easy to get involved involved...

<!--* Join the [chat server](https://discord.gg/Ady6NtF)-->
* Ask a question or report a bug by [creating an issue](../../issues)
* Ask a question or report a bug by [creating an issue](https://github.com/NVIDIA-AI-IOT/jetbot/issues)
* Share your project or ask a question on the [Jetson Developer Forums](https://devtalk.nvidia.com/default/board/139/jetson-embedded-systems/)
17 changes: 11 additions & 6 deletions docs/software_setup/docker.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
# Docker

???+ caution
If you are using a 3rd party JetBot kit, depending on the kit, it may require a customized software setup specific to the kit.

Please check the manufacture's set up instruction.

In addition to the pre-built SD card image, we also provide a docker container
in case you want to install JetBot on an existing Jetson Nano SD card.

> For this, we'll assume you've set up your Jetson Nano using the **online Getting Started guide**.
>
> - [Getting Started With Jetson Nano Developer Kit](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit)
???+ hint
For this, we'll assume you've set up your Jetson Nano using the **online Getting Started guide**.

- [Getting Started With Jetson Nano Developer Kit](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit)

### Step 1 - Configure System

Expand Down Expand Up @@ -52,7 +58,6 @@ You can do this from any machine on your local network. The password to log in
![](https://user-images.githubusercontent.com/25759564/92091965-51ae4f00-ed86-11ea-93d5-09d291ccfa95.png)


> Note: The directory you specify to ``./enable.sh`` will be mounted as a volume in the jupyter container
at the location ``/workspace``. This means the work you in the ``/workspace`` folder inside container
is saved. This is set to the root directory of Jupyter Lab. Please note, if you work outside of that directory it will be lost when the container shuts down.
???+ note
The directory you specify to ``./enable.sh`` will be mounted as a volume in the jupyter container at the location ``/workspace``. This means the work you in the ``/workspace`` folder inside container is saved. This is set to the root directory of Jupyter Lab. Please note, if you work outside of that directory it will be lost when the container shuts down.

Loading

0 comments on commit 7df1be0

Please sign in to comment.