Compare commits

..

34 Commits

Author SHA1 Message Date
Oleg Kalachev
6c8291749f simple_offboard: correctly check manual control timeout, separate it from kill switch check 2020-10-22 19:12:51 +03:00
Alamoris
039d2438cd docs: paragraph about changes in Coex pix version 1.2 (#281)
* docs: add description about coex pix 1.2

* docs: Add new revision 1.2 schemes

* docs: More changes added
2020-10-22 11:09:40 +03:00
Oleg Kalachev
048a605f2f simple_offboard: detect killswitch when auto_arm is set (#280)
* simple_offboard: subscribe to manual control

* simple_offboard: read check_kill_switch parameter

* simple_offboard: check kill switch status

* Fixes
2020-10-20 09:58:32 +03:00
Oleg Kalachev
0e0d4fe5cc led.launch: add led_count and gpio_pin arguments (#279)
* led.launch: add led_count and gpio_pin arguments

* docs: new args in led.launch
2020-10-19 20:58:31 +03:00
Oleg Kalachev
37bbd7522c Merge branch 'master' of github.com:CopterExpress/clover 2020-10-19 16:23:37 +03:00
Oleg Kalachev
f206b2ea18 docs: update projects list 2020-10-19 15:55:07 +03:00
Oleg Kalachev
ae7f3ccfbc docs: new cad models (#277)
* docs: add new cad models for milling

* docs: Сompleted new model table

* docs: orthography

Co-authored-by: Volga <gonzalez1139@gmail.com>
2020-10-17 07:44:37 +03:00
Oleg Kalachev
da28c61f1e main_camera.launch: add forward and backward camera shortcuts 2020-10-15 18:40:17 +03:00
Oleg Kalachev
b7ce588b07 blocks: add yaw_tolerance parameter 2020-10-13 15:22:13 +03:00
Oleg Kalachev
f663a62c1e blocks: add confirm_run parameter for disabling running confirmation 2020-10-13 15:14:41 +03:00
Oleg Kalachev
5b370ee96b blocks: treat cancel in prompt as empty string 2020-10-13 15:06:26 +03:00
Oleg Kalachev
e0512c209e Add code headers 2020-10-13 01:15:56 +03:00
Oleg Kalachev
7385f673de blocks: remove unused code 2020-10-13 01:12:30 +03:00
Oleg Kalachev
5629b0a9b3 led: change default low battery threshold to 3.6 2020-10-08 21:06:29 +03:00
Alamoris
9de0034fb9 docs: add article on assembling Clover 4.2 ws (#275)
* docs: add article about soldering clever

* Rename soldering 4.2 to 4.2 WorldSkills

* Change 4.2 article title

* Add link to 4.2 WS to assembly page

* Edit orthography in 4.2 WS assembly

* Edit orthography in 4.2 assembly

* Edit orthography in 4.2 assemble (en)

* Edit ponctuation in 4.2 WS assemble article

* Edit punctuation in 4.2 assemble article

* assemble 4.2 WS: remove unnecessary emphases + editing

* assemble 4.2: remove unnecessary emphases + editing

* Edit assemble 4.2, remove unnecessary emphases (en)

* Make COEX Pix a link in assemble 4.2 article

* Make COEX Pix a link in assemble 4.2 WS article

Co-authored-by: Oleg Kalachev <okalachev@gmail.com>
2020-10-08 20:45:03 +03:00
Oleg Kalachev
ae29fe00d3 docs: fix typo in css 2020-10-08 06:23:42 +03:00
Oleg Kalachev
7295c6c040 docs: make images in assembly articles links 2020-10-08 05:31:18 +03:00
Oleg Kalachev
11bdf2d3da docs: fix link in assembly articles 2020-10-08 05:10:01 +03:00
Alamoris
89ccca3c30 docs: instructions for connecting to LogMeIn VPN (#276)
* docs: add article about connection to vpn

* docs: fix

* docs: add instruction for connecting using Windows

* Edit vpn_hamachi article

* docs: update hamachi_vpn article

Co-authored-by: Oleg Kalachev <okalachev@gmail.com>
2020-10-07 18:39:06 +03:00
Oleg Kalachev
50218a8822 docs: add COEX Pix mention in firmware flashing article 2020-10-07 03:53:14 +03:00
Oleg Kalachev
11d5da5db2 docs: minor change 2020-10-07 00:18:02 +03:00
Oleg Kalachev
757129782e docs: add simulator screenshot 2020-10-07 00:17:28 +03:00
Oleg Kalachev
f7c1f4330d docs: add link to cad-models article to assembly section 2020-10-06 04:18:22 +03:00
Oleg Kalachev
b36292cdb8 blocks: add print-range example 2020-10-06 01:40:07 +03:00
Oleg Kalachev
a9f6fe329b docs: minor summary change 2020-10-06 01:38:19 +03:00
Oleg Kalachev
f89cc92736 docs: rename glossary articles back to glossary.md 2020-10-06 01:36:17 +03:00
Oleg Kalachev
60755fa1b5 gitbook: enable collapsible-menu (#270)
* gitbook: enable collapsible-menu

* Collapse main menu (en)

* Update events and supplementary materials articles

* Fix collapsed items of main menu

* Add Copter Hack 2021 article
2020-10-06 01:05:53 +03:00
Oleg Kalachev
792352d072 blocks: add flip example 2020-10-01 22:20:37 +03:00
Oleg Kalachev
2f6d9639c1 blocks: fix setpoint block 2020-10-01 22:20:26 +03:00
Oleg Kalachev
d52175bb30 docs: css cicle class 2020-10-01 05:10:26 +03:00
Oleg Kalachev
be6e894b80 docs: add led events table 2020-10-01 05:09:00 +03:00
Oleg Kalachev
2f6125ce54 Implement block programming (using Blockly) (#272)
* Clover Blockly: add first blocks set

* Adjust Blockly settings

* Fix get_position output type

* Add screenshot

* Rename readme.md to README.md

* Resize screenshot

* Add package.xml

* Little change

* Fixes

* Add python_compressed to blockly

* Implement some of the Clover blocks in Python

* Make Python indentation 4 spaces

* Fixes to Python blocks implementation

* Implement set_velocity block in Python

* Implement wait_arrival block in Python

* Fix indentation in Python implementation of blocks

* Fix

* Fix land_wait template

* Set reserved words in Python

* Change default frame_id to aruco_map in get_position block

* Fix

* Move blocks definitions to blocks.js

* Get rid of missing favicon error

* Simplify navigate

* Rearrange layout, add tabs

* Generate Python code

* Small style change

* -console.log

* Code style

* Use modules

* Move modules to the header

* Correct order for ROS definitions + generating "backend" code

* Fix rangefinder_distance block

* simple_offboard: commands to change only yaw and yaw rate

* Implement set_yaw block

* Start working on Blockly documentation

* Implement print block with a topic

* Unneeded code

* Little fixes

* Fix indentation

* Fixes

* Fix wait_arival, get_distance

* Implement running Blockly programs, implement prompt block, fixes

* Add land button

* Little change

* Fix reserved words + little fixes

* +x for main.py

* Simplify run button

* Auto-save and load workspace

* Make land button work

* Handle exceptions

* Minor change

* Add help URL for blocks

* Fix

* Implement arrived block

* Mark blockly and highlight.js as linguist-vendored

* Add forgotten CMakeLists.txt

* Add wait checkbox to set_yaw block

* Disable run button when disconnected

* Add message and service files

* Add some comments

* Add tooltip to some blocks

* Implement GPIO blocks

* Don’t latch print message to prevent duplication

* Prevent duplication prompts

* Add ROS init code to backend code anyways

* Make GPIO blocks color a constant

* Minor fix

* More correctly update blocks on input value changes

* Minor fixes

* Remove unneeded readonly attribute

* Add marker ID shadow blocks to toolbox

* Add lacking reserved words

* Fix frame id generation for complex marker id expressions

* Consider frame_id in set_yaw block

* Shorten ros module import

* Implement stop service

* Disable and enable run button correctly

* Don’t print KeyboardInterrupt exceptions

* Put notifications to notifications element

* Add 'running' mark

* Disable signal in backend python code

* Sleep a little bit to let rospy initialize publishers

* Remove accidental code

* Make ROS namespace and private namespace constants

* editorconfig-lint: don’t check Blockly code

* Use private namespace constant in Python generator

* Implement ~running topic to display current program status more robustly

* Make navigate tolerance and sleep time constants

* Make set_leds and and set_effect services proxies persistent

* Replace a number with constant

* Limit ~block topic publishing rate
Otherwise messages get queued making the frontend to freeze

* Improve internal documentation

* Append 'map' to frames list

* Return degrees in get_attitude block

* Move getting yaw in a separate block

* Improve block tooltips

* Add some more files to editorconfig-lint excludes

* Add get_yaw block to toolbox

* Implement get_time block

* Implement ~store and ~load services for storing user programs

* Set auto_arm only in take_off block

* Minor CSS fixes

* Make 'Python' tab textarea-like

* Implement saving and loading programs

* Adjust styles

* Retrieve only .xml files in load service

* Forgotten code

* Documentation on store and load services

* Add some examples

* Add blocks programming arg to launch file

* Update docs

* Add package’s dependencies

* Add dependency

* Add title to select

* Fix syntax

* Minor fix in docs

* Add forgotten roslib.js

* Run user program in the same process

* Use print function for print block in Python 2

* Add variables example

* Fix url

* Add functions example

* Fix set_servo block

* Fix gpio_read block

* Update blocks screenshot

* Update docs

* Update docs

* Fix set_effect block

* Minor fix in example

* Add setpoint block, remove set_velocity from toolbox

* Remove unused modules

* Unused variable

* Add English article skeleton

* Clarify backend node link error

* Remove unused variable

* Update documentation

* Fix link to documentation

* Add Blockly logo

* Update English article

* Add Blocks programming link to the main page

* Minor change

* Add catkin_install_python to CMakeLists.txt

* Make navigate tolerance and sleep time configurable

* Add minor todo

* Add blockly examples directory to editorconfig-lint excludes

* Rename main node to clover_blocks

* Add a warning to the old blocks programming article

* Fix editorconfig-lint exclude
2020-09-30 17:07:03 +03:00
Volga
c6a238c671 docs: fixed gpio port assignment 2020-09-10 14:46:58 +03:00
Volga
28851f39ad docs: add notice 2020-09-10 13:56:57 +03:00
130 changed files with 123035 additions and 405 deletions

View File

@@ -2,14 +2,17 @@
<arg name="ws281x" default="true"/>
<arg name="led_effect" default="true"/>
<arg name="led_notify" default="true"/>
<arg name="led_count" default="58"/>
<arg name="gpio_pin" default="21"/>
<arg name="simulator" default="false"/>
<!-- For additional help go to https://clover.coex.tech/led -->
<!-- ws281x led strip driver -->
<node pkg="ws281x" name="led" type="ws281x_node" clear_params="true" output="screen" if="$(eval ws281x and not simulator)">
<param name="led_count" value="58"/>
<param name="gpio_pin" value="21"/>
<param name="led_count" value="$(arg led_count)"/>
<param name="gpio_pin" value="$(arg gpio_pin)"/>
<param name="brightness" value="64"/>
<param name="strip_type" value="WS2811_STRIP_GRB"/>
<param name="target_frequency" value="800000"/>
@@ -32,7 +35,7 @@
altctl: { r: 255, g: 255, b: 40 }
posctl: { r: 50, g: 100, b: 220 }
offboard: { r: 220, g: 20, b: 250 }
low_battery: { threshold: 3.7, effect: blink_fast, r: 255, g: 0, b: 0 }
low_battery: { threshold: 3.6, effect: blink_fast, r: 255, g: 0, b: 0 }
error: { effect: flash, r: 255, g: 0, b: 0 }
</rosparam>
</node>

View File

@@ -9,6 +9,8 @@
<node if="$(eval direction_z == 'down' and direction_y == 'forward')" pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 -0.07 1.5707963 0 3.1415926 base_link main_camera_optical"/>
<node if="$(eval direction_z == 'up' and direction_y == 'backward')" pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 0.07 1.5707963 0 0 base_link main_camera_optical"/>
<node if="$(eval direction_z == 'up' and direction_y == 'forward')" pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 0.07 -1.5707963 0 0 base_link main_camera_optical"/>
<node if="$(eval direction_z == 'forward')" pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.03 0 0.05 -1.5707963 0 -1.5707963 base_link main_camera_optical"/>
<node if="$(eval direction_z == 'backward')" pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="-0.03 0 0.05 1.5707963 0 -1.5707963 base_link main_camera_optical"/>
<!-- Template for custom camera orientation -->
<!-- Camera position and orientation are represented by base_link -> main_camera_optical transform -->

View File

@@ -36,6 +36,7 @@
#include <mavros_msgs/Thrust.h>
#include <mavros_msgs/State.h>
#include <mavros_msgs/StatusText.h>
#include <mavros_msgs/ManualControl.h>
#include <clover/GetTelemetry.h>
#include <clover/Navigate.h>
@@ -72,9 +73,10 @@ ros::Duration state_timeout;
ros::Duration velocity_timeout;
ros::Duration global_position_timeout;
ros::Duration battery_timeout;
ros::Duration manual_control_timeout;
float default_speed;
bool auto_release;
bool land_only_in_offboard, nav_from_sp;
bool land_only_in_offboard, nav_from_sp, check_kill_switch;
std::map<string, string> reference_frames;
// Publishers
@@ -122,6 +124,7 @@ enum { YAW, YAW_RATE, TOWARDS } setpoint_yaw_type;
// Last received telemetry messages
mavros_msgs::State state;
mavros_msgs::StatusText statustext;
mavros_msgs::ManualControl manual_control;
PoseStamped local_position;
TwistStamped velocity;
NavSatFix global_position;
@@ -486,6 +489,21 @@ void publishSetpoint(const ros::TimerEvent& event)
publish(event.current_real);
}
inline void checkManualControl()
{
if (!manual_control_timeout.isZero() && TIMEOUT(manual_control, manual_control_timeout)) {
throw std::runtime_error("Manual control timeout, RC is switched off?");
}
if (check_kill_switch) {
const int KILL_SWITCH_BIT = 12; // https://github.com/PX4/Firmware/blob/c302514a0809b1765fafd13c014d705446ae1113/src/modules/mavlink/mavlink_messages.cpp#L3975
bool kill_switch = manual_control.buttons & (1 << KILL_SWITCH_BIT);
if (kill_switch)
throw std::runtime_error("Kill switch is on");
}
}
inline void checkState()
{
if (TIMEOUT(state, state_timeout))
@@ -513,6 +531,10 @@ bool serve(enum setpoint_type_t sp_type, float x, float y, float z, float vx, fl
// Checks
checkState();
if (auto_arm) {
checkManualControl();
}
// default frame is local frame
if (frame_id.empty())
frame_id = local_frame;
@@ -834,6 +856,7 @@ int main(int argc, char **argv)
nh_priv.param("auto_release", auto_release, true);
nh_priv.param("land_only_in_offboard", land_only_in_offboard, true);
nh_priv.param("nav_from_sp", nav_from_sp, true);
nh_priv.param("check_kill_switch", check_kill_switch, true);
nh_priv.param("default_speed", default_speed, 0.5f);
nh_priv.param<string>("body_frame", body.child_frame_id, "body");
nh_priv.getParam("reference_frames", reference_frames);
@@ -843,6 +866,7 @@ int main(int argc, char **argv)
velocity_timeout = ros::Duration(nh_priv.param("velocity_timeout", 2.0));
global_position_timeout = ros::Duration(nh_priv.param("global_position_timeout", 10.0));
battery_timeout = ros::Duration(nh_priv.param("battery_timeout", 2.0));
manual_control_timeout = ros::Duration(nh_priv.param("manual_control_timeout", 0.0));
transform_timeout = ros::Duration(nh_priv.param("transform_timeout", 0.5));
telemetry_transform_timeout = ros::Duration(nh_priv.param("telemetry_transform_timeout", 0.5));
@@ -860,6 +884,7 @@ int main(int argc, char **argv)
auto global_position_sub = nh.subscribe("mavros/global_position/global", 1, &handleMessage<NavSatFix, global_position>);
auto battery_sub = nh.subscribe("mavros/battery", 1, &handleMessage<BatteryState, battery>);
auto statustext_sub = nh.subscribe("mavros/statustext/recv", 1, &handleMessage<mavros_msgs::StatusText, statustext>);
auto manual_control_sub = nh.subscribe("mavros/manual_control/control", 1, &handleMessage<mavros_msgs::ManualControl, manual_control>);
auto local_position_sub = nh.subscribe("mavros/local_position/pose", 1, &handleLocalPosition);
// Setpoint publishers

View File

@@ -30,7 +30,9 @@ The frontend files are located in [`www`](./www/) subdirectory. The frontend app
Parameters read by frontend:
* `~navigate_tolerance` (*float*) distance tolerance in meters, used for navigate-like blocks (default: 0.2).
* `~yaw_tolerance` (*float*) yaw angle tolerance in degrees, used in set_yaw block (default: 20).
* `~sleep_time` (*float*) duration of sleep in loop cycles, used for navigate-like blocks (default: 0.2).
* `~confirm_run` (*bool*) enable confirmation to run the program (default: true).
These parameters also can be set as URL GET-parameters, for example:

View File

@@ -1,5 +1,13 @@
#!/usr/bin/env python
# Copyright (C) 2020 Copter Express Technologies
#
# Author: Oleg Kalachev <okalachev@gmail.com>
#
# Distributed under MIT License (available at https://opensource.org/licenses/MIT).
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
from __future__ import print_function
import rospy

View File

@@ -1,3 +1,13 @@
/*
* Copyright (C) 2020 Copter Express Technologies
*
* Author: Oleg Kalachev <okalachev@gmail.com>
*
* Distributed under MIT License (available at https://opensource.org/licenses/MIT).
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*/
const COLOR_FLIGHT = 293;
const COLOR_STATE = 36;
const COLOR_LED = 143;

View File

@@ -1,3 +1,13 @@
/*
* Copyright (C) 2020 Copter Express Technologies
*
* Author: Oleg Kalachev <okalachev@gmail.com>
*
* Distributed under MIT License (available at https://opensource.org/licenses/MIT).
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*/
import * as ros from './ros.js';
import './blocks.js';
import {generateCode, generateUserCode} from './python.js';
@@ -29,7 +39,9 @@ var workspace = Blockly.inject('blockly', {
function readParams() {
return Promise.all([
ros.readParam('navigate_tolerance', true, 0.2),
ros.readParam('sleep_time', true, 0.2)
ros.readParam('yaw_tolerance', true, 20),
ros.readParam('sleep_time', true, 0.2),
ros.readParam('confirm_run', true, true),
]);
}
@@ -97,7 +109,7 @@ new ROSLIB.Topic({ ros: ros.ros, name: ros.priv + 'prompt', messageType: 'clover
name: ros.priv + 'input/' + msg.id,
messageType: 'std_msgs/String',
latch: true
}).publish(new ROSLIB.Message({ data: response }));
}).publish(new ROSLIB.Message({ data: response || '' }));
});
window.stopProgram = function() {
@@ -113,7 +125,7 @@ ros.ros.on('close', update);
ready.then(() => runButton.disabled = false);
window.runProgram = function() {
if (!confirm('Run program?')) return;
if (ros.params.confirm_run && !confirm('Run program?')) return;
runRequest = true;
update();

View File

@@ -1,3 +1,13 @@
/*
* Copyright (C) 2020 Copter Express Technologies
*
* Author: Oleg Kalachev <okalachev@gmail.com>
*
* Distributed under MIT License (available at https://opensource.org/licenses/MIT).
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*/
import {params} from './ros.js';
// If any new block imports any library, add that library name here.
@@ -8,14 +18,9 @@ Blockly.Python.addReservedWords('pigpio,pi,Range');
Blockly.Python.addReservedWords('SetLEDEffect,set_effect');
Blockly.Python.addReservedWords('SetLEDs,LEDState,set_leds');
// TODO: parametrize
const navigate_tolerance = 0.2;
const sleep_time = 0.2;
const IMPORT_SRV = `from clover import srv
from std_srvs.srv import Trigger`;
// TODO: tolerance to parameters
const NAVIGATE_WAIT = () => `\ndef navigate_wait(x=0, y=0, z=0, speed=0.5, frame_id='body', auto_arm=False):
res = navigate(x=x, y=y, z=z, yaw=float('nan'), speed=speed, frame_id=frame_id, auto_arm=auto_arm)
@@ -33,15 +38,13 @@ const LAND_WAIT = () => `\ndef land_wait():
while get_telemetry().armed:
rospy.sleep(${params.sleep_time})\n`;
// TODO: tolerance to parameters
const WAIT_YAW = () => `\ndef wait_yaw():
while not rospy.is_shutdown():
telem = get_telemetry(frame_id='navigate_target')
if abs(telem.yaw) < math.radians(20):
if abs(telem.yaw) < math.radians(${params.yaw_tolerance}):
return
rospy.sleep(${params.sleep_time})\n`;
// TODO: tolerance to parameters
const WAIT_ARRIVAL = () => `\ndef wait_arrival():
while not rospy.is_shutdown():
telem = get_telemetry(frame_id='navigate_target')
@@ -49,7 +52,6 @@ const WAIT_ARRIVAL = () => `\ndef wait_arrival():
return
rospy.sleep(${params.sleep_time})\n`;
// TODO: tolerance to parameters
const ARRIVED = () => `\ndef arrived():
telem = get_telemetry(frame_id='navigate_target')
return math.sqrt(telem.x ** 2 + telem.y ** 2 + telem.z ** 2) < ${params.navigate_tolerance}\n`

View File

@@ -1,3 +1,13 @@
/*
* Copyright (C) 2020 Copter Express Technologies
*
* Author: Oleg Kalachev <okalachev@gmail.com>
*
* Distributed under MIT License (available at https://opensource.org/licenses/MIT).
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*/
var url = 'ws://' + location.hostname + ':9090';
export var ros = new ROSLIB.Ros({ url });

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

View File

Before

Width:  |  Height:  |  Size: 368 KiB

After

Width:  |  Height:  |  Size: 368 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

View File

Before

Width:  |  Height:  |  Size: 405 KiB

After

Width:  |  Height:  |  Size: 405 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -1,87 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
]>
<svg version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
x="0px" y="0px" width="507px" height="459px" viewBox="-21.914 -25.609 507 459" enable-background="new -21.914 -25.609 507 459"
xml:space="preserve">
<defs>
</defs>
<path fill="#E5D4B1" stroke="#000000" stroke-width="3" d="M466.982,303.788c-22-3-57-23-62-26s-28-28-40-47s-23-42-27-55
s-8-26-9-33s1-23.5,4-30.5c-7-5-21-6-27,7s-11,33-11,46s22,55,8,61s-17,14-89-4s-102-20-109-6s34,20,56,24s72.021,22.634,65,32
c-4.35,5.802-9.375,4.488-20.709,8.488c-19.611,6.922-19.308,9.966-43.791,18.345c-24.433,8.362-22.843,32.226-15.167,36.23
s14.016,6.342,46.386-12.013c14.35-5.34,31.782-8.885,47.115-10.218s24.668,56,41.334,64.667s35.999,8,47.999,8
s18.666,2.001,25.333-1.333s25.334,1.332,35.334,6.666c0,0,38.667,18.667,42,22.667"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M234.483,270.787c33.999-1.999,45.999,30.667,53.999,48.001"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M306.149,245.453c0.334,25.334,11.001,46.668,25.333,54.666"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M239.816,230.787c-8,1.333-17.333,20-13.333,25.333"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M197.149,220.12c-5.333,4-16,13.333-13.333,18.667"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M149.149,212.12c-6.667,4-8.834,15.501-10.167,18.167"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M222.483,280.121c8,4,12,17.332,9.333,26.666"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M201.296,287.393c6.667,4,7.248,23.993,4.581,27.993"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M175.848,298.59c8.648,6.485,9.591,15.534,5.089,26.466"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M293.982,236.288c-4,10-7,18-6,24"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M294.982,165.288c11.947,1.707,2.677,3.252,25-1"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M399.149,286.788c-4,12-8,15.999-14.667,19.999"/>
<path fill="#E5D4B1" stroke="#000000" stroke-width="3" d="M299.816,374.455c15.905-3.181,27.334-5.333,36-8
s21.332-10.001,24.666-16.667s0.667-7.999-1.333-12.666s-23.999-2-29.333,0s-10,4-32,7.333s-28,5-39.334,3.666
c-9.292-1.094,1.335,22.333,6.001,25S269.816,380.455,299.816,374.455z"/>
<path fill="#E5D4B1" stroke="#000000" stroke-width="3" d="M316.784,311.788c18.897-1.333,28.348-2.666,33.435,2.667
s2.906,10.667,1.453,12s-18.171,8.666-26.893,11.333c-8.723,2.667-10.176,0.667-27.619,4.667c-17.444,4-18.897,5.333-23.986,7.333
c-5.088,2-15.263,1.333-24.711-6c-9.449-7.333-7.996-20-7.269-24c0.727-4,1.455-12.667,19.625-14s12.354,4.666,35.614,5.333
C319.691,311.788,316.784,311.788,316.784,311.788z"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M245.815,318.455c-1.923,17.305,1.109,18.166,10.667,25.333"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M275.149,318.787c0,5.333,1.333,17.333,1.333,17.333"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M308.149,317.12c0,2.667,1.334,13.333,1.334,17.333"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M314.815,347.122c0,4,6.667,17.333,6.667,17.333"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M282.482,354.788c1.333,2.667,2.667,14.666,6.667,16"/>
<path fill="none" stroke="#897F6A" stroke-width="2" d="M405.815,318.788c-6.666,12-10.666,42.668-17.333,49.334"/>
<line fill="none" stroke="#963C96" stroke-width="9" stroke-linecap="round" x1="323.482" y1="90.788" x2="322.814" y2="41.788"/>
<polygon fill="#963C96" points="322.814,41.788 299.501,60.3 322.814,0 346.127,60.3 "/>
<line fill="none" stroke="#2828FF" stroke-width="9" stroke-linecap="round" x1="88.996" y1="210.46" x2="40.9" y2="201.067"/>
<polygon fill="#2828FF" points="40.9,201.067 54.24,227.68 0,192.5 63.799,182.044 "/>
<line fill="none" stroke="#E12828" stroke-width="9" stroke-linecap="round" x1="126.377" y1="335.255" x2="95.585" y2="348.005"/>
<polygon fill="#E12828" points="95.585,348.005 118.064,371.413 69.063,358.197 96.605,315.568 "/>
<g>
<path fill="#2828FF" d="M375.868,62.098l-0.308-0.103c-1.121,1.094-2.212,1.887-3.271,2.379s-2.184,0.738-3.373,0.738
c-1.75,0-3.138-0.461-4.163-1.384s-1.538-2.157-1.538-3.702c0-2.01,0.987-3.592,2.963-4.748s4.974-1.883,8.993-2.184v-1.948
c0-1.271-0.144-2.252-0.431-2.943s-0.656-1.176-1.107-1.456s-0.991-0.42-1.62-0.42s-1.173,0.109-1.63,0.328
c-0.459,0.219-0.872,0.632-1.241,1.241s-0.643,1.453-0.82,2.533h-3.876v-3.732c1.572-0.697,2.902-1.22,3.988-1.569
c1.088-0.349,2.099-0.605,3.035-0.769s1.836-0.246,2.697-0.246c1.654,0,2.977,0.219,3.969,0.656
c0.99,0.438,1.732,1.148,2.225,2.133s0.738,2.345,0.738,4.081v7.998c0,1.162,0.034,1.986,0.103,2.471s0.175,0.837,0.317,1.056
c0.145,0.219,0.328,0.39,0.555,0.513c0.225,0.123,0.639,0.26,1.24,0.41v1.354h-7.629L375.868,62.098z M375.191,55.104
c-2.119,0.055-3.688,0.451-4.707,1.189s-1.527,1.818-1.527,3.24c0,0.848,0.232,1.494,0.697,1.938s1.107,0.667,1.928,0.667
c0.629,0,1.224-0.167,1.784-0.502s1.005-0.783,1.333-1.343s0.492-1.155,0.492-1.784V55.104z"/>
<path d="M403.971,52.808l9.208,9.311l-2.051,2.051l-9.188-9.372l-9.475,9.29l-1.907-1.928l9.372-9.352L390.6,43.6l2.051-2.051
l9.29,9.27l9.29-9.27l1.928,1.907L403.971,52.808z"/>
<path fill="#E12828" d="M422.54,42.492c0-1.299-0.021-2.242-0.062-2.83s-0.127-1.042-0.256-1.364
c-0.131-0.321-0.328-0.574-0.596-0.759c-0.266-0.185-0.734-0.345-1.404-0.482v-1.354l5.722-0.287h2.522v11.751l0.021,0.021
c1.217-1.135,2.32-1.931,3.312-2.389s2.007-0.687,3.046-0.687c2.434,0,4.259,0.858,5.476,2.574s1.825,4.283,1.825,7.701
c0,3.568-0.804,6.248-2.409,8.039c-1.607,1.791-3.982,2.687-7.127,2.687c-2.16,0-4.136-0.39-5.927-1.169l-1.518,1.169l-2.625-0.369
V42.492z M428.466,58.058c0,1.682,0.29,2.922,0.871,3.722s1.48,1.2,2.697,1.2c1.258,0,2.218-0.66,2.881-1.979
s0.995-3.203,0.995-5.65c0-2.693-0.294-4.703-0.882-6.029s-1.504-1.989-2.748-1.989c-0.602,0-1.196,0.157-1.784,0.472
s-1.073,0.762-1.456,1.343s-0.574,1.22-0.574,1.917V58.058z"/>
</g>
<g>
<path fill="#2828FF" d="M74.339,166.769l-0.308-0.103c-1.121,1.094-2.212,1.887-3.271,2.379s-2.184,0.738-3.373,0.738
c-1.75,0-3.138-0.461-4.163-1.384s-1.538-2.157-1.538-3.702c0-2.01,0.987-3.592,2.963-4.748s4.974-1.883,8.993-2.184v-1.948
c0-1.271-0.144-2.252-0.431-2.943s-0.656-1.176-1.107-1.456s-0.991-0.42-1.62-0.42s-1.173,0.109-1.63,0.328
c-0.459,0.219-0.872,0.632-1.241,1.241s-0.643,1.453-0.82,2.533h-3.876v-3.732c1.572-0.697,2.902-1.22,3.988-1.569
c1.088-0.349,2.099-0.605,3.035-0.769s1.836-0.246,2.697-0.246c1.654,0,2.977,0.219,3.969,0.656
c0.99,0.438,1.732,1.148,2.225,2.133s0.738,2.345,0.738,4.081v7.998c0,1.162,0.034,1.986,0.103,2.471s0.175,0.837,0.317,1.056
c0.145,0.219,0.328,0.39,0.555,0.513c0.225,0.123,0.639,0.26,1.24,0.41v1.354h-7.629L74.339,166.769z M73.663,159.775
c-2.119,0.055-3.688,0.451-4.707,1.189s-1.527,1.818-1.527,3.24c0,0.848,0.232,1.494,0.697,1.938s1.107,0.667,1.928,0.667
c0.629,0,1.224-0.167,1.784-0.502s1.005-0.783,1.333-1.343s0.492-1.155,0.492-1.784V159.775z"/>
</g>
<g>
<path fill="#E12828" d="M93.716,283.163c0-1.299-0.021-2.242-0.062-2.83s-0.127-1.042-0.256-1.363
c-0.131-0.321-0.328-0.574-0.596-0.759c-0.266-0.185-0.734-0.345-1.404-0.481v-1.354l5.722-0.287h2.522v11.75l0.021,0.021
c1.217-1.135,2.32-1.932,3.312-2.39s2.007-0.687,3.046-0.687c2.434,0,4.259,0.857,5.476,2.573s1.825,4.282,1.825,7.7
c0,3.568-0.804,6.248-2.409,8.039c-1.607,1.791-3.982,2.688-7.127,2.688c-2.16,0-4.136-0.391-5.927-1.17l-1.518,1.17l-2.625-0.369
V283.163z M99.643,298.729c0,1.682,0.29,2.922,0.871,3.722s1.48,1.2,2.697,1.2c1.258,0,2.218-0.66,2.881-1.979
s0.995-3.202,0.995-5.649c0-2.693-0.294-4.703-0.882-6.029s-1.504-1.99-2.748-1.99c-0.602,0-1.196,0.158-1.784,0.473
s-1.073,0.762-1.456,1.343s-0.574,1.22-0.574,1.917V298.729z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.0 KiB

Some files were not shown because too many files have changed in this diff Show More