Softwareprojekt Telematik
The module Telematik-Projekt (Telematics-Project) introduces selected, relevant topics from the domain of computer networks. The module is a lab-course with focus on software development in small teams. Available topics change from term to term. This term, the module focuses on distributed embedded systems programming, mainly focusing on the Internet of Things, low-power wireless communication and the RIOT operating system as software platform to build upon.
Attendance in the first two events is mandatory; additionally, the general 85% attendance rule applies. Students forfeit their course registration when missing the first two events and their positions will be reassigned.
(19517f)
Typ | Praktikum |
---|---|
Dozent/in | Prof. Dr. Emmanuel Baccelli, Oliver Hahm, Hauke Petersen |
Institution | Institute of Computer Science Freie Universität Berlin |
Semester | SS 2014 |
Veranstaltungsumfang | |
Leistungspunkte | 10 |
Raum | K40, K60 |
Zeit | Time: Tuesday, 14:00-18:00 |
News
- Report templates (Latex, or Word)
- Getting started slides (presentation from April 22nd).
- Git crash course slides.
- Project outline requirements.
- be sure to note the deadlines you must meet in the schedule below (e.g. for topic selection)
Introduction
In this course, students will get an introduction to distributed embedded systems programming, building upon the RIOT operating system, running on their choice of hardware platform -- see for instance this list. For students that do not possess appropriate hardware, they will be offered the possibility to be lent some boards or to work directly on their Linux machine via the native port of RIOT. Their will also be the possibility to remotely use hardware on one of the open testbeds supported by RIOT, such as the DES testbed and FIT IoT-LAB testbeds. Participants will learn how to use embedded software development environments and how to take advantage of the hardware's capabilities including wireless data communication, while always keeping an eye on energy consumption, memory and CPU usage.
Topics
In this course you will be expected to write code. The outcome of your software project should be a concrete contribution to the RIOT code base, and take the shape of one or more pull request(s) to the RIOT github. Before you start coding, refer to the starting guide.
After an introductory crash-course on RIOT, students will be provided with a selection of software projects in this context. Typically groups of 2 or 3 students tackle one such project. Proposed projects will fall into three main categories listed below. Students may also propose their own subject, subject to validation (for that matter, contact emmanuel.baccelli@fu-berlin.de).
System Projects:This type of project tackles low level system development. Proposed projects in this category may include for example:
- porting of RIOT to a new hardware platforms, such as ARM Cortex A8 or A9
- RiotBoard based on ARM Cortex A9 (topic assigned to Leon G. and Lennart D.)
- Beaglebone based on ARM Cortex A8
- Bluetooth Low Energy hardware Nordic nRF BLE
- Betty Remote
- other exotic hardware of your choice (in this case contact asap emmanuel.baccelli@fu-berlin.de)
- evaluation of concepts for 8bit MCU support for RIOT e.g., for Arduino Uno porting
- dynamic linking support for RIOT and evaluation of concepts for automatic software update
- design and implementation of a driver model for RIOT
- advanced simulation environment (ns-3) support for RIOT (topic assigned to Tim S. + ?)
- energy profiling in IoT scenarios
This type of project tackles network protocols development. Proposed projects in this category may include for example:
- implementation and evaluation of P2P-RPL (RFC6997)
- implementation and evaluation of a scalable link bidirectionality check for RPL, using an approach based on Bloom filters
- implementation and evaluation of a network coding approach for data dissemination in sensor networks
- comparison of routing protocols for IoT scenarios (RPL, AODVv2, OLSRv2, MMR)
- development and evaluation of scheduling strategies for 6LoWPAN operation over Time-slotted Channel Hopping (6TiSCH) and 802.15.4e
This type of project tackles application development on top of the APIs provided by RIOT. Proposed projects in this category may include for example:
- port dash (or busybox), a lightweight POSIX compliant shell, to RIOT (topic assigned to Martine L. + ?)
- implementation of a CoAP server in RIOT and interoperation with CoAP client in Contiki
- eLua support for RIOT
- Go support for RIOT
- CBOR implementation for RIOT and CBOR implementation on javascript or python
- Enhancements for RIOT TV visualisation tool with remote/batch configuration capabilities and shell interaction
- Implement a library that runs on RIOT, to communicate with the open application platform thingspeak
- your dream IoT application
We offer the above topics for this course (you can also propose your own topic, see above). You have to choose 3 topics currently not assigned to anyone (or convince the currently assigned people to team up on this). Send your short list to emmanuel.baccelli@fu-berlin.de making sure you place the topic you are most interested in at position one etc. We will assign you to a topic according to your preferences - as much as possible. In case of a collision and your list is exhausted the date/time of your registration determines the order (first come first serve). We will tell you the topic or the failure of the assignment. See schedule below for the dates at which you should send your selection: the deadline to send you selection is Monday 21.04.2014 at 18:00.
Prerequisites
This lab course is no programming course so you should be able to learn the prerequisites yourself, or know them already. The prerequisites are:
- Basic knowledge of the programming languages C (Python is a plus, but not required)
- Basic Git skills are a plus, but you can learn this on the fly
- Lectures TI3 and Telematics or Mobile Communications
- English, as most documentation is only available in english
- Basics of operating systems
- Basic software management skills
- Install the required toolchain depending on the targeted hardware (this is not required before the first meeting)
Criteria for Success in this Course
- 85% attendance, at least enough to provide a short, informal weekly update on behalf of your team
- Attendance in the first three events, and mandatory intermediate status presentations
- Talk/presentation/demo
- Written report
- The outcome of your software project should be a concrete contribution to the RIOT code base, and take the shape of one or more pull request(s) to the RIOT github. See this guide to learn the requirements for pull requests.
- Precise grading will depend on the quality of the report, the quality and fundtinality of the code in the associated pull request(s) to github, quatlity of the final presentation/demo.
Report Templates
Related Literature
- A. S. Tanenbaum, Modern Operating Systems, 3rd ed. Upper Saddle River, NJ, USA: Prentice Hall Press, 2007.
- Shelby, Zach, and Carsten Bormann. 6LoWPAN: The wireless embedded Internet. Vol. 43. Wiley. com, 2011.
- A. Dunkels, B. Gronvall, and T. Voigt, "Contiki - a lightweight and flexible operating system for tiny networked sensors." in LCN. IEEE Computer Society, 2004, pp. 455-462.
- P. Levis, S. Madden, J. Polastre, R. Szewczyk, K. Whitehouse, A. Woo, D. Gay, J. Hill, M. Welsh, E. Brewer, and D. Culler, "TinyOS: An Operating System for Sensor Networks," in Ambient Intelligence, W. Weber, J. M. Rabaey, and E. Aarts, Eds. Berlin/Heidelberg: Springer-Verlag, 2005, ch. 7, pp. 115-148.
- Oliver Hahm, Emmanuel Baccelli, Mesut Günes, Matthias Wählisch, Thomas C. Schmidt, "RIOT OS: Towards an OS for the Internet of Things," in Proceedings of the 32nd IEEE International Conference on Computer Communications (INFOCOM), Poster Session, April 2013.
- M.R. Palattella, N. Accettura, X. Vilajosana, T. Watteyne, L.A. Grieco, G. Boggia and M. Dohler, "Standardized Protocol Stack For The Internet Of (Important) Things", IEEE Communications Surveys and Tutorials, December 2012.
- J. Wiegelmann, Softwareentwicklung in C für Mikroprozessoren und Mikrocontroller, Hüthig, 2009
Schedule
- Di, 15.04.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Course introduction & overview of proposed projects topics
- RIOT crash course slides (de/en).
- Check out the detailed proposed project list on GitHub.
- Mo, 21.04.2014 18:00. Topic selection deadline (send email to emmanuel.baccelli@fu-berlin.de)
- Di, 22.04.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Fixing project topic and team
- Getting started (presentation slides)
- Su, 27.04.2014 18:00. Deadline to hand your project proposal outline, including planned schedule (max. 5 pages), send email to emmanuel.baccelli@fu-berlin.de. Check the requirements for your project outline document.
- Di, 29.04.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Di, 06.05.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- 15:00 Room SR005: Talk from Michelangelo Guarise (UDOO open source community).
- Sandwidched around the talk: hack session & continuous, informal project updates
- Di, 13.05.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Hack session & continuous, informal project updates
- Di, 20.05.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- 5 min status update presentation per project (mandatory)
- Hack session & continuous
- Di, 27.05.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Hack session & continuous, informal project updates
- Di, 03.06.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Hack session & continuous, informal project updates
- Di, 10.06.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Hack session & continuous, informal project updates
- Di, 17.06.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- 10 min status update presentation per project (mandatory)
- Hack session
- Di, 24.06.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Hack session & continuous, informal project updates
- Di, 01.07.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Hack session & continuous, informal project updates
- Di, 08.07.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Hack session & continuous, informal project updates
- Di, 15.07.2014 14:00 - 18:00 Räume: K 040/T9 Multimediaraum (Takustr. 9)
- Final talks/presentations/demo: 15-20mn per project
- Deadline for your report. Send per email to emmanuel.baccelli@fu-berlin.de
- Deadline for your pull request(s) pushing your code upstream on GitHub. See this guide to learn the requirements for pull requests.
Additional appointments will be announced on the fly!