From 230e03ebab962410708985cd5646cb82c1c66a32 Mon Sep 17 00:00:00 2001 From: John Welsh Date: Fri, 10 Jul 2020 14:33:00 -0700 Subject: [PATCH 1/9] docs --- README.md | 3 - docs/3d_printing.md | 65 ++++++++++ docs/battery_tips.md | 32 +++++ docs/bill_of_materials.md | 94 ++++++++++++++ docs/examples.md | 133 ++++++++++++++++++++ docs/hardware_setup.md | 237 +++++++++++++++++++++++++++++++++++ docs/home.md | 30 +++++ docs/install_from_scratch.md | 82 ++++++++++++ docs/software_setup.md | 89 +++++++++++++ docs/third_party_kits.md | 23 ++++ 10 files changed, 785 insertions(+), 3 deletions(-) create mode 100644 docs/3d_printing.md create mode 100644 docs/battery_tips.md create mode 100644 docs/bill_of_materials.md create mode 100644 docs/examples.md create mode 100644 docs/hardware_setup.md create mode 100644 docs/home.md create mode 100644 docs/install_from_scratch.md create mode 100644 docs/software_setup.md create mode 100644 docs/third_party_kits.md diff --git a/README.md b/README.md index 41a6093cd..d8001a15c 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,3 @@ 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). - - -[![Analytics](https://ga-beacon.appspot.com/UA-135919510-1/jetbot/README?pixel)](https://github.com/igrigorik/ga-beacon) diff --git a/docs/3d_printing.md b/docs/3d_printing.md new file mode 100644 index 000000000..281ac4484 --- /dev/null +++ b/docs/3d_printing.md @@ -0,0 +1,65 @@ +This page has useful information related to printing the JetBot chassis using a 3D printer. There are two methods for printing JetBot + +* Print by yourself +* Use a printing service + +## Method 1 - Print by yourself + +If you have a 3D printer, we recommend printing the JetBot components yourself! + +### Print facts + +Below are some facts related to printing a single JetBot. + +* Print time: 10-12 hours +* Material used: < 100 grams +* Material cost: ~ $2 + +### Tested Printers + +We've tested that the following printers are able to print JetBot successfully. + +| Model | Cost | URL | +|------------|------|---| +| Monoprice Voxel | $320 | [Amazon](https://amzn.to/2GbUJ5Q) | +| Ultimaker 2+ | $2500 | [Amazon](https://amzn.to/2t8UDU0) | + +### Tested Filaments + +Based on our experience, we recommend using PLA filament when printing JetBot. Below is a collection +of filaments that we have tested with the [Monoprice Voxel](https://amzn.to/2GbUJ5Q) 3D printer. + +| Brand | Thickness | Material | Color | URL | Notes | +|-------|-----------|----------|-------|-----|-------| +| AmazonBasics | 1.75mm | PLA | Silver | [Amazon](https://amzn.to/2BkrKZP) | Smooth, dark metallic finish | +| AmazonBasics | 1.75mm | PLA | Neon Green | [Amazon](https://amzn.to/2HPg1YR) | Smooth, pale finish| +| AmazonBasics | 1.75mm | PLA | Yellow | [Amazon](http://amzn.com/B07D6CPFP4/) | Bold yellow, slightly translucent | +| AmazonBasics | 1.75mm | PLA | Purple | [Amazon](#) | Smooth, pale finish | + +### Printing and slicing configuration + +* STL unit: **mm** + +* Print orientation + + + +* Slice configuration (Cura) + + + +## Method 2 - Use a printing service + +If you don't have a 3D printer on hand, and are not interested in purchasing one, there are external services +that can print the chassis for you. Below are some quotes from popular 3D printing services + +> Please note, we have not tested these services yet ourselves, so please proceed with caution. If you +> find a print service that worked well for you, we'd love to hear! Please let us know by creating +> an issue on GitHub or mentioning it in the chat channel + +| Service | Quote | +|---------|--------| +| [3DHubs](https://www.3dhubs.com/) | $36.66 | +| [Jinxbot](https://jinxbot.com/) | $91.42 | +| [Sculpteo](https://www.sculpteo.com/) | ~$100 | + diff --git a/docs/battery_tips.md b/docs/battery_tips.md new file mode 100644 index 000000000..f52831676 --- /dev/null +++ b/docs/battery_tips.md @@ -0,0 +1,32 @@ +This page has tips related to battery charging and usage for [this battery](https://amzn.to/2WRcIUe). + +### Best charging practice + +We recommend the following steps for charging your battery + +1. Shutdown JetBot (from Jupyter Lab terminal) + + ```bash + sudo shutdown now + ``` +2. Unplug Jetson Nano and the motor driver the from battery pack +3. Insert the charger into the battery pack +4. Wait for the battery to charge +5. Unplug the charger from the battery pack +6. Plug Jetson Nano and the motor driver back into battery pack + +### Prevent high current shutdown + +In high power mode, it is possible to draw more current than the battery can supply. To prevent this: + +1. Select 5W power mode + + ```bash + sudo nvpmodel -m1 + ``` +2. Confirm power mode + + ```bash + nvpmodel -q + ``` + diff --git a/docs/bill_of_materials.md b/docs/bill_of_materials.md new file mode 100644 index 000000000..c2d5c2ec1 --- /dev/null +++ b/docs/bill_of_materials.md @@ -0,0 +1,94 @@ +This page lists everything you need to build JetBot, along with purchasing links from popular vendors. + +Some of the parts are 3D printed. We provide the STL files needed to print these parts. Please see our [3d printing](3d-printing) page for tips on printing. + +### Common parts + +You need these components for each JetBot. + +| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | +| --- | --: | --: | --- | --- | +| Jetson Nano | 1 | $99.00 | [NVIDIA](https://developer.nvidia.com/embedded/buy/jetson-nano-devkit) | | +| Micro SD card | 1 | $13.99 | [Amazon](https://amzn.to/2Us6bOv) | 64GB | +| Power supply | 1 | $7.50 | [Adafruit](http://bit.ly/af1995) | Micro USB, 5V, 2.5A | +| Motor | 2 | $5.90 | [Adafruit](http://adafru.it/3777), [Amazon(1)](https://amzn.to/2MYln32), [Amazon(2)](https://amzn.to/2MU9zPb) | "TT" form factor | +| Motor Driver | 1 | $19.95 | [Adafruit](http://adafru.it/2927), [Amazon](https://amzn.to/2GvJhBA) | | +| Caster ball | 1 | $6.30 | [Amazon](http://amzn.com/B01N2S7CX6/) | 1-inch diameter | +| Battery | 1 | $15.99 | [Amazon](https://amzn.to/2WRcIUe) | 2x 5V/3A output, 10,000mAh | +| USB cable pack | 1 | $6.99 | [Amazon](http://amzn.com/B01N337FQF/) | Type A to Micro, right angle | +| *PiOLED* display | 1 | $14.95 | [Adafruit](http://adafru.it/3527), [Amazon](https://amzn.to/2GgxUxX) | | +| *PiOLED* header | 1 | $5.95 | [Adafruit](http://adafru.it/1541), [Amazon](https://amzn.to/2taLSJf), [Sparkfun](https://www.sparkfun.com/products/12792) | 2x(3+) right angle male | +| Chassis | 1 | -- | [STL file](../../jetbot/blob/master/assets/chassis.stl) | see [3D printing](3d-printing) | | +| Camera Mount | 1 | -- | [STL file](../../jetbot/blob/master/assets/camera_mount.stl) | see [3D printing](3d-printing) | + +### Camera + +You need a camera with appropriate sensor and field of view for each JetBot. Select an option and get the parts specified. + +#### Option 1 (default) - Leopard Imaging Camera + +| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | +| --- | --: | --: | --- | --- | +| Camera | 1 | $29.00 | [Leopard Imaging](https://leopardimaging.com/product/li-imx219-mipi-ff-nano/) | LI-IMX219-MIPI-FF-NANO-**H145**| + +#### Option 2 - RPi Camera V2 + Lens Attachment + +| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | +| --- | --: | --: | --- | --- | +| Camera | 1 | $23.90 | [Amazon](https://amzn.to/2MSi6lL), [Adafruit](http://adafru.it/3099) | Raspberry Pi Camera V2 | +| Camera lens attachment | 1 | $18.99 | [Amazon(1)](https://amzn.com/B07HMXJ9Y1), [Amazon(2)](https://amzn.com/B07HF81BVL/), [eBay](https://ebay.us/Fz7HGd) | 160-degree FoV | + +### WiFi + +You need a WiFi solution for each JetBot. Select an option and get the parts specified. + +#### Option 1 (default) - M2 Card + Antennas + +| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | +| --- | --: | --: | --- | --- | +| WiFi card | 1 | $18.95 | [Amazon](https://amzn.to/2WKEkum), [NewEgg](https://www.neweggbusiness.com/Product/Product.aspx?Item=9SIV21M85N2699) | M2, Intel Wireless-AC 8265 | +| WiFi antenna | 2 | $5.06 | [Arrow](https://www.arrow.com/en/products/2042811100/molex) | U.FL connectors | + +#### 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! + +| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | +| --- | --: | --: | --- | --- | +| WiFi Dongle | 1 | $9.99 | [Amazon](https://amzn.com/B003MTTJOY/) | RTL8192U chipset | + +### Wheels + +You need wheels with a "TT" motor shaft connector for each JetBot. Select an option and get the parts specified. + +#### Option 1 - 60mm + +| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | +| --- | --: | --: | --- | --- | +| Wheel | 2 | $5.00 | [Adafruit](http://adafru.it/3757) | 60mm diameter | +| Caster base | 1 | -- | [STL file](../../jetbot/blob/master/assets/caster_base_60mm.stl) | for 60mm wheel | +| Caster shroud | 1 | -- | [STL file](../../jetbot/blob/master/assets/caster_shroud_60mm.stl) | for 60mm wheel | + +#### Option 2 - 65mm + +| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | +| --- | --: | --: | --- | --- | +| Wheel | 2 | $3.00 | [Adafruit](https://www.adafruit.com/product/3763) | 65mm diameter | +| Caster base | 1 | -- | [STL file](../../jetbot/blob/master/assets/caster_base_65mm.stl) | for 65mm wheel| +| Caster shroud | 1 | -- | [STL file](../../jetbot/blob/master/assets/caster_shroud_65mm.stl) | for 65mm wheel | + +### Assembly Hardware + +You need the following parts to build JetBot. They come in packs, so order the quantity you need for the number of JetBots you are going to build. + +| **Part** | **Qty per JetBot** | **Qty per pack** | **Cost per JetBot** | **URL** | **Notes** | +| --- | --- | --: | --: | --: | --- | +| Adhesive pads | 2 | 48 | $0.14 | [Amazon](http://amzn.com/B01FIK56Q4) | | +| M2 screw | 20 | 100 | $1.29 | [Amazon](http://amzn.com/B00YBMRAH4) | 8mm long, self tapping | +| M3 screw | 4 | 60 | $0.47 | [Amazon](https://amzn.to/2tcdluk) | 25mm long| +| M3 nut | 4 | 100 | $0.24 | [Amazon](https://amzn.to/2tb8PMo) | | +| Jumper wires | 4 | 40 | $0.13 | [Amazon](https://amzn.to/2tacYQD) | Female-female, ~20cm | + +## Next + +Follow the [hardware setup](hardware-setup). diff --git a/docs/examples.md b/docs/examples.md new file mode 100644 index 000000000..3ff103320 --- /dev/null +++ b/docs/examples.md @@ -0,0 +1,133 @@ +This page lists the examples provided with JetBot. + +> Make sure your robot is connected to WiFi as described in the [software setup](software-setup) + +### Example 1 - Basic Motion + +In this example we'll control JetBot by programming from a web browser. + + + +1. Connect to your robot by navigating to ``http://:8888`` + +2. Sign in with the default password ``jetbot`` +3. Navigate to ``~/Notebooks/basic_motion/`` +4. Open and follow the [``basic_motion.ipynb``](../../jetbot/blob/master/notebooks/basic_motion/basic_motion.ipynb) notebook + > Make sure JetBot has enough space to move around. + +### Example 2 - Teleoperation + +> This example requires a gamepad controller connected to your workstation. + +In this example we'll drive JetBot remotely, view live streaming video, and save snapshots! + + + +1. Connect to your robot by navigating to ``http://:8888`` + +2. Sign in with the default password ``jetbot`` +2. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...`` +3. Navigate to ``~/Notebooks/teleoperation/`` +3. Open and follow the [``teleoperation.ipynb``](../../jetbot/blob/master/notebooks/teleoperation/teleoperation.ipynb) notebook + +### Example 3 - Collision avoidance + +In this example we'll collect an *image classification* dataset that will be used to help keep +JetBot safe! We'll teach JetBot to detect two scenarios ``free`` and ``blocked``. We'll use this AI classifier to prevent JetBot from entering dangerous territory. + +#### 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. + + + +1. Connect to your robot by navigating to ``http://:8888`` + +2. Sign in with the default password ``jetbot`` +2. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...`` +3. Navigate to ``~/Notebooks/collision_avoidance/`` +4. Open and follow the ``data_collection.ipynb`` notebook + +#### Step 2 - Train neural network + + + +##### Option 1 - Train on Jetson nano +1. Shutdown your robot and remove the micro USB power cable. + +2. Power the Jetson Nano by using the 5V wall power supply. +3. Connect to your robot by navigating to ``http://:8888`` +4. Sign in with the default password ``jetbot`` +5. In the Jupyter Lab tab, navigate to ``~/collision_avoidance`` +6. Upload the collision avoidance [training notebook](../../jetbot/blob/master/notebooks/collision_avoidance/train_model.ipynb) to this folder +7. Open and follow the ``train_model.ipynb`` notebook + +##### Option 2 - Train on other GPU machine +1. Connect to a GPU machine with PyTorch installed and a Jupyter Lab server running + +2. Upload the collision avoidance [training notebook](../../jetbot/blob/master/notebooks/collision_avoidance/train_model.ipynb) to this machine +3. Open and follow the ``train_model.ipynb`` notebook + +#### Step 3 - Run live demo on JetBot + + + +1. Power your robot from the USB battery pack + +2. Connect back to your robot by navigating to ``http://:8888`` +3. Sign in with the default password ``jetbot`` +4. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...`` +5. Navigate to ``~/Notebooks/collision_avoidance`` +6. Open and follow the ``live_demo.ipynb`` notebook + > Start cautious and give JetBot enough space to move around. + +#### Video + +This video shows multiple JetBots running collision avoidance + +[![](http://img.youtube.com/vi/6cLk9TSgFSw/0.jpg)](http://www.youtube.com/watch?v=6cLk9TSgFSw "Launching of JetBots") + +### Example 4 - Object Following + +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! + + + +1. Download the object detection model according to the table below + + | JetBot SD Card Version | Model | + |----------------|-------| + | v0.3 | [ssd_mobilenet_v2_coco.engine](https://drive.google.com/open?id=1RnNBHPDphIOWwHCSfeMCWQ7XN3w3tKFD) | + | v0.4 (latest) | [ssd_mobilenet_v2_coco.engine](https://drive.google.com/open?id=1KjlDMRD8uhgQmQK-nC2CZGHFTbq4qQQH) | +2. Connect to your robot by navigating to ``http://:8888`` + +3. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...`` +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. + +#### Video + +This video shows JetBot following a person and avoiding obstacles + +[![](http://img.youtube.com/vi/MBUEbU9Q6wg/0.jpg)](http://www.youtube.com/watch?v=MBUEbU9Q6wg "Dancing with JetBot") + +## Next + +Make JetBot smarter + +* Collect more collision avoidance data +* Try out different neural network architectures (the [torchvision](https://pytorch.org/docs/stable/torchvision/models.html) package has lots!) +* Modify the collision avoidance example for a new task (ie: ``cat`` / ``no cat``. if ``cat`` then ``run``) + +Create something entirely new! + +* Modify the collision avoidance example for your own project +* Try out some new hardware with Jetson Nano. It's easy with Jetson GPIO and [Adafruit Blinka](https://blog.adafruit.com/2019/03/18/adafruit-blinka-support-for-the-nvidia-jetson-series-nvidia-gtc19-nvidiaembedded/) + +Share it with us + +* [NVIDIA Developer Forums](https://devtalk.nvidia.com/default/board/372/jetson-projects/) diff --git a/docs/hardware_setup.md b/docs/hardware_setup.md new file mode 100644 index 000000000..af6978519 --- /dev/null +++ b/docs/hardware_setup.md @@ -0,0 +1,237 @@ +This page details the hardware setup instructions for creating JetBot + +## Tools needed + +To build JetBot you'll need the following tools + +![Long-nose-pliers_Hakko](images/Long-nose-pliers_Hakko.jpg)![wire-stripper_hakko_30-20](images/wire-stripper_hakko_30-20.jpg)![screw-driver-set_63](images/screw-driver-set_63.jpg)![soldering-iron-station](images/soldering-iron-station.jpg)![XOOL-Tweezers](images/XOOL-Tweezers.jpg) + +* Pliers + +* Wire flush cutters/wire stripper +* Phillips screwdriver (+ [Hex screwdriver for M2 hex socket screws](https://amzn.com/B00CP2GGBI/) ) +* Soldering iron and solder +* (optional) [Precision Electronics Tweezers](https://amzn.to/2t4AWg7) + +## Assembly + +### Step 1 - Clean 3D printed parts + + + + + + + +1. Remove support material from motor sockets using pliers + +2. Remove support material from all surfaces, openings and screw holes using pliers, tweezers, and/or fingernails +3. File material from openings if they are too tight + +### Step 2 - Mount motors + + + + + + + +1. Cut and remove the zip tie from each motor + +2. Tuck the wires beneath transparent band to prevent stress on solder joints +3. Insert each motor into the 3D printed chassis +4. Secure each motor with 2x M3x25mm screws + +### Step 3 - Solder motor driver + + + + + + + + +1. Break away 3-pin and 2-pin male headers from header link that comes with motor driver package + +2. Join two of the screw terminal blocks to create a 4-pin screw terminal +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. + + +### Step 4 - Strip motor driver power cable + + + + + + + +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. + +2. Cut the depicted cable roughly ~20cm from the type-A terminal +2. Strip the rubber coating ~3cm from the cut +3. Remove the green / white wires and metal shielding. +4. Strip the red and black wires about ~5mm from cut +5. (optional) Twist the exposed strand wire and coat with solder + +### Step 5 - Mount motor driver + + + + + + + + +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. +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. + +### Step 6 - Mount WiFi antennas + + + + + + + +1. Secure one patch antenna to the underside of top plate + +2. Secure the other patch antenna at edge of battery bay +3. Route connectors as shown + +### Step 7 - Remove Jetson Nano module from developer kit + + + + + + +1. Remove standoff screws from Jetson Nano module + +2. Release the side latches of SODIMM connector using hands +3. Slide Jetson Nano module out of SODIMM connector + +### Step 8 - Attach WiFi module to developer kit + + + + + + + + +1. Attach developer kit to chassis using self taping screws + +2. Snap antennae on to WiFi module using fingers +3. Remove the screw from developer kit by the M.2 socket +4. Insert WiFi module into M.2 slot on developer kit +5. Fasten WiFi module to developer kit with screw removed in (3) +6. Re-attach the Jetson Nano module to developer kit + +### Step 9 - Mount ball caster + + + + + + +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. +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 + + + + +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. + +### Step 11 - Wire motor driver to *PiOLED* display + + + + + +1. Select 4 wire segment of female-female jumper cables. + > 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. + +### Step 12 - Mount camera + + + + + + +1. Attach the camera to the camera mount using 4x self tapping screws + +2. Attach the camera mount to chassis with 4x self tapping screws +3. Insert the other end of ribbon cable into Jetson Nano developer kit +4. (optional) Tuck the ribbon cable against heat sink to organize + +### Step 13 - Attach wide angle sensor + + + + + + + + +1. Peel off the original camera sensor + +2. Remove any excess adhesive material +3. Remove the adhesive film cover from wide angle replacement sensor +4. Attach wide angle replacement sensor to camera module +5. Ensure the sensor connector is fastened to camera module + +### Step 14 - Mount battery + + + + + + +1. Attach double sided adhesive tabs to each end of battery, leaving some tab exposed + +2. Holding robot upside down, slide battery into battery bay +3. Holding the battery in place, flip the robot and secure battery to chassis + +### Step 15 - Organize wires + + + + + +1. Route USB cables through chassis to organize and prevent dragging + +## Finished JetBot + +Once finished, your JetBot should look similar to this. + + + +# Next step + +Follow the [software setup](software-setup). diff --git a/docs/home.md b/docs/home.md new file mode 100644 index 000000000..9e799fb5f --- /dev/null +++ b/docs/home.md @@ -0,0 +1,30 @@ +Welcome to the JetBot Wiki! Here you can find everything you need to get up and running with JetBot. + +If you run into any issues, please [let us know](../issues)! + +Happy JetBotting :) + +### Getting started + +> We recommend following the [Getting Started with Jetson Nano Developer Kit](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit) guide before moving on to the JetBot project. This will make sure you are familiar with the Jetson Nano and standard operation. + +Follow these steps and you should be up and running with JetBot in no time! + +1. Get parts from the [bill of materials](bill-of-materials) +2. Follow the [hardware setup](hardware-setup) +3. Follow the [software setup](software-setup) +4. Run through the [examples](examples) + +### Getting involved + +Ask a question, make a suggestion, share a project... + + +* Create an [issue](../../issues) +* Share your project on the [forum](https://devtalk.nvidia.com/default/board/139/jetson-embedded-systems/) + +### Useful stuff + +* [Battery tips](battery-tips) +* [3D printing](3D-printing) +* [jetbot_ros - Robot Operating System (ROS) port](https://github.com/dusty-nv/jetbot_ros) diff --git a/docs/install_from_scratch.md b/docs/install_from_scratch.md new file mode 100644 index 000000000..59631bbbf --- /dev/null +++ b/docs/install_from_scratch.md @@ -0,0 +1,82 @@ +s page details how to create the JetBot SD card image from scratch. + +This is useful in case you want to distribute a modified version of the JetBot SD card image. + +1. Flash SD card by following [Getting Started with Jetson Nano Developer Kit](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit). + * Use the username / password ``jetbot`` / ``jetbot`` + * Make sure to ``log in automatically`` +2. Insert SD card into Jetson Nano and power on +3. Enable i2c permissions + + ```bash + sudo usermod -aG i2c $USER + ``` +4. Install pip and some python dependencies + ```bash + sudo apt-get update + sudo apt install python3-pip python3-pil + sudo pip3 install --upgrade numpy + ``` +4. Install the pre-built TensorFlow pip wheel by following [these instructions](https://docs.nvidia.com/deeplearning/dgx/install-tf-xavier/index.html) + +4. Install the pre-built PyTorch [pip wheel](https://drive.google.com/open?id=1Eq641Jqb2Q0KBKsVpAhU-vxB_Mqcfrjd) we provide for this project. + + ```bash + sudo pip3 install torch-1.0.0a0+18eef1d-cp36-cp36m-linux_aarch64.whl + sudo pip3 install torchvision + ``` +5. Install traitlets (master, to support the ``unlink()`` method) + + ```bash + sudo python3 -m pip install git+https://github.com/ipython/traitlets@master + ``` +6. Install jupyter lab + + ```bash + sudo apt install nodejs npm + sudo pip3 install jupyter jupyterlab + sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager + sudo jupyter labextension install @jupyterlab/statusbar + jupyter lab --generate-config + jupyter notebook password + ``` + You should then enter the password ``jetbot`` (unless you want to use a custom password). +7. Install this repo + + ```bash + cd + sudo apt install python3-smbus + git clone https://github.com/NVIDIA-AI-IOT/jetbot + cd jetbot + sudo apt-get install cmake + sudo python3 setup.py install + ``` + +8. Install jetbot services + + ```bash + cd jetbot/utils + python3 create_stats_service.py + sudo mv jetbot_stats.service /etc/systemd/system/jetbot_stats.service + sudo systemctl enable jetbot_stats + sudo systemctl start jetbot_stats + python3 create_jupyter_service.py + sudo mv jetbot_jupyter.service /etc/systemd/system/jetbot_jupyter.service + sudo systemctl enable jetbot_jupyter + sudo systemctl start jetbot_jupyter + ``` + +8. Make swapfile + ``` + sudo fallocate -l 4G /var/swapfile + sudo chmod 600 /var/swapfile + sudo mkswap /var/swapfile + sudo swapon /var/swapfile + sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab' + ``` + +9. Copy JetBot notebooks to home directory + + ``` + cp -r ~/jetbot/notebooks ~/Notebooks + ``` diff --git a/docs/software_setup.md b/docs/software_setup.md new file mode 100644 index 000000000..dc4fca7ad --- /dev/null +++ b/docs/software_setup.md @@ -0,0 +1,89 @@ +s page details the software setup required to run JetBot. + +### Step 1 - Flash JetBot image onto SD card + +1. Download the expandable JetBot SD card image [jetbot_image_v0p4p0.zip](https://drive.google.com/open?id=1G5nw0o3Q6E08xZM99ZfzQAe7-qAXxzHN) + > The above image is based on JetPack 4.3. The previous image based on JetPack 4.2 may be found here: [jetbot_image_v0p3p2.zip](https://drive.google.com/open?id=1GF2D814hkViwluZ5SgNKW56cQu_5Ekt5). + +2. Insert an SD card into your desktop machine +3. Using [Etcher](https://www.balena.io/etcher/), select the ``jetbot_image_v0p4p0.zip`` image and flash it onto the SD card +4. Remove the SD card from your desktop machine + +### Step 2 - Boot Jetson Nano + +1. Insert the SD card into your Jetson Nano (the micro SD card slot is located + under the module) + +2. Connect the monitor, keyboard, and mouse to the Nano +3. Power on the Jetson Nano by connecting the micro USB charger to the micro USB port + > Important! We recommend first booting the Jetson Nano once without the piOLED / motor driver connected. + > This way you can check to make sure the system boots properly from the SD card image without + > worrying about hardware issues. After you've verified that it boots, reconnect the piOLED, + > double check your wiring, and boot again. + +### Step 3 - Connect JetBot to WiFi + +1. Log in using the user ``jetbot`` and password ``jetbot`` + +2. Connect to a WiFi network using the Ubuntu desktop GUI + +Your Jetson Nano should now automatically connect to the WiFi at boot and display it's IP address on the piOLED display. + +### Step 4 - Connect to JetBot from web browser + +After your robot is connected to WiFi, you can connect to the robot from a web browser by performing the following steps + +1. Shutdown JetBot using the Ubuntu GUI + +2. Unplug your HDMI monitor, USB keyboard, mouse and power supply from Jetson Nano +3. Power the JetBot from the USB battery pack by plugging in the micro-USB cable +4. Wait a bit for JetBot to boot +2. Check the IP address of your robot on the *piOLED* display screen. Enter this in place of ```` in the next command +3. Navigate to ``http://:8888`` from your desktop's web browser + +> You shouldn't need to connect your robot to a monitor past this step! + +### Step 5 - Install latest software (optional) + +The JetBot GitHub repository may contain software that is newer than that pre-installed +on the SD card image. To install the latest software: + +1. If you haven't already, connect to your robot by going to ``http://:8888`` + +2. Click the ``+`` icon to open the Jupyter Lab launcher +3. Launch a new terminal +2. Get and install the latest JetBot repository from GitHub by entering the following commands + ```bash + git clone https://github.com/NVIDIA-AI-IOT/jetbot + cd jetbot + sudo python3 setup.py install + ``` +3. Replace the old notebooks with the new notebooks by entering + ```bash + sudo apt-get install rsync + rsync jetbot/notebooks ~/Notebooks + ``` + +### Step 6 - Configure power mode + +To ensure that the Jetson Nano doesn't draw more current than the battery pack can supply, +place the Jetson Nano in ``5W`` mode by calling the following command + +1. If you haven't already, connect to your robot by going to ``http://:8888`` + +2. Click the ``+`` icon to open the Jupyter Lab launcher +3. Launch a new terminal +4. Select 5W power mode + + ```bash + sudo nvpmodel -m1 + ``` +5. Verify the Jetson Nano is in 5W power mode + ```bash + sudo nvpmodel -q + ``` + +## Next + +Follow the [examples](examples). + diff --git a/docs/third_party_kits.md b/docs/third_party_kits.md new file mode 100644 index 000000000..dffbcdb07 --- /dev/null +++ b/docs/third_party_kits.md @@ -0,0 +1,23 @@ +Since we launched JetBot, several third party kits using Jetson Nano have emerged. This page details the kits that we're aware of + +> Please note, we do not officially maintain these kits in this GitHub project. Please refer to the vendor's documentation. + +### JetBot Kits + +> Please note, cost and availability may vary. Please refer to the vendor URL. + +| Kit | URL | +|----------|-----| +| WaveShare JetBot Kit | [WaveShare](https://www.waveshare.com/product/mini-pc/jetson/packages/jetbot-ai-kit-acce.htm) | +| WaveShare JetBot Kit (includes Nano) | [WaveShare](https://www.waveshare.com/product/mini-pc/jetson/packages/jetbot-ai-kit.htm) | +| SparkFun JetBot Kit | [SparkFun](https://www.sparkfun.com/products/15437) | +| SparkFun JetBot Kit (includes Nano) | [SparkFun](https://www.sparkfun.com/products/15365) | +| Seeed JetBot Kit | [Seeedstudio](https://www.seeedstudio.com/Seeedstudio-JetBot-Smart-Car-Kit-p-4055.html) | +| Seeed JetBot Kit (includes Nano) | [Seeedstudio](https://www.seeedstudio.com/Seeedstudio-JetBot-Smart-Car-Powered-by-NVIDIA-Jetson-Nano-p-4054.html) | +| Silicon Highway JetBot Kit (includes Nano) | [Silicon Highway](https://www.siliconhighwaydirect.co.uk/product-p/jetbot-kit.htm) | +| FaBo JetBot Kit (includes Nano) | [FaBo](https://www.fabo.store/collections/jetbot/products/jetbot-kit) | +| GPUS JetBot Kit (includes Nano) | [TaoBao](https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.25911debPlD2nP&ft=t&id=602196310625) + +### Share with us! + +Our goal is to encourage developers to learn, have fun, and create things using AI. Whether it's JetBot, JetRacer, or your own thing... If you've developed a kit using Jetson, [let us know](../../issues)! From 9b9b62df77ccce2bc434a7afc3a13f32587aa3e5 Mon Sep 17 00:00:00 2001 From: John Welsh Date: Fri, 10 Jul 2020 14:54:41 -0700 Subject: [PATCH 2/9] index --- docs/{home.md => index.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{home.md => index.md} (100%) diff --git a/docs/home.md b/docs/index.md similarity index 100% rename from docs/home.md rename to docs/index.md From 6ff41492c748371777cffac93196a406f803ceec Mon Sep 17 00:00:00 2001 From: John Date: Fri, 10 Jul 2020 15:11:22 -0700 Subject: [PATCH 3/9] Set theme jekyll-theme-minimal --- docs/_config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/_config.yml diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 000000000..2f7efbeab --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-minimal \ No newline at end of file From cc65c14640969b9ea54724e28ef8e70d94a082a5 Mon Sep 17 00:00:00 2001 From: John Welsh Date: Fri, 10 Jul 2020 17:22:14 -0700 Subject: [PATCH 4/9] asdf --- docs/3d_printing.md | 65 ----- docs/_config.yml | 1 - docs/battery_tips.md | 32 --- docs/bill_of_materials.md | 94 ------- docs/examples.md | 133 ---------- docs/hardware_setup.md | 237 ------------------ docs/index.md | 30 --- docs/install_from_scratch.md | 82 ------ docs/software_setup.md | 89 ------- docs/third_party_kits.md | 23 -- .../basic_motion/basic_motion.ipynb | 0 .../collision_avoidance/data_collection.ipynb | 0 .../collision_avoidance/live_demo.ipynb | 0 .../collision_avoidance/train_model.ipynb | 0 .../object_following/live_demo.ipynb | 0 .../road_following/data_collection.ipynb | 0 .../road_following/live_demo.ipynb | 0 .../road_following/train_model.ipynb | 0 .../teleoperation/teleoperation.ipynb | 0 19 files changed, 786 deletions(-) delete mode 100644 docs/3d_printing.md delete mode 100644 docs/_config.yml delete mode 100644 docs/battery_tips.md delete mode 100644 docs/bill_of_materials.md delete mode 100644 docs/examples.md delete mode 100644 docs/hardware_setup.md delete mode 100644 docs/index.md delete mode 100644 docs/install_from_scratch.md delete mode 100644 docs/software_setup.md delete mode 100644 docs/third_party_kits.md rename {notebooks => examples}/basic_motion/basic_motion.ipynb (100%) rename {notebooks => examples}/collision_avoidance/data_collection.ipynb (100%) rename {notebooks => examples}/collision_avoidance/live_demo.ipynb (100%) rename {notebooks => examples}/collision_avoidance/train_model.ipynb (100%) rename {notebooks => examples}/object_following/live_demo.ipynb (100%) rename {notebooks => examples}/road_following/data_collection.ipynb (100%) rename {notebooks => examples}/road_following/live_demo.ipynb (100%) rename {notebooks => examples}/road_following/train_model.ipynb (100%) rename {notebooks => examples}/teleoperation/teleoperation.ipynb (100%) diff --git a/docs/3d_printing.md b/docs/3d_printing.md deleted file mode 100644 index 281ac4484..000000000 --- a/docs/3d_printing.md +++ /dev/null @@ -1,65 +0,0 @@ -This page has useful information related to printing the JetBot chassis using a 3D printer. There are two methods for printing JetBot - -* Print by yourself -* Use a printing service - -## Method 1 - Print by yourself - -If you have a 3D printer, we recommend printing the JetBot components yourself! - -### Print facts - -Below are some facts related to printing a single JetBot. - -* Print time: 10-12 hours -* Material used: < 100 grams -* Material cost: ~ $2 - -### Tested Printers - -We've tested that the following printers are able to print JetBot successfully. - -| Model | Cost | URL | -|------------|------|---| -| Monoprice Voxel | $320 | [Amazon](https://amzn.to/2GbUJ5Q) | -| Ultimaker 2+ | $2500 | [Amazon](https://amzn.to/2t8UDU0) | - -### Tested Filaments - -Based on our experience, we recommend using PLA filament when printing JetBot. Below is a collection -of filaments that we have tested with the [Monoprice Voxel](https://amzn.to/2GbUJ5Q) 3D printer. - -| Brand | Thickness | Material | Color | URL | Notes | -|-------|-----------|----------|-------|-----|-------| -| AmazonBasics | 1.75mm | PLA | Silver | [Amazon](https://amzn.to/2BkrKZP) | Smooth, dark metallic finish | -| AmazonBasics | 1.75mm | PLA | Neon Green | [Amazon](https://amzn.to/2HPg1YR) | Smooth, pale finish| -| AmazonBasics | 1.75mm | PLA | Yellow | [Amazon](http://amzn.com/B07D6CPFP4/) | Bold yellow, slightly translucent | -| AmazonBasics | 1.75mm | PLA | Purple | [Amazon](#) | Smooth, pale finish | - -### Printing and slicing configuration - -* STL unit: **mm** - -* Print orientation - - - -* Slice configuration (Cura) - - - -## Method 2 - Use a printing service - -If you don't have a 3D printer on hand, and are not interested in purchasing one, there are external services -that can print the chassis for you. Below are some quotes from popular 3D printing services - -> Please note, we have not tested these services yet ourselves, so please proceed with caution. If you -> find a print service that worked well for you, we'd love to hear! Please let us know by creating -> an issue on GitHub or mentioning it in the chat channel - -| Service | Quote | -|---------|--------| -| [3DHubs](https://www.3dhubs.com/) | $36.66 | -| [Jinxbot](https://jinxbot.com/) | $91.42 | -| [Sculpteo](https://www.sculpteo.com/) | ~$100 | - diff --git a/docs/_config.yml b/docs/_config.yml deleted file mode 100644 index 2f7efbeab..000000000 --- a/docs/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-minimal \ No newline at end of file diff --git a/docs/battery_tips.md b/docs/battery_tips.md deleted file mode 100644 index f52831676..000000000 --- a/docs/battery_tips.md +++ /dev/null @@ -1,32 +0,0 @@ -This page has tips related to battery charging and usage for [this battery](https://amzn.to/2WRcIUe). - -### Best charging practice - -We recommend the following steps for charging your battery - -1. Shutdown JetBot (from Jupyter Lab terminal) - - ```bash - sudo shutdown now - ``` -2. Unplug Jetson Nano and the motor driver the from battery pack -3. Insert the charger into the battery pack -4. Wait for the battery to charge -5. Unplug the charger from the battery pack -6. Plug Jetson Nano and the motor driver back into battery pack - -### Prevent high current shutdown - -In high power mode, it is possible to draw more current than the battery can supply. To prevent this: - -1. Select 5W power mode - - ```bash - sudo nvpmodel -m1 - ``` -2. Confirm power mode - - ```bash - nvpmodel -q - ``` - diff --git a/docs/bill_of_materials.md b/docs/bill_of_materials.md deleted file mode 100644 index c2d5c2ec1..000000000 --- a/docs/bill_of_materials.md +++ /dev/null @@ -1,94 +0,0 @@ -This page lists everything you need to build JetBot, along with purchasing links from popular vendors. - -Some of the parts are 3D printed. We provide the STL files needed to print these parts. Please see our [3d printing](3d-printing) page for tips on printing. - -### Common parts - -You need these components for each JetBot. - -| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | -| --- | --: | --: | --- | --- | -| Jetson Nano | 1 | $99.00 | [NVIDIA](https://developer.nvidia.com/embedded/buy/jetson-nano-devkit) | | -| Micro SD card | 1 | $13.99 | [Amazon](https://amzn.to/2Us6bOv) | 64GB | -| Power supply | 1 | $7.50 | [Adafruit](http://bit.ly/af1995) | Micro USB, 5V, 2.5A | -| Motor | 2 | $5.90 | [Adafruit](http://adafru.it/3777), [Amazon(1)](https://amzn.to/2MYln32), [Amazon(2)](https://amzn.to/2MU9zPb) | "TT" form factor | -| Motor Driver | 1 | $19.95 | [Adafruit](http://adafru.it/2927), [Amazon](https://amzn.to/2GvJhBA) | | -| Caster ball | 1 | $6.30 | [Amazon](http://amzn.com/B01N2S7CX6/) | 1-inch diameter | -| Battery | 1 | $15.99 | [Amazon](https://amzn.to/2WRcIUe) | 2x 5V/3A output, 10,000mAh | -| USB cable pack | 1 | $6.99 | [Amazon](http://amzn.com/B01N337FQF/) | Type A to Micro, right angle | -| *PiOLED* display | 1 | $14.95 | [Adafruit](http://adafru.it/3527), [Amazon](https://amzn.to/2GgxUxX) | | -| *PiOLED* header | 1 | $5.95 | [Adafruit](http://adafru.it/1541), [Amazon](https://amzn.to/2taLSJf), [Sparkfun](https://www.sparkfun.com/products/12792) | 2x(3+) right angle male | -| Chassis | 1 | -- | [STL file](../../jetbot/blob/master/assets/chassis.stl) | see [3D printing](3d-printing) | | -| Camera Mount | 1 | -- | [STL file](../../jetbot/blob/master/assets/camera_mount.stl) | see [3D printing](3d-printing) | - -### Camera - -You need a camera with appropriate sensor and field of view for each JetBot. Select an option and get the parts specified. - -#### Option 1 (default) - Leopard Imaging Camera - -| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | -| --- | --: | --: | --- | --- | -| Camera | 1 | $29.00 | [Leopard Imaging](https://leopardimaging.com/product/li-imx219-mipi-ff-nano/) | LI-IMX219-MIPI-FF-NANO-**H145**| - -#### Option 2 - RPi Camera V2 + Lens Attachment - -| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | -| --- | --: | --: | --- | --- | -| Camera | 1 | $23.90 | [Amazon](https://amzn.to/2MSi6lL), [Adafruit](http://adafru.it/3099) | Raspberry Pi Camera V2 | -| Camera lens attachment | 1 | $18.99 | [Amazon(1)](https://amzn.com/B07HMXJ9Y1), [Amazon(2)](https://amzn.com/B07HF81BVL/), [eBay](https://ebay.us/Fz7HGd) | 160-degree FoV | - -### WiFi - -You need a WiFi solution for each JetBot. Select an option and get the parts specified. - -#### Option 1 (default) - M2 Card + Antennas - -| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | -| --- | --: | --: | --- | --- | -| WiFi card | 1 | $18.95 | [Amazon](https://amzn.to/2WKEkum), [NewEgg](https://www.neweggbusiness.com/Product/Product.aspx?Item=9SIV21M85N2699) | M2, Intel Wireless-AC 8265 | -| WiFi antenna | 2 | $5.06 | [Arrow](https://www.arrow.com/en/products/2042811100/molex) | U.FL connectors | - -#### 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! - -| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | -| --- | --: | --: | --- | --- | -| WiFi Dongle | 1 | $9.99 | [Amazon](https://amzn.com/B003MTTJOY/) | RTL8192U chipset | - -### Wheels - -You need wheels with a "TT" motor shaft connector for each JetBot. Select an option and get the parts specified. - -#### Option 1 - 60mm - -| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | -| --- | --: | --: | --- | --- | -| Wheel | 2 | $5.00 | [Adafruit](http://adafru.it/3757) | 60mm diameter | -| Caster base | 1 | -- | [STL file](../../jetbot/blob/master/assets/caster_base_60mm.stl) | for 60mm wheel | -| Caster shroud | 1 | -- | [STL file](../../jetbot/blob/master/assets/caster_shroud_60mm.stl) | for 60mm wheel | - -#### Option 2 - 65mm - -| **Part** | **Quantity** | **Cost** | **URL** | **Notes** | -| --- | --: | --: | --- | --- | -| Wheel | 2 | $3.00 | [Adafruit](https://www.adafruit.com/product/3763) | 65mm diameter | -| Caster base | 1 | -- | [STL file](../../jetbot/blob/master/assets/caster_base_65mm.stl) | for 65mm wheel| -| Caster shroud | 1 | -- | [STL file](../../jetbot/blob/master/assets/caster_shroud_65mm.stl) | for 65mm wheel | - -### Assembly Hardware - -You need the following parts to build JetBot. They come in packs, so order the quantity you need for the number of JetBots you are going to build. - -| **Part** | **Qty per JetBot** | **Qty per pack** | **Cost per JetBot** | **URL** | **Notes** | -| --- | --- | --: | --: | --: | --- | -| Adhesive pads | 2 | 48 | $0.14 | [Amazon](http://amzn.com/B01FIK56Q4) | | -| M2 screw | 20 | 100 | $1.29 | [Amazon](http://amzn.com/B00YBMRAH4) | 8mm long, self tapping | -| M3 screw | 4 | 60 | $0.47 | [Amazon](https://amzn.to/2tcdluk) | 25mm long| -| M3 nut | 4 | 100 | $0.24 | [Amazon](https://amzn.to/2tb8PMo) | | -| Jumper wires | 4 | 40 | $0.13 | [Amazon](https://amzn.to/2tacYQD) | Female-female, ~20cm | - -## Next - -Follow the [hardware setup](hardware-setup). diff --git a/docs/examples.md b/docs/examples.md deleted file mode 100644 index 3ff103320..000000000 --- a/docs/examples.md +++ /dev/null @@ -1,133 +0,0 @@ -This page lists the examples provided with JetBot. - -> Make sure your robot is connected to WiFi as described in the [software setup](software-setup) - -### Example 1 - Basic Motion - -In this example we'll control JetBot by programming from a web browser. - - - -1. Connect to your robot by navigating to ``http://:8888`` - -2. Sign in with the default password ``jetbot`` -3. Navigate to ``~/Notebooks/basic_motion/`` -4. Open and follow the [``basic_motion.ipynb``](../../jetbot/blob/master/notebooks/basic_motion/basic_motion.ipynb) notebook - > Make sure JetBot has enough space to move around. - -### Example 2 - Teleoperation - -> This example requires a gamepad controller connected to your workstation. - -In this example we'll drive JetBot remotely, view live streaming video, and save snapshots! - - - -1. Connect to your robot by navigating to ``http://:8888`` - -2. Sign in with the default password ``jetbot`` -2. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...`` -3. Navigate to ``~/Notebooks/teleoperation/`` -3. Open and follow the [``teleoperation.ipynb``](../../jetbot/blob/master/notebooks/teleoperation/teleoperation.ipynb) notebook - -### Example 3 - Collision avoidance - -In this example we'll collect an *image classification* dataset that will be used to help keep -JetBot safe! We'll teach JetBot to detect two scenarios ``free`` and ``blocked``. We'll use this AI classifier to prevent JetBot from entering dangerous territory. - -#### 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. - - - -1. Connect to your robot by navigating to ``http://:8888`` - -2. Sign in with the default password ``jetbot`` -2. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...`` -3. Navigate to ``~/Notebooks/collision_avoidance/`` -4. Open and follow the ``data_collection.ipynb`` notebook - -#### Step 2 - Train neural network - - - -##### Option 1 - Train on Jetson nano -1. Shutdown your robot and remove the micro USB power cable. - -2. Power the Jetson Nano by using the 5V wall power supply. -3. Connect to your robot by navigating to ``http://:8888`` -4. Sign in with the default password ``jetbot`` -5. In the Jupyter Lab tab, navigate to ``~/collision_avoidance`` -6. Upload the collision avoidance [training notebook](../../jetbot/blob/master/notebooks/collision_avoidance/train_model.ipynb) to this folder -7. Open and follow the ``train_model.ipynb`` notebook - -##### Option 2 - Train on other GPU machine -1. Connect to a GPU machine with PyTorch installed and a Jupyter Lab server running - -2. Upload the collision avoidance [training notebook](../../jetbot/blob/master/notebooks/collision_avoidance/train_model.ipynb) to this machine -3. Open and follow the ``train_model.ipynb`` notebook - -#### Step 3 - Run live demo on JetBot - - - -1. Power your robot from the USB battery pack - -2. Connect back to your robot by navigating to ``http://:8888`` -3. Sign in with the default password ``jetbot`` -4. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...`` -5. Navigate to ``~/Notebooks/collision_avoidance`` -6. Open and follow the ``live_demo.ipynb`` notebook - > Start cautious and give JetBot enough space to move around. - -#### Video - -This video shows multiple JetBots running collision avoidance - -[![](http://img.youtube.com/vi/6cLk9TSgFSw/0.jpg)](http://www.youtube.com/watch?v=6cLk9TSgFSw "Launching of JetBots") - -### Example 4 - Object Following - -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! - - - -1. Download the object detection model according to the table below - - | JetBot SD Card Version | Model | - |----------------|-------| - | v0.3 | [ssd_mobilenet_v2_coco.engine](https://drive.google.com/open?id=1RnNBHPDphIOWwHCSfeMCWQ7XN3w3tKFD) | - | v0.4 (latest) | [ssd_mobilenet_v2_coco.engine](https://drive.google.com/open?id=1KjlDMRD8uhgQmQK-nC2CZGHFTbq4qQQH) | -2. Connect to your robot by navigating to ``http://:8888`` - -3. Shutdown all other running notebooks by selecting ``Kernel`` -> ``Shutdown All Kernels...`` -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. - -#### Video - -This video shows JetBot following a person and avoiding obstacles - -[![](http://img.youtube.com/vi/MBUEbU9Q6wg/0.jpg)](http://www.youtube.com/watch?v=MBUEbU9Q6wg "Dancing with JetBot") - -## Next - -Make JetBot smarter - -* Collect more collision avoidance data -* Try out different neural network architectures (the [torchvision](https://pytorch.org/docs/stable/torchvision/models.html) package has lots!) -* Modify the collision avoidance example for a new task (ie: ``cat`` / ``no cat``. if ``cat`` then ``run``) - -Create something entirely new! - -* Modify the collision avoidance example for your own project -* Try out some new hardware with Jetson Nano. It's easy with Jetson GPIO and [Adafruit Blinka](https://blog.adafruit.com/2019/03/18/adafruit-blinka-support-for-the-nvidia-jetson-series-nvidia-gtc19-nvidiaembedded/) - -Share it with us - -* [NVIDIA Developer Forums](https://devtalk.nvidia.com/default/board/372/jetson-projects/) diff --git a/docs/hardware_setup.md b/docs/hardware_setup.md deleted file mode 100644 index af6978519..000000000 --- a/docs/hardware_setup.md +++ /dev/null @@ -1,237 +0,0 @@ -This page details the hardware setup instructions for creating JetBot - -## Tools needed - -To build JetBot you'll need the following tools - -![Long-nose-pliers_Hakko](images/Long-nose-pliers_Hakko.jpg)![wire-stripper_hakko_30-20](images/wire-stripper_hakko_30-20.jpg)![screw-driver-set_63](images/screw-driver-set_63.jpg)![soldering-iron-station](images/soldering-iron-station.jpg)![XOOL-Tweezers](images/XOOL-Tweezers.jpg) - -* Pliers - -* Wire flush cutters/wire stripper -* Phillips screwdriver (+ [Hex screwdriver for M2 hex socket screws](https://amzn.com/B00CP2GGBI/) ) -* Soldering iron and solder -* (optional) [Precision Electronics Tweezers](https://amzn.to/2t4AWg7) - -## Assembly - -### Step 1 - Clean 3D printed parts - - - - - - - -1. Remove support material from motor sockets using pliers - -2. Remove support material from all surfaces, openings and screw holes using pliers, tweezers, and/or fingernails -3. File material from openings if they are too tight - -### Step 2 - Mount motors - - - - - - - -1. Cut and remove the zip tie from each motor - -2. Tuck the wires beneath transparent band to prevent stress on solder joints -3. Insert each motor into the 3D printed chassis -4. Secure each motor with 2x M3x25mm screws - -### Step 3 - Solder motor driver - - - - - - - - -1. Break away 3-pin and 2-pin male headers from header link that comes with motor driver package - -2. Join two of the screw terminal blocks to create a 4-pin screw terminal -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. - - -### Step 4 - Strip motor driver power cable - - - - - - - -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. - -2. Cut the depicted cable roughly ~20cm from the type-A terminal -2. Strip the rubber coating ~3cm from the cut -3. Remove the green / white wires and metal shielding. -4. Strip the red and black wires about ~5mm from cut -5. (optional) Twist the exposed strand wire and coat with solder - -### Step 5 - Mount motor driver - - - - - - - - -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. -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. - -### Step 6 - Mount WiFi antennas - - - - - - - -1. Secure one patch antenna to the underside of top plate - -2. Secure the other patch antenna at edge of battery bay -3. Route connectors as shown - -### Step 7 - Remove Jetson Nano module from developer kit - - - - - - -1. Remove standoff screws from Jetson Nano module - -2. Release the side latches of SODIMM connector using hands -3. Slide Jetson Nano module out of SODIMM connector - -### Step 8 - Attach WiFi module to developer kit - - - - - - - - -1. Attach developer kit to chassis using self taping screws - -2. Snap antennae on to WiFi module using fingers -3. Remove the screw from developer kit by the M.2 socket -4. Insert WiFi module into M.2 slot on developer kit -5. Fasten WiFi module to developer kit with screw removed in (3) -6. Re-attach the Jetson Nano module to developer kit - -### Step 9 - Mount ball caster - - - - - - -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. -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 - - - - -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. - -### Step 11 - Wire motor driver to *PiOLED* display - - - - - -1. Select 4 wire segment of female-female jumper cables. - > 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. - -### Step 12 - Mount camera - - - - - - -1. Attach the camera to the camera mount using 4x self tapping screws - -2. Attach the camera mount to chassis with 4x self tapping screws -3. Insert the other end of ribbon cable into Jetson Nano developer kit -4. (optional) Tuck the ribbon cable against heat sink to organize - -### Step 13 - Attach wide angle sensor - - - - - - - - -1. Peel off the original camera sensor - -2. Remove any excess adhesive material -3. Remove the adhesive film cover from wide angle replacement sensor -4. Attach wide angle replacement sensor to camera module -5. Ensure the sensor connector is fastened to camera module - -### Step 14 - Mount battery - - - - - - -1. Attach double sided adhesive tabs to each end of battery, leaving some tab exposed - -2. Holding robot upside down, slide battery into battery bay -3. Holding the battery in place, flip the robot and secure battery to chassis - -### Step 15 - Organize wires - - - - - -1. Route USB cables through chassis to organize and prevent dragging - -## Finished JetBot - -Once finished, your JetBot should look similar to this. - - - -# Next step - -Follow the [software setup](software-setup). diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 9e799fb5f..000000000 --- a/docs/index.md +++ /dev/null @@ -1,30 +0,0 @@ -Welcome to the JetBot Wiki! Here you can find everything you need to get up and running with JetBot. - -If you run into any issues, please [let us know](../issues)! - -Happy JetBotting :) - -### Getting started - -> We recommend following the [Getting Started with Jetson Nano Developer Kit](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit) guide before moving on to the JetBot project. This will make sure you are familiar with the Jetson Nano and standard operation. - -Follow these steps and you should be up and running with JetBot in no time! - -1. Get parts from the [bill of materials](bill-of-materials) -2. Follow the [hardware setup](hardware-setup) -3. Follow the [software setup](software-setup) -4. Run through the [examples](examples) - -### Getting involved - -Ask a question, make a suggestion, share a project... - - -* Create an [issue](../../issues) -* Share your project on the [forum](https://devtalk.nvidia.com/default/board/139/jetson-embedded-systems/) - -### Useful stuff - -* [Battery tips](battery-tips) -* [3D printing](3D-printing) -* [jetbot_ros - Robot Operating System (ROS) port](https://github.com/dusty-nv/jetbot_ros) diff --git a/docs/install_from_scratch.md b/docs/install_from_scratch.md deleted file mode 100644 index 59631bbbf..000000000 --- a/docs/install_from_scratch.md +++ /dev/null @@ -1,82 +0,0 @@ -s page details how to create the JetBot SD card image from scratch. - -This is useful in case you want to distribute a modified version of the JetBot SD card image. - -1. Flash SD card by following [Getting Started with Jetson Nano Developer Kit](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit). - * Use the username / password ``jetbot`` / ``jetbot`` - * Make sure to ``log in automatically`` -2. Insert SD card into Jetson Nano and power on -3. Enable i2c permissions - - ```bash - sudo usermod -aG i2c $USER - ``` -4. Install pip and some python dependencies - ```bash - sudo apt-get update - sudo apt install python3-pip python3-pil - sudo pip3 install --upgrade numpy - ``` -4. Install the pre-built TensorFlow pip wheel by following [these instructions](https://docs.nvidia.com/deeplearning/dgx/install-tf-xavier/index.html) - -4. Install the pre-built PyTorch [pip wheel](https://drive.google.com/open?id=1Eq641Jqb2Q0KBKsVpAhU-vxB_Mqcfrjd) we provide for this project. - - ```bash - sudo pip3 install torch-1.0.0a0+18eef1d-cp36-cp36m-linux_aarch64.whl - sudo pip3 install torchvision - ``` -5. Install traitlets (master, to support the ``unlink()`` method) - - ```bash - sudo python3 -m pip install git+https://github.com/ipython/traitlets@master - ``` -6. Install jupyter lab - - ```bash - sudo apt install nodejs npm - sudo pip3 install jupyter jupyterlab - sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager - sudo jupyter labextension install @jupyterlab/statusbar - jupyter lab --generate-config - jupyter notebook password - ``` - You should then enter the password ``jetbot`` (unless you want to use a custom password). -7. Install this repo - - ```bash - cd - sudo apt install python3-smbus - git clone https://github.com/NVIDIA-AI-IOT/jetbot - cd jetbot - sudo apt-get install cmake - sudo python3 setup.py install - ``` - -8. Install jetbot services - - ```bash - cd jetbot/utils - python3 create_stats_service.py - sudo mv jetbot_stats.service /etc/systemd/system/jetbot_stats.service - sudo systemctl enable jetbot_stats - sudo systemctl start jetbot_stats - python3 create_jupyter_service.py - sudo mv jetbot_jupyter.service /etc/systemd/system/jetbot_jupyter.service - sudo systemctl enable jetbot_jupyter - sudo systemctl start jetbot_jupyter - ``` - -8. Make swapfile - ``` - sudo fallocate -l 4G /var/swapfile - sudo chmod 600 /var/swapfile - sudo mkswap /var/swapfile - sudo swapon /var/swapfile - sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab' - ``` - -9. Copy JetBot notebooks to home directory - - ``` - cp -r ~/jetbot/notebooks ~/Notebooks - ``` diff --git a/docs/software_setup.md b/docs/software_setup.md deleted file mode 100644 index dc4fca7ad..000000000 --- a/docs/software_setup.md +++ /dev/null @@ -1,89 +0,0 @@ -s page details the software setup required to run JetBot. - -### Step 1 - Flash JetBot image onto SD card - -1. Download the expandable JetBot SD card image [jetbot_image_v0p4p0.zip](https://drive.google.com/open?id=1G5nw0o3Q6E08xZM99ZfzQAe7-qAXxzHN) - > The above image is based on JetPack 4.3. The previous image based on JetPack 4.2 may be found here: [jetbot_image_v0p3p2.zip](https://drive.google.com/open?id=1GF2D814hkViwluZ5SgNKW56cQu_5Ekt5). - -2. Insert an SD card into your desktop machine -3. Using [Etcher](https://www.balena.io/etcher/), select the ``jetbot_image_v0p4p0.zip`` image and flash it onto the SD card -4. Remove the SD card from your desktop machine - -### Step 2 - Boot Jetson Nano - -1. Insert the SD card into your Jetson Nano (the micro SD card slot is located - under the module) - -2. Connect the monitor, keyboard, and mouse to the Nano -3. Power on the Jetson Nano by connecting the micro USB charger to the micro USB port - > Important! We recommend first booting the Jetson Nano once without the piOLED / motor driver connected. - > This way you can check to make sure the system boots properly from the SD card image without - > worrying about hardware issues. After you've verified that it boots, reconnect the piOLED, - > double check your wiring, and boot again. - -### Step 3 - Connect JetBot to WiFi - -1. Log in using the user ``jetbot`` and password ``jetbot`` - -2. Connect to a WiFi network using the Ubuntu desktop GUI - -Your Jetson Nano should now automatically connect to the WiFi at boot and display it's IP address on the piOLED display. - -### Step 4 - Connect to JetBot from web browser - -After your robot is connected to WiFi, you can connect to the robot from a web browser by performing the following steps - -1. Shutdown JetBot using the Ubuntu GUI - -2. Unplug your HDMI monitor, USB keyboard, mouse and power supply from Jetson Nano -3. Power the JetBot from the USB battery pack by plugging in the micro-USB cable -4. Wait a bit for JetBot to boot -2. Check the IP address of your robot on the *piOLED* display screen. Enter this in place of ```` in the next command -3. Navigate to ``http://:8888`` from your desktop's web browser - -> You shouldn't need to connect your robot to a monitor past this step! - -### Step 5 - Install latest software (optional) - -The JetBot GitHub repository may contain software that is newer than that pre-installed -on the SD card image. To install the latest software: - -1. If you haven't already, connect to your robot by going to ``http://:8888`` - -2. Click the ``+`` icon to open the Jupyter Lab launcher -3. Launch a new terminal -2. Get and install the latest JetBot repository from GitHub by entering the following commands - ```bash - git clone https://github.com/NVIDIA-AI-IOT/jetbot - cd jetbot - sudo python3 setup.py install - ``` -3. Replace the old notebooks with the new notebooks by entering - ```bash - sudo apt-get install rsync - rsync jetbot/notebooks ~/Notebooks - ``` - -### Step 6 - Configure power mode - -To ensure that the Jetson Nano doesn't draw more current than the battery pack can supply, -place the Jetson Nano in ``5W`` mode by calling the following command - -1. If you haven't already, connect to your robot by going to ``http://:8888`` - -2. Click the ``+`` icon to open the Jupyter Lab launcher -3. Launch a new terminal -4. Select 5W power mode - - ```bash - sudo nvpmodel -m1 - ``` -5. Verify the Jetson Nano is in 5W power mode - ```bash - sudo nvpmodel -q - ``` - -## Next - -Follow the [examples](examples). - diff --git a/docs/third_party_kits.md b/docs/third_party_kits.md deleted file mode 100644 index dffbcdb07..000000000 --- a/docs/third_party_kits.md +++ /dev/null @@ -1,23 +0,0 @@ -Since we launched JetBot, several third party kits using Jetson Nano have emerged. This page details the kits that we're aware of - -> Please note, we do not officially maintain these kits in this GitHub project. Please refer to the vendor's documentation. - -### JetBot Kits - -> Please note, cost and availability may vary. Please refer to the vendor URL. - -| Kit | URL | -|----------|-----| -| WaveShare JetBot Kit | [WaveShare](https://www.waveshare.com/product/mini-pc/jetson/packages/jetbot-ai-kit-acce.htm) | -| WaveShare JetBot Kit (includes Nano) | [WaveShare](https://www.waveshare.com/product/mini-pc/jetson/packages/jetbot-ai-kit.htm) | -| SparkFun JetBot Kit | [SparkFun](https://www.sparkfun.com/products/15437) | -| SparkFun JetBot Kit (includes Nano) | [SparkFun](https://www.sparkfun.com/products/15365) | -| Seeed JetBot Kit | [Seeedstudio](https://www.seeedstudio.com/Seeedstudio-JetBot-Smart-Car-Kit-p-4055.html) | -| Seeed JetBot Kit (includes Nano) | [Seeedstudio](https://www.seeedstudio.com/Seeedstudio-JetBot-Smart-Car-Powered-by-NVIDIA-Jetson-Nano-p-4054.html) | -| Silicon Highway JetBot Kit (includes Nano) | [Silicon Highway](https://www.siliconhighwaydirect.co.uk/product-p/jetbot-kit.htm) | -| FaBo JetBot Kit (includes Nano) | [FaBo](https://www.fabo.store/collections/jetbot/products/jetbot-kit) | -| GPUS JetBot Kit (includes Nano) | [TaoBao](https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.25911debPlD2nP&ft=t&id=602196310625) - -### Share with us! - -Our goal is to encourage developers to learn, have fun, and create things using AI. Whether it's JetBot, JetRacer, or your own thing... If you've developed a kit using Jetson, [let us know](../../issues)! diff --git a/notebooks/basic_motion/basic_motion.ipynb b/examples/basic_motion/basic_motion.ipynb similarity index 100% rename from notebooks/basic_motion/basic_motion.ipynb rename to examples/basic_motion/basic_motion.ipynb diff --git a/notebooks/collision_avoidance/data_collection.ipynb b/examples/collision_avoidance/data_collection.ipynb similarity index 100% rename from notebooks/collision_avoidance/data_collection.ipynb rename to examples/collision_avoidance/data_collection.ipynb diff --git a/notebooks/collision_avoidance/live_demo.ipynb b/examples/collision_avoidance/live_demo.ipynb similarity index 100% rename from notebooks/collision_avoidance/live_demo.ipynb rename to examples/collision_avoidance/live_demo.ipynb diff --git a/notebooks/collision_avoidance/train_model.ipynb b/examples/collision_avoidance/train_model.ipynb similarity index 100% rename from notebooks/collision_avoidance/train_model.ipynb rename to examples/collision_avoidance/train_model.ipynb diff --git a/notebooks/object_following/live_demo.ipynb b/examples/object_following/live_demo.ipynb similarity index 100% rename from notebooks/object_following/live_demo.ipynb rename to examples/object_following/live_demo.ipynb diff --git a/notebooks/road_following/data_collection.ipynb b/examples/road_following/data_collection.ipynb similarity index 100% rename from notebooks/road_following/data_collection.ipynb rename to examples/road_following/data_collection.ipynb diff --git a/notebooks/road_following/live_demo.ipynb b/examples/road_following/live_demo.ipynb similarity index 100% rename from notebooks/road_following/live_demo.ipynb rename to examples/road_following/live_demo.ipynb diff --git a/notebooks/road_following/train_model.ipynb b/examples/road_following/train_model.ipynb similarity index 100% rename from notebooks/road_following/train_model.ipynb rename to examples/road_following/train_model.ipynb diff --git a/notebooks/teleoperation/teleoperation.ipynb b/examples/teleoperation/teleoperation.ipynb similarity index 100% rename from notebooks/teleoperation/teleoperation.ipynb rename to examples/teleoperation/teleoperation.ipynb From 0d09bfd9f94fb830384324725c966d0d1f699a38 Mon Sep 17 00:00:00 2001 From: John Welsh Date: Fri, 10 Jul 2020 17:33:18 -0700 Subject: [PATCH 5/9] README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d8001a15c..3a6c254c6 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,4 @@ 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). + From 9ac2ae03a6987439e0103a6a0273c70920ad10ad Mon Sep 17 00:00:00 2001 From: John Welsh Date: Fri, 10 Jul 2020 18:10:23 -0700 Subject: [PATCH 6/9] asdf --- README.md | 7 +++++++ .../apps/__init__.py => docs/bill_of_materials.md | 0 jetbot/utils/__init__.py => docs/examples.md | 0 docs/hardware_setup.md | 0 docs/software_setup.md | 0 {assets => hardware/nvidia}/camera_mount.iges | 0 {assets => hardware/nvidia}/camera_mount.step | 0 {assets => hardware/nvidia}/camera_mount.stl | Bin {assets => hardware/nvidia}/caster_base_60mm.stl | Bin {assets => hardware/nvidia}/caster_base_65mm.stl | Bin {assets => hardware/nvidia}/caster_shroud_60mm.stl | Bin {assets => hardware/nvidia}/caster_shroud_65mm.stl | Bin {assets => hardware/nvidia}/chassis.stl | Bin {assets => hardware/nvidia}/jetbot_60mm.iges | 0 {assets => hardware/nvidia}/jetbot_60mm.step | 0 {assets => hardware/nvidia}/jetbot_65mm.iges | 0 {assets => hardware/nvidia}/jetbot_65mm.step | 0 {jetbot => library}/CMakeLists.txt | 0 {jetbot => library}/__init__.py | 0 library/apps/__init__.py | 0 {jetbot => library}/apps/stats.py | 0 {jetbot => library}/apps/wander.py | 0 {jetbot => library}/camera.py | 0 {jetbot => library}/heartbeat.py | 0 {jetbot => library}/image.py | 0 {jetbot => library}/motor.py | 0 {jetbot => library}/object_detection.py | 0 {jetbot => library}/robot.py | 0 {jetbot => library}/ssd_tensorrt/CMakeLists.txt | 0 {jetbot => library}/ssd_tensorrt/FlattenConcat.cpp | 0 {jetbot => library}/ssd_tensorrt/__init__.py | 0 {jetbot => library}/ssd_tensorrt/ssd_tensorrt.py | 0 {jetbot => library}/tensorrt_model.py | 0 library/utils/__init__.py | 0 {jetbot => library}/utils/create_jupyter_service.py | 0 {jetbot => library}/utils/create_stats_service.py | 0 {jetbot => library}/utils/utils.py | 0 37 files changed, 7 insertions(+) rename jetbot/apps/__init__.py => docs/bill_of_materials.md (100%) rename jetbot/utils/__init__.py => docs/examples.md (100%) create mode 100644 docs/hardware_setup.md create mode 100644 docs/software_setup.md rename {assets => hardware/nvidia}/camera_mount.iges (100%) rename {assets => hardware/nvidia}/camera_mount.step (100%) rename {assets => hardware/nvidia}/camera_mount.stl (100%) rename {assets => hardware/nvidia}/caster_base_60mm.stl (100%) rename {assets => hardware/nvidia}/caster_base_65mm.stl (100%) rename {assets => hardware/nvidia}/caster_shroud_60mm.stl (100%) rename {assets => hardware/nvidia}/caster_shroud_65mm.stl (100%) rename {assets => hardware/nvidia}/chassis.stl (100%) rename {assets => hardware/nvidia}/jetbot_60mm.iges (100%) rename {assets => hardware/nvidia}/jetbot_60mm.step (100%) rename {assets => hardware/nvidia}/jetbot_65mm.iges (100%) rename {assets => hardware/nvidia}/jetbot_65mm.step (100%) rename {jetbot => library}/CMakeLists.txt (100%) rename {jetbot => library}/__init__.py (100%) create mode 100644 library/apps/__init__.py rename {jetbot => library}/apps/stats.py (100%) rename {jetbot => library}/apps/wander.py (100%) rename {jetbot => library}/camera.py (100%) rename {jetbot => library}/heartbeat.py (100%) rename {jetbot => library}/image.py (100%) rename {jetbot => library}/motor.py (100%) rename {jetbot => library}/object_detection.py (100%) rename {jetbot => library}/robot.py (100%) rename {jetbot => library}/ssd_tensorrt/CMakeLists.txt (100%) rename {jetbot => library}/ssd_tensorrt/FlattenConcat.cpp (100%) rename {jetbot => library}/ssd_tensorrt/__init__.py (100%) rename {jetbot => library}/ssd_tensorrt/ssd_tensorrt.py (100%) rename {jetbot => library}/tensorrt_model.py (100%) create mode 100644 library/utils/__init__.py rename {jetbot => library}/utils/create_jupyter_service.py (100%) rename {jetbot => library}/utils/create_stats_service.py (100%) rename {jetbot => library}/utils/utils.py (100%) diff --git a/README.md b/README.md index 3a6c254c6..f6df6689d 100644 --- a/README.md +++ b/README.md @@ -16,3 +16,10 @@ Building and using JetBot gives the hands on experience needed to create entirel To get started, read the [JetBot Wiki](https://github.com/NVIDIA-AI-IOT/jetbot/wiki). +## Getting Started + +1. Order parts from the [bill of materials](docs/bill_of_materials.md) + +2. Follow the [hardware setup](docs/hardware_setup.md) +3. Follow the [software setup](docs/software_setup.md) +4. Run through the [examples](docs/examples.md) diff --git a/jetbot/apps/__init__.py b/docs/bill_of_materials.md similarity index 100% rename from jetbot/apps/__init__.py rename to docs/bill_of_materials.md diff --git a/jetbot/utils/__init__.py b/docs/examples.md similarity index 100% rename from jetbot/utils/__init__.py rename to docs/examples.md diff --git a/docs/hardware_setup.md b/docs/hardware_setup.md new file mode 100644 index 000000000..e69de29bb diff --git a/docs/software_setup.md b/docs/software_setup.md new file mode 100644 index 000000000..e69de29bb diff --git a/assets/camera_mount.iges b/hardware/nvidia/camera_mount.iges similarity index 100% rename from assets/camera_mount.iges rename to hardware/nvidia/camera_mount.iges diff --git a/assets/camera_mount.step b/hardware/nvidia/camera_mount.step similarity index 100% rename from assets/camera_mount.step rename to hardware/nvidia/camera_mount.step diff --git a/assets/camera_mount.stl b/hardware/nvidia/camera_mount.stl similarity index 100% rename from assets/camera_mount.stl rename to hardware/nvidia/camera_mount.stl diff --git a/assets/caster_base_60mm.stl b/hardware/nvidia/caster_base_60mm.stl similarity index 100% rename from assets/caster_base_60mm.stl rename to hardware/nvidia/caster_base_60mm.stl diff --git a/assets/caster_base_65mm.stl b/hardware/nvidia/caster_base_65mm.stl similarity index 100% rename from assets/caster_base_65mm.stl rename to hardware/nvidia/caster_base_65mm.stl diff --git a/assets/caster_shroud_60mm.stl b/hardware/nvidia/caster_shroud_60mm.stl similarity index 100% rename from assets/caster_shroud_60mm.stl rename to hardware/nvidia/caster_shroud_60mm.stl diff --git a/assets/caster_shroud_65mm.stl b/hardware/nvidia/caster_shroud_65mm.stl similarity index 100% rename from assets/caster_shroud_65mm.stl rename to hardware/nvidia/caster_shroud_65mm.stl diff --git a/assets/chassis.stl b/hardware/nvidia/chassis.stl similarity index 100% rename from assets/chassis.stl rename to hardware/nvidia/chassis.stl diff --git a/assets/jetbot_60mm.iges b/hardware/nvidia/jetbot_60mm.iges similarity index 100% rename from assets/jetbot_60mm.iges rename to hardware/nvidia/jetbot_60mm.iges diff --git a/assets/jetbot_60mm.step b/hardware/nvidia/jetbot_60mm.step similarity index 100% rename from assets/jetbot_60mm.step rename to hardware/nvidia/jetbot_60mm.step diff --git a/assets/jetbot_65mm.iges b/hardware/nvidia/jetbot_65mm.iges similarity index 100% rename from assets/jetbot_65mm.iges rename to hardware/nvidia/jetbot_65mm.iges diff --git a/assets/jetbot_65mm.step b/hardware/nvidia/jetbot_65mm.step similarity index 100% rename from assets/jetbot_65mm.step rename to hardware/nvidia/jetbot_65mm.step diff --git a/jetbot/CMakeLists.txt b/library/CMakeLists.txt similarity index 100% rename from jetbot/CMakeLists.txt rename to library/CMakeLists.txt diff --git a/jetbot/__init__.py b/library/__init__.py similarity index 100% rename from jetbot/__init__.py rename to library/__init__.py diff --git a/library/apps/__init__.py b/library/apps/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/jetbot/apps/stats.py b/library/apps/stats.py similarity index 100% rename from jetbot/apps/stats.py rename to library/apps/stats.py diff --git a/jetbot/apps/wander.py b/library/apps/wander.py similarity index 100% rename from jetbot/apps/wander.py rename to library/apps/wander.py diff --git a/jetbot/camera.py b/library/camera.py similarity index 100% rename from jetbot/camera.py rename to library/camera.py diff --git a/jetbot/heartbeat.py b/library/heartbeat.py similarity index 100% rename from jetbot/heartbeat.py rename to library/heartbeat.py diff --git a/jetbot/image.py b/library/image.py similarity index 100% rename from jetbot/image.py rename to library/image.py diff --git a/jetbot/motor.py b/library/motor.py similarity index 100% rename from jetbot/motor.py rename to library/motor.py diff --git a/jetbot/object_detection.py b/library/object_detection.py similarity index 100% rename from jetbot/object_detection.py rename to library/object_detection.py diff --git a/jetbot/robot.py b/library/robot.py similarity index 100% rename from jetbot/robot.py rename to library/robot.py diff --git a/jetbot/ssd_tensorrt/CMakeLists.txt b/library/ssd_tensorrt/CMakeLists.txt similarity index 100% rename from jetbot/ssd_tensorrt/CMakeLists.txt rename to library/ssd_tensorrt/CMakeLists.txt diff --git a/jetbot/ssd_tensorrt/FlattenConcat.cpp b/library/ssd_tensorrt/FlattenConcat.cpp similarity index 100% rename from jetbot/ssd_tensorrt/FlattenConcat.cpp rename to library/ssd_tensorrt/FlattenConcat.cpp diff --git a/jetbot/ssd_tensorrt/__init__.py b/library/ssd_tensorrt/__init__.py similarity index 100% rename from jetbot/ssd_tensorrt/__init__.py rename to library/ssd_tensorrt/__init__.py diff --git a/jetbot/ssd_tensorrt/ssd_tensorrt.py b/library/ssd_tensorrt/ssd_tensorrt.py similarity index 100% rename from jetbot/ssd_tensorrt/ssd_tensorrt.py rename to library/ssd_tensorrt/ssd_tensorrt.py diff --git a/jetbot/tensorrt_model.py b/library/tensorrt_model.py similarity index 100% rename from jetbot/tensorrt_model.py rename to library/tensorrt_model.py diff --git a/library/utils/__init__.py b/library/utils/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/jetbot/utils/create_jupyter_service.py b/library/utils/create_jupyter_service.py similarity index 100% rename from jetbot/utils/create_jupyter_service.py rename to library/utils/create_jupyter_service.py diff --git a/jetbot/utils/create_stats_service.py b/library/utils/create_stats_service.py similarity index 100% rename from jetbot/utils/create_stats_service.py rename to library/utils/create_stats_service.py diff --git a/jetbot/utils/utils.py b/library/utils/utils.py similarity index 100% rename from jetbot/utils/utils.py rename to library/utils/utils.py From 9951f46dd55d57ac4ecabeb78d490ca49e64a979 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 10 Jul 2020 18:18:55 -0700 Subject: [PATCH 7/9] Update README.md --- README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f6df6689d..057c4d5ab 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ # JetBot - +> Looking for a quick way to get started with JetBot? Many third party kits are [now available](docs/third_party_kits.md)! -> Looking for a quick way to get started with JetBot? Many third party kits are [now available](../../wiki/third-party-kits)! - - + JetBot is an open-source robot based on NVIDIA Jetson Nano that is @@ -14,12 +12,17 @@ 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). +If you run into issues please [let us know](../issues)! + +Happy JetBotting :) ## Getting Started +Follow these steps and you should be up and running in no time! + 1. Order parts from the [bill of materials](docs/bill_of_materials.md) 2. Follow the [hardware setup](docs/hardware_setup.md) 3. Follow the [software setup](docs/software_setup.md) 4. Run through the [examples](docs/examples.md) + From 4ea30b627ec71fe357f042c4d8b4f115c2275538 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 10 Jul 2020 18:21:03 -0700 Subject: [PATCH 8/9] Set theme jekyll-theme-minimal --- _config.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 _config.yml diff --git a/_config.yml b/_config.yml new file mode 100644 index 000000000..2f7efbeab --- /dev/null +++ b/_config.yml @@ -0,0 +1 @@ +theme: jekyll-theme-minimal \ No newline at end of file From 8461b03f02e9a7f89a4b12a0319d11209b906433 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 10 Jul 2020 18:44:56 -0700 Subject: [PATCH 9/9] Revert "asdf" --- README.md | 20 +++++------------- {hardware/nvidia => assets}/camera_mount.iges | 0 {hardware/nvidia => assets}/camera_mount.step | 0 {hardware/nvidia => assets}/camera_mount.stl | Bin .../nvidia => assets}/caster_base_60mm.stl | Bin .../nvidia => assets}/caster_base_65mm.stl | Bin .../nvidia => assets}/caster_shroud_60mm.stl | Bin .../nvidia => assets}/caster_shroud_65mm.stl | Bin {hardware/nvidia => assets}/chassis.stl | Bin {hardware/nvidia => assets}/jetbot_60mm.iges | 0 {hardware/nvidia => assets}/jetbot_60mm.step | 0 {hardware/nvidia => assets}/jetbot_65mm.iges | 0 {hardware/nvidia => assets}/jetbot_65mm.step | 0 docs/bill_of_materials.md | 0 docs/examples.md | 0 docs/hardware_setup.md | 0 docs/software_setup.md | 0 {library => jetbot}/CMakeLists.txt | 0 {library => jetbot}/__init__.py | 0 {library => jetbot}/apps/__init__.py | 0 {library => jetbot}/apps/stats.py | 0 {library => jetbot}/apps/wander.py | 0 {library => jetbot}/camera.py | 0 {library => jetbot}/heartbeat.py | 0 {library => jetbot}/image.py | 0 {library => jetbot}/motor.py | 0 {library => jetbot}/object_detection.py | 0 {library => jetbot}/robot.py | 0 .../ssd_tensorrt/CMakeLists.txt | 0 .../ssd_tensorrt/FlattenConcat.cpp | 0 {library => jetbot}/ssd_tensorrt/__init__.py | 0 .../ssd_tensorrt/ssd_tensorrt.py | 0 {library => jetbot}/tensorrt_model.py | 0 {library => jetbot}/utils/__init__.py | 0 .../utils/create_jupyter_service.py | 0 .../utils/create_stats_service.py | 0 {library => jetbot}/utils/utils.py | 0 37 files changed, 5 insertions(+), 15 deletions(-) rename {hardware/nvidia => assets}/camera_mount.iges (100%) rename {hardware/nvidia => assets}/camera_mount.step (100%) rename {hardware/nvidia => assets}/camera_mount.stl (100%) rename {hardware/nvidia => assets}/caster_base_60mm.stl (100%) rename {hardware/nvidia => assets}/caster_base_65mm.stl (100%) rename {hardware/nvidia => assets}/caster_shroud_60mm.stl (100%) rename {hardware/nvidia => assets}/caster_shroud_65mm.stl (100%) rename {hardware/nvidia => assets}/chassis.stl (100%) rename {hardware/nvidia => assets}/jetbot_60mm.iges (100%) rename {hardware/nvidia => assets}/jetbot_60mm.step (100%) rename {hardware/nvidia => assets}/jetbot_65mm.iges (100%) rename {hardware/nvidia => assets}/jetbot_65mm.step (100%) delete mode 100644 docs/bill_of_materials.md delete mode 100644 docs/examples.md delete mode 100644 docs/hardware_setup.md delete mode 100644 docs/software_setup.md rename {library => jetbot}/CMakeLists.txt (100%) rename {library => jetbot}/__init__.py (100%) rename {library => jetbot}/apps/__init__.py (100%) rename {library => jetbot}/apps/stats.py (100%) rename {library => jetbot}/apps/wander.py (100%) rename {library => jetbot}/camera.py (100%) rename {library => jetbot}/heartbeat.py (100%) rename {library => jetbot}/image.py (100%) rename {library => jetbot}/motor.py (100%) rename {library => jetbot}/object_detection.py (100%) rename {library => jetbot}/robot.py (100%) rename {library => jetbot}/ssd_tensorrt/CMakeLists.txt (100%) rename {library => jetbot}/ssd_tensorrt/FlattenConcat.cpp (100%) rename {library => jetbot}/ssd_tensorrt/__init__.py (100%) rename {library => jetbot}/ssd_tensorrt/ssd_tensorrt.py (100%) rename {library => jetbot}/tensorrt_model.py (100%) rename {library => jetbot}/utils/__init__.py (100%) rename {library => jetbot}/utils/create_jupyter_service.py (100%) rename {library => jetbot}/utils/create_stats_service.py (100%) rename {library => jetbot}/utils/utils.py (100%) diff --git a/README.md b/README.md index 057c4d5ab..3a6c254c6 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # JetBot -> Looking for a quick way to get started with JetBot? Many third party kits are [now available](docs/third_party_kits.md)! + - +> Looking for a quick way to get started with JetBot? Many third party kits are [now available](../../wiki/third-party-kits)! + + JetBot is an open-source robot based on NVIDIA Jetson Nano that is @@ -12,17 +14,5 @@ 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. -If you run into issues please [let us know](../issues)! - -Happy JetBotting :) - -## Getting Started - -Follow these steps and you should be up and running in no time! - -1. Order parts from the [bill of materials](docs/bill_of_materials.md) - -2. Follow the [hardware setup](docs/hardware_setup.md) -3. Follow the [software setup](docs/software_setup.md) -4. Run through the [examples](docs/examples.md) +To get started, read the [JetBot Wiki](https://github.com/NVIDIA-AI-IOT/jetbot/wiki). diff --git a/hardware/nvidia/camera_mount.iges b/assets/camera_mount.iges similarity index 100% rename from hardware/nvidia/camera_mount.iges rename to assets/camera_mount.iges diff --git a/hardware/nvidia/camera_mount.step b/assets/camera_mount.step similarity index 100% rename from hardware/nvidia/camera_mount.step rename to assets/camera_mount.step diff --git a/hardware/nvidia/camera_mount.stl b/assets/camera_mount.stl similarity index 100% rename from hardware/nvidia/camera_mount.stl rename to assets/camera_mount.stl diff --git a/hardware/nvidia/caster_base_60mm.stl b/assets/caster_base_60mm.stl similarity index 100% rename from hardware/nvidia/caster_base_60mm.stl rename to assets/caster_base_60mm.stl diff --git a/hardware/nvidia/caster_base_65mm.stl b/assets/caster_base_65mm.stl similarity index 100% rename from hardware/nvidia/caster_base_65mm.stl rename to assets/caster_base_65mm.stl diff --git a/hardware/nvidia/caster_shroud_60mm.stl b/assets/caster_shroud_60mm.stl similarity index 100% rename from hardware/nvidia/caster_shroud_60mm.stl rename to assets/caster_shroud_60mm.stl diff --git a/hardware/nvidia/caster_shroud_65mm.stl b/assets/caster_shroud_65mm.stl similarity index 100% rename from hardware/nvidia/caster_shroud_65mm.stl rename to assets/caster_shroud_65mm.stl diff --git a/hardware/nvidia/chassis.stl b/assets/chassis.stl similarity index 100% rename from hardware/nvidia/chassis.stl rename to assets/chassis.stl diff --git a/hardware/nvidia/jetbot_60mm.iges b/assets/jetbot_60mm.iges similarity index 100% rename from hardware/nvidia/jetbot_60mm.iges rename to assets/jetbot_60mm.iges diff --git a/hardware/nvidia/jetbot_60mm.step b/assets/jetbot_60mm.step similarity index 100% rename from hardware/nvidia/jetbot_60mm.step rename to assets/jetbot_60mm.step diff --git a/hardware/nvidia/jetbot_65mm.iges b/assets/jetbot_65mm.iges similarity index 100% rename from hardware/nvidia/jetbot_65mm.iges rename to assets/jetbot_65mm.iges diff --git a/hardware/nvidia/jetbot_65mm.step b/assets/jetbot_65mm.step similarity index 100% rename from hardware/nvidia/jetbot_65mm.step rename to assets/jetbot_65mm.step diff --git a/docs/bill_of_materials.md b/docs/bill_of_materials.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/examples.md b/docs/examples.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/hardware_setup.md b/docs/hardware_setup.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/docs/software_setup.md b/docs/software_setup.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/library/CMakeLists.txt b/jetbot/CMakeLists.txt similarity index 100% rename from library/CMakeLists.txt rename to jetbot/CMakeLists.txt diff --git a/library/__init__.py b/jetbot/__init__.py similarity index 100% rename from library/__init__.py rename to jetbot/__init__.py diff --git a/library/apps/__init__.py b/jetbot/apps/__init__.py similarity index 100% rename from library/apps/__init__.py rename to jetbot/apps/__init__.py diff --git a/library/apps/stats.py b/jetbot/apps/stats.py similarity index 100% rename from library/apps/stats.py rename to jetbot/apps/stats.py diff --git a/library/apps/wander.py b/jetbot/apps/wander.py similarity index 100% rename from library/apps/wander.py rename to jetbot/apps/wander.py diff --git a/library/camera.py b/jetbot/camera.py similarity index 100% rename from library/camera.py rename to jetbot/camera.py diff --git a/library/heartbeat.py b/jetbot/heartbeat.py similarity index 100% rename from library/heartbeat.py rename to jetbot/heartbeat.py diff --git a/library/image.py b/jetbot/image.py similarity index 100% rename from library/image.py rename to jetbot/image.py diff --git a/library/motor.py b/jetbot/motor.py similarity index 100% rename from library/motor.py rename to jetbot/motor.py diff --git a/library/object_detection.py b/jetbot/object_detection.py similarity index 100% rename from library/object_detection.py rename to jetbot/object_detection.py diff --git a/library/robot.py b/jetbot/robot.py similarity index 100% rename from library/robot.py rename to jetbot/robot.py diff --git a/library/ssd_tensorrt/CMakeLists.txt b/jetbot/ssd_tensorrt/CMakeLists.txt similarity index 100% rename from library/ssd_tensorrt/CMakeLists.txt rename to jetbot/ssd_tensorrt/CMakeLists.txt diff --git a/library/ssd_tensorrt/FlattenConcat.cpp b/jetbot/ssd_tensorrt/FlattenConcat.cpp similarity index 100% rename from library/ssd_tensorrt/FlattenConcat.cpp rename to jetbot/ssd_tensorrt/FlattenConcat.cpp diff --git a/library/ssd_tensorrt/__init__.py b/jetbot/ssd_tensorrt/__init__.py similarity index 100% rename from library/ssd_tensorrt/__init__.py rename to jetbot/ssd_tensorrt/__init__.py diff --git a/library/ssd_tensorrt/ssd_tensorrt.py b/jetbot/ssd_tensorrt/ssd_tensorrt.py similarity index 100% rename from library/ssd_tensorrt/ssd_tensorrt.py rename to jetbot/ssd_tensorrt/ssd_tensorrt.py diff --git a/library/tensorrt_model.py b/jetbot/tensorrt_model.py similarity index 100% rename from library/tensorrt_model.py rename to jetbot/tensorrt_model.py diff --git a/library/utils/__init__.py b/jetbot/utils/__init__.py similarity index 100% rename from library/utils/__init__.py rename to jetbot/utils/__init__.py diff --git a/library/utils/create_jupyter_service.py b/jetbot/utils/create_jupyter_service.py similarity index 100% rename from library/utils/create_jupyter_service.py rename to jetbot/utils/create_jupyter_service.py diff --git a/library/utils/create_stats_service.py b/jetbot/utils/create_stats_service.py similarity index 100% rename from library/utils/create_stats_service.py rename to jetbot/utils/create_stats_service.py diff --git a/library/utils/utils.py b/jetbot/utils/utils.py similarity index 100% rename from library/utils/utils.py rename to jetbot/utils/utils.py