{"id":19491557,"url":"https://github.com/ev3dev-lang-java/docking-station","last_synced_at":"2025-02-25T19:45:30.840Z","repository":{"id":47573351,"uuid":"99951511","full_name":"ev3dev-lang-java/docking-station","owner":"ev3dev-lang-java","description":"Build your docking station for your Brick","archived":false,"fork":false,"pushed_at":"2017-09-09T21:50:11.000Z","size":4603,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-08T08:46:26.426Z","etag":null,"topics":["docking-station","ev3","ev3dev","lejos","robotics"],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ev3dev-lang-java.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-08-10T18:02:27.000Z","updated_at":"2019-03-20T01:50:59.000Z","dependencies_parsed_at":"2022-08-21T04:00:18.531Z","dependency_job_id":null,"html_url":"https://github.com/ev3dev-lang-java/docking-station","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fdocking-station","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fdocking-station/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fdocking-station/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ev3dev-lang-java%2Fdocking-station/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ev3dev-lang-java","download_url":"https://codeload.github.com/ev3dev-lang-java/docking-station/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240738091,"owners_count":19849546,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docking-station","ev3","ev3dev","lejos","robotics"],"created_at":"2024-11-10T21:17:17.614Z","updated_at":"2025-02-25T19:45:30.815Z","avatar_url":"https://github.com/ev3dev-lang-java.png","language":"Java","readme":"# Docking-station\n\n## Vision\n\n- Why do you `Turn off` the Mindstorms Brick?\n\n## Introduction\n\n[Lego Mindstorms](https://www.lego.com/en-us/mindstorms/) is an educational line of products to learn Robotics.\nIn the Third generation of the product, exist a [Lego Mindstorms EV3 educational Set](https://education.lego.com/en-us/products/lego-mindstorms-education-ev3-core-set-/5003400)\nwhich includes a [Rechargeable battery (45501)](https://shop.lego.com/en-US/EV3-Rechargeable-DC-Battery-45501) and \na [Battery Charger (45517)](https://shop.lego.com/en-US/Transformer-10V-DC-45517) but the charger, has been \ndesigned to be operated by humans.\n\n\u003e Why not help your robot to recharge itself?\n\n## A solution\n\n### 1. Custom connector\n\nLego Mindstorms has a [Battery Charger (45517)](https://shop.lego.com/en-US/Transformer-10V-DC-45517) \nwhich allows you to recharge the [Rechargeable battery (45501)](https://shop.lego.com/en-US/EV3-Rechargeable-DC-Battery-45501). \nIf you do some changes in the cable of the charger, it is possible to create a custom connector like this one:\n\n![](./docs/images/connector.jpg)\n\n### 2. Is charging the Brick?\n\n#### 2.1 Using an EV3 Light Sensor\n\nThe EV3 Rechargeable battery has 2 leds (green and red). \nUsing lego Mindstorms has a [Light Sensor (45506)](https://shop.lego.com/en-US/EV3-Color-Sensor-45506) \nwhich it could be used to read the green led enabled which indicates that the battery is charging. \n\n![](./docs/images/lightSensorReadingEV3Battery.jpg)\n\n**Limitations:** If you connect the sensor closed to the green led, you loose a Sensor Port.\n\n#### 2.2 Using a HS110 Smart Plug \n\nIn the market, exist Smart Plugs which are possible to operate using a REST API.\nOne product used in this project is [TP HS 110](http://www.tp-link.com/us/products/details/cat-5516_HS110.html):\n\n![](./docs/images/HS110.jpg)\n\nUsing this kind of devices, is possible to know if the EV3 Brick are charging or not:\n\n**Output when an EV3 Brick is not connected:**\n\n```\nParsing: {\"emeter\":{\"get_realtime\":{\"current\":0.012227,\"voltage\":242.435362,\"power\":0,\"total\":0.006000,\"err_code\":0}}}\nPower: 0.0W, Total Consumption: 0.006kWh Current: 0.012227A Voltage: 242.435362\n```\n\n**Output when an EV3 Brick is connected:**\n\n```\nParsing: {\"emeter\":{\"get_realtime\":{\"current\":0.038435,\"voltage\":242.617563,\"power\":4.639256,\"total\":0.006000,\"err_code\":0}}}\nPower: 4.639256W, Total Consumption: 0.006kWh Current: 0.038435A Voltage: 242.617563\n```\n\n### 3. Where is the Docking Station?\n\nOnce, the robot has a connector to use in an autonomous way, \nit is necessary to help the robot to locate the docking station. \nThis kind of problem could be sorted in the **Local Navigation** category.\n\n\u003e **Local navigation:** The ability to determine one's position relative to objects (stationary or moving) in the environment, and not collide with them as one moves.\n\n### 3.1 Using a custom Arduino IR Beacon\n\nLego Mindstorms EV3 has a [IR Sensor (45509)](https://shop.lego.com/en-US/EV3-Infrared-Sensor-45509) \nwhich is able to process signals from a [IR Beacon (45508)](https://shop.lego.com/en-US/EV3-Infrared-Beacon-45508):\n\n![](./docs/images/arduinoIRBeacon.png)\n\nThe LEGO IR Beacon is nice but after a period of time, the Beacon shutdown so,\nit is necessary to find custom solution which never turn off.\n\n**Note:** `Shane Gingell` from `Out of the BOTS` are working in an Arduino solution.\n\n### 3.2 Add a SLAM Solution\n\nUsing a SLAM Solution, it could be possible to know where is the robot with accuracy.\n\n#### ROS Cartographer SLAM\n\n![](./docs/images/ROS_CARTOGRAPHER_map.png)\n\n#### LeJOS SLAM System\n\n![](./docs/images/LEJOS_SLAM_map.jpg)\n\n## Development\n\n### Example:\n\n``` java\npackage examples;\n\nimport com.intrbiz.iot.hs110.HS110Client;\nimport com.intrbiz.iot.hs110.model.GetRealtime;\nimport ev3dev.actuators.lego.motors.Motor;\nimport ev3dev.sensors.Battery;\nimport ev3dev.sensors.ev3.EV3IRSensor;\nimport lejos.hardware.port.SensorPort;\nimport lejos.robotics.RegulatedMotor;\nimport lejos.robotics.navigation.DifferentialPilot;\nimport lejos.utility.Delay;\nimport lombok.extern.slf4j.Slf4j;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.util.Properties;\n\n/**\n * Created by jabrena on 9/9/17.\n */\npublic @Slf4j class Demo1 {\n\n    private static final int MAX_ITERATIONS = 20;\n\n    //Robot Configuration\n    private static final PilotConfig pilotConf = new PilotConfig();\n    private static final DifferentialPilot pilot = pilotConf.getPilot();\n\n    //EV3 Battery threshold\n    //private static float EV3BATTERY_WARN_LEVEL = 7.60f;\n    private static float EV3BATTERY_WARN_LEVEL = 8.00f;\n    private static float EV3BATTERY_OK_LEVEL = 8.15f;\n    private static float EV3BATTERY_UNDOCK_LEVEL = 8.25f;\n    private static float EV3BATTERY_MAX_LEVEL = 8.50f;\n\n    //HS110\n    private static final String HS110_CONFIG_FILE = \"HS110.properties\";\n    private static final String HS110_CONFIG_IP_FIELD = \"ip\";\n    private static HS110Client hs110;\n\n    //MOTORS Used to Uncharge quickly (simulation real activity)\n    private static RegulatedMotor extraMotor1 = Motor.B;\n    private static RegulatedMotor extraMotor2 = Motor.C;\n\n    public static void main(String[] args) throws Exception {\n\n        LOGGER.info(\"Running a simple FMS to Recharge an EV3 battery\");\n\n        //To Stop the motor (Example: in case of pkill java for example)\n        Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {\n            public void run() {\n                pilot.stop();\n                LOGGER.info(\"{}\", Battery.getInstance().getVoltage());\n                LOGGER.info(\"Catakroker!!!\");\n\n                extraMotor1.stop();\n                extraMotor2.stop();\n            }\n        }));\n\n        extraMotor1 = Motor.B;\n        extraMotor2 = Motor.C;\n\n        final Battery EV3Battery = Battery.getInstance();\n\n        final String hs110Location = getHS110Location();\n        hs110 = new HS110Client(hs110Location);\n\n        enableLed(0);\n\n        float ev3Voltage = 0.0f;\n        boolean charging = false;\n        int iteration = 0;\n\n        while(true) {\n\n            iteration++;\n            extraMotor1.stop();\n            extraMotor2.stop();\n\n            ev3Voltage = EV3Battery.getVoltage();\n            charging = updateCharging();\n            LOGGER.info(\"Iteration: {}, EV3 Battery: {}, Charging: {}\", iteration, ev3Voltage, charging);\n\n            if (ev3Voltage \u003c= EV3BATTERY_WARN_LEVEL) {\n                LOGGER.info(\"STATE: Go to Docking Station\");\n\n                pilot.forward();\n                if (charging) {\n                    pilot.stop();\n                }\n            } else if(\n                    (ev3Voltage \u003e EV3BATTERY_WARN_LEVEL) \u0026\u0026\n                    (ev3Voltage \u003c= EV3BATTERY_OK_LEVEL)) {\n                LOGGER.info(\"STATE: Charging process\");\n\n                if(charging) {\n                    pilot.stop();\n                    Delay.msDelay(10000);\n                }else {\n                    pilot.forward();\n                }\n\n            } else if (\n                    (ev3Voltage \u003e EV3BATTERY_OK_LEVEL) \u0026\u0026\n                    (ev3Voltage \u003c= EV3BATTERY_UNDOCK_LEVEL)) {\n\n                LOGGER.info(\"STATE: Charging Good Level\");\n\n                if (charging) {\n                    pilot.stop();\n                    Delay.msDelay(10000);\n                } else {\n                    pilot.forward();\n                }\n\n            } else if (\n                    (ev3Voltage \u003e EV3BATTERY_UNDOCK_LEVEL) \u0026\u0026\n                    (ev3Voltage \u003c= EV3BATTERY_MAX_LEVEL)) {\n\n                Delay.msDelay(30000);\n\n                if(charging){\n                    LOGGER.info(\"STATE: Undocking process\");\n\n                    pilot.travel(-20);\n                    pilot.stop();\n                }\n\n                charging = updateCharging();\n                if(!charging){\n                    LOGGER.info(\"STATE: Uncharging process\");\n                    //extraMotor1.forward();\n                    extraMotor2.forward();\n                }\n\n                Delay.msDelay(5000);\n\n            }\n\n        }\n\n    }\n\n    private static boolean updateCharging() throws Exception {\n        GetRealtime response = hs110.consumption();\n        return (response.getPower() == 0.0d) ? false : true;\n    }\n\n    private static String getHS110Location() throws IOException {\n        final InputStream in = ClassLoader.getSystemResourceAsStream(HS110_CONFIG_FILE);\n        final Properties prop = new Properties();\n        prop.load(in);\n        in.close();\n\n        return prop.getProperty(HS110_CONFIG_IP_FIELD);\n    }\n\n    private static void enableLed(final int i) throws Exception {\n        if (i % 2 == 0) {\n            hs110.ledOn();\n        } else {\n            hs110.ledOff();\n        }\n    }\n\n}\n```\n\n**Traces:**\n\n```\njava -server -jar /home/robot/docking-station-0.1.0-SNAPSHOT-all.jar \nev3dev#33|2017-09-09 17:42:32 [main] INFO  examples.Demo1 - Running a simple FMS to Recharge an EV3 battery\nev3dev#33|2017-09-09 17:43:04 [main] INFO  examples.Demo1 - Iteration: 1, EV3 Battery: 8.142733, Charging: false\nev3dev#33|2017-09-09 17:43:04 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:43:05 [main] INFO  examples.Demo1 - Iteration: 2, EV3 Battery: 8.111266, Charging: false\nev3dev#33|2017-09-09 17:43:05 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:43:06 [main] INFO  examples.Demo1 - Iteration: 3, EV3 Battery: 8.111266, Charging: false\nev3dev#33|2017-09-09 17:43:06 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:43:07 [main] INFO  examples.Demo1 - Iteration: 4, EV3 Battery: 8.111866, Charging: false\nev3dev#33|2017-09-09 17:43:07 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:43:08 [main] INFO  examples.Demo1 - Iteration: 5, EV3 Battery: 8.096466, Charging: false\nev3dev#33|2017-09-09 17:43:08 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:43:08 [main] INFO  examples.Demo1 - Iteration: 6, EV3 Battery: 8.1122, Charging: false\nev3dev#33|2017-09-09 17:43:08 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:43:09 [main] INFO  examples.Demo1 - Iteration: 7, EV3 Battery: 8.149333, Charging: false\nev3dev#33|2017-09-09 17:43:09 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:43:10 [main] INFO  examples.Demo1 - Iteration: 8, EV3 Battery: 8.150333, Charging: true\nev3dev#33|2017-09-09 17:43:10 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:43:20 [main] INFO  examples.Demo1 - Iteration: 9, EV3 Battery: 8.223, Charging: true\nev3dev#33|2017-09-09 17:43:20 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:43:30 [main] INFO  examples.Demo1 - Iteration: 10, EV3 Battery: 8.233, Charging: true\nev3dev#33|2017-09-09 17:43:30 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:43:41 [main] INFO  examples.Demo1 - Iteration: 11, EV3 Battery: 8.233, Charging: true\nev3dev#33|2017-09-09 17:43:41 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:43:51 [main] INFO  examples.Demo1 - Iteration: 12, EV3 Battery: 8.243, Charging: true\nev3dev#33|2017-09-09 17:43:51 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:44:01 [main] INFO  examples.Demo1 - Iteration: 13, EV3 Battery: 8.243, Charging: true\nev3dev#33|2017-09-09 17:44:01 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:44:11 [main] INFO  examples.Demo1 - Iteration: 14, EV3 Battery: 8.243, Charging: true\nev3dev#33|2017-09-09 17:44:11 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:44:22 [main] INFO  examples.Demo1 - Iteration: 15, EV3 Battery: 8.253, Charging: true\nev3dev#33|2017-09-09 17:44:22 [main] INFO  examples.Demo1 - STATE: Undocking process\nev3dev#33|2017-09-09 17:44:24 [main] INFO  examples.Demo1 - STATE: Uncharging process\nev3dev#33|2017-09-09 17:44:29 [main] INFO  examples.Demo1 - Iteration: 16, EV3 Battery: 8.1466, Charging: false\nev3dev#33|2017-09-09 17:44:29 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:44:30 [main] INFO  examples.Demo1 - Iteration: 17, EV3 Battery: 8.131866, Charging: false\nev3dev#33|2017-09-09 17:44:30 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:44:31 [main] INFO  examples.Demo1 - Iteration: 18, EV3 Battery: 8.138933, Charging: false\nev3dev#33|2017-09-09 17:44:31 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:44:31 [main] INFO  examples.Demo1 - Iteration: 19, EV3 Battery: 8.1312, Charging: false\nev3dev#33|2017-09-09 17:44:31 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:44:32 [main] INFO  examples.Demo1 - Iteration: 20, EV3 Battery: 8.121866, Charging: false\nev3dev#33|2017-09-09 17:44:32 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:44:33 [main] INFO  examples.Demo1 - Iteration: 21, EV3 Battery: 8.115133, Charging: false\nev3dev#33|2017-09-09 17:44:34 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:44:34 [main] INFO  examples.Demo1 - Iteration: 22, EV3 Battery: 8.179333, Charging: true\nev3dev#33|2017-09-09 17:44:34 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:44:45 [main] INFO  examples.Demo1 - Iteration: 23, EV3 Battery: 8.242666, Charging: true\nev3dev#33|2017-09-09 17:44:45 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:44:55 [main] INFO  examples.Demo1 - Iteration: 24, EV3 Battery: 8.252666, Charging: true\nev3dev#33|2017-09-09 17:44:55 [main] INFO  examples.Demo1 - STATE: Undocking process\nev3dev#33|2017-09-09 17:44:57 [main] INFO  examples.Demo1 - STATE: Uncharging process\nev3dev#33|2017-09-09 17:45:02 [main] INFO  examples.Demo1 - Iteration: 25, EV3 Battery: 8.155, Charging: false\nev3dev#33|2017-09-09 17:45:02 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:45:03 [main] INFO  examples.Demo1 - Iteration: 26, EV3 Battery: 8.130866, Charging: false\nev3dev#33|2017-09-09 17:45:03 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:03 [main] INFO  examples.Demo1 - Iteration: 27, EV3 Battery: 8.130866, Charging: false\nev3dev#33|2017-09-09 17:45:03 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:04 [main] INFO  examples.Demo1 - Iteration: 28, EV3 Battery: 8.131533, Charging: false\nev3dev#33|2017-09-09 17:45:04 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:05 [main] INFO  examples.Demo1 - Iteration: 29, EV3 Battery: 8.130866, Charging: false\nev3dev#33|2017-09-09 17:45:05 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:05 [main] INFO  examples.Demo1 - Iteration: 30, EV3 Battery: 8.130533, Charging: false\nev3dev#33|2017-09-09 17:45:05 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:06 [main] INFO  examples.Demo1 - Iteration: 31, EV3 Battery: 8.1168, Charging: false\nev3dev#33|2017-09-09 17:45:06 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:06 [main] INFO  examples.Demo1 - Iteration: 32, EV3 Battery: 8.129866, Charging: false\nev3dev#33|2017-09-09 17:45:07 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:07 [main] INFO  examples.Demo1 - Iteration: 33, EV3 Battery: 8.067533, Charging: false\nev3dev#33|2017-09-09 17:45:07 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:08 [main] INFO  examples.Demo1 - Iteration: 34, EV3 Battery: 8.178333, Charging: false\nev3dev#33|2017-09-09 17:45:08 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:45:08 [main] INFO  examples.Demo1 - Iteration: 35, EV3 Battery: 8.179, Charging: true\nev3dev#33|2017-09-09 17:45:08 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:45:19 [main] INFO  examples.Demo1 - Iteration: 36, EV3 Battery: 8.243, Charging: true\nev3dev#33|2017-09-09 17:45:19 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:45:29 [main] INFO  examples.Demo1 - Iteration: 37, EV3 Battery: 8.243, Charging: true\nev3dev#33|2017-09-09 17:45:29 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:45:39 [main] INFO  examples.Demo1 - Iteration: 38, EV3 Battery: 8.253, Charging: true\nev3dev#33|2017-09-09 17:45:39 [main] INFO  examples.Demo1 - STATE: Undocking process\nev3dev#33|2017-09-09 17:45:41 [main] INFO  examples.Demo1 - STATE: Uncharging process\nev3dev#33|2017-09-09 17:45:46 [main] INFO  examples.Demo1 - Iteration: 39, EV3 Battery: 8.154666, Charging: false\nev3dev#33|2017-09-09 17:45:46 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:45:47 [main] INFO  examples.Demo1 - Iteration: 40, EV3 Battery: 8.1312, Charging: false\nev3dev#33|2017-09-09 17:45:47 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:47 [main] INFO  examples.Demo1 - Iteration: 41, EV3 Battery: 8.139533, Charging: false\nev3dev#33|2017-09-09 17:45:47 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:48 [main] INFO  examples.Demo1 - Iteration: 42, EV3 Battery: 8.139866, Charging: false\nev3dev#33|2017-09-09 17:45:48 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:48 [main] INFO  examples.Demo1 - Iteration: 43, EV3 Battery: 8.130866, Charging: false\nev3dev#33|2017-09-09 17:45:48 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:49 [main] INFO  examples.Demo1 - Iteration: 44, EV3 Battery: 8.131533, Charging: false\nev3dev#33|2017-09-09 17:45:49 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:50 [main] INFO  examples.Demo1 - Iteration: 45, EV3 Battery: 8.121866, Charging: false\nev3dev#33|2017-09-09 17:45:50 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:50 [main] INFO  examples.Demo1 - Iteration: 46, EV3 Battery: 8.122466, Charging: false\nev3dev#33|2017-09-09 17:45:50 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:51 [main] INFO  examples.Demo1 - Iteration: 47, EV3 Battery: 8.1478, Charging: false\nev3dev#33|2017-09-09 17:45:51 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:45:52 [main] INFO  examples.Demo1 - Iteration: 48, EV3 Battery: 8.062733, Charging: true\nev3dev#33|2017-09-09 17:45:52 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:02 [main] INFO  examples.Demo1 - Iteration: 49, EV3 Battery: 8.243, Charging: true\nev3dev#33|2017-09-09 17:46:03 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:46:13 [main] INFO  examples.Demo1 - Iteration: 50, EV3 Battery: 8.253, Charging: true\nev3dev#33|2017-09-09 17:46:13 [main] INFO  examples.Demo1 - STATE: Undocking process\nev3dev#33|2017-09-09 17:46:20 [main] INFO  examples.Demo1 - Iteration: 51, EV3 Battery: 8.155, Charging: false\nev3dev#33|2017-09-09 17:46:20 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:46:20 [main] INFO  examples.Demo1 - Iteration: 52, EV3 Battery: 8.1238, Charging: false\nev3dev#33|2017-09-09 17:46:20 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:21 [main] INFO  examples.Demo1 - Iteration: 53, EV3 Battery: 8.130533, Charging: false\nev3dev#33|2017-09-09 17:46:21 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:21 [main] INFO  examples.Demo1 - Iteration: 54, EV3 Battery: 8.122466, Charging: false\nev3dev#33|2017-09-09 17:46:21 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:22 [main] INFO  examples.Demo1 - Iteration: 55, EV3 Battery: 8.132133, Charging: false\nev3dev#33|2017-09-09 17:46:22 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:22 [main] INFO  examples.Demo1 - Iteration: 56, EV3 Battery: 8.1312, Charging: false\nev3dev#33|2017-09-09 17:46:22 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:23 [main] INFO  examples.Demo1 - Iteration: 57, EV3 Battery: 8.1312, Charging: false\nev3dev#33|2017-09-09 17:46:23 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:23 [main] INFO  examples.Demo1 - Iteration: 58, EV3 Battery: 8.139866, Charging: false\nev3dev#33|2017-09-09 17:46:23 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:24 [main] INFO  examples.Demo1 - Iteration: 59, EV3 Battery: 8.1168, Charging: false\nev3dev#33|2017-09-09 17:46:24 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:24 [main] INFO  examples.Demo1 - Iteration: 60, EV3 Battery: 8.101, Charging: true\nev3dev#33|2017-09-09 17:46:24 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:34 [main] INFO  examples.Demo1 - Iteration: 61, EV3 Battery: 8.242666, Charging: true\nev3dev#33|2017-09-09 17:46:34 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:46:44 [main] INFO  examples.Demo1 - Iteration: 62, EV3 Battery: 8.252666, Charging: true\nev3dev#33|2017-09-09 17:46:44 [main] INFO  examples.Demo1 - STATE: Undocking process\nev3dev#33|2017-09-09 17:46:51 [main] INFO  examples.Demo1 - Iteration: 63, EV3 Battery: 8.165, Charging: false\nev3dev#33|2017-09-09 17:46:51 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:46:52 [main] INFO  examples.Demo1 - Iteration: 64, EV3 Battery: 8.132133, Charging: false\nev3dev#33|2017-09-09 17:46:52 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:52 [main] INFO  examples.Demo1 - Iteration: 65, EV3 Battery: 8.123466, Charging: false\nev3dev#33|2017-09-09 17:46:52 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:53 [main] INFO  examples.Demo1 - Iteration: 66, EV3 Battery: 8.1312, Charging: false\nev3dev#33|2017-09-09 17:46:53 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:53 [main] INFO  examples.Demo1 - Iteration: 67, EV3 Battery: 8.131533, Charging: false\nev3dev#33|2017-09-09 17:46:53 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:54 [main] INFO  examples.Demo1 - Iteration: 68, EV3 Battery: 8.130866, Charging: false\nev3dev#33|2017-09-09 17:46:54 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:54 [main] INFO  examples.Demo1 - Iteration: 69, EV3 Battery: 8.1312, Charging: false\nev3dev#33|2017-09-09 17:46:54 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:55 [main] INFO  examples.Demo1 - Iteration: 70, EV3 Battery: 8.139866, Charging: false\nev3dev#33|2017-09-09 17:46:55 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:55 [main] INFO  examples.Demo1 - Iteration: 71, EV3 Battery: 8.139866, Charging: false\nev3dev#33|2017-09-09 17:46:55 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:55 [main] INFO  examples.Demo1 - Iteration: 72, EV3 Battery: 8.130866, Charging: false\nev3dev#33|2017-09-09 17:46:55 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:56 [main] INFO  examples.Demo1 - Iteration: 73, EV3 Battery: 8.139266, Charging: false\nev3dev#33|2017-09-09 17:46:56 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:56 [main] INFO  examples.Demo1 - Iteration: 74, EV3 Battery: 8.122133, Charging: false\nev3dev#33|2017-09-09 17:46:56 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:46:57 [main] INFO  examples.Demo1 - Iteration: 75, EV3 Battery: 8.188333, Charging: false\nev3dev#33|2017-09-09 17:46:57 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:46:58 [main] INFO  examples.Demo1 - Iteration: 76, EV3 Battery: 8.1388, Charging: true\nev3dev#33|2017-09-09 17:46:58 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:08 [main] INFO  examples.Demo1 - Iteration: 77, EV3 Battery: 8.253, Charging: true\nev3dev#33|2017-09-09 17:47:08 [main] INFO  examples.Demo1 - STATE: Undocking process\nev3dev#33|2017-09-09 17:47:10 [main] INFO  examples.Demo1 - STATE: Uncharging process\nev3dev#33|2017-09-09 17:47:16 [main] INFO  examples.Demo1 - Iteration: 78, EV3 Battery: 8.1566, Charging: false\nev3dev#33|2017-09-09 17:47:16 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:47:16 [main] INFO  examples.Demo1 - Iteration: 79, EV3 Battery: 8.123466, Charging: false\nev3dev#33|2017-09-09 17:47:16 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:16 [main] INFO  examples.Demo1 - Iteration: 80, EV3 Battery: 8.1312, Charging: false\nev3dev#33|2017-09-09 17:47:16 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:17 [main] INFO  examples.Demo1 - Iteration: 81, EV3 Battery: 8.130866, Charging: false\nev3dev#33|2017-09-09 17:47:17 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:17 [main] INFO  examples.Demo1 - Iteration: 82, EV3 Battery: 8.131533, Charging: false\nev3dev#33|2017-09-09 17:47:17 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:18 [main] INFO  examples.Demo1 - Iteration: 83, EV3 Battery: 8.130866, Charging: false\nev3dev#33|2017-09-09 17:47:18 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:18 [main] INFO  examples.Demo1 - Iteration: 84, EV3 Battery: 8.1158, Charging: false\nev3dev#33|2017-09-09 17:47:18 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:19 [main] INFO  examples.Demo1 - Iteration: 85, EV3 Battery: 8.122466, Charging: false\nev3dev#33|2017-09-09 17:47:19 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:19 [main] INFO  examples.Demo1 - Iteration: 86, EV3 Battery: 8.129533, Charging: false\nev3dev#33|2017-09-09 17:47:19 [main] INFO  examples.Demo1 - STATE: Charging process\nev3dev#33|2017-09-09 17:47:20 [main] INFO  examples.Demo1 - Iteration: 87, EV3 Battery: 8.171933, Charging: true\nev3dev#33|2017-09-09 17:47:20 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:47:30 [main] INFO  examples.Demo1 - Iteration: 88, EV3 Battery: 8.243, Charging: true\nev3dev#33|2017-09-09 17:47:30 [main] INFO  examples.Demo1 - STATE: Charging Good Level\nev3dev#33|2017-09-09 17:47:33 [Thread-1] INFO  examples.Demo1 - 8.253\nev3dev#33|2017-09-09 17:47:33 [Thread-1] INFO  examples.Demo1 - Catakroker!!!\n```\n\n## TODO\n\n- Improve the FSM Design\n- Add Custom IR Beacon in the installation.\n- Build a better physical docking station, increasing the available angles to connect\n- Add SLAM solution to know where is the robot\n\n## Links of reference\n\n- http://www.plastibots.com/index.php/2010/11/13/pulito-featuring-dflex/\n- [https://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol4/jmd/](https://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol4/jmd/)\n- [http://philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf](http://philohome.com/pf/LEGO_Power_Functions_RC_v120.pdf)\n- https://www.youtube.com/watch?v=Ch4NUazpjJ8\n- https://github.com/googlecartographer/cartographer_ros\n- https://github.com/gloomyandy/surveyor\n- https://lejosnews.wordpress.com/2017/07/15/slam/\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fev3dev-lang-java%2Fdocking-station","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fev3dev-lang-java%2Fdocking-station","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fev3dev-lang-java%2Fdocking-station/lists"}