Skip to content

Commit

Permalink
update readme/url and remove old build info
Browse files Browse the repository at this point in the history
  • Loading branch information
davidbuzz committed Nov 27, 2023
1 parent 80e8298 commit 3f5ed12
Show file tree
Hide file tree
Showing 57 changed files with 2,251 additions and 3 deletions.
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# Solo Developer Guide

[![Build Status](https://travis-ci.org/3drobotics/solodevguide.svg?branch=master)](https://travis-ci.org/3drobotics/solodevguide)
[![Circle CI](https://circleci.com/gh/3drobotics/solodevguide.svg?style=svg)](https://circleci.com/gh/3drobotics/solodevguide)

This guide is published online at: [dev.3dr.com](http://dev.3dr.com/)
This guide is published online at: [https://opensolo.github.io/solodevguide/](https://opensolo.github.io/solodevguide/)

To start editing, install [GitBook](https://www.gitbook.com/) (requires Node.js):

Expand Down
48 changes: 48 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<div style="text-align: center">
<img src="http://3drobotics.com/wp-content/uploads/2015/01/solo-drone-spin-transparent-500px.png">
<h1 style="border: none; font-size: 2.8em; margin-top: 0;" id="solo-development-guide">Solo Development Guide</h1>
</div>

<aside class="caution">
Developers only! This guide is under active development and not intended for consumers. Some modifications may require you to factory reset your Solo in order to return it to a working (and flying) state.
</aside>

This guide describes how to work inside Solo's system architecture and develop applications for Solo.

The objective of this guide is to enable developers to:

* Get a General Overview of how Solo works
* Access and work with Solo's Linux distribution
* Upload and run Python scripts, including DroneKit-Python
* Run services that run on boot
* Process video as it’s being streamed to and from Solo
* Troubleshoot Solo

Navigate using the sidebar or the "next page" arrows to begin.

## Changelog

### 2016-02-01

* New docs for accessory developers: [Solo Accessory Overview](starting-accessories.md), [Battery Bay](hardware-batterybay.md), [Battery Charger Interface](hardware-battery-charging.md).
* [Gimbal](hardware-gimbalbay.md) docs updated. Added power supply information, new gimbal "Beauty Plate" CAD file, information about software integration. Corrected description of HDMI cable.
* [Accessory Bay](hardware-accessorybay.md) docs updated. Added new power supply and communications architecture sections, along with information about how to connect to the accessory port via USB. Improved the information in the pinout.
* [System architecture diagram](concept-architecture.md) updated. Added more detail about components, power supply, data flow.

### 2015-10-29

* Guide relicensed as [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).

### 2015-09-25

* `solo-utils` is removed.
* The PC command line tool [*Solo CLI*](https://github.com/3drobotics/solo-cli) is now used for all examples.
* Video output examples temporarily reduced in scope to improve reliability.

### 2015-09-09

* Initial release!

## License

The Solo Development Guide is released as [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/). See our [Github Repository](https://github.com/3drobotics/solodevguide) for more details.
35 changes: 35 additions & 0 deletions docs/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Summary

This is the summary of the solodevguide.

* Getting Started
* [Accessing Solo](starting-network.md)
* ["solo" Command Line Tool](starting-utils.md)
* [Installing Files and Code](starting-installing.md)
* [Troubleshooting](starting-troubleshooting.md)
* [Rules and Advice](starting-rules.md)
* [Contributing](starting-contributing.md)
* [External Resources](starting-resources.md)
* Concepts
* [Architectural Overview](concept-architecture.md)
* [DroneKit](concept-dronekit.md)
* [Smart Shots](concept-smartshot.md)
* [System Services](concept-service.md)
* [Video Pipeline](concept-video.md)
* Software Examples
* [Running the Examples](example-get-started.md)
* [Hello World (from above)!](example-helloworld.md)
* [Running a Webserver](example-webserver.md)
* [Using OpenCV](example-opencv.md)
* Hardware
* [Solo Accessory Overview](starting-accessories.md)
* [Accessory Bay](hardware-accessorybay.md)
* [Gimbal Bay](hardware-gimbalbay.md)
* [Battery Bay](hardware-batterybay.md)
* [Battery Charger Interface](hardware-battery-charging.md)
* Advanced Topics
* [Licenses](advanced-licenses.md)
* [System Logs](advanced-logs.md)
* [Faster Development](advanced-fasterdev.md)
* [Bundling Python](advanced-python.md)
* [Yocto Linux](advanced-linux.md)
52 changes: 52 additions & 0 deletions docs/advanced-fasterdev.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Faster Development

There are some tricks to developing on Solo faster that we have not documented in the rest of this guide.

## Remove SSH Password Prompt

If you do not want to be prompted for a password each time you SSH into Solo, you can copy your SSH public key to Solo:
<div class="host-code"></div>

```sh
solo provision
```
By copying your public key to Solo, you will no longer be prompted for your password each time you run `ssh`.
(see ["solo" Command Line Tool](starting-utils.html) for more information).
<aside class="note">

## Optimizing SSH Access

You can optimize the ssh process further by adding the following to your `~/.ssh/config`:

<div class="host-code"></div>

```
Host solo 10.1.1.10
Hostname 10.1.1.10
Port 22
User root
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
IdentityFile ~/.ssh/id_rsa
Host soloctrl 10.1.1.1
Hostname 10.1.1.1
Port 22
User root
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
IdentityFile ~/.ssh/id_rsa
```

From then on, any Solo device can be accessed by this shorthand:

<div class="host-code"></div>

```
ssh solo
ssh soloctrl
```

<aside class="note">
We use the synonymous but explicit addresses `[email protected]` and `[email protected]` throughout the rest of this guide.
</aside>
18 changes: 18 additions & 0 deletions docs/advanced-licenses.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Licenses

Root access to Solo grants you access to all components of the system. This page documents the licenses of various components in the system.

* Linux Subsystem
* Yocto definition layer &mdash; Proprietary (3DR)
* Solo package definitions &mdash; Proprietary (3DR)
* uboot &mdash; GPLv2
* Linux kernel with runtime patches &mdash; GPLv2
* Video Encoder &mdash; Proprietary (external party)
* Gimbal firmware &mdash; Proprietary (3DR)
* Controller firmware &mdash; Proprietary (3DR)
* SoloLink Manager &mdash; Proprietary (3DR)
* DroneKit (solo version) &mdash; BSD
* pymavlink (solo version) &mdash; LGPL
* [MAVProxy (solo version)](https://github.com/3drobotics/MAVProxy) &mdash; GPL
* [Ardupilot (solo version)](https://github.com/3drobotics/ardupilot-solo) &mdash; GPL
* [STM32 Loader](https://github.com/3drobotics/stm32loader) &mdash; GPL
23 changes: 23 additions & 0 deletions docs/advanced-linux.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
## Yocto Linux

<aside class="caution">
This guide does not yet support rebuilding Solo's kernel or compiling binary packages.
</aside>

<aside class="todo">
This section for building binary packages or rebuild Solo's kernel is very incomplete. We are working on rolling out mechanisms for doing so in the coming months. If you are a corporate entity and require this, in the short term, please reach out to 3DR about partnering with our dev team.
</aside>

The Linux distribution used is 3DR Poky (based on [Yocto Project Reference Distro](http://www.yoctoproject.org/docs/1.8/mega-manual/mega-manual.html))

```
# uname -a
Linux 3dr_solo 3.10.17-rt12-1.0.0_ga+g3f15a11 #3 SMP PREEMPT Thu Jun 4 04:07:49 UTC 2015 armv7l GNU/Linux
```

```
# cat /etc/issue
3DR Poky (based on Yocto Project Reference Distro) 1.5.1 \n \l
```

Yocto has a package manager [Smart](https://labix.org/smart) that can be used to download packages if Solo is connected to the Internet.
146 changes: 146 additions & 0 deletions docs/advanced-logs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# System Logs

Solo and the Controller log system behaviour and telemetry during all stages of operation. The logs are created in the `/log` directory on both Solo and the Controller.

<aside class="tip">System logs are used by 3DR Technical Support for debugging issues with Solo. Some of the logs (for example telemetry logs) can be analysed directly by developers.</aside>

This topic explains how to download the logs for both [normal end users](#downloading-logs-users) and [developers](#downloading-logs-developers). At the end there is a brief overview of the more important [log types](#log-types).



## Downloading Logs (developers)

Solo *developers* will find it easiest to use the *Solo CLI tool* ``solo logs download`` command to fetch both solo and controller logs to the current directory. For more information see: ["solo" Command Line Tool](starting-utils.html#downloading-logs).

<aside class="tip">We don't recommend this tool for non-developers because it requires additional dependencies
including Python and PyPi to be installed.</aside>

## Downloading Logs (users)

Solo *users* on Mac OSX and Ubuntu (and many other Linux distributions) should get the logs using the [SCP](#downloading-using-scp-mac-linux) program. This program is installed by default on these operating systems, and can be accessed through the terminal application.

Windows users can instead use [WinSCP](#downloading-using-winscp-windows). This allows you to copy files between Solo and the host computer using a graphical interface.

A step-by-step guide for both approaches is provided below.



### Downloading using SCP (Mac/Linux) {#downloading-using-scp-mac-linux}

SCP is a great end-user tool for downloading the logs because it is available by default
from the terminal on Mac OX and many Linux distributions (including Ubuntu 14.04.3 LTS).

The main steps for getting the logs are:

1. Turn on the Solo Controller and Solo and connect your computer to the Solo WiFi network.

<aside class="tip">The default name of the Solo Controller network is "SoloLink"
and the default network password is "sololink". You may have changed these during your initial setup.
</aside>

1. Open a Terminal (on Mac OSX this can be found in *Finder* under menu: **Go | Applications | Utilities | Terminal**).
1. Enter the following commands into the terminal to create directories for the logs and copy the files:

<div class="host-code"></div>

```
mkdir solo controller
scp [email protected]:/log/* ./solo
scp [email protected]:/log/* ./controller
```

* Answer "yes" if prompted to confirm the authenticity of the host.
* Enter the following password (case-sensitive) when prompted: ``TjSDBkAu``

1. Wait for the transfer to complete.




### Downloading using WinSCP (Windows)

*WinSCP* is a GUI version of SCP for Windows. It allows you to view the Solo Controller or Solo file system graphically, and copy the log files using a drag-drop approach.

The main steps for getting the logs are:

1. [Download and install WinSCP from here](http://winscp.net/download/winscp573setup.exe).

1. Turn on the Solo Controller and Solo and connect your computer to the Solo WiFi network.

<aside class="tip">The default name of the Solo Controller network is "SoloLink"
and the default network password is "sololink". You may have changed these during your initial setup.
</aside>

1. Open *WinSCP* and select **New Site**:
<img src="images/advanced_logs_winscp_login.png" width="500" style="display: block">

1. Enter the following site information and then press **Login**:

* **File protocol**: SCP
* **Solo Controller Host IP address:** 10.1.1.1
* **Port number:** 22
* **User name:** root
* **Password:** TjSDBkAu

In "Commander" mode the app will open a view showing your computer file-system on the left and the
Solo Controller view on the right.

<aside class="note">The process to download Solo logs is the same as for the Controller, except for Solo's target IP address:

* **Solo Host IP address:** 10.1.1.10
</aside>


1. Navigate to the *root directory* (one easy way to do this is to select the "/" button):
<img src="images/advanced_logs_winscp_root_directory.png" width="500" style="display: block">

1. Double click on the “log” folder.
<img src="images/advanced_logs_winscp_logs_directory.png" width="500" style="display: block">

1. Select all the files in the directory (do not select folders).

You can do this using normal Windows methods, or click on the **+** icon and choose **OK** to confirm the file mask.
<img src="images/advanced_logs_winscp_select_files.png" width="500" style="display: block">

1. Copy the files from Solo Controller to the host computer.

You can specify the target folder in the left-pane and click on the **Download** button to start the copy (or just drag
and drop the selected file).

Wait for the transfer to complete!

1. Repeat the process to copy files from Solo (the only difference is that the target IP address is ``10.1.1.10``).



## Log Types

The system logs directory (`/log` on both Solo and the Controller) contains all the logs, including telemetry logs, shot logs, and logs for different subsystems.

<aside class="note">The `/log` directory is actually a separate, dedicated partition.</aside>

Logs of a particular type share the same prefix (e.g. `solo.tlog`) and have a numeric suffix to indicate how old they are (e.g. `solo.tlog` is the most recent log, `solo.tlog.1` is the second most recent log, etc.). When a new log is created all logs are pushed down one number. At most, 20 logs are saved!

The main log types are listed below (we hope provide information about the other logs [as it becomes available](https://github.com/3drobotics/solodevguide/issues/224)).


### Solo Controller

* **solo.tlog** - Telemetry logs received by the controller. These can be analysed by developers (they are standard MAVLink tlogs).
* **3dr-solo.log** - Catch-all log, including *dataflash_logger* information.
* **3dr-top.log** - CPU usage statistics.
* **3dr-temp.log** - Temperature logs.

### Solo

* **shotlog.log** - Shot manager logs. These contain various high level events triggered by the shots, such as received input and the status of the gimbal and camera. This will (usually) also include the Python stack trace if *ShotManager* crashes.
* **3dr-solo.log** - Catch-all log, including *dataflash_logger* information.
* **3dr-telem.log** - Logs for bidirectional telemetry bandwidth. This contains information from *telem_forwarder*, the process that communicates on the serial port to PixHawk and relays the telemetry to clients (Controller as a special case and other "clients" that connect - e.g. dataflash_logger).
* **3dr-top.log** - CPU usage statistics.
* **3dr-temp.log** - Temperature logs.
* **shotlog.nnn.log** - Symlinks to shotlogs provided for backwards compatibility (can be ignored).





Loading

0 comments on commit 3f5ed12

Please sign in to comment.