an introductory lab in embedded and cyber-physical systems

252

Upload: others

Post on 11-Sep-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An Introductory Lab in Embedded and Cyber-Physical Systems
Page 2: An Introductory Lab in Embedded and Cyber-Physical Systems

Copyright ©2015, Jeff C. Jensen, Edward A. Lee, and Sanjit A. Seshia. All rightsreserved. This textbook and supplemental material are licensed under a Creative CommonsAttribution-NonCommercial-NoDerivs 3.0 Unported License.

First Edition, Version 1.70

Please cite this book as:J.C. Jensen, E.A. Lee, and S.A. Seshia,

An Introductory Lab in Embedded and Cyber-Physical Systems v.1.70,http://leeseshia.org/lab, 2014.

Additional key contributors: Eric S. Kim, Trung Tran, and Matthew Weber.

This edition links to additional documentation located online athttp://LeeSeshia.org/lab/releases/1.70/documents.

ARM™ , Cortex™ , and MPCore™ are trademarks owned by ARM Limited. Bluetooth™ is a trademark owned by Bluetooth Special Interest Group, Inc.Broadcom® is a trademark owned by Broadcom Corporation. Eclipse™ is a trademark owned by The Eclipse Foundation. FlexLM® is a trademark ownedby Flexera Software, LLC. iRobot® , Create™ , and Roomba™ are trademarks owned by iRobot, Inc. Intel® is a trademark owned by Intel Corporation.MathWorks® and MATLAB® are trademarks owned by The MathWorks, Inc. Microsoft® , Kinect™ , Windows® , Windows Vista® , Visual C++, Visual Studioand XBox® are trademarks owned by Microsoft, Inc. National Instruments™ , LabVIEW™ and myRIO™ are trademarks owned by National Instruments, Inc.Nintendo® and Wii Remote™ are trademarks owned by Nintendo, Inc. SolidWorks™ is a registered trademark of Dassault Systemes SolidWorks Corporation.SparkFun Electronics® is a trademark owned by SparkFun Electronics, Inc. Texas Instruments™ is a trademark owned by Texas Instruments, Inc. Xilinx® ,Artix™ , MicroBlaze™ , and Zynq™ are trademarks owned by Xilinx, Inc.

All other trademarks, service marks, and trade names referenced in this text are the property of their respective owners.

Unless otherwise noted, this text has no association with any other company, product, or trademark.

Page 3: An Introductory Lab in Embedded and Cyber-Physical Systems

Contents

Preface vi

1 Equipment 1

1.1 Equipment: WiiMote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Equipment: myRIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3 Equipment: MicroBlaze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.4 Equipment: iRobot Create . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.5 Equipment: iClebo Kobuki . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.6 Equipment: The myRIO Accelerometer . . . . . . . . . . . . . . . . . . . . 22

1.7 Equipment: Microsoft Visual Studio . . . . . . . . . . . . . . . . . . . . . . 25

1.8 Equipment: Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.9 Equipment: LabVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.10 Equipment: CyberSim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2 Sensor Interfacing and Calibration 41

2.1 Interface to and Calibrate the WiiMote . . . . . . . . . . . . . . . . . . . . . 42

3 Embedded Development Tools 53

iii

Page 4: An Introductory Lab in Embedded and Cyber-Physical Systems

CONTENTS

3.1 Connect to and Configure myRIO . . . . . . . . . . . . . . . . . . . . . . . . 55

3.2 Program MicroBlaze from Xilinx SDK . . . . . . . . . . . . . . . . . . . . 62

3.3 Program the myRIO Processor from Eclipse . . . . . . . . . . . . . . . . . . 76

3.4 Program the myRIO Processor from LabVIEW . . . . . . . . . . . . . . . . 90

4 Programming Embedded Systems 97

4.1 Generate Tones in MicroBlaze . . . . . . . . . . . . . . . . . . . . . . . . . 984.2 Program an ADC in MicroBlaze . . . . . . . . . . . . . . . . . . . . . . . . 106

5 The Cal Climber: CPS Design with the iRobot Create 113

5.1 Navigation Design Requirements . . . . . . . . . . . . . . . . . . . . . . . . 114

5.2 Hill Climb Design Requirements . . . . . . . . . . . . . . . . . . . . . . . . 115

5.3 Program CyberSim from Visual Studio . . . . . . . . . . . . . . . . . . . . . 116

5.4 Navigation in C (Simulation) . . . . . . . . . . . . . . . . . . . . . . . . . . 122

5.5 Navigation in C (Deployment) . . . . . . . . . . . . . . . . . . . . . . . . . 126

5.6 Hill Climb in C (Simulation) . . . . . . . . . . . . . . . . . . . . . . . . . . 132

5.7 Hill Climb in C (Deployment) . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5.8 Program CyberSim from LabVIEW . . . . . . . . . . . . . . . . . . . . . . 141

5.9 Navigation in Statecharts (Simulation) . . . . . . . . . . . . . . . . . . . . . 146

5.10 Navigation in Statecharts (Deployment) . . . . . . . . . . . . . . . . . . . . 151

5.11 Hill Climb in Statecharts (Simulation) . . . . . . . . . . . . . . . . . . . . . 157

5.12 Hill Climb in Statecharts (Deployment) . . . . . . . . . . . . . . . . . . . . 161

6 The Cal Klimber: CPS Design with the Kobuki 166

6.1 Navigation Design Requirements . . . . . . . . . . . . . . . . . . . . . . . . 167

6.2 Hill Climb Design Requirements . . . . . . . . . . . . . . . . . . . . . . . . 168

6.3 Program CyberSim from Visual Studio . . . . . . . . . . . . . . . . . . . . . 169

6.4 Navigation in C (Simulation) . . . . . . . . . . . . . . . . . . . . . . . . . . 175

6.5 Navigation in C (Deployment) . . . . . . . . . . . . . . . . . . . . . . . . . 179

6.6 Hill Climb in C (Simulation) . . . . . . . . . . . . . . . . . . . . . . . . . . 185

iv

Page 5: An Introductory Lab in Embedded and Cyber-Physical Systems

CONTENTS

6.7 Hill Climb in C (Deployment) . . . . . . . . . . . . . . . . . . . . . . . . . . 189

6.8 Program CyberSim from LabVIEW . . . . . . . . . . . . . . . . . . . . . . 194

6.9 Navigation in Statecharts (Simulation) . . . . . . . . . . . . . . . . . . . . . 199

6.10 Navigation in Statecharts (Deployment) . . . . . . . . . . . . . . . . . . . . 204

6.11 Hill Climb in Statecharts (Simulation) . . . . . . . . . . . . . . . . . . . . . 210

6.12 Hill Climb in Statecharts (Deployment) . . . . . . . . . . . . . . . . . . . . 214

7 Projects 219

7.1 Project Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220

A Lab Setup 227

A.1 Install LabVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228A.2 Install Visual Studio Express . . . . . . . . . . . . . . . . . . . . . . . . . . 230

A.3 Install C & C++ Development Tools . . . . . . . . . . . . . . . . . . . . . . 231

A.4 Install Xilinx SDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232A.5 myRIO JTAG Wiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

A.6 myRIO iRobot Create Wiring . . . . . . . . . . . . . . . . . . . . . . . . . . 234

A.7 Kobuki Wiring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

Bibliography 237

Index 242

v

Page 6: An Introductory Lab in Embedded and Cyber-Physical Systems

Preface

What this Book is About

The theme of this book is the exploration of embedded and cyber-physical systems notby resource constraints, but instead by their interactions with the physical world. Whileresource constraints are an important aspect of design, such constraints are part of everyengineering discipline and give little insight into the interplay between computation andphysical dynamics. We emphasize the basics of models, analysis tools, and design ofembedded and cyber-physical systems. We guide modeling of the physical world withcontinuous-time differential equations and modeling of computations using logic anddiscrete models such as state machines. These modeling techniques are evaluated throughthe use of meta-modeling, illuminating the interplay of practical design with formal modelsof systems that incorporate both physical dynamics and computation. We introduce formaltechniques to specify and verify desired behavior. A combination of structured labs anddesign projects solidifies these concepts when applied to the design of embedded andcyber-physical systems with real-time and concurrent behaviors.

Laboratory exercises expose the lowest levels of abstraction for programming embeddedsystems such as traditional imperative programming models through to the highest levelsof abstraction such as graphical system design and concurrent models of computation. Atthe highest level, we use LabVIEW to introduce students to model-based design. One level

vi

Page 7: An Introductory Lab in Embedded and Cyber-Physical Systems

PREFACE

down from that, we use the C programming language and an RTOS. One level down fromthat, we use bare-metal C on a microprocessor – software that executes in the absence ofan operating system.

Intended Audience

Most undergraduate students in the fields of computer science, electrical engineering, andcomputer engineering will take at least one course in embedded systems. We intend forthis text to be a valuable addition to their junior or senior year. The topic of cyber-physicalsystems extends to undergraduate and graduate students in mechanical engineering whostudy robotics, mechatronics, or microprocessor-based systems. Many of the laboratoryexperiments and projects are open-ended by nature and lend to greater exploration ofdesign methodology, an appropriate topic for graduate students in any field relating toembedded or cyber-physical systems.

This text draws from topics in physics, circuits, transducers, computer architecture, digitalsignal processing, digital communications, networking, operating systems, robotics, controltheory, algorithms, probability, and logic – an indefensible list of prerequisites for anycourse, and a list that illustrates the interdisciplinary nature of embedded and cyber-physical systems. Each of these topics yields its own vast field of study far beyond thescope of this text. We instead touch on key fundamental concepts and exposure to designat multiple levels of abstraction. We suggest students first take an introductory course insignals and systems, an introductory course in computer architecture (which covers both Cand assembly programming), several courses of elementary continuous calculus, and anintroductory course in discrete mathematics. While these prerequisites establish a commonlanguage for the technical aspects of embedded and cyber-physical systems, the ubiquitousand interdisciplinary nature of these systems compels students to investigate topics beyondcomputer science.

The laboratory exercises in this book were designed and piloted for the course EECS149, “Introduction to Embedded Systems” at the University of California, Berkeley (Leeand Seshia, 2010; Jensen et al., 2011; Lee et al., 2013; Jensen et al., 2012). The courseis targeted at undergraduate juniors and seniors in Electrical Engineering and ComputerScience. Students whom we have taught from this material are generally interested andengaged, celebrating their projects as well as those from other teams. They are oftenproud of what they accomplish, and even post project presentation videos to the internet.Such anecdotes give some insight into the impact of a course, but how do we know

vii

Page 8: An Introductory Lab in Embedded and Cyber-Physical Systems

PREFACE

for sure whether a particular change in the course or laboratory design is actually animprovement? We are pleased, at least, to witness that students surprise both themselvesand their instructors, that projects demonstrate an understanding of the theoretical conceptsintroduced in lecture, and that students have received job offers from industry mentors.

How to Use this Book

Laboratory exercises in this text are designed to be modular so that they may be chosenaccording to the topics that best suit a course. Dependencies between labs are explicitlystated, and generally indicate two or more labs fit into a sequence. The National InstrumentsmyRIO embedded controller is used for most laboratory exercises and is introduced inChapter 1: Equipment. Other software and hardware tools are discussed in the equipmentsection of each chapter. Initial setup of laboratory workstations and equipment is coveredin Appendix A: Lab Setup.

Each laboratory consists of a pre-laboratory assignment and in-laboratory exercises. Thepre-laboratory exercises are critical preparation in advance of in-laboratory exercises, asthey introduce documentation, tools, and concepts used. We suggest formal laboratorysessions begin with a brief lecture that covers the instruments used, their theory of operation,and the overall goal of the laboratory. Teams of two or three may then begin working onassigned laboratory exercises; in many cases, solutions are not unique, and we encourageteams to experiment and innovate.

The electronic version of this book includes a number of hyperlinks to documents that areneeded or helpful for completing the labs. These documents are provided as downloadsat http://LeeSeshia.org/lab. They are also cited in the references section at the end of thebook, where URLs to the original document are provided.

The theoretical foundation for this text follows Introduction to Embedded Systems L (Leeand Seshia, 2015).

Acknowledgements

Many people have contributed to the design and vetting of the exercises in this book.Trung N. Tran of National Instruments authored a significant portion of the softwareframework for myRIO, including custom VHDL, MicroBlaze architecture, C code, and

viii

Page 9: An Introductory Lab in Embedded and Cyber-Physical Systems

PREFACE

LabVIEW code. Trung has mentored a number of student design groups and has providedinvaluable instructional support for laboratories. Rajesh Gupta and Seemanta Dutta atthe University of California San Diego were instrumental in testing and refining labs.Godpheray Pan from National Instruments customized a physics simulator and rendererfor a complete model-based design workflow using the iRobot Create. Andy Chang,also from National Instruments, made significant contributions towards the first massiveonline open course (MOOC) offering of this curriculum. Additional key contributionswere made by the Engineering Support Group in the Electrical Engineering and ComputerScience Department at the University of California Berkeley, especially Ferenc Kovac andWinthrop Williams, and the Instructional Support Group in the same department, especiallyLinda Huang and Kevin Mullally. We also thank the graduate student instructors whosupervised offerings of the course and helped to develop and debug these lab exercises,particularly Hugo Andrade, Dai Bui, Alexander Donze, Shanna-Shaye Forbes, GarvitJuniwal, Eric Kim, Hokeun Kim, Ben Lickly, Wenchao Li, Isaac Liu, Zach Wasson, MattWeber, Kevin Weekly, and Michael Zimmer. In particular, Eric, Matt, and Trung havecontributed significantly to the new material on the Kobuki platform and associated updatesto the lab content. Cover design by D. Fred Duran.

ix

Page 10: An Introductory Lab in Embedded and Cyber-Physical Systems

PREFACE

Laboratory Exercise Dependency Graph

Design ofCyber‐PhysicalSystems

ProgrammingEmbeddedSystems

Projects

SensorInterfacing& Calibration

SimulationSimulation

SimulationSimulation

DeploymentDeployment

2.1 Interface to and Calibrate WiiMote

3.2 Program MicroBlaze from Xilinx

SDK

4.1 Generate Tones in MicroBlaze

4.2 Program an ADC in MicroBlaze

5.1,6.1 Program CyberSim from Visual

Studio

5.2, 6.2 Navigationin C

(Simulation)

5.4, 6.4 Hill Climbin C

(Simulation)

3.1 Connect to and Configure myRIO

3.3 Program the myRIO Processor from

Eclipse

5.3, 6.3 Navigationin C (Deployment)

5.5, 6.5 Hill Climb in C (Deployment)

3.4 Program the myRIO Processor from LabVIEW

5.8, 6.8 Navigation in Statecharts(Deployment)

5.10, 6.10 Hill Climb in Statecharts(Deployment)

5.6, 6.6 Program CyberSim from

LabVIEW

5.7, 6.7 Navigation in Statecharts(Simulation)

5.9, 6.9 Hill Climb in Statecharts(Simulation)

6.1 Project Management

Figure 1: Laboratory exercise dependency graph.

x

Page 11: An Introductory Lab in Embedded and Cyber-Physical Systems

1Equipment

This chapter contains information about equipment used throughout laboratory exercises.Laboratory exercises begin in the next chapter.

General-purpose software, such as software that runs on a desktop computer, is typicallydeveloped on the same system in which it will execute. This enables fairly straightforwarddebugging as debugging tools, source code, and the executable all reside in the samesystem. Embedded software, however, is typically developed on a desktop computer,sent to cross-compile (to compile for a non-native architecture), and downloaded to anembedded system before it executes.

For design productivity, developers utilize an integrated development environment(IDE), a graphical user interface that organizes projects, hardware targets, developmenttools, and debuggers. An IDE may be provided by a hardware vendor, or developmenttools may be tied to an open-source IDE.

1

Page 12: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.1 Equipment: WiiMote

1.1.1 Introduction to WiiMote

The Nintendo Wii Remote (Fig. 1.1), known informally as a WiiMote, is a handheldwireless game controller with motion sensing capability. It is an embedded system com-posed of sensors, actuators, a wireless radio, and a microcontroller. Its sensors consist of athree-axis analog accelerometer, an infrared camera, and momentary buttons; its actuatorsconsist of a speaker, a DC motor (for “rumble” functionality), and LEDs. The WiiMote isa simple, popular, and widely available embedded system, and its wireless interface allowsit to interact with a desktop computer.

The Bluetooth Human Interface Device (HID) profile defines a communication protocolused by the WiiMote. Each command begins with a 1-byte Transaction Header, the firstnibble of which corresponds to the Transaction Type, and the second to a Parameter. Theheader is followed by a device-specific Report ID, and sometimes a payload. Documen-tation for WiiMote Report IDs has not been published, but some Report IDs have beenidentified and documented in WiiMote4 (WiiBrew, 2012).

Bluetooth pairing becomes difficult when multiple devices are present, as may be the casein a laboratory. This issue is resolved by pairing according to the hardware address ofthe specific device to be paired. As with all networked devices, the WiiMote Bluetoothinterface is identified by a unique media access control (MAC) address. A MAC addressis a sequence of 6 bytes, usually written something like “00:1E:35:3B:7E:6D” usinghexadecimal notation. Unfortunately, the MAC address is not visible on the WiiMote itself;it can be found by manually pairing the WiiMote using the standard Windows Bluetoothdevice paring. Once paired, the device properties will show the MAC address. The MACaddress can then be printed on the side of the device for future reference.

1.1. EQUIPMENT: WIIMOTE 2

Page 13: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.1.2 WiiMote Useful References

Wii Remote4 (Wikipedia, 2013d)

WiiMote4 (WiiBrew, 2012)

Nintendo Controllers4 (Nintendo, 2013)

Bluetooth HID Profile L (Bluetooth Special Interest Group, 2003)

Figure 1.1: Nintendo Wii Remote (Orlando, 2010).

Figure 1.2: Nintendo Wii Remote exposed (Stoops, 2008).

1.1. EQUIPMENT: WIIMOTE 3

Page 14: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

Figure 1.3: Nintendo Wii Remote accelerometer axes (Stoops, 2008).

1.1. EQUIPMENT: WIIMOTE 4

Page 15: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.2 Equipment: myRIO

1.2.1 Introduction to myRIO

The National Instruments myRIO (Fig. 1.4) is an embedded microcontroller with the Xil-inx Zynq Z-7010 reconfigurable multiprocessor architecture (Fig. 1.5). Its two processorshave their own memory and peripherals and may be programmed independently.

The fixed processor is an ARM Cortex-A9 MPCore, a dual-core processor that implementsthe ARMv7 instruction set architecture (ISA) and includes a fixed set of peripherals.The ARM Cortex-A9 on myRIO is preconfigured at the factory with a distribution ofLinux with real-time extensions. Linux with real-time extensions is a popular real-timeoperating system (RTOS), an operating system with more deterministic scheduling andbehavior, and used in a wide range of embedded applications. C & C++ DevelopmentTools for NI Linux Real-Time, Eclipse Edition is used to compile, download, execute, anddebug C applications on myRIO and LabVIEW is used to compile, download, execute anddebug Structured Dataflow applications on myRIO.

The reconfigurable processor on myRIO is the Xilinx Artix-7 field-programmable gatearray (FPGA). An FPGA is comprised of logic units, memory, and other fundamentalbuilding blocks that may be reconfigured at the hardware level. An FPGA can implementhardware peripherals such as communication buses, PWM generators, quadrature encoderinterfaces, signal processing algorithms, video rendering and decoding, and even otherprocessor architectures.

An FPGA fixed-personality is a configuration of an FPGA that is meant to be distributedwithout modification. A fixed-personality is a compiled binary file known as a bitfile thatcan be distributed without source code. A multiplicity of fixed personalities can be used torapidly reconfigure an FPGA, allowing a single hardware device to serve a broad range ofapplications. The FPGA fixed-personality that ships with myRIO implements a numberof peripherals, such as UART, I2C, PWM, and others, over standard digital inputs andoutputs. The FPGA fixed-personality is programmed in LabVIEW FPGA and released asopen-source. LabVIEW FPGA can generate C code which can be imported into Eclipse tointerface with the FPGA.

National Instruments myRIO Getting Started Wizard is a tool to connect to myRIO forthe first time. It verifies connection to the hardware, displays data from onboard sensors,and links to examples and tutorials.

1.2. EQUIPMENT: MYRIO 5

Page 16: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

National Instruments Measurement and Automation Explorer (MAX) scans to discoverNational Instruments hardware including myRIO. MAX has built-in testing and con-figuration functions and is the best tool to configure the software on myRIO. MAX islaunched from the Windows desktop or from the Windows Start menu under “NationalInstruments→NI MAX”.

National Instruments Web-Based Configuration and Monitoring is a web-based con-figuration that runs on embedded targets including myRIO. Use a standard browserand navigate to the IP address of your target to launch NI Web-Based Configurationand Monitoring. The configuration is similar to that available through MAX.

1.2. EQUIPMENT: MYRIO 6

Page 17: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.2.2 myRIO Useful References

myRIO 1950 User Guide and Specifications L (National Instruments, 2013g)

myRIO Shipping Personality Reference L (National Instruments, 2013l)

myRIO Product Page4 (National Instruments, 2013k)

myRIO Getting Started4 (National Instruments, 2013i)

myRIO Community4 (National Instruments, 2013h)

Figure 1.4: National Instruments myRIO 1950 embedded controller.

1.2. EQUIPMENT: MYRIO 7

Page 18: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

Figure 1.5: Xilinx Zynq Architecture.

1.2. EQUIPMENT: MYRIO 8

Page 19: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.3 Equipment: MicroBlaze

1.3.1 Introduction to MicroBlaze

FPGAs can be configured to implement an ISA and other microcontroller componentsthat can be easily modified with new peripherals and functionality. A microprocessorimplemented in an FPGA is known as a soft-core processor. Soft-core processorsare usually slower than a custom silicon processor with equivalent functionality, butthey are nonetheless attractive because they are fully customizable. Often, multiplesoft-core processors may be fit onto a single FPGA to create a multicore processor.

Xilinx MicroBlaze is a 32-bit soft-core processor with a proprietary ISA. MicroBlazecan be programmed on an FPGA using Xilinx design tools or by deploying anFPGA fixed-personality that contains a MicroBlaze core. The MicroBlaze core in thefixed-personality used for these labs runs at a clock rate of 50MHz and has 128kB ofmemory. There is no floating-point processor or cache. You may use the user buttonon myRIO to reset the MicroBlaze processor.

Developers need a way to debug embedded applications in a similar fashion todesktop debugging but with greater insight into the processor architecture, memory,subsystems, and peripherals. A predominant solution is a standard for specializedhardware interfaces and a communication protocol. The Joint Test Action Group(JTAG) debugging standard is often implemented by special hardware on an embeddedcontroller and interfaced to a desktop computer using a JTAG interface device. JTAGdefines communication at the physical layer, and vendors often define additionalprotocols for downloading, programming, and debugging.

The Xilinx Software Development Kit (Xilinx SDK) is an Eclipse IDE for developingembedded applications. Together with a JTAG interface device, Xilinx SDK is used toprogram and debug software running on a MicroBlaze soft-core processor.

1.3. EQUIPMENT: MICROBLAZE 9

Page 20: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.3.2 Microblaze and SDK Useful References

MicroBlaze Processor Reference Guide L (Xilinx, 2012c)

MicroBlaze Soft Processor Core4 (Xilinx, 2013c)

LogiCORE IP AXI INTC L (Xilinx, 2013b)

LogiCORE IP AXI Timer L (Xilinx, 2012b)

Embedded System Tools Reference Manual L (Xilinx, 2012a)

EDK support4 (Xilinx, 2013a)

Joint Test Action Group4 (Wikipedia, 2013a)

myRIO JTAG Instructions L (National Instruments, 2013j)

14 www.xilinx.com MicroBlaze Processor Reference GuideUG081 (v11.4)

Chapter 1: MicroBlaze Architecture

OverviewThe MicroBlaze™ embedded processor soft core is a reduced instruction set computer (RISC) optimized for implementation in Xilinx® Field Programmable Gate Arrays (FPGAs). Figure 1-1 shows a functional block diagram of the MicroBlaze core.

FeaturesThe MicroBlaze soft core processor is highly configurable, allowing you to select a specific set of features required by your design.

The fixed feature set of the processor includes:

• Thirty-two 32-bit general purpose registers• 32-bit instruction word with three operands and two addressing modes• 32-bit address bus• Single issue pipeline

In addition to these fixed features, the MicroBlaze processor is parameterized to allow selective enabling of additional functionality. Older (deprecated) versions of MicroBlaze support a subset of the optional features described in this manual. Only the latest (preferred) version of MicroBlaze (v8.00) supports all options.

Xilinx recommends that all new designs use the latest preferred version of the MicroBlaze processor.

Table 1-1, page 15 provides an overview of the configurable features by MicroBlaze versions.

Figure 1-1: MicroBlaze Core Block Diagram

DXCL_M

DXCL_S

Data-sideInstruction-side

IPLB

ILMB

bus interface bus interface

InstructionBuffer

ProgramCounter

Register File32 X 32b

ALU

InstructionDecode

BusIF

BusIF

IXCL_M

IXCL_S

I-Cache

D-C

ache

Shift

Barrel Shift

Multiplier

Divider

FPU

SpecialPurposeRegisters

Optional MicroBlaze feature

M_AXI_IP

UTLBITLB DTLB

Memory Management Unit (MMU)

DPLB

DLMB

M_AXI_DP

MFSL 0..15DWFSL 0..15SFSL 0..15DRFSL 0..15

or

or

M_AXI_IC M_AXI_DC

BranchTargetCache

M0_AXIS..

S0_AXIS..M15_AXIS

S15_AXIS

Figure 1.6: Diagram of the Xilinx MicroBlaze processor (Xilinx, 2012c).

1.3. EQUIPMENT: MICROBLAZE 10

Page 21: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.3.3 Interrupts on MicroBlaze

Interrupts can be used to periodically sample sensors such as microphones for voicecontrol or ultrasonic range finders for navigation. They can be used to drive actuatorsby generating a pulse-width modulation (PWM) signal for sound or motor control, orto simply flash an LED to signal a device fault. Software written for an embeddedsystem may even reside almost entirely in timed interrupts.

An interrupt service routine (ISR) should contain a minimum number of instructions.An ISR that is invoked periodically and has an execution time nearly as long as itsperiod will starve other processes; worse, an ISR whose execution time is equal toor greater than its period may cause unpredictable or unstable behavior. Interruptsstep outside the paradigm of sequential code, and care must be taken to ensure notwo processes attempt to simultaneously access shared resources. It is important todocument any shared resources used by an ISR, including whether or not the ISR willread or write to a resource.

It is difficult to debug interrupts since their behavior may be intimately tied to thetiming of the system and the occurrence of external events. A common mistake is touse a costly debugging technique like printing to a console or communication port inthe body of an ISR; such operations are processor-intensive and access shared hardwareresources, with the potential of contributing significant timing and logical artifacts.Any debugging instructions in an ISR will affect timing, but there are reasonably safedebugging mechanisms that have minimal impact such as toggling a digital output lineor incrementing a counter, each of which may be executed in a single processor cycle.

1.3.4 MicroBlaze and AXI Bus Architecture

When programming at the register level to configure interrupts or digital input andoutput (DIO), pay close attention to memory locations and bit numbering. MicroBlazecan be configured for either big-endian or little-endian memory addressing; big-endian isused in this text and with the distributed MicroBlaze fixed-personality. The AdvancedeXtensible Interface (AXI) bus that connects MicroBlaze to hardware peripherals usesstandard bit ordering for its register architecture, shown in Fig. 1.71.

1The MicroBlaze architecture uses bit-reversed ordering where bit 0 is the most significant bit and bit 31is the least significant bit. The lab exercises here do not require you to program any MicroBlaze register, butonly the standard bit ordered AXI bus registers.

1.3. EQUIPMENT: MICROBLAZE 11

Page 22: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

32-bit register

LSB

30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 3030 299 288 27 266 255 24 233 22 21 200 199 188 17 166 155 14 133 12 11 100 99 88 7 66 55 4 33 2 1

MSB

Figure 1.7: Bit numbering for an AXI bus register. The LSB is isolated by the mask 0x0000

0001, and the MSB is isolated by the mask 0x8000 0000.

A common practice in documenting and interfacing with memory-mapped registersis to name a register in documentation and provide reference source code that mapsthis name to a memory location. For example, documentation labels a register asDIOB_70OUT, a concise (and rather cryptic) name for a memory-mapped registerwhose value drives digital outputs on physical pins 0 through 7; example C codeprovided by the hardware vendor defines this name as follows:

#define DIOB_70OUT *(( volatile int *)(XPAR_PORTDO_BASEADDR))

Figure 1.8: Example mapping of a documented memory-mapped register to a C macro of thesame name. C statements may reference this macro as if it were a symbol, reading or assigningits value as if it were a variable (though unlike a C variable, this mechanism introduces subtleimplications and dynamics). XPAR_PORTDO_BASEADDR refers to the memory location of thedigital I/O port memory-mapped register; subsequent pins are offset from this address.

A word of caution about a read-after-write hazard (RAW hazard): depending on thehardware architecture you are using, some memory-mapped registers take a few cyclesto update with new values. If a register is written and then immediately read, it’svalue may not have settled, causing unexpected results. It is good practice to insertasm("nop") instructions (“no operation” in assembly) between writes and reads of thesame register. For the MicroBlaze implementation used in this lab, there should be atleast four cycles between sequential writes and reads of the same register.

1.3. EQUIPMENT: MICROBLAZE 12

Page 23: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

AXI bu

s MicroBlaze

Core

TIMER

ADC subsystem

MicroBlaze Debug

Module (MDM)

BRAMs

Interrupt controller

1 In

terru

pt lin

e

Figure 1.9: Conceptual block diagram of MicroBlaze and AXI bus architecture. Not shown:hardware peripherals such as GPIO, UART, and others.

1.3. EQUIPMENT: MICROBLAZE 13

Page 24: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.3.5 Memory-Mapped Register Interface to Digital IO

DIO70_IN

DIO 7-0

30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 3030 299 288 27 266 255 24 233 22 21 200 199 188 17 166 155 14 133 12 11 100 99 8831

Bit Field Access Values7 – 0 Digital Input Read myRIO DIO 7-0 input state

Figure 1.10: DIO70_IN (DIO 7-0 In) register. myRIO MXP Connector B pins 0-7. Bit 0reads MXP Connector B DIO0, and bit 7 reads DIO7.

DIO158_OUT

DIO 15-8

30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 3030 299 288 27 266 255 24 233 22 21 200 199 188 17 166 155 14 133 12 11 100 99 8831

Bit Field Access Values7 – 0 Digital Output Write myRIO DIO 15-8 output state

Figure 1.11: DIO158_OUT (DIO 15-8 Out) register. myRIO MXP Connector B pins 8-15. Bit0 writes MXP Connector B DIO8, and bit 7 writes DIO15.

1.3. EQUIPMENT: MICROBLAZE 14

Page 25: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.3.6 Memory-Mapped Register Interface to the Accelerometer ADC

Start Conversion

ADC_CTRL

Channel Index

30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 303 29 28 27 26 25 24 23 22 21 2031 303 9 8 6 5 3 2031 15 14 13 12 11 10 9 8 7 6 5 4 3 2 15 3 0 9 8 6 5 3

Bit Field Access Values19 – 16 Channel Index Write Channel 0 – 15

0 Start Conversion Write 0: Reset1: Start conversion

Figure 1.12: ADC_CTRL (ADC Control) register. The ADC begins a conversion on a rising-edge (0 to 1) transition of the Start Conversion bit.

Busy

ADC_STATUS

Channel Index Conversion Value ChConversion Value

30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 30 29 2831 30 9 283 11 10 9 8 7 6 5 4 3 2 10 9 8 6 5 3

Bit Field Access Values27 – 16 Conversion Result Read 0 – 409515 – 12 Channel Index Read 0 – 15

0 ADC Busy Read 0: Inactive1: Conversion in progress

Figure 1.13: ADC_STATUS (ADC Status) register.

Acknowledge

ADC_IAR 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 131 30 9 8 6 5 3 0 9 8 6 5 3 0 9 8 6 5 33

Bit Field Access Values0 ADC Interrupt Acknowledge Write 0: ADC interrupt unacknowledged.

1: Acknowledge ADC interrupt

Figure 1.14: ADC_IAR (ADC Interrupt Acknowledge) register.

1.3. EQUIPMENT: MICROBLAZE 15

Page 26: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.4 Equipment: iRobot Create

1.4.1 Introduction to iRobot Create

The iRobot Create is an off-the-shelf platform capable of driving, sensing bumpsand cliffs, executing simple scripts, and communicating with an external embeddedcontroller. The iRobot Create is a complete robot development kit that can becontrolled without consideration of mechanical assembly or machine code. An internalmicrocontroller samples its sensors, drives its actuators, and communicates with externaldevices over a proprietary serial interface called the iRobot Create Open Interface(OI) standard (iRobot, 2006a). The iRobot Create Open Interface defines the electronicand software interface for controlling the robot.

The iRobot can be finicky about its state while charging; there are some modes inwhich the robot will be connected to a charging source but will not actually charge.When correctly charging, the iRobot Power LED should be red, slowly fading on andoff. Solid red or flashing red indicate a charging error. Solid green is, unfortunatelyambiguous: it may indicate charging is complete, or it may indicate the robot ispowered on and running. You may disambiguate this by removing the charging source:if the robot was powered and running, the power LED will remain solid green. If therobot is fully charged, the power LED will turn off. If you have difficulty chargingyour robot, first unplug any charging sources, power off the robot, and power off anyexternal devices such as the wireless router. Then connect the charging source. Chargeoften and be sure to verify your robot is in charging mode when you leave the lab.

The sensors in the iRobot are at times rather inaccurate, especially the motor encodersand infrared distance sensors. Distance and angle are reported by the iRobot Create asan integer number of millimeters and degrees, respectively, and fractional remaindersare truncated and lost when transmitted to an external controller. One way to mitigatewheel encoder truncation error is to increase the sensor polling period: for a fixedwheel speed, increasing the polling period allows the encoders more time to accumulate,making them numerically larger in comparison to truncation error. Another way tomitigate wheel encoder truncation error is to increase wheel speed: for a fixed sensorpolling rate, increasing wheel speed causes the encoders to accumulate at a higherrate, again making them numerically larger in comparison to truncation error. Bothtechniques have adverse side-effects and are counter-intuitive with regard to safe andreliable operation – you may need to perform some experiments to find the pollingperiod and wheel speeds that work best for your application. The infrared distance

1.4. EQUIPMENT: IROBOT CREATE 16

Page 27: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

sensors used for cliff detection operate more like light level sensors and are sensitiveto ambient light and ground color and material. The iRobot Create reports the digitalvalue read from this sensor, and uses a threshold to report a boolean value for whetheror not this should be interpreted as a cliff. In some cases, you may need to use thedigital value and determine your own threshold for cliff detection.

1.4. EQUIPMENT: IROBOT CREATE 17

Page 28: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.4.2 iRobot Create Useful References

Create Owner’s Guide L (iRobot, 2006b)

Create Open Interface Specification L (iRobot, 2006a)

iRobot Create Product Page4 (iRobot, 2013)

Figure 1.15: iRobot Create with an external microcontroller.

1.4. EQUIPMENT: IROBOT CREATE 18

Page 29: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.4.3 iRobot Create Equipment Exercises

For exercises asking for a sequence of bytes, use hexidecimal (0x__) notation fornumbers.

1. How many sensors are on the bottom of the iRobot Create? Does the placement ofthe sensors result in equal sensing capability when the robot is driving forward andbackward?

2. What sequence of bytes should be sent to the iRobot Create UART port to commandthe robot to drive straight at a velocity of 300 mm/s?

3. What sequence of bytes should be sent to the iRobot Create UART port to requesta single sensor packet containing all sensors?

4. What sequence of bytes should be sent to the iRobot Create to enable a continuousstream of a single packet containing all sensors?

5. After the iRobot Create has received the sequence of bytes found in Exercise4, what sequence of bytes will the robot transmit periodically? You may representa sensor packet as [Packet Name (N)] where N is the length of the packet, andchecksum as [Checksum].

1.4. EQUIPMENT: IROBOT CREATE 19

Page 30: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.5 Equipment: iClebo Kobuki

1.5.1 Introduction to Kobuki

Like the iRobot Create, the Kobuki is a differential drive robot capable of sensingits environment, executing scripts, and communicating with an external embeddedcontroller via a serial port.

There are subtle hardware differences between the Kobuki and the iRobot Create. First,there are only three cliff sensors on the Kobuki instead of the iRobot’s four. Second,the Kobuki measures and outputs a total distance each of its two wheels have traveledbased on motor encoders.

The Kobuki also uses a different protocol to communicate with its controller. Notabledifferences in the protocol include a field in the packet header that contains the packetlength and a move command that accepts the fastest moving wheel speed and turnradius as arguments instead of raw wheel speeds. The Kobuki continually sendsfeedback packets every 50 Hz containing basic sensor data over its serial extensionport, as long as it is powered on. If the Kobuki stops receiving packets for a periodon the order of 0.5 seconds it will shut down. The documentation for the Kobukicommunication protocol can be found at (YujinRobot, 2014a).

1.5.2 Kobuki Useful References

Kobuki Documentation4 (YujinRobot, 2014b)

Kobuki C++ Driver Specification4 (YujinRobot, 2014a)

1.5.3 Kobuki Equipment Exercises

For exercises asking for a sequence of bytes, use hexidecimal (0x__) notation fornumbers.

1. How many sensors are on the bottom of the Kobuki? In what respects does theKobuki have sensing advantages or disadvantages compared to the iRobot?

1.5. EQUIPMENT: ICLEBO KOBUKI 20

Page 31: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

Figure 1.16: Kobuki robot with labeled sensors (YujinRobot, 2014c)

2. What sequence of bytes should be sent to the Kobuki’s serial port to make it drivestraight at 300 mm/s?

3. What sequence of bytes should be sent to the Kobuki’s serial port to make it turnits right wheel at 300 mm/s and its left wheel at 250 mm/s?

4. How would the Kobuki report that the right and center bumpers were pressedsimultaneously with button 2? Give the packet, writing xx for bytes that are don’tcares.

1.5. EQUIPMENT: ICLEBO KOBUKI 21

Page 32: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.6 Equipment: The myRIO Accelerometer

1.6.1 Introduction to the myRIO Accelerometer

The myRIO onboard accelerometer is a three axis analog accelerometer used tomeasure gravity and coordinate acceleration. It is a microelectromechanical system(MEMS) composed of very small mechanical and electrical components whose size istypically measured in microns. The accelerometer used is a Freescale MMA8452Q3-axis digital accelerometer.

Special considerations come in to play on how an accelerometer interacts when it ismounted on a moving robot.

Figure 1.17: Inertial Measurement Unit (IMU) containing a three-axis accelerometer de-veloped by DARPA researchers at the University of Michigan. Source: Defense AdvancedResearch Projects Agency (DARPA) (Defense Advanced Research Projects Agency, 2012).

1.6. EQUIPMENT: THE MYRIO ACCELEROMETER 22

Page 33: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.6.2 myRIO Accelerometer Useful References

Xtrinsic MMA8452Q 3-Axis 12-bit/8-bit Digital Accelerometer L (Freescale Semicon-ductor, 2013)

Implementing a Tilt-Compensated eCompass using Accelerometer and MagnetometerSensors L (Ozyagcilar, 2011)

Using an Accelerometer for Inclination Sensing L (Fisher, 2010)

Figure 1.18: Analog Devices ADXL335 MEMS accelerometer. Credit: SparkFun (SparkFunElectronics, 2013).

1.6. EQUIPMENT: THE MYRIO ACCELEROMETER 23

Page 34: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.6.3 MyRIO Accelerometer Exercises

1. Consider an accelerometer mounted according to the coordinate system in Fig. A.3.Let ag = (agx ,agy ,agz) be the specific force of gravity as measured by an accelerometer.You may assume the accelerometer has been calibrated and is in units of g.

(a) Find ag when the robot is on level ground. Verify ∥ag∥ = 1g.(b) The robot is placed on a hill with inclination θI ∈ [0, π

2 ] in radians. Find ag whenthe robot is oriented directly uphill. Verify ∥ag∥ = 1g.

(c) The robot is placed on a hill with inclination θI ∈ [0, π

2 ] in radians. Find ag

when the robot is rotated θ radians clockwise from uphill orientation. Verify∥ag∥ = 1g.

2. This exercise highlights the joint dynamics between physical processes and embeddedcontrol. For this exercise, consider a robot with an accelerometer mounted as shownin Fig. A.3.

(a) An object on the surface of the Earth experiences a roughly constant gravitationalforce. If the robot is placed at rest in two distinct positions and orientationsin space, will the accelerometer measurements in each position necessarily beequal?

(b) In what two ways does movement of the robot influence the accelerometermeasurement? Hint: What does an accelerometer actually measure?

(c) One of the two components found in part 2b is undesirable when measuring tilt.What is the undesired component, and how might it be reduced or eliminated?

1.6. EQUIPMENT: THE MYRIO ACCELEROMETER 24

Page 35: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.7 Equipment: Microsoft Visual Studio

Microsoft Visual Studio is the primary development platform for Microsoft Windowssoftware, including desktop, server, tablet and mobile. Visual Studio includes supportfor multiple programming languages including C and C++.

1.7.1 Visual Studio Useful References

Visual Studio4 (Microsoft, 2014a)

Visual Studio Get Started4 (Microsoft, 2014b)

1.7. EQUIPMENT: MICROSOFT VISUAL STUDIO 25

Page 36: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.8 Equipment: Eclipse

1.8.1 Introduction to Eclipse

Eclipse from the Eclipse Project is the most widely-used open-source IDE, havingbeen adapted as the IDE of choice for many hardware vendors. Like most IDEs,Eclipse provides a workspace to organize project files and development perspectives, aproject to organize source code and dependencies, and build specifications that definecommunication with hardware targets.

Like most IDEs, Eclipse provides a workspace to organize project files and developmentperspectives. A project organizes source code, dependencies, and build specificationsthat define communication with hardware targets.

1.8.2 Eclipse Useful References

Eclipse Juno Documentation4 (Eclipse Foundation, 2013b)

Eclipse4 (Eclipse Foundation, 2013a)

C Support for NI myRIO User Guide L (National Instruments, 2013a)

1.8. EQUIPMENT: ECLIPSE 26

Page 37: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.9 Equipment: LabVIEW

1.9.1 Introduction to LabVIEW

Model-based design emphasizes mathematical modeling to design, analyze, verify,and validate dynamic systems. Mathematical models are used to design, simulate,synthesize, and test cyber-physical systems, and are based on system specificationsand analysis of the physical context in which the system resides.

Graphical design environments provide developers with a higher level of abstractionthan traditional imperative programming models. National Instruments LabVIEW is agraphical design environment for scientists and engineers that emphasizes model-baseddesign of embedded and cyber-physical systems. LabVIEW applications run on desktopcomputers or embedded controllers, and are most commonly designed to interfacewith sensors, actuators, instruments, data acquisition devices, and other computers andembedded devices.

LabVIEW supports heterogeneous compositions of several models of computation:continuous systems are expressed as ordinary differential equations or differentialalgebraic equations, and discrete systems are expressed as difference equations, in theSignal Flow model of computation; concurrent state machines are expressed in theStatecharts model of computation; imperative expressions are expressed as FormulaNodes (a subset of ANSI C) or MathScript Nodes (compatible with scripts created bydevelopers using The Mathworks, Inc. MATLAB software and others); data acquisitionand program flow are expressed in Structured Dataflow (Kodosky et al., 1991), thepredominant language in LabVIEW. Structured Dataflow is often referred to as thegraphical language (G).

A LabVIEW application is called a virtual instrument (VI). A VI consists of afront panel and a block diagram. The front panel provides an interface for settingparameters, executing a VI, and viewing results. The block diagram defines thebehavior of the application. A front panel and its corresponding block diagram areshown in Fig. 1.19-1.20.

LabVIEW applications targeting the processor on myRIO are compiled into machinecode and executed within an RTOS.

1.9. EQUIPMENT: LABVIEW 27

Page 38: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1

Number of Kinects Attached

Move Success?

STOP

1280x960 0.29X 32-bit RGB image 48,36,78 (192,567)

Color Image

640x480 0.56X Signed 16-bit image -8 (0,0)

Depth Image

90-90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80

SoundSourceAngle

0.187069

SoundSourceAngleConfidence

19.9962

BeamAngle

USB\VID_045E&

UniqueKinectId

2

Status

0

Index IsRunning

-27

MinElevationAngle

27

MaxElevationAngle

USB\VID_0409&

DeviceConnectionId0

Kinect Properties

0

Kinect Sensor Index

RgbResolution1280x96

Color Image Format

Resolution640x480Fps

Depth Image Format

Author: Jordan Kuehn

Figure 1.19: LabVIEW front panel for the Microsoft XBox Kinect.

Get Audio Data.viGet Color Frame.vi Get Depth Frame.vi

Stop

Color Image Depth Image

SoundSourceAngle

SoundSourceAngleConfidence

BeamAngle100

Author: Jordan Kuehn

Number of Kinects Attached

Move Success?

27 -27 0

Kinect Properties

Kinect Sensor Index

Color Image Format

Depth Image Format Figure 1.20: LabVIEW block diagram for the Microsoft XBox Kinect.

1.9. EQUIPMENT: LABVIEW 28

Page 39: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.9.2 LabVIEW Useful References

Learn LabVIEW4 (National Instruments, 2014)

Getting Started with LabVIEW L (National Instruments, 2013b)

LabVIEW Quick Reference Card L (National Instruments, 2010)

LabVIEW 2013 Help4 (National Instruments, 2013c)

LabVIEW 2013 Real-Time Module Help4 (National Instruments, 2013d)

LabVIEW Product Page4 (National Instruments, 2013e)

Figure 1.21: LabVIEW myRIO Start Screen.

1.9. EQUIPMENT: LABVIEW 29

Page 40: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.10 Equipment: CyberSim

1.10.1 Introduction to CyberSim

CyberSim is software used to simulate cyber-physical systems using models of bothcyber (software) and physical systems. CyberSim is built especially for the laboratoryexercises in this book and is the product of a collaboration between the Universityof California, Berkeley and National Instruments. CyberSim is written in LabVIEWusing the LabVIEW Robotics Simulator, and its source code is released open sourceat http://LeeSeshia.org/lab.

Discrete simulations of continuous systems are approximations and are subject tonumerical error. These simulations are based on ordinary differential equations (ordifferential algebraic equations), that are computationally expensive to solve, andnumerical accuracy is balanced against real-time performance. The scope of anysimulator is limited: one simulation tool may focus on kinematics, another onelectricity and magnetism, another on fluid mechanics, another on energy, another onquantum and nuclear dynamics, and so on. Some tools are dedicated to modeling thebehavior of computers themselves!

There are currently two versions of CyberSim: one that has a physical model of theiRobot Create, and another that has a physical model of the Kobuki. In this section,we mainly focus on describing the iRobot Create version of CyberSim, noting that theuser interface of CyberSim and basic physical modeling of both robots in CyberSimare similar. Physical models are based on the the Open Dynamics Engine (Smith,2012) rigid body dynamics software that can simulate robots in a virtual environmentand render them in 3D. iRobot Create sensor packets are constructed from the state ofthe simulation and passed into a controller that outputs desired wheel speeds. Effectssuch as control period, quantization, and noise are built into the simulator and aremeant to closely reflect control software running on an embedded controller interfacedwith the iRobot Create.

LabVIEW Robotics Simulator provides a graphical interface for customizing environ-ments, including adding, removing, and moving obstacles, changing the initial positionof the robot, adjusting sensor locations, and adding multiple robots to the environment.Robots modeled in CAD software such as SolidWorks can be imported and customizedwith sensors and actuators. The configuration of the environment, including dimensions

1.10. EQUIPMENT: CYBERSIM 30

Page 41: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

and placement of objects and robots, is stored in an XML file. The resulting XMLfile may be read in by CyberSim and used to simulate a new environment.

1.10. EQUIPMENT: CYBERSIM 31

Page 42: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.10.2 CyberSim Useful References

LabVIEW Robotics Simulator Wizard4 (National Instruments, 2013f)

Figure 1.22: iRobot Create in CyberSim.

1.10. EQUIPMENT: CYBERSIM 32

Page 43: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.10.3 CyberSim User Interface

CyberSim is launched as a standalone executable, CyberSim.exe . Upon launching,the user interface (Fig. 1.22) appears. Before a simulation can run, the simulator needsto be configured with an environment and a statechart controller. The environmentis an XML file generated by the LabVIEW Robotics Environment Simulator, andseveral such environments are included with CyberSim. The statechart controller maybe either a LabVIEW VI or a Windows Dynamic-Link Library (DLL) that receivessensor inputs and produces actuator outputs. The paths to the environment and thestatechart controller are set under the Configuration tab.

When running a simulation, a 3D rendering of the simulation will appear. If using aLabVIEW Statechart as the controller, its execution will also be shown alongside thesimulation.

Controlling and Navigating a Simulation

Once a simulation environment and statechart controller have been specified, use thefollowing buttons to control a simulation:

• Start begins a simulation.

• Pause pauses the simulator. Simulation time does not advance and the statechartcontroller is not executed while paused. Press again to resume the simulation.

• Stop stops a simulation and unloads the environment and statechart controller.

• Camera resets the simultaion camera to its default vantage.

• Exit stops an executing simulation and closes CyberSim.

To navigate around the 3D rendering of the simulation, mouse over the rendering andthe cursor will change, indicating the navigation mode when clicking:

• Click and drag to navigate spherically around the clicked point.• Ctrl + click and drag to strafe along the visible plane of the simulation.• Shift + click and drag to zoom in and out.

1.10. EQUIPMENT: CYBERSIM 33

Page 44: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

Command-Line Arguments

The default configuration of CyberSim may be overridden using the following command-line arguments:

Option Parameters Meaning/enableVisualization true, false enable visual rendering of the simula-

tion and environment and statechart/environment environment path Path to the environment manifest

XML file. May be absolute or rel-ative.

/maxTime seconds, Inf Maximum duration over which to sim-ulate, in seconds. Double-precisionfloating point number.

/record record path Path to write the simulation recordXML file. May be absolute or relative.

/statechart statechart path Path to the statechart VI or DLL con-troller to execute with the simulation.May be absolute or relative.

Table 1.1: CyberSim.exe command-line arguments.

Sample usage:

CyberSim.exe /environment:HillClimb.xml /statechart:libstatechart.dll /maxTime:10.5

1.10.4 How the Simulation Works

The CyberSim is built atop a combination of technologies. The iRobot Create wasmodeled in SolidWorks and then imported into the LabVIEW Robotics EnvironmentSimulator. The simulator (based on the Open Dynamics Engine) numerically solvesthe ordinary differential equations for the kinematics and dynamics of the differentialdrive robot in a simulated environment. LabVIEW renders the environment and robotinto a 3D Picture Control for viewing the simulation.

The ODE solver uses a variable step size to advance time, allowing for higher precision(smaller step size in time) when objects are moving quickly or colliding, and faster

1.10. EQUIPMENT: CYBERSIM 34

Page 45: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

performance (larger step size in time) otherwise. The solver uses several randomnumber generators in predicting collisions, noise generators for introducing sensornoise, and the engine uses nondeterministic threads – as a result the simulator isnondeterministic. You may not see the same results across two simulations with thesame initial conditions. While this may be undesirable from a testing standpoint, thiscomes with the side effect of being closer to real life, where initial conditions and anenvironment are never exactly replicable.

The internal microcontroller on the iRobot Create may be configured to periodicallysample its sensors and transmit a sensor packet via serial port to a connected embeddedcontroller such as myRIO. Due to design flaws with the iRobot Create, sampling lessfrequently produces more accurate results, and CyberSim uses the sampling period of60ms. CyberSim models this by advancing simulation time by 60ms between eachexecution of the control algorithm. At each control period, the simulated world issampled to create a sensor packet equivalent to that sent by the real robot. Single-precision floating point quantities of the simulated world are quantized and convertedinto the format used by each sensor.

The inputs to the control algorithm include a simulated iRobot Create sensor packetand values of the three-axis accelerometer on myRIO. The outputs of the controlalgorithm are the desired left and right wheel speeds. The clearly defined interfacebetween the simulator and the control algorithm allows the same control algorithm tobe used when interfaced with the real robot. The ability to design and tune a controlalgorithm in simulation and then deploy and verify on the real robot is an example ofmodel-based design, shown in Fig. 1.23.

The control algorithm is provided by the user. Two interfaces are supported, a WindowsDLL or a LabVIEW VI. When creating a Windows DLL, the controller must matchthe prototype shown in Fig. 1.24. The sensor stream parameter refers to the contentsof a sensor stream packet sent by the iRobot Create containing SensorGroup6, asdefined in the iRobot Create Open Interface. The return value is an error or successcode, where zero indicates no error.

When using a LabVIEW VI, the VI front panel must match the template shown inFig. 1.25.

1.10. EQUIPMENT: CYBERSIM 35

Page 46: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

Deploy' Simulate'Design'

Simulated''Sensors'

Simulated'Actuators'

Real'Sensors'

Real'Actuators'

Control'Algorithms'

System'Abstrac9on'Layer'

System'Abstrac9on'Layer'

Simulated'Plants'&'Environments'

Real'Plants'&'Environments'

Verifica(on+&+Valida(on+Figure 1.23: An example model-based design workflow.

int32_t __cdecl irobotNavigationStatechartSimulation(

const int32_t netDistance ,

const int32_t netAngle ,

const uint8_t * sensorStream ,

const int32_t sensorStreamSize ,

const double * accelAxes ,

const int32_t accelAxesSize ,

int16_t * pRightWheelSpeed ,

int16_t * pLeftWheelSpeed);

Figure 1.24: C function signature for a control algorithm used by CyberSim.

Figure 1.25: VI template for a control algorithm used in CyberSim.

1.10. EQUIPMENT: CYBERSIM 36

Page 47: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.10.5 Fidelity of the Simulation

No simulation can be 100% accurate, and you may encounter differences between thesimulated and real worlds.

Distance Travelled and Angle Rotated

The simulator calculates distance traveled and rotation turned by the iRobot Create bymeasuring its change in position. The real robot reports distance and angle by sensingthe movement of its wheels. In the simulator, distance is always unsigned. On thereal robot, distance is signed. A simple way to ensure the same behavior in simulationand on the physical device is to use absolute values when calculating distance.

If the wheels on the real robot are slipping, the robot still reports this as distancetraveled and angle turned, since the wheels are still moving. In the simulator, onlyactual movement of the robot is measured.

The simulator wraps all angles to [−180,+180]; the real robot does not.

Cliff Sensors

The infrared range finders on iRobot Create indirectly measure distance to the ground;actually, they measure light intensity. Light intensity varies significantly betweendifferent types of materials and lighting conditions. The simulator does not modellight intensity, and instead the cliff sensor signal values are directly proportional todistance. On the real robot, these values may differ based on material and lightingconditions. You may need to adjust thresholds between the simulator and the realrobot.

Subset of iRobot Sensors in the Simulator

Not all iRobot Create sensors are updated by the simulator, including charging sourcesavailable, battery life, battery temperature, song playing, etc. The following sensorsare modeled by the CyberSim:

• Wall signal (boolean and raw)

1.10. EQUIPMENT: CYBERSIM 37

Page 48: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

• Cliff signals (boolean and raw)• Bumps and wheel drops (boolean)• Distance traveled since last sensor packet (mm) – always unsigned• Angle traveled since last sensor packet (deg) – always signed and wrapped to

[−180,+180].

1.10. EQUIPMENT: CYBERSIM 38

Page 49: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

1.10.6 Troubleshooting

I receive Error 13, “File is not a Resource” when running CyberSim and a C State-chart. This is a Windows operating system message relating to an issue loading yourStatechart DLL. The problem appears to be related to the compiler version used byVisual Studio. Several recommendations for resolving the issue:

• Change from Debug to Release compile mode. In Visual Studio, from the topmenu bar, locate the configuration drop-down menu and select Release.

• If you are using Visual Studio Express 2013 for Desktop, change the PlatformToolset to version 120. In Visual Studio, right-click on the libstatechart projectand from the context menu select Properties. In the libstatechart Property Pagesdialog, navigate to Configuration Properties - General. In the right pane, locatethe Platform Toolset setting and select Visual Studio 2013 (v120). Press OK tosave the setting and close the dialog.

• If you are using Visual C++ Express 2010, you do not need to change yourproject settings. Right-click on the libstatechart project and select Rebuild. Thentry running CyberSim again.

I receive Error 1003, “The VI is not executable” when running CyberSim and aLabVIEW Statechart. This error may occur for any of the following reasons:

• The Statechart source file has an error and is not executable. Check that theStatechart can generate code and does not generate errors.

• The Statechart wrapper VI is not executable. This can occur if the Statechart isnot executable (see above) or if the VI has not been saved before executing inCyberSim.

• The Statechart uses advanced libraries, such as PID, Advanced Analysis Library,MathScript or others that are not supported. Use only base LabVIEW functionsin your Statechart.

I receive Error 1031, “VI Reference type does not match VI connector pane.” Thiserror may occur if there is a mismatch between CyberSim and the courseware youdownloaded. Ensure you are using the correct version of CyberSim and the associatedcourseware.

I receive Error 1088, “The Parameter is Incorrect” when running CyberSim. Thiserror may occur when CyberSim is running from a folder that is on a network drive,or whose path includes non-ASCII characters. Move the CyberSim folder to a new

1.10. EQUIPMENT: CYBERSIM 39

Page 50: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 1. EQUIPMENT

location, preferably on the C:\drive and in a path that does not include any specialcharacters.

1.10. EQUIPMENT: CYBERSIM 40

Page 51: An Introductory Lab in Embedded and Cyber-Physical Systems

2Sensor Interfacing and

Calibration

41

Page 52: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

2.1 Interface to and Calibrate the WiiMote

These exercises guide you in calibrating and interpreting data from a digital sensor,specifically the accelerometer from a popular gaming device. You will interface yourcomputer with the WiiMote via Bluetooth HID wireless link, obtain raw data from itsaccelerometer, calibrate, and display the results in LabVIEW.

There are no prerequisites for this lab.

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 42

Page 53: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

2.1.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.9.1 (Introduction to LabVIEW)• §1.1.1 (Introduction to WiiMote)• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 7: Sensors and Actuators §7.1 (Models of Sensors and Actuators) L

– Chapter 7: Sensors and Actuators §7.2.1 (Measuring Tilt and Acceleration) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Developing Algorithms Using LabVIEW MathScript RT Module: Part 1 - TheLabVIEW MathScript Node L (National Instruments, 2012a)

• Wii Remote4 (Wikipedia, 2013d)• WiiMote4 (WiiBrew, 2012)• Bluetooth HID Profile L (Bluetooth Special Interest Group, 2003)

– §“Introduction to the HID Protocol” L, p. 18-23– §“BT HID Transaction Header” L, p. 57-64

• Using an Accelerometer for Inclination Sensing L (Fisher, 2010)• Implementing a Tilt-Compensated eCompass using Accelerometer and Magne-

tometer Sensors L (Ozyagcilar, 2011)

These documents go beyond the scope of the core concepts of these exercises, andare provided as additional resources.

• Getting Started with MathScript RT4 (National Instruments, 2012c)• MathScript RT Module Functions4 (National Instruments, 2012e)

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 43

Page 54: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

2.1.2 Prelab Exercises

1. This exercise requires that you read about the WiiMote hardware. Part of the goalof this exercise is to get familiar with how to find the required information. For eachquestion, visit the unofficial Wikipedia entry on WiiMote, or the unofficial WiiBrewWiki; where possible, verify against manufacturer specifications, though many internalspecifications have not been released.

(a) What is the manufacturer and model of the primary embedded computing system?(b) What type of processor architecture is used by this embedded computing system?

You may need to perform an internet search on the system you identified in theprevious question.

(c) What is the type and size of the memory chip?(d) What is the manufacturer and model of the accelerometer?(e) What is the communication protocol and speed of the accessory connector port?

2. This exercise requires that you read about the Bluetooth interface to the WiiMote.Part of the goal of this exercise is to get familiar with how to find the requiredinformation. For each question, first visit the unofficial WiiBrew Wiki to locate therelevant command sequence, then reference the official Bluetooth HID documentationto decode its meaning. Use hexidecimal (0x__) notation for all numeric values.

(a) What is the command to enable LEDs 1 and 3? Identify the Transaction Header(Transaction Type and Parameter), Report ID, and Payload (if present).

(b) Given the sequence to enable LEDs 1 and 3, how can it be modified to alsoenable the rumble motor?

(c) What is the command to enable continuous reporting of the core buttons andthe three axes of the accelerometer (even if the device is at rest)? Identify theTransaction Header (Transaction Type and Parameter), Report ID, and Payload(if present).

(d) What is the Transaction Header transmitted by the WiiMote when sending areport of its sensors?

3. Apply the affine function model of a sensor to interpret sensor data returned fromthe WiiMote. Let a be the sensitivity of the accelerometer, b its bias, and x theacceleration in one axis. Let f ∶R→N model the accelerometer, where f (x) is theoutput of the accelerometer in response to acceleration x.

(a) Use the affine function model of a sensor to find f (x) in terms of x, a, and b.

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 44

Page 55: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

(b) The digital accelerometer transmits f (x) to a computer or embedded controller.It is often useful in calculations to use the physical quantity of acceleration.Solve the affine function model equation for x.

(c) A digital accelerometer measures acceleration and uses an internal ADC toproduce a digital output. The output of an ADC is often referred to as an ADCunit. If x is given in units of g-forces (or just g), what are the units for a, b,and f (x)?

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 45

Page 56: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

2.1.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\LabVIEW\WiiMote\

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments MathScript RT Module 2014• Nintendo Wii Remote• Bluetooth radio

1. Unblock a Library Dependency: When downloading files from an unsecure source(such as the internet), Microsoft Windows blocks certain libraries from being loadedon your computer. From the downloaded exercise files, navigate to

src\LabVIEW\WiiMote\Dependencies\

right-click on the file WiimoteLib.dll and select “Properties”. If at the bottom of theProperties dialog you see a button

Unblock , press it followed by OK to save the

library. You also need to navigate to

src\LabVIEW\WiiMote\Dependencies\32feet.NET\Assemblies\

and unblock InTheHand.Net.Personal.dll. The library is now unblocked and may beloaded by LabVIEW.

2. Pair a desktop computer with the WiiMote: Open the VI WiiMote Pair.vi, whichpairs your desktop computer with your WiiMote. Given the MAC address of yourWiiMote, the VI searches available Bluetooth devices and will pair your device if its

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 46

Page 57: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

MAC address is found. Though the Windows operating system provides an interfaceto pair Bluetooth devices, using this VI to pair by MAC address eliminates confusionthat arises when multiple WiiMotes are available.

You do not need to modify or view the block diagram of WiiMote Pair.vi. Keyin the MAC address of your WiiMote, and run the VI to pair. When pairing theWiiMote, you must repeatedly and simultaneously press the 1 and 2 user buttonsfor the entire pairing process. Continue to press and let go until the after VI hascompleted (Fig. 2.1). When correctly paired, you should see a Windows notificationthat a Bluetooth HID driver was installed, and the WiiMote should flash all four userLEDs continuously. If the LEDs do not flash continuously, run the pair VI again.

Log

Discovering Devices...Found 1 old and new devicesFound 1 new devicesGetting name ...Device found: Nintendo RVL-CNT-01Installing Wii Remote 00191D2F20545 second delay...

00:19:1d:2f:20:54

MAC address to pair

Figure 2.1: WiiMote Pair.vi, showing successful pairing with the WiiMote.

(a) What is the MAC address of your WiiMote?

3. Plot the uncalibrated accelerometer signal from the WiiMote: after pairing, openand run WiiMote Interface.vi (Fig. 2.2). You do not need to modify this VI for thisexercise.

(a) What are the values of the x and y axes when the WiiMote is at rest on levelground?

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 47

Page 58: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

STOP Transmit

00Report ID

00Payload

Calibration

Measure

Transmission

52HID Transmit

255

0

50

100

150

200

Sample3000

y (raw)

z (raw)

x (raw)

0.00

0.00

0.00

Acceleration (uncalibrated)

1

-1

-0.5

0

0.5

Sample3000

z calibrated (g)

x calibrated (g)

y calibrated (g)

0.00

0.00

0.00

Acceleration (calibrated)

0

magnitude (g)

180

-180

-100

0

100

Sample3000

tilt (deg)

inclination (deg)

0.00

0.00

Orientation (calibrated)

x

y

z

x

y

z

tilt

inclination

0bias

1sensitivity

calibration (raw)

Figure 2.2: WiiMote Interface.vi Front Panel.

(b) What is the value of the z axis when the WiiMote is at rest on level ground?What quantity is being measured?

4. Control the WiiMote actuators: In the front panel of WiiMote Interface.vi, modifythe values for Report ID and Payload to toggle user LEDs and to toggle the rumblemotor.

Hint: After an instruction has been sent to the WiiMote to turn off all four user LEDs, thedevice appears to be powered off even though it is still running. To preserve battery life,hold down the power button for three seconds when the device is no longer in use.

(a) What is the Report ID and Payload to turn WiiMote LEDs 2 and 4 on, andLEDs 1 and 3 off?

(b) How can you modify the above sequence to also enable the rumble motor?

5. Measure sensitivity and bias of the accelerometer: The buttons on the front panelare associated with panes in the Event Structure within the block diagram. To view thesubdiagrams for each event handled, use the scroll arrows next to the name of the eventhandled. Modify the subdiagrams of the Event Structure so that, when the measurebias or measure sensitivity button is pressed on the front panel, the correspondingmeasurement recorded and displayed in the calibration (raw) control. You may assume

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 48

Page 59: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

the sensitivity and bias are approximately the same for all three axes. You do notneed to create new buttons or events for this exercise.

Hint: To retain your calibration parameters after LabVIEW is closed, right click on thecalibration (raw) control on the front panel and select “Data Operations→Make CurrentValues Default”.

(a) Where are these measurements stored?(b) What bias did you record?(c) What sensitivity did you record?(d) Provide screenshots of changes to the block diagram code.

6. Calibrate the accelerometer: modify the concents of the MathScript Node inWiiMote Interface.vi so that the Accelerometer (calibrated) chart plots acceleration ofthe x, y, and z axes, and the magnitude indicator displays the magnitude of acceleration,all in units of g.

(a) What equations did you use to calibrate the accelerometer and to calculate themagnitude of the acceleration it measures?

(b) Based on your calibration parameters and the number of bits of resolution of theWiiMote ADC, and an affine model of the WiiMote accelerometer, what is yourestimate of the maximum acceleration that the WiiMote can measure?

(c) When the WiiMote is at rest, what should be the value of the magnitude indicator?(d) Why is it better to perform calibration at runtime, rather than hard-coding values

for the sensitivity and bias of the sensor?(e) Provide the relevant MathScript code and screenshots of changes (if any) to the

block diagram.

7. Measure Pitch and Roll: modify the contents of the MathScript Node in WiiMoteInterface.vi so that the Orientation (calibrated) chart plots pitch and roll of the WiiMote,in units of degrees.

Hint: The coordinate system used in Implementing a Tilt-Compensated eCompass L

and the coordinate system used by the WiiMote (Fig. 1.3) are related by swapping thex and y axes. Note that the definition for pitch and roll are switched in this documentcompared to the pitch and roll in Figure. 1.3

(a) What equations did you use to calculate pitch and roll?(b) Provide the relevant MathScript code and screenshots of changes (if any) to the

block diagram.

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 49

Page 60: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

8. Filter the accelerometer signal: Accelerometers are often used to detect highfrequency signals such as noise and vibration; for a game controller, lower-frequencymovements of the user should be isolated. In particular, the rumble motor willintroduce a high-frequency signal. Implement a lowpass filter to smooth the signal ofthe calibrated accelerometer when the rumble motor is on.

Hint: A simple lowpass filter is discussed in Implementing a Tilt-CompensatedeCompass L.

(a) Describe your filter, and include an equation for its impulse response, frequencyresponse, or its output as a function of input.

(b) Provide the relevant MathScript code and screenshots of changes (if any) to theblock diagram.

9. Share your Feedback: what did you like about this lab, and what would youchange?

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 50

Page 61: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

2.1.4 Troubleshooting

I receive Error 1172, “WiimoteLib.WiimoteNotFoundException” when running Wi-iMote Interface.vi. This error occurs if your desktop is not paired with a WiiMote.Run WiiMote Pair to pair again.

I am able to pair the WiiMote, but WiiMote Interface.vi either does not show input orreturns Error 1172 “WiimoteLib.WiimoteNotFoundException”. Check the WiiMotebatteries – when low, the device may stay powered on long enough to pair, only topower off shortly thereafter. When first powered on and paired, the four LEDs shouldremain flashing until the device is powered off, or the LED state is explicitly changedby a Bluetooth command.

I am able to pair the WiiMote and run WiiMote Interface.vi, but after a few secondsthe output does not change in response to movement of the controller. Check theWiiMote batteries – when low, the device may stay powered on long enough to pair,only to power off shortly thereafter. When first powered on and paired, the four LEDsshould remain flashing until the device is powered off, or the LED state is explicitlychanged by a Bluetooth command.

I receive Error 1172, “Timed out waiting for status report”. This may occur if youare using a WiiMote clone (i.e. not manufactured by Nintendo), and are not usingthe WiiMoteLib binary distributed with the lab materials. In initializing the WiiMote,the open-source WiiMoteLib verifies a vendor ID, which differs between authenticand cloned WiiMotes. We modified the WiiMoteLib source to omit this call duringinitialization, and provide the source as part of the downloadable lab materials.

I receive Error 1172, “Request for the permission of type... failed”. This is a Mi-crosoft .NET exception, indicating WiimoteLib.dll could not be loaded from a networkdrive. If possible, try moving your lab files to a local (i.e. C:) drive. If youradministrator has placed WiimoteLib.dll in a system directory, it is possible thatthe WiimoteLib.dll is loading from your lab directory first; try renaming the fileWiimoteLib.dll to WiimoteLib.dll.bak and relaunch LabVIEW.

My VI is broken and raises the error, “Invalid Procedure” or “Function Not Found”on the WriteStatusReport node. This may occur if you are not using the WiiMoteLibbinary distributed with the lab materials. The standard library does not allow externalprograms to transmit arbitrary status report packets. A modified WiiMoteLib source

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 51

Page 62: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 2. SENSOR INTERFACING AND CALIBRATION

and binary is provided as part of the downloadable lab materials. Make sure there areno other instances of the WiiMoteLib library in the system path.

I receive the error, “Error 1386 occurred at Constructor Node in WiiMote Pair.vi:The specified .NET class is not available in LabVIEW”. Ensure you have unblockedthe library file InTheHand.Net.Personal.dll by right-clicking on the file, selectingProperties, and

Unblock .

2.1. INTERFACE TO AND CALIBRATE THE WIIMOTE 52

Page 63: An Introductory Lab in Embedded and Cyber-Physical Systems

3Embedded Development Tools

Writing software for embedded microcontrollers requires the use of one (or more)development tools. Tools may be specific to the hardware, the programming languages,or the models of computation used. Processor and microcontroller vendors oftenprovide proprietary development tools such as compilers, memory programmers, anddebuggers, but in many cases open-source solutions exist such as the GNU CompilerCollection (gcc) and the GNU Debugger (gdb).

Sophisticated embedded development tools can be the product of thousands – sometimesmillions – of man hours, achieving complexity beyond what a single user could everhope to master. Embedded development tools may bring together a myriad ofcomponents, including support for dozens of hardware targets or targets released overthe span of more than a decade, multiple compilers and debuggers, team developmentfeatures such as source control and revision control, execution timing and performanceanalysis, software analysis, formal verification and validation, peripheral drivers, codesynthesis, and more. Technology and tools change, and while familiarity with acollection of embedded development tools is a valuable skill, of greater value is theability to gain familiarity with a new tool or technology by quickly navigating tersetechnical documentation, critically analyzing its functionalities, and contrasting it withalternative tools and technologies.

The exercises in this chapter are prescriptive in nature and introduce you to commontools for programming embedded systems. Completing these exercises will not make

53

Page 64: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

you an expert in any one of the tools used – each of them is in fact the entiresubject matter of one or more textbooks. Focus instead on efficiently extracting usefulinformation from technical documentation, understanding the connection between thetool and your embedded hardware, and becoming familiar with the tools used in laterchapters.

Figure 3.1: GNU logo (Suvasa, 2011).

54

Page 65: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.1 Connect to and Configure myRIO

These laboratory exercises serve as a tutorial on connecting and configuring myRIO.You will connect your myRIO to a host computer and reset it to its factory defaults.

There are no prerequisites for this lab.

3.1. CONNECT TO AND CONFIGURE MYRIO 55

Page 66: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.1.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.2.1 (Introduction to myRIO)

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• myRIO 1950 User Guide and Specifications L (National Instruments, 2013g)

3.1. CONNECT TO AND CONFIGURE MYRIO 56

Page 67: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.1.2 Prelab Exercises

For questions relating to exact specifications, be sure to reference the correct docu-mentation for the model of myRIO you are using.

1. What is the CPU clock frequency of the ARM Cortex-A9 processor on myRIO?

2. In this exercise, you will explore the electrical characteristics of your myRIO. Theseare important, as exceeding tolerances may damage or destroy your controller.

(a) What is the input voltage range for the controller power source?(b) What is the analog input voltage range for single-ended measurements?(c) What is the maximum current that may be sourced from a single DIO line?

3.1. CONNECT TO AND CONFIGURE MYRIO 57

Page 68: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.1.3 Lab Exercises

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable

1. Connect myRIO: Connect a power supply to myRIO. When powered, the PowerLED on the controller will illuminate. Connect myRIO to your computer using astandard USB cable. Windows should indicate a new device has been connected – ifthis is the first time you connected the device to your computer, it may take a fewmoments for Windows to install the driver.

2. Run the Getting Started Wizard: The myRIO USB Monitor should automaticallyopen when you connect myRIO to your computer. From within the myRIO USBMonitor, press

Launch Getting Started Wizard . If the NI myRIO USB Monitor doesnot automatically open, you may launch the Getting Started Wizard from the LabVIEWmyRIO start screen by selecting “Set Up and Explore→Launch the Getting StartedWizard” (Fig. 1.21). Complete the wizard as follows:

(a) In the myRIO Discovery pane, verify that your myRIO device appears asdiscovered. Click the device to continue to the next step.

(b) In the Rename your myRIO pane, optionally rename your myRIO device. Press Next to continue.(c) If this is the first time the myRIO device has been configured, the wizard will

install software to the device.(d) In the Test Onboard Devices pane, verify that the onboard accelerometer, LEDs,

and buttons are active and respond as expected. Press Next to continue.

(e) In the final pane, you may choose to create a new project or open LabVIEW.You may also press

Close to complete the wizard.

3. Discover myRIO using Measurement and Automation Explorer: MAX may belaunched from the Windows desktop or from the Windows Start menu under “NationalInstruments→NI MAX”.

In the left navigation pane, expand Remote Systems to autodiscover National Instru-ments devices on the local network (Fig. 3.3). Autodiscovery may take some timeto complete. If your myRIO appears under Remote Systems, it has been discovered

3.1. CONNECT TO AND CONFIGURE MYRIO 58

Page 69: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

(Fig. 3.4). Click on the myRIO device to see detailed information about the target,including the IP address of the Ethernet over USB adapter.

4. Configure myRIO using NI Web-Based Configuration and Monitoring: myRIOsupports a web-based configuration similar to NI MAX. Determine your target IPaddress (shown in the NI myRIO USB Monitor or in NI MAX), and navigate to thisaddress using a standard web browser. Browse through the options to see more aboutthe software and peripherals on myRIO.

5. Share your Feedback: what did you like about this lab, and what would youchange?

3.1. CONNECT TO AND CONFIGURE MYRIO 59

Page 70: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Figure 3.2: Launch the myRIO Getting Started Wizard from the LabVIEW myRIO startupscreen.

Figure 3.3: NI MAX autodiscovery pending.

3.1. CONNECT TO AND CONFIGURE MYRIO 60

Page 71: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Figure 3.4: NI MAX autodiscovery showing a connected myRIO.

3.1. CONNECT TO AND CONFIGURE MYRIO 61

Page 72: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.2 Program MicroBlaze from Xilinx SDK

These laboratory exercises serve as a tutorial on programming MicroBlaze on themyRIO FPGA using Xilinx SDK. You will configure your development environment,build a “Hello World” application in C from scratch, and connect to and programMicroBlaze from Xilinx SDK.

This lab builds on Lab 3.1: Connect to and Configure myRIO.

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 62

Page 73: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.2.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.3.1 (Introduction to MicroBlaze)

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 63

Page 74: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.2.2 Prelab Exercises

1. What are the differences between a traditional ‘fixed’ processor, an FPGA, and asoft-core processor?

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 64

Page 75: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.2.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\XilinxSDK\

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• Xilinx SDK 14.4• Xilinx Platform Cable USB II

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.Your Xilinx Platform Cable should be connected to your desktop via USB, andto your myRIO via the JTAG header (J5). Refer to §A.5 (myRIO JTAG Wiring) forthe correct pin mappings. When properly connected, the Status light on the PlatformCable will illuminate green. Connect another USB cable directly between myRIO andyour computer.

2. Deploy the MicroBlaze FPGA Fixed-Personality: MicroBlaze is implemented onmyRIO by deploying an FPGA fixed-personality. RIO Device Setup (Fig. 3.5) readsa bitfile to reconfigure the FPGA. RIO Device Setup erases and reprograms the FPGAof myRIO (or other NI RIO device). The tool downloads a bitfile directly to the flashmemory of the FPGA, and optionally configures it to load on startup. This is thesimplest way of deploying an FPGA fixed-personality that contains the MicroBlazesoft-core processor. RIO Device Setup does not program the flash memory of theARM.

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 65

Page 76: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

(a) Launch RIO Device Setup from the Windows Start menu, “National Instruments→NI-RIO→RIO Device Setup”.

(b) Pull-down the Resource menu and select “Browse...” to browse for the RIO0(FPGA) target on myRIO.

(c) Press the browse button next to Bitfile to Download and navigate to the fileMicroBlaze_myRIO.lvbitx .

(d) Press Download Bitfile to download the FPGA fixed-personality. This may take

a minute or two.

Press the reset button on your myRIO, and confirm the LED1 is glowing. It may takea minute or two for the target to restart.

3. Launch Xilinx SDK: Xilinx SDK may be found in the Windows Start menu under“Xilinx SDK→SDK→Xilinx Software Development Kit”. Upon launching, you maybe asked to select a workspace. A workspace organizes projects, perspectives, andapplication preferences. Select a location to store your workspace, and Workbench willcreate a workspace at this location if none exists. The Xilinx SDK prohibits spaces inthe workspace path. Make sure the location does not contain spaces, is writable, andif possible avoid using a network drive or fileshare – this may cause problems withthe Xilinx compile toolchain.

If you are not prompted to select a workspace, then Workbench has been configuredto automatically load a default workspace. If you need to change to a new location,then from the top menu bar select “File→Switch Workspace”.

Standard window configurations are available for various development tasks. For mostprogramming tasks, the Basic Device Development Perspective is sufficient. To openthis perspective, from the top menu bar select “Window→Open Perspective→Other...”and select the “C/C++” perspective.

4. Import the MicroBlaze Specification: A hardware specification and board supportpackage are automatically generated by the same tool that builds the MicroBlazefixed-personality. Each is a project that will automatically generate source code neededto interface with the MicroBlaze core. To import the hardware specification and boardsupport package, from the top menu bar select “File→Import...” to launch the Importwizard:

(a) In the Select an import source panel, select “General→Existing Projects intoWorkspace” and press

Next > .

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 66

Page 77: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

(b) In the Import Projects pane, press “Select archive file” and browse to MicroB-lazeSpec_myRIO. The projects in the archive will automatically propagate (Fig.3.8).

(c) Press Finish to complete the import wizard.

The project will now appear in the Project Explorer view. You will see a projecttitled MicroBlaze_Hardware_Specification, a hardware description project that containsinformation about myRIO and how MicroBlaze is be implemented on it. MicroB-laze_Software_Specification is a board support package, which provides drivers tohardware peripherals on myRIO. You do not need to modify either of these projects,but feel free to explore their content.

To build the MicroBlaze specification, from the top menu bar select “Project→Clean...”and in the Clean dialog, press

OK . Then from the same menu bar, select “Project→Build All”.

5. Create a New Project: Right-click in an empty area of the Project Explorer, andselect “New→Project...”. A new project wizard will open:

(a) In the Select a wizard pane, select “Xilinx→Application Project” and press Next > .(b) In the New Project pane, set Project name to helloWorldMicroBlaze. Ensure the

Hardware Platform is set to “MicroBlazeHardwareSpecifications” and Processoris set to “microblaze_0”, OS platform is set to “standalone”. Set the BoardSupport Package to use the existing “MicroBlazeSoftwareSpecifications”. Ensureyour dialog matches Fig. 3.6, and press

Next > .(c) In the Templates pane, choose “Hello World”. Press

Finish to complete theNew Project wizard.

When the project wizard completes, your development environment should return tothe C/C++ Perspective, with the helloWorldMicroBlaze project now appearing in theProject Explorer.

6. Review the Template Code: The New Project wizard automatically creates a Csource file. In the Project Explorer, expand the helloWorldMicroBlaze project and opensrc/helloworld.c. In the main() function, you will see a call to the print() function,a function similar to printf() in the standard C library but specific to MicroBlaze.The standard output defaults to a serial port.

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 67

Page 78: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

To compile the source code, from the top menu bar select “Project→Build Project”.The Build Console at the bottom of your workspace will show the results of thecompilation.

7. Create and Execute a Run Configuration: A Run Configuration is a script thatwill build, download, and execute your project on your target. To create a RunConfiguration:

(a) From the top menu bar select “Run→Run Configurations...”.(b) In the Run Configurations wizard, right-click on Xilinx C/C++ ELF and select

“New”.(c) Select the STDIO Connection tab to configure standard output for the target.

Check the option Connect STDIO to Console and from the drop-down menuselect “JTAG UART”. This configures standard output – used by functions likeprint() – to transmit over a JTAG serial port. Xilinx SDK will automaticallyspawn a console that displays messages from this port.

(d) Select the Debugger Options tab and uncheck the option “Stop at main()when debugging”. This enables your application to immediately execute afterdownloading to the target – otherwise, the debugger will place a breakpoint atthe first line of the main() function.

(e) Lastly, to place this Run Configuration in the list of favorites, open the Commontab. Under the Display in favorites menu section, check the box next to “Run”.Then click

Run to save the configuration and execute the run script.

Review the Console pane to view STDIO output. If your application compiled,downloaded, and was correctly executed, you should see the text Hello World appear.

8. Revise and Run Again: Change the print message to something new. Save the fileand build the project.

To stop the currently executing process on MicroBlaze, you first need to stop theprocessor. The XMD Console pane is used to issue commands to MicroBlaze anddisplay debug messages via UART over JTAG – you must first have run yourapplication to connect to your target over JTAG for the XMD Console to be connectedto your target. From the top menu bar, select “Xilinx Tools→XMD Console”. In theXMD Console pane, enter the following three commands to stop execution and resetthe MicroBlaze processor: rst, stop, and rst.

Execute your run configuration to see the new message. Congratulations on usingXilinx SDK to build your first MicroBlaze application for myRIO!

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 68

Page 79: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

9. Share your Feedback: what did you like about this lab, and what would youchange?

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 69

Page 80: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Figure 3.5: RIO Device Setup used to deploy the MicroBlaze FPGA fixed-personality tomyRIO.RIO Device Setup

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 70

Page 81: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Figure 3.6: Xilinx Project Wizard.

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 71

Page 82: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Figure 3.7: Xilinx SDK in the C/C++ perspective.

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 72

Page 83: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Figure 3.8: Xilinx SDK Import Wizard to import an existing project.

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 73

Page 84: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.2.4 Troubleshooting

The template project builds with errors: If the template code does not build, thecorrect include files may not have been generated. Double-check that you haveimported the MicroBlaze specification (Fig. 3.8) and have cleaned and built allprojects before running the New Project wizard.

When using the New Project wizard to create a Xilinx Application Project to targetMicroBlaze, nothing appears in Available Board Support Packages: Double-checkthat you have imported the MicroBlaze specification (Fig. 3.8) and have cleaned andbuilt all projects before running the New Project wizard.

When running, I receive the error “Failed to Open JTAG Cable” or the consoleprints “Error opening JTAG UART”: Double-check the wiring of the Platform USBcable (refer to §A.5 (myRIO JTAG Wiring) for the correct pin mappings), that myRIOis powered, and that the Status light on the Platform USB cable is green. Disconnectthe USB cable and reconnect - Windows should indicate a recognized device has beeninstalled.

I receive the error, “ERROR: Cannot perform the Debug Command, Current Pro-cessor State is ‘Running’ ”. This error typically occurs immediately after the FPGAhas been reprogrammed, and indicates the MicroBlaze processor is not in a statethat can accept debug connections. First attempt to build and run your application,double-checking that you have set the build configuration to connect the STDIOConsole to JTAG UART. In the XMD Console, enter the command rst to reset theprocessor to its initial state, followed by stop to stop the execution of the MicroBlazeprocessor. The processor should now be in its normal execution state and be able toaccept debug connections.

I cannot see the XMD (debug) console: print() statements in software are relayedvia JTAG to your desktop computer. The Xilinx XMD Console displays these messages.First, be sure that the Basic Device Development Perspective (C/C++) perspective isopen (Step 3). If the console is still not visible, it can be launched manually. From thetop menu bar, select “Xilinx Tools→XMD Console”. The console is then connected toyour target by entering the text terminal at the XMD: prompt and pressing enter.A console window should appear, and will display any print() messages generatedby software running on MicroBlaze.

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 74

Page 85: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

I receive the XMD Console error, “Error opening JTAG UART localhost:-1”: Thismay be caused by trying to download and run a program without stopping the previouscode. To resolve, disconnect and reconnect the JTAG USB cable, reset myRIO,and restart Xilinx SDK. To prevent this from happening, be sure to terminate yourapplication or debugging session before downloading and running again.

The XMD Console is empty: Ensure the build configuration is correct. First trypressing the user Button on myRIO to reset MicroBlaze. If that does not work, thenreset myRIO and restart Xilinx SDK.

3.2. PROGRAM MICROBLAZE FROM XILINX SDK 75

Page 86: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.3 Program the myRIO Processor from Eclipse

These laboratory exercises serve as a tutorial on programming the myRIO processorusing C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition, anEclipse-based IDE. You will configure your development environment, build a “HelloWorld” application in C, and connect to and program the ARM processor in Eclipse.

This lab builds on Lab 3.1: Connect to and Configure myRIO.

Figure 3.9: Eclipse for NI Linux Real-Time (based on Eclipse Juno). Eclipse logo is atrademark of the Eclipse Foundation.

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 76

Page 87: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.3.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.8.1 (Introduction to Eclipse)

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 77

Page 88: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.3.2 Prelab Exercises

There are no prelab exercises for this lab.

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 78

Page 89: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.3.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\myRIO\

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.

2. Enable SSH: Your computer communicates with myRIO using the SSH protocol.This allows you to see printf() messages transmitted from myRIO to yourcomputer, and to interact with myRIO using standard Linux shell commands. Youmay use NI MAX to enable terminal access, or you may use the web configurationby opening your internet browser:

(a) Navigate to http://172.22.11.2 in the web browser on the host computer. If yourmyRIO is configured with an alternate IP address, use this address instead.

(b) The Web Configuration interface will open in your browser. In the left navigationbar, select System Configuration (the icon of a home), and under the StartupSettings section, check the open to “Enable Secure Shell Server (sshd)”.

(c) Click Save to apply the new setting.

(d) Click Restart on the upper right of the page to restart myRIO.

3. Launch Eclipse: C & C++ Development Tools for NI Linux Real-Time, EclipseEdition may be found in the Windows Start menu under “National Instruments→C &

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 79

Page 90: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

C++ Development Tools for NI Linux Real-Time, Eclipse Edition”. Upon launching,you may be asked to select a workspace. A workspace organizes projects, perspectives,and application preferences. Select a location to store your workspace – Eclipse willcreate a workspace at this location if none exists. The location must be writable.

If you are not prompted to select a workspace, then Eclipse has been configured toautomatically load a default workspace. If you need to change to a new location, thenfrom the top menu bar select “File→Switch Workspace”.

4. Import the Template Project: The myRIO project template specifies the compiletoolchain used to compile programs for myRIO; the cross-compile toolchain executeson your desktop and compiles your program for the ARM processor on myRIO.The project further specifies a run specification to execute the successfully compiledprogram.

To import the myRIO project template, from the top menu bar select “File→Import...”to launch the Import wizard:

(a) In the Import panel, select “General→Existing Projects into Workspace” andpress

Next > .(b) In the Import Projects pane, press “Select archive file” and browse to

C_Support_for_NI_myRIO_v1.0.zip

Several projects are available for import; the example projects are a usefulresource but not needed for this lab, so deselect all example projects, leavingonly C Support for NI myRIO and myRIO Template.

Press Finish to complete the import wizard.

5. Rename the Template Project: In the Project Explorer view, right-click on theproject myRIO Template and select “Rename...”. Rename the project myRIO HelloWorld.

6. Set Model Number: Set a project-level symbol to specify which model of myRIOyou are using. This informs the generated C code about the pin configurations andperipherals. Right-click on the myRIO Hello World project and select “Properties” toopen project settings. Navigate to “C/C++ General→Paths and Symbols” and open the#Symbols tab to see project-level symbols that are defined across all source files inthe project. There are a number of symbols that are built-in for compiler, operatingsystem, and Eclipse settings – you may wish to uncheck “Show built-in values” to

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 80

Page 91: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

show only symbols you have defined. The symbol MyRio_1900 is defined by default;delete this symbol and create a new symbol MyRio_1950 to instruct the compiler tobuild for the correct hardware version.

To verify the project settings are correct and that the project can be built, from thetop menu bar select “Project→Build All”. Watch the Console to verify all projectsbuild successfully.

7. Create a Remote Target: To view connections to remote systems, use the RemoteSystem Explorer (RSE) perspective. To open this perspective, from the top many barselect “Window→Open Perspective→Other” and choose “Remote System Explorer”.

From the top menu bar select “File→New→Other...” to launch the New Connectionwizard:

(a) In the Select a wizard panel, select “Remote System Explorer→Connection” andpress

Next > .(b) In the Select Remote System Type panel, select “Linux” and press

Next > .(c) In the Remote Linux System Connection panel, enter the IP address of your

myRIO into the Host name field and the name “myRIO” into the Connectionname field and press

Next > .(d) In the Files panel, choose the configuration “ssh.files” to indicate the filesystem

connection protocol. Press Next > .

(e) In the Processes panel, choose the configuration “processes.shell.linux” to indicatethe Shell process subsystem for connecting to remote processes. Press

Next > .(f) In the Shells panel, choose the configuration “ssh.shells” to indicate the shell

and command protocol. Press Next > .

(g) In the Ssh Terminals panel, choose the configuration ssh.terminals to indicate theterminal protocol.

(h) Press Finish to complete the New Connection wizard.

You should now see your myRIO target appear in the Remote Systems pane (Fig.3.10).

8. Connect to myRIO: From the Remote Systems pane, right-click on your myRIOtarget and select “Connect”. Confirm the IP address, and enter “admin” and leavethe password blank. Choose to save the username and password for convenientreconnecting (Fig. 3.11). Press

OK to connect.

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 81

Page 92: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Figure 3.10: Remote System Explorer Perspective.

Figure 3.11: Remote system connection configuration. NOTE: The username ‘admin’should be used instead of ‘root’.

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 82

Page 93: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

You may receive a security warning that the authenticity of the target could not beindependently verified (Fig. 3.12). You may disregard this warning.

Figure 3.12: An expected security warning that may be disregarded.

When connected, a green arrow should appear over the target icon in the RemoteSystems panel. You can verify the target is connected by right-clicking on the targeticon – if “Disconnect” appears in place of “Connect” in the context-menu, then yourtarget is connected.

Next, launch a terminal window which will allow you to interact with the Linuxshell on myRIO. Expand the myRIO target, right-click on Ssh Terminals, and select“Launch Terminal”. A terminal pane should appear in the bottom part of the perspective.Standard output messages are displayed on this terminal, and you may interact withthe shell as with any Linux machine. Enter the command

uname --all

to display information about the Linux operating system on myRIO (Fig. 3.13).

Figure 3.13: Terminal command running on myRIO that displays Linux kernel information.

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 83

Page 94: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

9. Transfer the FPGA Fixed-Personality to myRIO: The FPGA on myRIO may beconfigured with an FPGA fixed-personality stored in a LabVIEW bitfile (.lvbitx) file.In the Remote Systems pane, expand “myRIO→Sftp Files” to see the filesystem onmyRIO. Navigate to the folder

/var/local/natinst/

Right-click on the folder “natinst” and select “New→ Folder”. Name the folder“bitfiles”. Right-click on the newly created “bitfiles” folder and select “Export fromProject...”. Navigate to the source folder

C Support for NI myRIO\source

and check to include NiFpga_myRio[model] Fpga10.lvbitx . No other files or foldersshould be checked. Verify that the destination folder indicates the “bitfiles” folder.Click

Finish to transfer the file, and verify the file now appears in the RemoteSystems pane under the “bitfiles” folder.

When your application executes on the target, the myRIO initialization code will openthe correct bitfile and program it to the FPGA.

10. Write a Hello World Message: Most programming tasks are performed in theC/C++ perspective. To open this perspective, from the top menu bar select “Window→Open Perspective→Other” and choose “C/C++”.

Expand the myRIO Hello World project and open the file main.c Add the statementprintf("Hello, World!\n"); after the comment /* Your application code goes here.*/.

To compile the source code, from the top menu bar select “Project→Build Project”.The Problems tab at the bottom of your workspace will show the results of thecompilation – if there are errors (hopefully just typos), you must resolve them beforecontinuing to the next step.

11. Create a Debug Configuration: Debug configurations are used to build yourapplication, download the executable to the remote target, and attach Eclipse to aremote debugging session. Create a new debug configuration by navigating to the topmenu bar “Run→Debug Configurations...”. In the Debug Configurations dialog, expandC/C++ Remote Application and open the myRIO Template configuration. Configurethe debug configuration as follows:

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 84

Page 95: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

(a) Set the Name to “myRIO Hello World”.(b) In the Main pane:

i. Select the application to run by pressing Search Project... under C/C++

Application. If your program compiled successfully, the project myRIO HelloWorld will appear in the Program Selection dialog. Select it and press

OK .ii. For connection profile, ensure “myRIO” is selected.

iii. Set Remote Absolute File Path to

/home/admin/myRIOHelloWorld

(c) In the Debugger tab, ensure GDB Debugger ensure the GDB debugger is set to

arm-none-linux-gnueabi-gdb.exe

(d) Press Apply followed by

Close to save settings and close the configurationwindow.

12. Launch a Debug Session: From the top menu bar, select “Run→Debug Config-urations...” to open the Debug Configurations window. In the left navigation pane,select the debug configuration you created in the previous step, and press

Debug tolaunch a debug session. Eclipse may prompt to open the Debug perspective, whichcontains several useful debugging views. Click

Yes to open the Debug perspective.

The Console contains several views. To open the Remote Shell view, press the

“Display Selected Console” button until the console displayed reads “myRIOHello World [C/C++ Remote Application] Remote Shell”.

The debugger will stop at the first line of the main() function. To execute the firstline, from the top menu bar select “Run→Step Over”. The console should display themessage, “Hello, World!”. To complete execution of your application, from the topmenu bar select “Run→Resume”.

If the debugger exits successfully and you see the printed message on the console,then your code has been correctly cross-compiled, downloaded to the target, andremotely debugged. Next, you will configure your project to connect to the hardwareperipherals on myRIO.

13. Write an I/O Application: Modify main.c to access the hardware peripheralson myRIO. At the top of the source file, include the myRIO header, and revise

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 85

Page 96: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

the main() function to open turn on an LED. Add the line extern NiFpga_Session

myrio_session; immediately following the #include statements, and add the followinglines after your print statement:

/* Set the LED register to 1, turning on LED 1 */

status = NiFpga_WriteU8(myrio_session , DOLED30 , 0x01);

/* Print error messages (if any) from the DIO write */

MyRio_PrintStatus(status);

The complete program is shown below.

#include <stdio.h>

#include "MyRio.h"

extern NiFpga_Session myrio_session;

int main(int argc , char **argv)

NiFpga_Status status;

status = MyRio_Open ();

if (MyRio_IsNotSuccess(status))

return status;

/*

* Your application code goes here.

*/

printf("Hello , World!\n");

/* Set the LED register to 1, turning on LED 1 */

status = NiFpga_WriteU8(myrio_session , DOLED30 , 0x01);

/* Print error messages (if any) from the DIO write */

MyRio_PrintStatus(status);

status = MyRio_Close ();

return status;

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 86

Page 97: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Compile, download, and run your application on the target. If LED 1 illuminates,and you receive no error messages on the console, the program executed correctly.Congratulations on using Eclipse to build your first C application for myRIO!

Hint: If the Eclipse Problems pane indicates an error that the symbol DOLED30

cannot be resolved, this is actually a problem with the built-in Code Analyzer. SeeTroubleshooting below for an explanation and simple workaround.

14. Share your Feedback: what did you like about this lab, and what would youchange?

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 87

Page 98: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.3.4 Troubleshooting

I receive the compile error, “Cannot run program "arm-none-linux-gnueabi-gcc":Launching failed”. Eclipse is unable to find the cross-compile toolchain. The compiletoolchain is expected to be enumerated in the system PATH environment variable,which is typically set by your laboratory administrator. If you are the administratorof your build machine, see section §A.3 (Install C & C++ Development Tools) forinstructions on how to set the environment variable. If you are unable to change thesystem or user PATH environment variable, one workaround is to specify the path tothe cross-compile toolchain in your project settings:

In the Project Explorer, right-click on myRIO Project, and in the context menu select“Properties”. Navigate to “C/C++ Build→Settings”, and in the Tool Settings tab select“Cross Settings”. Set the Prefix field to

arm-none-linux-gnueabi-

to inform the compiler that the project should be compiled for ARM architectures inthe Linux operating system using the GNU open-source compiler. In the Path field,press the

Browse... button to navigate to the location of the cross-compile toolchain,which is by default:

C:\Program Files (x86)\National Instruments\Eclipse\toolchain\gcc-4.4-arm\i386\bin

Remove “ (x86)” from the path if you are on a 32-bit operating system. Clean andrebuild your project with the new settings. If the error still occurs, consult Eclipsedocumentation and verify that the compile toolchain has been installed to the NationalInstruments install directory.

I receive error RSEG1066, “Failed to connect sshd on ‘x.x.x.x:22’ ”. This erroroccurs if Eclipse cannot connect to myRIO, or an existing session has timed out. Tryconnecting again in case a timeout has occurred. Double-check the IP address ofmyRIO and that Eclipse is not blocked by any firewall. Refer to §3.1 (Connect to andConfigure myRIO) for details on connecting to myRIO.

My process terminates with error code -61024: This corresponds to a device typemismatch when loading the fixed personality on myRIO. Double-check that the correctsymbol MyRio_1950 is defined for your project.

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 88

Page 99: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

The Eclipse Problems pane shows an unresolved symbol, but the Console outputindicates a successful build: If the Eclipse Problems pane indicates an error that asymbol (such as DOLED30) cannot be resolved, this is actually a problem with thebuilt-in Code Analyzer. Open the Console pane to see the output of the cross-compiler– if it indicates the program was built successfully, then you may ignore the unresolvedsymbol warning in the Problems pane. To prevent the Code Analyzer from falselyreporting this problem, you may disable the feature by right-clicking on your project,selecting Properties, navigating to “C/C++ General→Code Analysis”, selecting toUse project settings and unchecking “Syntax and Semantic Errors→Symbol is notresolved”.

3.3. PROGRAM THE MYRIO PROCESSOR FROM ECLIPSE 89

Page 100: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.4 Program the myRIO Processor from LabVIEW

These laboratory exercises serve as a tutorial on programming the ARM processor onmyRIO using National Instruments LabVIEW. You will build a acceleration indicatorapplication that turns on LEDs when acceleration is exceeded on each axis of theonboard accelerometer.

This lab builds on Lab 3.1: Connect to and Configure myRIO.

3.4. PROGRAM THE MYRIO PROCESSOR FROM LABVIEW 90

Page 101: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.4.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.9.1 (Introduction to LabVIEW)

3.4. PROGRAM THE MYRIO PROCESSOR FROM LABVIEW 91

Page 102: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.4.2 Prelab Exercises

There are no prelab exercises for this lab.

3.4. PROGRAM THE MYRIO PROCESSOR FROM LABVIEW 92

Page 103: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

3.4.3 Lab Exercises

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW for myRIO Module 2014• National Instruments LabVIEW Real-Time Module 2014• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.

2. Launch LabVIEW: LabVIEW may be found in the Windows Start menu under“National Instruments→LabVIEW National Instruments LabVIEW 2014 →LabVIEWNational Instruments LabVIEW 2014 ”. Upon launching, you will see the GettingStarted dialog which links to recent files, projects, and help documents.

3. Create a Project: From the top menu of the Getting Started dialog, select “File→Create Project...” to launch the Create Project Wizard. Navigate to “Templates→myRIO→myRIO Project” and select

Next .

In the Configure the new project dialog, name your project Acceleration Threshold andchoose a location to save your project files. Your myRIO should automatically appearunder the Select Target pane – if not, first verify that you can see your myRIO in NIMAX, and re-run the wizard.

Select Finish to complete the Create Project Wizard. The Project Explorer will

automatically open with your new project. The Project Explorer is used to connect tomyRIO and organize VIs that will run on the target processor.

4. Run the Template VI: Open the top-level VI that will execute on the processorby navigating in the Project Explorer to “Project Acceleration Indicator.lvproj→myRIO→Main.vi”. A template VI has been created that reads data from the onboardaccelerometer and displays it on a graph. On clicking the Run button, the VI will

3.4. PROGRAM THE MYRIO PROCESSOR FROM LABVIEW 93

Page 104: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

be deployed to myRIO and run. Verify that the accelerometer data is shown on yourscreen.

5. Modify the Template VI: In the block diagram of Main.vi, replicate the code shownin Figs. 3.14 – 3.15:

(a) LED Express VI (“myRIO→Onboard→LED” in the palette). The Express VIwill open a configuration dialog; uncheck LED3 and press

OK to save theconfiguration.

(b) Three Greater? nodes that will be used to compare accelerometer values to athreshold.

(c) Wire the ‘x’ (top) input of the first Greater? node to the x output of theAccelerometer VI, and similarly connect the remaining two Greater? nodes tothe y and z axes.

(d) On the front panel, create a new Numeric Control and label it AccelerationThreshold (g). Set its initial value to 0.5. Right click on the control and from thecontext menu select “Data Operations→Make Current Value Default”. On theblock diagram, wire this control to the ‘y’ (bottom) input of each Greater? node.

(e) Wire the output of the x axis comperator to the LED0 input of LED VI, andsimilarly connect the output of the y and z comperators to LED1 and LED2.

(f) On the front panel, create three LED indicators. Label the first x axis threshold,and and similarly for the y and z axes. On the block diagram, wire these to thecorresponding output of the comparators.

Run the VI to compile your application, download to myRIO, begin execution, anddisplay debugging information to the front panel. You should see the onboard LEDsilluminate when acceleration on the corresponding axis of the onboard acclerometerexceeds the Acceleration Threshold (g).

Congratulations on completing your first LabVIEW application for myRIO! To runyour application again, simply press the Run button in the top toolbar.

6. Share your Feedback: what did you like about this lab, and what would youchange?

3.4. PROGRAM THE MYRIO PROCESSOR FROM LABVIEW 94

Page 105: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Stop

1

-0.2

0

0.2

0.4

0.6

0.8

Samples1000

Y-Axis

Z-Axis

X-Axis

The myRIO Project template acquires acceleration data from the onboard accelerometer and displays the changes of acceleration values in a waveform chart.

0

code

source

status

error out

0.5

Acceleration Threshold (g) x threshold y threshold z threshold

Figure 3.14: Threshold Indicator application front panel.

3.4. PROGRAM THE MYRIO PROCESSOR FROM LABVIEW 95

Page 106: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 3. EMBEDDED DEVELOPMENT TOOLS

Initialize

#CodeNeeded - Add code to initialize your user interface and hardware here.

0

Acquire and process data

Main Loop

Stop Button

10

AccelerationX-AxisY-AxisZ-Axis

Accelerometer

LED0LED1LED2

LED

Acceleration Threshold (g)

x thresholdy thresholdz threshold

Close

Reset myRIO.vi

error out

You can configure the Accelerometer Express VI by double-clicking it. You can find other myRIO Express VIs in the myRIO palette.

Figure 3.15: Threshold Indicator application block diagram (Main Loop only).

3.4. PROGRAM THE MYRIO PROCESSOR FROM LABVIEW 96

Page 107: An Introductory Lab in Embedded and Cyber-Physical Systems

4Programming Embedded Systems

97

Page 108: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.1 Generate Tones in MicroBlaze

Contributing Author: Trung N. Tran

This lab focuses on interrupts. Using the MicroBlaze soft-core processor programmedon myRIO you will write C code to configure timers and generate tones using DIOlines. Your software executes “bare-metal”, or in the absence of a scheduling kernel oroperating system, and has exclusive access to the microcontroller processor, memory,and peripherals.

These exercises guide you in configuring timed interrupts using memory-mappedregisters on an embedded microcontroller. A timed interrupt is an interrupt that isgenerated by a hardware clock, usually periodically. For many, the first experienceprogramming interrupts is challenging: interrupts are documented in verbose documen-tation, the embedded system being programmed may not have a display or debugginginterface, and breaking from the sequential model of traditional programming languagesintroduces new complexities (Lee, 2006). Inherent in these exercises is the importanceof navigating technical documentation to solve a problem.

This lab builds on Lab 3.2: Program MicroBlaze from Xilinx SDK.

4.1. GENERATE TONES IN MICROBLAZE 98

Page 109: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.1.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.3.3 (Interrupts on MicroBlaze)• §1.3.4 (MicroBlaze and AXI Bus Architecture)• §1.3.5 (Memory-Mapped Register Interface to Digital IO)• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 9: Memory Architectures §9.2.1 (Memory Maps) L

– Chapter 9: Memory Architectures §9.2.2 (Register Files) L

– Chapter 10: Input and Output §10.2 (Sequential Software in a ConcurrentWorld) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Embedded System Tools Reference Manual L (Xilinx, 2012a)– Chapter 9: GNU Compiler Tools, §“Interrupt Handlers”, p.133 L

• LogiCORE IP AXI INTC L (Xilinx, 2013b)– §Introduction, p.1-6 L

– §Register Descriptions, p.13-19 L

– §Software Considerations, p.24 L

• LogiCORE IP AXI Timer L (Xilinx, 2012b)– §Introduction, p.1-5 L

– §Register Data Types and Organization, p.11-15 L

These documents go beyond the scope of the core concepts of these exercises, andare provided as additional resources.

• MicroBlaze Interrupts and the EDK L (Hickok, 2009)

4.1. GENERATE TONES IN MICROBLAZE 99

Page 110: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.1.2 Prelab Exercises

1. In this exercise, you will explore the memory-mapped register interface to theinterrupt controller in MicroBlaze.

(a) Which register must be configured to enable the interrupt controller to interruptthe processor in response to an interrupt request?

(b) Which register must be configured for the interrupt controller to accept (respond)to an interrupt signal?

(c) After the processor receives an interrupt request and executes the interrupt serviceroutine, which register identifies enabled and active interrupts?

(d) At the end of an interrupt service routine, which register should be written toclear the interrupt request?

(e) Write a single C statement to clear interrupt requests. The statement should clearonly interrupts which are enabled and active. You may assume the abbreviationof a register name is defined as its memory address.

2. What is the meaning of the interrupt_handler compiler attribute?

3. In this exercise, you will explore the memory-mapped register interface to the timerperipheral in MicroBlaze.

(a) Which register must be configured to enable the Timer0? Which bit(s) must beset?

(b) Which register holds the value used to set the period of Timer0? How doesTimer0 load this value?

(c) What register must be configured for the Timer0 peripheral to generate interruptsignals? Which bit(s) must be set?

(d) What register must be configured for Timer0 to run continuously (when it isenabled)? Which bit(s) must be set?

4. Consider the statement which maps TCSR0 to a memory-mapped register:#define TCSR0 *((volatile unsigned long *)(XPAR_TIMER0_BASEADDR + 0x00))

(a) What is the effect of the volatile keyword?(b) What is the effect of the typecast (volatile unsigned long *) ?(c) What is the effect of the outer * operand?

5. In this exercise, you will derive timing properties used to generate audio.

4.1. GENERATE TONES IN MICROBLAZE 100

Page 111: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

(a) An audio tone can be generated by toggling a digital pin at a fixed frequency.This is equivalent to a PWM signal with 50% duty cycle at this frequency – thatis, half the time the digital pin is high, the other half, low. If you use a timedinterrupt to toggle the pin, and you wish to generate a 440Hz square wave, atwhat frequency must your interrupt execute?

(b) The MicroBlaze processor clock executes at 50MHz. What is the period ofyour timed interrupt, in units of processor cycles? Can you exactly generate thedesired tone?

6. In this exercise, you will evaluate a circuit for powering a speaker from myRIO.

(a) What is the typical high output voltage of a digital IO line on myRIO?(b) If a small speaker is modeled as an 8Ω resistor and connected to a unlimited

current power supply with the same output voltage you found in 6a, what currentwill be drawn?

(c) What is the maximum current output of a digital IO line (“sourcing current”)on myRIO? Will an 8Ω speaker draw more current than this when connectedbetween a digital IO line and ground?

(d) If the 8Ω speaker is placed in series with a 1kΩ resistor and connected betweena digital IO line and ground on myRIO, will the current increase or decrease?Will this meet the electrical specifications of myRIO?

4.1. GENERATE TONES IN MICROBLAZE 101

Page 112: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.1.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\XilinxSDK\TimedIO

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• Xilinx SDK 14.4• Xilinx Platform Cable USB II• SparkFun Electronics COM-09151 Speaker - 0.5W 8Ω

• 1kΩ 0.5W resistor

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.Program MicroBlaze on the FPGA by using RIO Device Setup. The MicroBlazeFPGA fixed-personality is located at

XilinxSDK\MicroBlaze_myRIO.lvbitx

See Lab 3.2: Program MicroBlaze from Xilinx SDK for instructions if you have notdone this before. When the MicroBlaze fixed personality is running, myRIO LED0will glow on and off.

Connect the USB port of the Xilinx Platform Cable to your desktop, and the JTAGcables to the digital I/O pins shown in Table A.1. When properly connected, theStatus light on the Platform Cable will illuminate green.

4.1. GENERATE TONES IN MICROBLAZE 102

Page 113: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

Connect the resistor between myRIO MXP Connector B DIO8 on myRIO and thepositive terminal of the speaker. Connect the negative terminal of the speaker to amyRIO ground. The resistor is a current-limiting resistor and ensures the sourcingcurrent of the DIO line is not exceeded.

2. Launch Xilinx SDK: Open Xilinx SDK, import the MicroBlaze specification

src\XilinxSDK\microblazeSpec\myRIO.zip

Import the lab template timedIO.zip, right-click on the imported project to select theboard support package, clean all projects, and build all projects. Use the XMD Consoleto stop and reset the MicroBlaze processor. See Lab 3.2: Program MicroBlaze fromXilinx SDK for instructions if you have not done this before.

Open the file timedIO.c. This is the only file you need to modify to complete this lab.If the program compiles and downloads successfully, you should see console outputappear at the bottom of the Project Explorer view. The template code will compileand download to the target without modification, but its functionality is incomplete.

Be sure to use the XMD Console to stop and reset the MicroBlaze processor on yourtarget between executions of your application.

3. Configure a Periodic Timed Interrupt: You will generate a 440Hz (fourth octaveA) note by generating a square wave of this frequency1. Configure a timed interruptto generate this tone. The body of the corresponding ISR should consist only of afiring counter (useful for debugging), toggling of a DIO line, and acknowledgement ofthe interrupt. Hint: Interrupt enable masks are defined at the top of timedIO.c.

(a) Provide the content your of your main program loop and interrupt serviceroutine.

4. Starve the Processor: Increasing the frequency of a timed interrupt leaves lesstime for the processor to attend to other tasks. In steps, increase the frequency ofyour timed interrupt until the system exhibits erratic behavior (as seen through yourdebugger) or becomes unresponsive.

(a) At what frequency does MicroBlaze exhibit erratic behavior or become unrespon-sive? What behavior did you observe?

1A square wave is characterized by its fundamental frequency, but it contains an infinite number ofharmonics. A real system (such as a speaker) will attenuate high-order harmonics.

4.1. GENERATE TONES IN MICROBLAZE 103

Page 114: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

5. Share your Feedback: what did you like about this lab, and what would youchange?

4.1. GENERATE TONES IN MICROBLAZE 104

Page 115: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.1.4 Troubleshooting

Refer to Lab 3.2: Program MicroBlaze from Xilinx SDK §3.2.4 (Troubleshooting) fortroubleshooting issues in the Xilinx SDK.

4.1. GENERATE TONES IN MICROBLAZE 105

Page 116: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.2 Program an ADC in MicroBlaze

Contributing Author: Trung N. Tran

This lab focuses on programming an ADC on myRIO. The goal is to write C code toconfigure a timed interrupt for periodic sampling of an analog input.

This lab builds on Lab 4.1: Generate Tones in MicroBlaze.

4.2. PROGRAM AN ADC IN MICROBLAZE 106

Page 117: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.2.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.3.6 (Memory-Mapped Register Interface to the Accelerometer ADC)

4.2. PROGRAM AN ADC IN MICROBLAZE 107

Page 118: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.2.2 Prelab Exercises

1. In this exercise, you will explore the memory-mapped register interface to theaccelerometer ADC on myRIO.

(a) Which register enables ADC interrupts to be generated?(b) Which register should be written to by an ISR to clear the ADC interrupt

status?(c) Which register holds the result of an ADC conversion?(d) Write a single C statement to begin an ADC conversion on channel 2.(e) Write a single C statement to block until an ADC conversion is complete.(f) Write a single C statement to read the result of an ADC conversion into the

variable valueRead, and another statement to read the index of the channelassociated with the conversion into channelRead.

2. One way to read from an ADC is to use a loop in the main() function to triggeran ADC conversion, wait for completion, read its result, and print the result to thescreen.

(a) Is this concurrent or sequential software?

(b) Are processor resources well-utilized by this method?

(c) Is timing explicit in this method? In what ways could you attempt to achieve afixed sampling rate?

3. A second way to read from an ADC is to use timed interrupts. A periodic timerISR triggers an ADC conversion, waits for completion, and stores its result in a globalvariable. The main() program loop is tasked with printing the result to the screen.

(a) Is this concurrent or sequential software?

(b) Are processor resources well-utilized by this method?

(c) Is timing explicit in this method? In what ways could you attempt to achieve afixed sampling rate?

4. A third way to read from an ADC is to use timed interrupts and ADC interrupts. Aperiodic timer ISR triggers an ADC conversion and returns. When the ADC conversionis complete, an ADC interrupt ISR reads the result and returns. The main() programloop is tasked with printing the result to the screen.

4.2. PROGRAM AN ADC IN MICROBLAZE 108

Page 119: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

(a) Is this concurrent or sequential software?

(b) Are processor resources well-utilized by this method?

(c) Is timing explicit in this method? In what ways could you attempt to achieve afixed sampling rate?

5. What are some of the major differences between using polling and using interruptsto read from an ADC?

4.2. PROGRAM AN ADC IN MICROBLAZE 109

Page 120: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.2.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 4.1: GenerateTones in MicroBlaze.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• Xilinx SDK 14.4• Xilinx Platform Cable USB II• SparkFun Electronics COM-09151 Speaker - 0.5W 8Ω

• 1kΩ 0.5W resistor

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.Program MicroBlaze on the FPGA by using RIO Device Setup. The MicroBlazeFPGA fixed-personality is located at

XilinxSDK\MicroBlaze_myRIO.lvbitx

See Lab 3.2: Program MicroBlaze from Xilinx SDK for instructions if you have notdone this before. When the MicroBlaze fixed personality is running, myRIO LED0will glow on and off.

Connect the USB port of the Xilinx Platform Cable to your desktop, and the JTAGcables to the digital I/O pins shown in Table A.1. When properly connected, theStatus light on the Platform Cable will illuminate green.

2. Launch Xilinx SDK: Open Xilinx SDK and open the same workspace you usedfor Lab 4.1: Generate Tones in MicroBlaze. Clean all projects, and build all projects.See Lab 3.2: Program MicroBlaze from Xilinx SDK for instructions if you have notdone this before.

Open the file timedIO.c. This is the only file you need to modify to complete this lab.

4.2. PROGRAM AN ADC IN MICROBLAZE 110

Page 121: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

3. Poll the ADC: Configure the main() program loop to continuously poll the ADCand display the results to the debug console. You should not configure any interruptsfor this exercise.

Hint: Remember to execute at least four asm("nop") instructions between writing andthen reading the same memory-mapped register.

(a) Provide the content your main() program loop.(b) When configuring the ADC and main() program loop, were there any steps

that set the rate at which the ADC is polled, or does your code run as fast aspossible?

4. Use Timed Interrupts to Poll the ADC: Configure a timed interrupt to poll theADC every 5 milliseconds. You should not poll the ADC in the main() programloop, but instead in a timed interrupt. Leave all print() statements in the mainprogram loop.

(a) Provide the content of main() that configures the timer ISR, as well as thebody of the ISR routine.

5. Use ADC and Timed Interrupts to Read the ADC: Configure a timed interrupt totrigger an ADC conversion every 5 milliseconds and the ADC to generate an interruptwhen a conversion is complete. You should read the ADC conversion result in theADC conversion complete interrupt service routine, and not in the main() functionor timer interrupt service routine.

(a) Provide the content your main() function needed to configure the timer and ADCISRs, as well as the content of the timer and ADC ISRs.

6. Share your Feedback: what did you like about this lab, and what would youchange?

4.2. PROGRAM AN ADC IN MICROBLAZE 111

Page 122: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 4. PROGRAMMING EMBEDDED SYSTEMS

4.2.4 Troubleshooting

Refer to Lab 3.2: Program MicroBlaze from Xilinx SDK §3.2.4 (Troubleshooting) fortroubleshooting issues in the Xilinx SDK.

4.2. PROGRAM AN ADC IN MICROBLAZE 112

Page 123: An Introductory Lab in Embedded and Cyber-Physical Systems

5The Cal Climber: CPS Design

with the iRobot Create

Cyber-physical systems continue to grow in prevalence and complexity, and theirdesigners face the challenge of managing constraints across multiple knowledge domainssuch as software, transducers, signal processing, communication and networking,computer architecture, controls, simulation, and modeling of physical processes.

A cyber-physical system is perhaps best characterized by the coupling of its physicalprocesses and embedded computations. Design of these systems requires understandingof these joint dynamics, which is the focus of this chapter and the next one.

This chapter describes a sequence of lab exercises to program the Cal Climber, aversion of the iRobot Create interfaced to the NI myRIO, to climb a “hill”.

113

Page 124: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.1 Navigation Design Requirements

The following are the design requirements for navigation laboratory exercises.

1. Startup: When powered on or reset, the robot shall not move until the ‘Play’button is pressed.

2. Run: The robot shall begin movement the first time the ‘Play’ button is pressedand continue running until paused or stopped.

(a) Ground Orientation: The ground orientation of your robot is the directionthe front of the robot is pointing when it first runs. The ground orientationdoes not change after subsequent pausing/resuming; only after a powercycle, reprogram or restart of the robot or its embedded controller.

(b) Drive: Your robot shall maintain ground orientation and drive forwardwhile on level ground and clear of obstacles.

(c) Obstacle Avoidance: Your robot shall avoid obstacles.i. Cliff Avoidance: Your robot shall not fall off of cliffs or edges.

ii. Wheel Hazard Avoidance: Your robot shall avoid one or more wheelslosing contact with the ground. If a wheel loses contact with theground, your robot shall attempt to recover and move around theincident hazard.

iii. Object Avoidance: Your robot shall avoid objects in its path. It isacceptable for your robot to touch objects as long as it immediatelychanges course in an attempt to avoid.

iv. Avoidance Robustness: Obstacle avoidance must always be satisfied,even if multiple obstacles are encountered simultaneously or in shortsuccession.

v. Reorientaton: After avoiding an obstacle, your robot shall eventuallyreorient to ground orientation.

3. Pause/Resume: The ‘Play’ button on the top of the robot shall start/resumeor pause movement of the robot. At any point the robot is moving, the ‘Play’button shall cause it to immediately and completely stop. Subsequently pressingthe ‘Play’ button shall cause the robot to resume operation.

4. E-Stop: The ‘Advance’ button on the top of the robot shall immediately stop allmovement of the robot and terminate execution of its controller. The robot shallnot move again until it is power cycled, or its embedded controller reprogrammedor reset.

5.1. NAVIGATION DESIGN REQUIREMENTS 114

Page 125: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5. Performance: When moving, your robot must satisfy the following performancecharacteristics.

(a) Turnabout: Your robot shall never rotate in place more than 180.(b) Chattering: Your robot shall not move erratically or exhibit chattering.(c) Abnormal Termination: Your robot shall not abnormally terminate execu-

tion, with the exception of power or mechanical failure.(d) Obstacle Hugging: Your robot shall not repeatedly encounter (‘hug’) an

obstacle for the purpose of navigation.(e) Timeliness: Your robot shall achieve its goals in a timely manner.

Hint: Your robot does not need to follow a specific path or trajectory, or return toa specific path or trajectory following obstacle avoidance – it need only eventuallyreturn to and maintain its original ground orientation.

5.2 Hill Climb Design Requirements

The following are the design requirements for the Hill Climb laboratory exercises.These requirements are in addition to the above navigation requirements.

1. Hill Climb: When an incline is encountered, your robot shall drive uphilltowards the top of the incline.

2. Hill Descend: When the top of an incline is reached, as indicated by cliffs orimpassible obstacles at the top of the incline, your robot shall drive downhilltowards the bottom of the incline.

3. Ground Stop: After climbing and descending, when the bottom of an inclineis reached, your robot shall stop and terminate execution – its final goal isachieved.

5.2. HILL CLIMB DESIGN REQUIREMENTS 115

Page 126: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.3 Program CyberSim from Visual Studio

These laboratory exercises serve as a tutorial on programming the CyberSim simulatorusing C and Microsoft Visual Studio. You will load a template project and verify yourapplication is loaded by the simulator.

There are no prerequisites for this lab.

Figure 5.1: Microsoft Visual Studio.

5.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 116

Page 127: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.3.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.7 (Equipment: Microsoft Visual Studio)• §1.10 (Equipment: CyberSim)

5.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 117

Page 128: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.3.2 Prelab Exercises

There are no prelab exercises for this lab.

5.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 118

Page 129: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.3.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\C Statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• Microsoft Visual Studio, one of the following:

– Visual Studio Express 2013 for Desktop (Windows 7 and Windows 8)– Visual C++ Express 2010 (Windows XP SP3 and Windows Vista)

• National Instruments LabVIEW Run-Time Engine 2014

1. Launch Visual Studio Express: From the Windows Start Menu, launch VisualStudio Express. Depending on your version, the Start Menu shortcut may be namedVS Studio Express 2013 for Desktop or Visual C++ Express .

2. Load the Template C Statechart: The C Statechart source code and build settingsare maintained by a Visual Studio Solution. From the top menu bar, select “File→OpenProject...” and navigate to the downloaded exercises,

src\C Statechart\libstatechart Visual Studio Solution\libstatechart.sln

The solution references all source files needed to compile a statechart DLL for usewith CyberSim.

3. Review the Statechart source: The Solution Explorer pane is used to navigate filesin a solution. Open the source file C Statechart\irobotNavigationStatechart.c, the onlyfile you need to modify to change the controller behavior in CyberSim.

4. Compile: From the top menu bar, select “Build→Build Solution” to compile thesolution. The output directory is automatically set to the CyberSim program folder.Ensure there are no errors in the error list, and following a successful build, check

5.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 119

Page 130: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

that the output library was written to the CyberSim binary folder in the downloadedexercise files:

CyberSim\libstatechart.dll

5. Launch CyberSim and Simulate: Open CyberSim from the downloaded exercisefiles:

CyberSim\CyberSim.exe

Open the Configuration tab and in the “statechart” path field, enter libstatechart.dll.Press

Start to begin a simulation. The simulation will progress, executing yourcontroller at each simulation step.

6. Stop the Simulation: Before you can change and recompile your controller, youmust stop the simulation to unload libstatechart.dll. Press the

Stop button to stop thesimulation. You do not need to exit CyberSim.

7. Launch a Debug Session (optional): Visual Studio can attach a debugger toCyberSim to allow you to debug your control software. Visual Studio will launchCyberSim automatically, using a command-line argument to point the simulator to thecompiled library. Close all other instances of CyberSim before beginning a debugsession.

In Visual Studio, from the top menu car select “Debug→Start Debugging”. Thesolution should build and launch CyberSim. Press

Start to begin a simulation. Thedebugger will attach when the simulation begins. You may use debugging featuressuch as watch windows and breakpoints to step through your code.

When you are ready to terminate a debugging session, disable all breakpoints andfrom the Visual Studio top menu bar select “Debug→Continue” to allow CyberSimto continue executing uninterrupted. Return to CyberSim and press

Exit to closeCyberSim, detatch the Visual Studio Debugger, and close the debugging session.

8. Close CyberSim Use the Exit button to terminate CyberSim – do not close the

window, as this will terminate CyberSim without unloading your statechart library orthe ODE simulator.

Congratulations on using Visual Studio to write a controller for CyberSim!

5.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 120

Page 131: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

9. Share your Feedback: what did you like about this lab, and what would youchange?

5.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 121

Page 132: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.4 Navigation in C (Simulation)

These exercises guide you in creating a state machine in C using Microsoft VisualStudio. Your state machine will read sensors and drive the iRobot Create with a basicsense of orientation while avoiding obstacles in a simulated environment.

This lab builds on Lab 5.3: Program CyberSim from Visual Studio.

5.4. NAVIGATION IN C (SIMULATION) 122

Page 133: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.4.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• Introduction to Embedded Systems L (Lee and Seshia, 2015)– Chapter 3: Discrete Dynamics §3.3 (Finite-State Machines) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Create Owner’s Guide L (iRobot, 2006b)• Create Open Interface Specification L (iRobot, 2006a)

5.4. NAVIGATION IN C (SIMULATION) 123

Page 134: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.4.2 Prelab Exercises

1. §1.4.3 (iRobot Create Equipment Exercises) (all exercises). You may skip these ifyou have already completed them for another laboratory in this chapter.

2. Review the template project provided for the lab exercises. The template codeimplements a state machine; sketch it.

5.4. NAVIGATION IN C (SIMULATION) 124

Page 135: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.4.3 Lab Exercises

For the exercises below, begin with the same source files you used in Lab 5.3: ProgramCyberSim from Visual Studio, located in the downloaded exercise files:

src\C Statechart\

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• Microsoft Visual Studio, one of the following:

– Visual Studio Express 2013 for Desktop (Windows 7 and Windows 8)– Visual C++ Express 2010 (Windows XP SP3 and Windows Vista)

• National Instruments LabVIEW Run-Time Engine 2014

1. Launch Visual Studio Express: Open Microsoft Visual Studio Express for Desktopand import the solution libstatchart.sln. Clean and build the solution. The compiledlibrary is written to the CyberSim folder.

2. Execute the Template Code: Launch CyberSim.exe . In the Configuration tab,browse for “Statechart” and select libstatechart.dll. Press

Start to begin a simulation.

3. Run a Debug Sequence: In the Configuration tab, select feedback mode “DebugNavigation” and press

Debug to run through a sequence of tests that may catchcommon errors or bugs as you build your solution.

4. Navigate in Simulation: Program the virtual robot. Program the robot to avoidobstacles and maintain a basic sense of orientation. You must satisfy all designrequirements as specified in §5.1 (Navigation Design Requirements).

(a) Describe (and sketch) your obstacle avoidance algorithm.(b) Did you follow a state machine architecture? If so, which states did you add to

the default project?

5. Share your Feedback: what did you like about this lab, and what would youchange?

5.4. NAVIGATION IN C (SIMULATION) 125

Page 136: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.5 Navigation in C (Deployment)

These exercises guide you in creating a state machine in C using C & C++ DevelopmentTools for NI Linux Real-Time, Eclipse Edition and myRIO. Your state machine willread sensors and drive the iRobot Create with a basic sense of orientation whileavoiding obstacles.

This lab builds on Lab 3.3: Program the myRIO Processor from Eclipse and Lab 5.4:Navigation in C (Simulation).

5.5. NAVIGATION IN C (DEPLOYMENT) 126

Page 137: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.5.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• Introduction to Embedded Systems L (Lee and Seshia, 2015)– Chapter 8: Embedded Processors “Circular Buffers” sidebar p.220 L

– Chapter 10: Input and Output §10.1.3 (Serial Interfaces) L

5.5. NAVIGATION IN C (DEPLOYMENT) 127

Page 138: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.5.2 Prelab Exercises

1. Review the template project provided for the lab exercises.

(a) Does the template code use polling or interrupts to read the iRobot sensors?(b) A software driver for a communication peripheral uses the xqueue data type.

What is this data type, and for which peripheral is it used?(c) The xqueue data type encapsulates a buffer whose size must be a power of two.

What is the benefit of such a constraint?

5.5. NAVIGATION IN C (DEPLOYMENT) 128

Page 139: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.5.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\C Statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition• iRobot Create

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.

2. Verify the Robot Setup: Your iRobot Create is interfaced with a myRIO. Verifythe components are correctly wired, as shown in Fig. A.2.

3. Launch Eclipse: Open C & C++ Development Tools for NI Linux Real-Time,Eclipse Edition and import the project archive irobotNavigation.zip. Double-check thatthe MyRio_1950 symbol is set and that the target has been correctly configured. Cleanand build all projects. Create a target connection, connect to the target, and launchthe Target Console. Create a run configuration for the irobotNavigation project. SeeLab 3.3: Program the myRIO Processor from Eclipse for instructions if you have notdone this before.

4. Execute the Template Code: Launch the run configuration and observe the mes-sages printed to the Target Console. Place your robot in a clear space and press the‘Play’ button on the top of the robot to toggle between pause and execute modes.

5.5. NAVIGATION IN C (DEPLOYMENT) 129

Page 140: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

Hint: The easiest way to revise code and restart your process is for the originalprocess to complete. The template code in your project is designed to finish executionwhen the ‘Advance’ button is pressed on the iRobot. When finished executing, pressthe ‘Advance’ button on the top of the robot to terminate the process. If you attemptto launch a new process before the old process terminates, you may receive an errorthat the executable could not be downloaded to the target.

5. Navigate the iRobot: Program the real robot. Program the robot to avoid obstaclesand maintain a basic sense of orientation. You must satisfy all design requirements asspecified in the previous lab §5.1 (Navigation Design Requirements).

(a) Describe (and sketch) your obstacle avoidance algorithm.(b) Did you follow a state machine architecture? If so, which states did you add to

the default project?

6. Share your Feedback: what did you like about this lab, and what would youchange?

5.5. NAVIGATION IN C (DEPLOYMENT) 130

Page 141: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.5.4 Troubleshooting

Refer to §3.3.4 (Troubleshooting) for troubleshooting issues with Eclipse for NIReal-Time Linux Targets.

5.5. NAVIGATION IN C (DEPLOYMENT) 131

Page 142: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.6 Hill Climb in C (Simulation)

This lab builds on programming cyber-physical systems, specifically feedback-control.Using Microsoft Visual Studio Express, you will implement a state machine in C thatinstructs the iRobot Create to navigate to the top of an incline while avoiding cliffsand obstacles in a simulated environment.

This lab builds on Lab 5.4: Navigation in C (Simulation).

5.6. HILL CLIMB IN C (SIMULATION) 132

Page 143: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.6.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.6.1 (Introduction to the myRIO Accelerometer)• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 7: Sensors and Actuators §7.1 (Models of Sensors and Actuators) L

– Chapter 7: Sensors and Actuators §7.2.1 (Measuring Tilt and Acceleration) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Create Owner’s Guide L (iRobot, 2006b)• Create Open Interface Specification L (iRobot, 2006a)

These documents go beyond the scope of the core concepts of these exercises, andare provided as additional resources.

• Using an Accelerometer for Inclination Sensing L (Fisher, 2010)• Implementing a Tilt-Compensated eCompass using Accelerometer and Magne-

tometer Sensors L (Ozyagcilar, 2011)• Computational Principles of Mobile Robotics (Dudek and Jenkin, 2000)

5.6. HILL CLIMB IN C (SIMULATION) 133

Page 144: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.6.2 Prelab Exercises

1. §1.6.3 (MyRIO Accelerometer Exercises) (all exercises). You may skip these ifyou have already completed them for another laboratory in this chapter.

5.6. HILL CLIMB IN C (SIMULATION) 134

Page 145: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.6.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 5.4: Navigationin C (Simulation), located in the downloaded exercise files:

src\C Statechart\

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• Microsoft Visual Studio, one of the following:

– Visual Studio Express 2013 for Desktop (Windows 7 and Windows 8)– Visual C++ Express 2010 (Windows XP SP3 and Windows Vista)

• National Instruments LabVIEW Run-Time Engine 2014

1. Hill Climb in Simulation: Program the virtual robot. Using feedback from theaccelerometer, your robot should differentiate between an incline and level ground,and when on an incline, orient and drive towards the top. You must satisfy all designrequirements as specified in §5.2 (Hill Climb Design Requirements).

(a) Describe (and sketch) your climbing algorithm.(b) Did you follow a state machine architecture? If so, which states did you add?(c) How did you account for movement of the robot when reading from the

accelerometer? Describe any algorithms or filters used.

2. Share your Feedback: what did you like about this lab, and what would youchange?

5.6. HILL CLIMB IN C (SIMULATION) 135

Page 146: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.7 Hill Climb in C (Deployment)

This lab builds on programming cyber-physical systems, specifically feedback-control.Using C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition, youwill implement a state machine in C on myRIO that instructs the iRobot Create tonavigate to the top of an incline while avoiding cliffs and obstacles.

This lab builds on Lab 5.5: Navigation in C (Deployment) and Lab 5.6: Hill Climbin C (Simulation).

5.7. HILL CLIMB IN C (DEPLOYMENT) 136

Page 147: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.7.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.6.1 (Introduction to the myRIO Accelerometer)• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 7: Sensors and Actuators §7.1 (Models of Sensors and Actuators) L

– Chapter 7: Sensors and Actuators §7.2.1 (Measuring Tilt and Acceleration) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Create Owner’s Guide L (iRobot, 2006b)• Create Open Interface Specification L (iRobot, 2006a)

These documents go beyond the scope of the core concepts of these exercises, andare provided as additional resources.

• Using an Accelerometer for Inclination Sensing L (Fisher, 2010)• Implementing a Tilt-Compensated eCompass using Accelerometer and Magne-

tometer Sensors L (Ozyagcilar, 2011)• Computational Principles of Mobile Robotics (Dudek and Jenkin, 2000)

5.7. HILL CLIMB IN C (DEPLOYMENT) 137

Page 148: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.7.2 Prelab Exercises

1. §1.6.3 (MyRIO Accelerometer Exercises) (all exercises). You may skip these ifyou have already completed them for another laboratory in this chapter.

5.7. HILL CLIMB IN C (DEPLOYMENT) 138

Page 149: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.7.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 5.6: HillClimb in C (Simulation), located in the downloaded exercise files:

src\C Statechart\

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition• iRobot Create

1. Hill Climb on iRobot: Program the real robot. Using feedback from the accelerom-eter, your robot should differentiate between an incline and level ground, and when onan incline, orient and drive towards the top. You must satisfy all design requirementsas specified in §5.2 (Hill Climb Design Requirements).

(a) Describe (and sketch) your climbing algorithm.(b) Did you follow a state machine architecture? If so, which states did you add?(c) How did you account for movement of the robot when reading from the

accelerometer? Describe any algorithms or filters used.

2. Share your Feedback: what did you like about this lab, and what would youchange?

5.7. HILL CLIMB IN C (DEPLOYMENT) 139

Page 150: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.7.4 Troubleshooting

Refer to §3.3.4 (Troubleshooting) for troubleshooting issues with Eclipse.

5.7. HILL CLIMB IN C (DEPLOYMENT) 140

Page 151: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.8 Program CyberSim from LabVIEW

These laboratory exercises serve as a tutorial on programming the CyberSim simulatorusing Statecharts and LabVIEW. You will load a template project and verify yourapplication is loaded by the simulator.

There are no prerequisites for this lab.

5.8. PROGRAM CYBERSIM FROM LABVIEW 141

Page 152: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.8.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.9 (Equipment: LabVIEW)• §1.10 (Equipment: CyberSim)

5.8. PROGRAM CYBERSIM FROM LABVIEW 142

Page 153: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.8.2 Prelab Exercises

There are no prelab exercises for this lab.

5.8. PROGRAM CYBERSIM FROM LABVIEW 143

Page 154: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.8.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\LabVIEW\statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW Statecharts Module 2014

1. Launch LabVIEW: From the Windows Start Menu, open National InstrumentsLabVIEW.

2. Load the Template LabVIEW Statechart: The LabVIEW Statechart source codeand build settings are maintained by a LabVIEW Project. From the top menu bar,select “File→Open Project...” and navigate to the downloaded exercises,

src\LabVIEW\Statechart.lvproj

The project references all source files needed to create a LabVIEW Statechart for usewith CyberSim.

3. Review the Statechart source: The Project Explorer pane is used to navigate files.Open the source file Statechart.lvsc\Diagram.vi, the only file you need to modify tochange the controller behavior in CyberSim.

4. Recompile the Statechart: Press the “Force Code Generation for this Statechart”button to recompile the Statechart for myRIO.

5. Verify the Statechart is Executable: The LabVIEW Statechart file Statechart.lvscis called from a wrapper VI, Simulation Statechart.vi. Open this VI from the ProjectExplorer and ensure the Run arrow is solid white – if a broken gray arrow is showninstead, press the broken arrow to open the errors dialog.

5.8. PROGRAM CYBERSIM FROM LABVIEW 144

Page 155: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

Save Simulation Statechart.vi after recompiling the Statechart.

6. Launch CyberSim and Simulate: Open CyberSim from the downloaded exercisefiles:

CyberSim\CyberSim.exe

Open the Configuration tab and in the “statechart” path field, enter

..\src\LabVIEW\statechart\Simulation Statechart.vi

Press Start to begin a simulation. The simulation will progress, executing your

controller at each simulation step. You will see your Statechart executing in theStatechart Display tab.

7. Stop the Simulation: Before you can change and recompile your controller, youmust stop the simulation to unload Statechart.lvsc. Press the

Stop button to stop thesimulation. You do not need to exit CyberSim.

8. Close CyberSim Use the Exit button to terminate CyberSim – do not close the

window, as this will terminate CyberSim without unloading your statechart or theODE simulator.

Congratulations on using Visual Studio to write a controller for CyberSim!

9. Share your Feedback: what did you like about this lab, and what would youchange?

5.8. PROGRAM CYBERSIM FROM LABVIEW 145

Page 156: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.9 Navigation in Statecharts (Simulation)

You will design a control algorithm using the Statecharts model of computation. Yourtask is to design a Statechart that instructs the robot to maintain a basic sense oforientation while avoiding obstacles in a virtual world.

This lab builds on Lab 5.8: Program CyberSim from LabVIEW.

5.9. NAVIGATION IN STATECHARTS (SIMULATION) 146

Page 157: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.9.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.4 (Equipment: iRobot Create)• §1.10.1 (Introduction to CyberSim)• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 3: Discrete Dynamics §3.3 (Finite-State Machines) L

– Chapter 5: Composition of State Machines L

• Designing Applications with the NI LabVIEW Statechart Module4 (Washington,2009)

• Developing Applications with the NI LabVIEW Statechart Module L (NationalInstruments, 2012b)

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Create Owner’s Guide L (iRobot, 2006b)• Create Open Interface Specification L (iRobot, 2006a)• LabVIEW Statechart Module Help4 (National Instruments, 2012d)

5.9. NAVIGATION IN STATECHARTS (SIMULATION) 147

Page 158: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.9.2 Prelab Exercises

1. §1.4.3 (iRobot Create Equipment Exercises) (all exercises). You may skip these ifyou have already completed them for another laboratory in this chapter.

2. How does the Statecharts model of computation differ from finite state machines?

3. In a Statechart, what is the difference between a state and a region?

4. In LabVIEW Statecharts, what is represented by an arrow containing three open orclosed cells? What does each cell represent? What does this arrow connect?

5.9. NAVIGATION IN STATECHARTS (SIMULATION) 148

Page 159: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.9.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\LabVIEW\statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW Statecharts Module 2014

The LabVIEW Statecharts editor enables developers to program a in the Statechartsmodel of computation. When when changing default value of a Statechart StateDatacontrol, open the Statechart diagram and press the “Force Code Generation for this

Statechart” button to recompile the Statechart.

1. Open the Project: From the extracted project files, open the file Statechart.lvproj(LabVIEW Project File). It may take a while to load the project. You may receive awarning that dependencies were loaded from a new path; this is normal and may bedisregarded.

2. Execute the Template Code: Launch CyberSim.exe . In the Configuration tab,browse for “Statechart” and select src\LabVIEW\statechart\Simulation Statechart.vi.Press

Start to begin a simulation.

3. Run a Debug Sequence: In the Configuration tab, select feedback mode “DebugNavigation” and press

Debug to run through a sequence of tests that may catchcommon errors or bugs as you build your solution.

4. Navigate in Simulation: Program the virtual robot. Your code should resideentirely in the Statechart – you do not need to modify the block diagram of SimulationStatechart.vi.

5.9. NAVIGATION IN STATECHARTS (SIMULATION) 149

Page 160: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

Program the robot to avoid obstacles and maintain a basic sense of orientation. Youmust satisfy all design requirements as specified below in §5.1 (Navigation DesignRequirements).

(a) Provide a description and screenshot of your obstacle avoidance algorithm.

5. Share your Feedback: what did you like about this lab, and what would youchange?

5.9. NAVIGATION IN STATECHARTS (SIMULATION) 150

Page 161: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.10 Navigation in Statecharts (Deployment)

You will design a control algorithm using the Statecharts model of computation onmyRIO, verify in simulation in the LabVIEW Robotics Simulator, and deploy thesolution to the iRobot Create. Your task is to design a Statechart that instructs therobot to maintain a basic sense of orientation while avoiding obstacles.

This lab builds on Lab 3.4: Program the myRIO Processor from LabVIEW and Lab5.9: Navigation in Statecharts (Simulation).

5.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 151

Page 162: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.10.1 Prelab Reading

There is no prelab reading for this laboratory.

5.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 152

Page 163: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.10.2 Prelab Exercises

There are no prelab exercises for this laboratory.

5.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 153

Page 164: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.10.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\LabVIEW\statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW for myRIO Module 2014• National Instruments LabVIEW Real-Time Module 2014• National Instruments NI-RIO 13.1• National Instruments LabVIEW Statecharts Module 2014• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• iRobot Create

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.

2. Verify the Robot Setup: Your iRobot Create is interfaced with a myRIO. Verifythe components are correctly wired, as shown in Fig. A.2.

3. Open the Project: From the extracted project files, open the file Statechart.lvproj(LabVIEW Project File). It may take a while to load the project. You may receive awarning that dependencies were loaded from a new path; this is normal and may bedisregarded.

4. Navigate the iRobot: Program the real robot. The Statechart you designed inthe simulator is configured to deploy on your embedded target. In the ProjectExplorer, navigate to “myRIO→Statechart” and open Diagram.vi. Press the “ForceCode Generation for this Statechart” button to recompile the Statechart for myRIO.

5.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 154

Page 165: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

Open Target.vi. This is the main VI for the myRIO and is responsible for samplingthe accelerometer, reading the iRobot sensors, and transmitting drive commands. Youcode should reside entirely in the Statechart – you do not need to modify any othersVIs. A lowpass filter has been provided to smooth the accelerometer signal.

Run Target.vi to deploy your Statechart to your target.

Program the robot to avoid obstacles and maintain a basic sense of orientation. Youmust satisfy all design requirements as specified in the previous lab §5.1 (NavigationDesign Requirements).

(a) Did your Statechart require modification to work on the physical target? If so,what modifications did you make?

(b) How would you compare programming in Statecharts to programming in atraditional programming language such as C?

5. Share your Feedback: what did you like about this lab, and what would youchange?

5.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 155

Page 166: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.10.4 Troubleshooting

I receive the error “iRobot Navigation Target loaded with errors and was closed” whenattempting to run on target: This occurs when cached generated code becomes corrupt.To resolve the issue, open the LabVIEW configuration file from the LabVIEW programfolder, <LabVIEW>\LabVIEW.ini . Under the [LabVIEW] section add the line

useCacheForDeployment=False

Save and restart LabVIEW.

Alternatively, you may resolve the issue by renaming your Statechart.

I receive the error “LabVIEW: Resource not found. An error occurred loading VI.”This occurs the custom display element of a Statechart becomes corrupt. The customdata display is not used by this lab and can be restored to resolve the issue. From thedownloaded project files, open

src\LabVIEW\statechart\Restore Corrupt Statechart\Restore Corrupt Statechart.vi

Follow the instructions on the VI to restore your Statechart.

5.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 156

Page 167: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.11 Hill Climb in Statecharts (Simulation)

This lab builds on the concept of model-based design for cyber-physical systems andfocuses on feedback-control. Your goal in this lab is to implement a Statechart thatinstructs the iRobot Create to navigate to the top of an incline while avoiding cliffsand obstacles in a simulated environment.

This lab builds on Lab 5.9: Navigation in Statecharts (Simulation).

5.11. HILL CLIMB IN STATECHARTS (SIMULATION) 157

Page 168: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.11.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.6.1 (Introduction to the myRIO Accelerometer).• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 7: Sensors and Actuators §7.1 (Models of Sensors and Actuators) L

– Chapter 7: Sensors and Actuators §7.2.1 (Measuring Tilt and Acceleration) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Create Owner’s Guide L (iRobot, 2006b)• Create Open Interface Specification L (iRobot, 2006a)

These documents go beyond the scope of the core concepts of these exercises, andare provided as additional resources.

• Using an Accelerometer for Inclination Sensing L (Fisher, 2010)• Implementing a Tilt-Compensated eCompass using Accelerometer and Magne-

tometer Sensors L (Ozyagcilar, 2011)• Computational Principles of Mobile Robotics (Dudek and Jenkin, 2000)

5.11. HILL CLIMB IN STATECHARTS (SIMULATION) 158

Page 169: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.11.2 Prelab Exercises

1. §1.6.3 (MyRIO Accelerometer Exercises) (all exercises). You may skip these ifyou have already completed them for another laboratory in this chapter.

5.11. HILL CLIMB IN STATECHARTS (SIMULATION) 159

Page 170: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.11.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 5.9: Navigationin Statecharts (Simulation), located in the downloaded exercise files:

src\LabVIEW\statechart

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW Statecharts Module 2014

1. Hill Climb in Simulation: Program the virtual robot. Using feedback from theaccelerometer, your robot should differentiate between an incline and level ground,and when on an incline, orient and drive towards the top. You must satisfy all designrequirements as specified in §5.2 (Hill Climb Design Requirements).

(a) Provide a screenshot of your climbing algorithm.(b) Which states did you add from the previous lab?

2. Share your Feedback: what did you like about this lab, and what would youchange?

5.11. HILL CLIMB IN STATECHARTS (SIMULATION) 160

Page 171: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.12 Hill Climb in Statecharts (Deployment)

This lab builds on the concept of model-based design for cyber-physical systems andfocuses on feedback-control. Your goal in this lab is to implement a Statechart onmyRIO that instructs the iRobot Create to navigate to the top of an incline whileavoiding cliffs and obstacles.

This lab builds on Lab 5.10: Navigation in Statecharts (Deployment) and Lab 5.11:Hill Climb in Statecharts (Simulation).

5.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 161

Page 172: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.12.1 Prelab Reading

There is no prelab reading for this laboratory.

5.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 162

Page 173: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.12.2 Prelab Exercises

There are no prelab exercises for this laboratory.

5.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 163

Page 174: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.12.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 5.10: Navigationin Statecharts (Deployment); be sure to review the background from this lab, as itunderscores important differences between the simulator and the real robot.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW for myRIO Module 2014• National Instruments LabVIEW Real-Time Module 2014• National Instruments NI-RIO 13.1• National Instruments LabVIEW Statecharts Module 2014• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• iRobot Create

1. Hill Climb on the iRobot: Program the real robot. Using feedback from theaccelerometer, your robot should differentiate between an incline and level ground,and when on an incline, orient and drive towards the top. You must satisfy all designrequirements as specified in §5.2 (Hill Climb Design Requirements).

(a) Did your Statechart require modification to work on the physical target? If so,what modifications did you make?

(b) How did you account for movement of the robot when reading from theaccelerometer? Describe any algorithms or filters used.

2. Share your Feedback: what did you like about this lab, and what would youchange?

5.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 164

Page 175: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 5. THE CAL CLIMBER: CPS DESIGN WITH THE IROBOT CREATE

5.12.4 Troubleshooting

Refer to Lab 5.10: Navigation in Statecharts (Deployment) §5.10.4 (Troubleshooting)for troubleshooting issues with the robot configuration.

5.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 165

Page 176: An Introductory Lab in Embedded and Cyber-Physical Systems

6The Cal Klimber: CPS Design

with the Kobuki

This chapter describes a sequence of lab exercises to program the Cal Klimber, aversion of the iClebo Kobuki interfaced to the NI myRIO, to climb a “hill”. It mirrorsthe exercises described in Chapter 5 but with a different robotic platform.

166

Page 177: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.1 Navigation Design Requirements

We refer to the button “B0” on the Kobuki as the “Play” button. For CyberSim, aseparate “Play” button has been added on top of the Kobuki top view which maps tothe “B0” button.

The following are the design requirements for navigation laboratory exercises.

1. Startup: When powered on or reset, the robot shall not move until the ‘Play’button is pressed.

2. Run: The robot shall begin movement the first time the ‘Play’ button is pressedand continue running until paused or stopped.

(a) Ground Orientation: The ground orientation of your robot is the directionthe front of the robot is pointing when it first runs. The ground orientationdoes not change after subsequent pausing/resuming; only after a powercycle, reprogram or restart of the robot or its embedded controller.

(b) Drive: Your robot shall maintain ground orientation and drive forwardwhile on level ground and clear of obstacles.

(c) Obstacle Avoidance: Your robot shall avoid obstacles.i. Cliff Avoidance: Your robot shall not fall off of cliffs or edges.

ii. Wheel Hazard Avoidance: Your robot shall avoid one or more wheelslosing contact with the ground. If a wheel loses contact with theground, your robot shall attempt to recover and move around theincident hazard.

iii. Object Avoidance: Your robot shall avoid objects in its path. It isacceptable for your robot to touch objects as long as it immediatelychanges course in an attempt to avoid.

iv. Avoidance Robustness: Obstacle avoidance must always be satisfied,even if multiple obstacles are encountered simultaneously or in shortsuccession.

v. Reorientaton: After avoiding an obstacle, your robot shall eventuallyreorient to ground orientation.

3. Pause/Resume: The ‘Play’ button on the top of the robot shall start/resumeor pause movement of the robot. At any point the robot is moving, the ‘Play’button shall cause it to immediately and completely stop. Subsequently pressingthe ‘Play’ button shall cause the robot to resume operation.

4. Performance: When moving, your robot must satisfy the following performancecharacteristics.

6.1. NAVIGATION DESIGN REQUIREMENTS 167

Page 178: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

(a) Turnabout: Your robot shall never rotate in place more than 180.(b) Chattering: Your robot shall not move erratically or exhibit chattering.(c) Abnormal Termination: Your robot shall not abnormally terminate execu-

tion, with the exception of power or mechanical failure.(d) Obstacle Hugging: Your robot shall not repeatedly encounter (‘hug’) an

obstacle for the purpose of navigation.(e) Timeliness: Your robot shall achieve its goals in a timely manner.

Hint: Your robot does not need to follow a specific path or trajectory, or return toa specific path or trajectory following obstacle avoidance – it need only eventuallyreturn to and maintain its original ground orientation.

6.2 Hill Climb Design Requirements

The following are the design requirements for the Hill Climb laboratory exercises.These requirements are in addition to the above navigation requirements.

1. Hill Climb: When an incline is encountered, your robot shall drive uphilltowards the top of the incline.

2. Hill Descend: When the top of an incline is reached, as indicated by cliffs orimpassible obstacles at the top of the incline, your robot shall drive downhilltowards the bottom of the incline.

3. Ground Stop: After climbing and descending, when the bottom of an inclineis reached, your robot shall stop and terminate execution – its final goal isachieved.

6.2. HILL CLIMB DESIGN REQUIREMENTS 168

Page 179: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.3 Program CyberSim from Visual Studio

These laboratory exercises serve as a tutorial on programming the CyberSim simulatorusing C and Microsoft Visual Studio. You will load a template project and verify yourapplication is loaded by the simulator.

There are no prerequisites for this lab.

Figure 6.1: Microsoft Visual Studio.

6.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 169

Page 180: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.3.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.7 (Equipment: Microsoft Visual Studio)• §1.10 (Equipment: CyberSim)

6.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 170

Page 181: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.3.2 Prelab Exercises

There are no prelab exercises for this lab.

6.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 171

Page 182: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.3.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\C Statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• Microsoft Visual Studio, one of the following:

– Visual Studio Express 2013 for Desktop (Windows 7 and Windows 8)– Visual C++ Express 2010 (Windows XP SP3 and Windows Vista)

• National Instruments LabVIEW Run-Time Engine 2014

1. Launch Visual Studio Express: From the Windows Start Menu, launch VisualStudio Express. Depending on your version, the Start Menu shortcut may be namedVS Studio Express 2013 for Desktop or Visual C++ Express .

2. Load the Template C Statechart: The C Statechart source code and build settingsare maintained by a Visual Studio Solution. From the top menu bar, select “File→OpenProject...” and navigate to the downloaded exercises,

src\C Statechart\Visual Studio Solution\libstatechart.sln

The solution references all source files needed to compile a statechart DLL for usewith CyberSim.

3. Review the Statechart source: The Solution Explorer pane is used to navigate filesin a solution. Open the source file C Statechart\kobukiNavigationStatechart.c, the onlyfile you need to modify to change the controller behavior in CyberSim.

4. Compile: From the top menu bar, select “Build→Build Solution” to compile thesolution. The output directory is automatically set to the CyberSim program folder.Ensure there are no errors in the error list, and following a successful build, check

6.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 172

Page 183: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

that the output library was written to the CyberSim binary folder in the downloadedexercise files:

CyberSim\libstatechart.dll

5. Launch CyberSim and Simulate: Open CyberSim from the downloaded exercisefiles:

CyberSim\CyberSim.exe

Open the Configuration tab and in the “statechart” path field, enter libstatechart.dll.Press

Start to begin a simulation. The simulation will progress, executing yourcontroller at each simulation step.

6. Stop the Simulation: Before you can change and recompile your controller, youmust stop the simulation to unload libstatechart.dll. Press the

Stop button to stop thesimulation. You do not need to exit CyberSim.

7. Launch a Debug Session (optional): Visual Studio can attach a debugger toCyberSim to allow you to debug your control software. Visual Studio will launchCyberSim automatically, using a command-line argument to point the simulator to thecompiled library. Close all other instances of CyberSim before beginning a debugsession.

In Visual Studio, from the top menu car select “Debug→Start Debugging”. Thesolution should build and launch CyberSim. Press

Start to begin a simulation. Thedebugger will attach when the simulation begins. You may use debugging featuressuch as watch windows and breakpoints to step through your code.

When you are ready to terminate a debugging session, disable all breakpoints andfrom the Visual Studio top menu bar select “Debug→Continue” to allow CyberSimto continue executing uninterrupted. Return to CyberSim and press

Exit to closeCyberSim, detatch the Visual Studio Debugger, and close the debugging session.

8. Close CyberSim Use the Exit button to terminate CyberSim – do not close the

window, as this will terminate CyberSim without unloading your statechart library orthe ODE simulator.

Congratulations on using Visual Studio to write a controller for CyberSim!

6.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 173

Page 184: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

9. Share your Feedback: what did you like about this lab, and what would youchange?

6.3. PROGRAM CYBERSIM FROM VISUAL STUDIO 174

Page 185: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.4 Navigation in C (Simulation)

These exercises guide you in creating a state machine in C using Microsoft VisualStudio. Your state machine will read sensors and drive the Kobuki with a basic senseof orientation while avoiding obstacles in a simulated environment.

This lab builds on Lab 6.3: Program CyberSim from Visual Studio.

6.4. NAVIGATION IN C (SIMULATION) 175

Page 186: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.4.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• Introduction to Embedded Systems L (Lee and Seshia, 2015)– Chapter 3: Discrete Dynamics §3.3 (Finite-State Machines) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Kobuki Documentation4 (YujinRobot, 2014b)

6.4. NAVIGATION IN C (SIMULATION) 176

Page 187: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.4.2 Prelab Exercises

1. §1.5.3 (Kobuki Equipment Exercises) (all exercises). You may skip these if youhave already completed them for another laboratory in this chapter.

2. Review the template project provided for the lab exercises. The template codeimplements a state machine; sketch it.

6.4. NAVIGATION IN C (SIMULATION) 177

Page 188: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.4.3 Lab Exercises

For the exercises below, begin with the same source files you used in Lab 6.3: ProgramCyberSim from Visual Studio, located in the downloaded exercise files:

src\C Statechart\

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• Microsoft Visual Studio, one of the following:

– Visual Studio Express 2013 for Desktop (Windows 7 and Windows 8)– Visual C++ Express 2010 (Windows XP SP3 and Windows Vista)

• National Instruments LabVIEW Run-Time Engine 2014

1. Launch Visual Studio Express: Open Microsoft Visual Studio Express for Desktopand import the solution libstatchart.sln. Clean and build the solution. The compiledlibrary is written to the CyberSim folder.

2. Execute the Template Code: Launch CyberSim.exe . In the Configuration tab,browse for “Statechart” and select libstatechart.dll. Press

Start to begin a simulation.

3. Run a Debug Sequence: In the Configuration tab, select feedback mode “DebugNavigation” and press

Check Grade to run through a sequence of tests that maycatch common errors or bugs as you build your solution.

4. Navigate in Simulation: Program the virtual robot. Program the robot to avoidobstacles and maintain a basic sense of orientation. You must satisfy all designrequirements as specified in §6.1 (Navigation Design Requirements).

(a) Describe (and sketch) your obstacle avoidance algorithm.(b) Did you follow a state machine architecture? If so, which states did you add to

the default project?

5. Share your Feedback: what did you like about this lab, and what would youchange?

6.4. NAVIGATION IN C (SIMULATION) 178

Page 189: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.5 Navigation in C (Deployment)

These exercises guide you in creating a state machine in C using C & C++ DevelopmentTools for NI Linux Real-Time, Eclipse Edition and myRIO. Your state machine willread sensors and drive the Kobuki with a basic sense of orientation while avoidingobstacles.

This lab builds on Lab 3.3: Program the myRIO Processor from Eclipse and Lab 6.4:Navigation in C (Simulation).

6.5. NAVIGATION IN C (DEPLOYMENT) 179

Page 190: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.5.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• Introduction to Embedded Systems L (Lee and Seshia, 2015)– Chapter 10: Input and Output §10.1.3 (Serial Interfaces) L

6.5. NAVIGATION IN C (DEPLOYMENT) 180

Page 191: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.5.2 Prelab Exercises

1. Review the template project provided for the lab exercises.

(a) Does the template code use polling or interrupts to read the Kobuki sensors? Isthis the same mechanism used by the Kobuki protocol?

(b) You want the Kobuki to continue executing a single command for 5 seconds.How might you prevent it from shutting down mid-action?

6.5. NAVIGATION IN C (DEPLOYMENT) 181

Page 192: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.5.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\C Statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition• iClebo Kobuki

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.

2. Verify the Robot Setup: Your iRobot Create is interfaced with a myRIO. Verifythe components are correctly wired, as shown in Fig. A.2.

3. Launch Eclipse: Open C & C++ Development Tools for NI Linux Real-Time,Eclipse Edition and import the project archive src\kobukiNavigation.zip. Double-checkthat the MyRio_1900 symbol is set and that the target has been correctly configured.Clean and build all projects. Create a target connection, connect to the target, andlaunch the Target Console. Create a run configuration for the irobotNavigation project.See Lab 3.3: Program the myRIO Processor from Eclipse for instructions if you havenot done this before.

4. Execute the Template Code: Launch the run configuration and observe the mes-sages printed to the Target Console. Place your robot in a clear space and press the‘Play’ button on the top of the robot to toggle between pause and execute modes.

6.5. NAVIGATION IN C (DEPLOYMENT) 182

Page 193: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

Hint: The easiest way to revise code and restart your process is for the originalprocess to complete. The template code in your project is designed to finish executionwhen the ‘Advance’ button is pressed on the Kobuki. When finished executing, pressthe ‘Advance’ button on the top of the robot to terminate the process. If you attemptto launch a new process before the old process terminates, you may receive an errorthat the executable could not be downloaded to the target.

5. Navigate the Kobuki: Program the real robot. Program the robot to avoid obstaclesand maintain a basic sense of orientation. You must satisfy all design requirements asspecified in the previous lab §6.1 (Navigation Design Requirements).

If you have previously programmed the robot and tested it with CyberSim, rememberto import your code from Visual Studio (as you did in Sec. 6.4) to Eclipse.

(a) Describe (and sketch) your obstacle avoidance algorithm.(b) Did you follow a state machine architecture? If so, which states did you add to

the default project?

6. Share your Feedback: what did you like about this lab, and what would youchange?

6.5. NAVIGATION IN C (DEPLOYMENT) 183

Page 194: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.5.4 Troubleshooting

Refer to §3.3.4 (Troubleshooting) for troubleshooting issues with Eclipse for NIReal-Time Linux Targets.

6.5. NAVIGATION IN C (DEPLOYMENT) 184

Page 195: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.6 Hill Climb in C (Simulation)

This lab builds on programming cyber-physical systems, specifically feedback-control.Using Microsoft Visual Studio Express, you will implement a state machine in C thatinstructs the Kobuki to navigate to the top of an incline while avoiding cliffs andobstacles in a simulated environment.

This lab builds on Lab 6.4: Navigation in C (Simulation).

6.6. HILL CLIMB IN C (SIMULATION) 185

Page 196: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.6.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.6.1 (Introduction to the myRIO Accelerometer)• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 7: Sensors and Actuators §7.1 (Models of Sensors and Actuators) L

– Chapter 7: Sensors and Actuators §7.2.1 (Measuring Tilt and Acceleration) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Kobuki Documentation4 (YujinRobot, 2014b)

These documents go beyond the scope of the core concepts of these exercises, andare provided as additional resources.

• Using an Accelerometer for Inclination Sensing L (Fisher, 2010)• Implementing a Tilt-Compensated eCompass using Accelerometer and Magne-

tometer Sensors L (Ozyagcilar, 2011)• Computational Principles of Mobile Robotics (Dudek and Jenkin, 2000)

6.6. HILL CLIMB IN C (SIMULATION) 186

Page 197: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.6.2 Prelab Exercises

1. §1.6.3 (MyRIO Accelerometer Exercises) (all exercises). You may skip these ifyou have already completed them for another laboratory in this chapter.

6.6. HILL CLIMB IN C (SIMULATION) 187

Page 198: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.6.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 6.4: Navigationin C (Simulation), located in the downloaded exercise files:

src\C Statechart\

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• Microsoft Visual Studio, one of the following:

– Visual Studio Express 2013 for Desktop (Windows 7 and Windows 8)– Visual C++ Express 2010 (Windows XP SP3 and Windows Vista)

• National Instruments LabVIEW Run-Time Engine 2014

1. Hill Climb in Simulation: Program the virtual robot. Using feedback from theaccelerometer, your robot should differentiate between an incline and level ground,and when on an incline, orient and drive towards the top. You must satisfy all designrequirements as specified in §6.2 (Hill Climb Design Requirements).

(a) Describe (and sketch) your climbing algorithm.(b) Did you follow a state machine architecture? If so, which states did you add?(c) How did you account for movement of the robot when reading from the

accelerometer? Describe any algorithms or filters used.

2. Share your Feedback: what did you like about this lab, and what would youchange?

6.6. HILL CLIMB IN C (SIMULATION) 188

Page 199: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.7 Hill Climb in C (Deployment)

This lab builds on programming cyber-physical systems, specifically feedback-control.Using C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition, youwill implement a state machine in C on myRIO that instructs the Kobuki to navigateto the top of an incline while avoiding cliffs and obstacles.

This lab builds on Lab 6.5: Navigation in C (Deployment) and Lab 6.6: Hill Climbin C (Simulation).

6.7. HILL CLIMB IN C (DEPLOYMENT) 189

Page 200: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.7.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.6.1 (Introduction to the myRIO Accelerometer)• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 7: Sensors and Actuators §7.1 (Models of Sensors and Actuators) L

– Chapter 7: Sensors and Actuators §7.2.1 (Measuring Tilt and Acceleration) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Kobuki Documentation4 (YujinRobot, 2014b)

These documents go beyond the scope of the core concepts of these exercises, andare provided as additional resources.

• Using an Accelerometer for Inclination Sensing L (Fisher, 2010)• Implementing a Tilt-Compensated eCompass using Accelerometer and Magne-

tometer Sensors L (Ozyagcilar, 2011)• Computational Principles of Mobile Robotics (Dudek and Jenkin, 2000)

6.7. HILL CLIMB IN C (DEPLOYMENT) 190

Page 201: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.7.2 Prelab Exercises

1. §1.6.3 (MyRIO Accelerometer Exercises) (all exercises). You may skip these ifyou have already completed them for another laboratory in this chapter.

6.7. HILL CLIMB IN C (DEPLOYMENT) 191

Page 202: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.7.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 6.6: HillClimb in C (Simulation), located in the downloaded exercise files:

src\C Statechart\

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments NI-RIO 13.1• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition• iClebo Kobuki

1. Hill Climb on Kobuki: Program the real robot. Using feedback from the accelerom-eter, your robot should differentiate between an incline and level ground, and when onan incline, orient and drive towards the top. You must satisfy all design requirementsas specified in §6.2 (Hill Climb Design Requirements).

(a) Describe (and sketch) your climbing algorithm.(b) Did you follow a state machine architecture? If so, which states did you add?(c) How did you account for movement of the robot when reading from the

accelerometer? Describe any algorithms or filters used.

2. Share your Feedback: what did you like about this lab, and what would youchange?

6.7. HILL CLIMB IN C (DEPLOYMENT) 192

Page 203: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.7.4 Troubleshooting

Refer to §3.3.4 (Troubleshooting) for troubleshooting issues with Eclipse.

6.7. HILL CLIMB IN C (DEPLOYMENT) 193

Page 204: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.8 Program CyberSim from LabVIEW

These laboratory exercises serve as a tutorial on programming the CyberSim simulatorusing Statecharts and LabVIEW. You will load a template project and verify yourapplication is loaded by the simulator.

There are no prerequisites for this lab.

6.8. PROGRAM CYBERSIM FROM LABVIEW 194

Page 205: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.8.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.9 (Equipment: LabVIEW)• §1.10 (Equipment: CyberSim)

6.8. PROGRAM CYBERSIM FROM LABVIEW 195

Page 206: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.8.2 Prelab Exercises

There are no prelab exercises for this lab.

6.8. PROGRAM CYBERSIM FROM LABVIEW 196

Page 207: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.8.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\LabVIEW\statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW Statecharts Module 2014

1. Launch LabVIEW: From the Windows Start Menu, open National InstrumentsLabVIEW.

2. Load the Template LabVIEW Statechart: The LabVIEW Statechart source codeand build settings are maintained by a LabVIEW Project. From the top menu bar,select “File→Open Project...” and navigate to the downloaded exercises,

src\LabVIEW\Statechart.lvproj

The project references all source files needed to create a LabVIEW Statechart for usewith CyberSim.

3. Review the Statechart source: The Project Explorer pane is used to navigate files.Open the source file Statechart.lvsc\Diagram.vi, the only file you need to modify tochange the controller behavior in CyberSim.

4. Recompile the Statechart: Press the “Force Code Generation for this Statechart”button to recompile the Statechart for myRIO.

5. Verify the Statechart is Executable: The LabVIEW Statechart file Statechart.lvscis called from a wrapper VI, Simulation Statechart.vi. Open this VI from the ProjectExplorer and ensure the Run arrow is solid white – if a broken gray arrow is showninstead, press the broken arrow to open the errors dialog. You will need to save

6.8. PROGRAM CYBERSIM FROM LABVIEW 197

Page 208: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

the VI because the statechart code in Statechart.lvsc is not automatically compiled bySimulation Statechart.vi until you save. Without saving, you may be running an oldstatechart.

Save Simulation Statechart.vi after recompiling the Statechart.

6. Launch CyberSim and Simulate: Open CyberSim from the downloaded exercisefiles:

CyberSim\CyberSim.exe

Open the Configuration tab and in the “statechart” path field, enter

..\src\LabVIEW\statechart\Simulation Statechart.vi

Press Start to begin a simulation. If you experience an error about the reference to

Simulation Statechart.vi, go back to the VI and save it. The simulation will progress,executing your controller at each simulation step. You will see your Statechartexecuting in the Statechart Display tab.

7. Stop the Simulation: Before you can change and recompile your controller, youmust stop the simulation to unload Statechart.lvsc. Press the

Stop button to stop thesimulation. You do not need to exit CyberSim.

8. Close CyberSim Use the Exit button to terminate CyberSim – do not close the

window, as this will terminate CyberSim without unloading your statechart or theODE simulator.

Congratulations on using LabVIEW to write a controller for CyberSim!

9. Share your Feedback: what did you like about this lab, and what would youchange?

6.8. PROGRAM CYBERSIM FROM LABVIEW 198

Page 209: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.9 Navigation in Statecharts (Simulation)

You will design a control algorithm using the Statecharts model of computation. Yourtask is to design a Statechart that instructs the robot to maintain a basic sense oforientation while avoiding obstacles in a virtual world.

This lab builds on Lab 6.8: Program CyberSim from LabVIEW.

6.9. NAVIGATION IN STATECHARTS (SIMULATION) 199

Page 210: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.9.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.5 (Equipment: iClebo Kobuki)• §1.10.1 (Introduction to CyberSim)• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 3: Discrete Dynamics §3.3 (Finite-State Machines) L

– Chapter 5: Composition of State Machines L

• Designing Applications with the NI LabVIEW Statechart Module4 (Washington,2009)

• Developing Applications with the NI LabVIEW Statechart Module L (NationalInstruments, 2012b)

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Kobuki Documentation4 (YujinRobot, 2014b)• LabVIEW Statechart Module Help4 (National Instruments, 2012d)

6.9. NAVIGATION IN STATECHARTS (SIMULATION) 200

Page 211: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.9.2 Prelab Exercises

1. §1.5.3 (Kobuki Equipment Exercises) (all exercises). You may skip these if youhave already completed them for another laboratory in this chapter.

2. How does the Statecharts model of computation differ from finite state machines?

3. In a Statechart, what is the difference between a state and a region?

4. In LabVIEW Statecharts, what is represented by an arrow containing three open orclosed cells? What does each cell represent? What does this arrow connect?

6.9. NAVIGATION IN STATECHARTS (SIMULATION) 201

Page 212: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.9.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\LabVIEW\statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW Statecharts Module 2014

The LabVIEW Statecharts editor enables developers to program in the Statechartsmodel of computation. When changing default value of a Statechart StateData control,open the Statechart diagram and press the “Force Code Generation for this Statechart”

button to recompile the Statechart.

1. Open the Project: From the extracted project files, open the file Statechart.lvproj(LabVIEW Project File). It may take a while to load the project. You may receive awarning that dependencies were loaded from a new path; this is normal and may bedisregarded.

Review the steps listed in Sec. 6.8.3 to compile the Statechart.

2. Execute the Template Code: Launch CyberSim.exe . In the Configuration tab,browse for “Statechart” and select src\LabVIEW\statechart\Simulation Statechart.vi.Press

Start to begin a simulation.

3. Run a Debug Sequence: In the Configuration tab, select feedback mode “DebugNavigation” and press

Debug to run through a sequence of tests that may catchcommon errors or bugs as you build your solution.

4. Navigate in Simulation: Program the virtual robot. Your code should resideentirely in the Statechart – you do not need to modify the block diagram of SimulationStatechart.vi.

6.9. NAVIGATION IN STATECHARTS (SIMULATION) 202

Page 213: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

Program the robot to avoid obstacles and maintain a basic sense of orientation. Youmust satisfy all design requirements as specified below in §6.1 (Navigation DesignRequirements).

(a) Provide a description and screenshot of your obstacle avoidance algorithm.

5. Share your Feedback: what did you like about this lab, and what would youchange?

6.9. NAVIGATION IN STATECHARTS (SIMULATION) 203

Page 214: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.10 Navigation in Statecharts (Deployment)

You will design a control algorithm using the Statecharts model of computation onmyRIO, verify in simulation in the LabVIEW Robotics Simulator, and deploy thesolution to the Kobuki. Your task is to design a Statechart that instructs the robot tomaintain a basic sense of orientation while avoiding obstacles.

This lab builds on Lab 3.4: Program the myRIO Processor from LabVIEW and Lab6.9: Navigation in Statecharts (Simulation).

6.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 204

Page 215: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.10.1 Prelab Reading

There is no prelab reading for this laboratory.

6.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 205

Page 216: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.10.2 Prelab Exercises

There are no prelab exercises for this laboratory.

6.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 206

Page 217: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.10.3 Lab Exercises

The following exercises reference files are distributed with this courseware. Oncedownloaded and extracted, navigate to the folder

src\LabVIEW\statechart

to locate files referenced by these exercises.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW for myRIO Module 2014• National Instruments LabVIEW Real-Time Module 2014• National Instruments NI-RIO 13.1• National Instruments LabVIEW Statecharts Module 2014• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• iClebo Kobuki

1. Setup myRIO: Ensure myRIO is powered and connected to your computer. SeeLab 3.1: Connect to and Configure myRIO for instructions if you have not done thisbefore.

2. Verify the Robot Setup: Your Kobuki is interfaced with a myRIO. Verify that thecomponents are correctly wired, as shown in Fig. A.4.

3. Open the Project: From the extracted project files, open the file Statechart.lvproj(LabVIEW Project File). It may take a while to load the project. You may receive awarning that dependencies were loaded from a new path; this is normal and may bedisregarded.

4. Navigate the Kobuki: Program the real robot. The Statechart you designed inthe simulator is configured to deploy on your embedded target. In the ProjectExplorer, navigate to “myRIO→Statechart” and open Diagram.vi. Press the “ForceCode Generation for this Statechart” button to recompile the Statechart for myRIO.

6.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 207

Page 218: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

Open Target.vi. This is the main VI for the myRIO and is responsible for samplingthe accelerometer, reading the robot’s sensors, and transmitting drive commands. Youcode should reside entirely in the Statechart – you do not need to modify any othersVIs. A lowpass filter has been provided to smooth the accelerometer signal.

Run Target.vi to deploy your Statechart to your target.

Program the robot to avoid obstacles and maintain a basic sense of orientation. Youmust satisfy all design requirements as specified in the previous lab §6.1 (NavigationDesign Requirements).

(a) Did your Statechart require modification to work on the physical target? If so,what modifications did you make?

(b) How would you compare programming in Statecharts to programming in atraditional programming language such as C?

5. Share your Feedback: what did you like about this lab, and what would youchange?

6.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 208

Page 219: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.10.4 Troubleshooting

I receive the error “Kobuki Navigation Target loaded with errors and was closed” whenattempting to run on target: This occurs when cached generated code becomes corrupt.To resolve the issue, open the LabVIEW configuration file from the LabVIEW programfolder, <LabVIEW>\LabVIEW.ini . Under the [LabVIEW] section add the line

useCacheForDeployment=False

Save and restart LabVIEW.

Alternatively, you may resolve the issue by renaming your Statechart.

I receive the error “LabVIEW: Resource not found. An error occurred loading VI.”This occurs the custom display element of a Statechart becomes corrupt. The customdata display is not used by this lab and can be restored to resolve the issue. From thedownloaded project files, open

src\LabVIEW\statechart\Restore Corrupt Statechart\Restore Corrupt Statechart.vi

Follow the instructions on the VI to restore your Statechart.

6.10. NAVIGATION IN STATECHARTS (DEPLOYMENT) 209

Page 220: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.11 Hill Climb in Statecharts (Simulation)

This lab builds on the concept of model-based design for cyber-physical systems andfocuses on feedback-control. Your goal in this lab is to implement a Statechart thatinstructs the Kobuki to navigate to the top of an incline while avoiding cliffs andobstacles in a simulated environment.

This lab builds on Lab 6.9: Navigation in Statecharts (Simulation).

6.11. HILL CLIMB IN STATECHARTS (SIMULATION) 210

Page 221: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.11.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

• §1.6.1 (Introduction to the myRIO Accelerometer).• Introduction to Embedded Systems L (Lee and Seshia, 2015)

– Chapter 7: Sensors and Actuators §7.1 (Models of Sensors and Actuators) L

– Chapter 7: Sensors and Actuators §7.2.1 (Measuring Tilt and Acceleration) L

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

• Kobuki Documentation4 (YujinRobot, 2014b)

These documents go beyond the scope of the core concepts of these exercises, andare provided as additional resources.

• Using an Accelerometer for Inclination Sensing L (Fisher, 2010)• Implementing a Tilt-Compensated eCompass using Accelerometer and Magne-

tometer Sensors L (Ozyagcilar, 2011)• Computational Principles of Mobile Robotics (Dudek and Jenkin, 2000)

6.11. HILL CLIMB IN STATECHARTS (SIMULATION) 211

Page 222: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.11.2 Prelab Exercises

1. §1.6.3 (MyRIO Accelerometer Exercises) (all exercises). You may skip these ifyou have already completed them for another laboratory in this chapter.

6.11. HILL CLIMB IN STATECHARTS (SIMULATION) 212

Page 223: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.11.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 6.9: Navigationin Statecharts (Simulation), located in the downloaded exercise files:

src\LabVIEW\statechart

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW Statecharts Module 2014

1. Hill Climb in Simulation: Program the virtual robot. Using feedback from theaccelerometer, your robot should differentiate between an incline and level ground,and when on an incline, orient and drive towards the top. You must satisfy all designrequirements as specified in §6.2 (Hill Climb Design Requirements).

(a) Provide a screenshot of your climbing algorithm.(b) Which states did you add from the previous lab?

2. Share your Feedback: what did you like about this lab, and what would youchange?

6.11. HILL CLIMB IN STATECHARTS (SIMULATION) 213

Page 224: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.12 Hill Climb in Statecharts (Deployment)

This lab builds on the concept of model-based design for cyber-physical systems andfocuses on feedback-control. Your goal in this lab is to implement a Statechart onmyRIO that instructs the Kobuki to navigate to the top of an incline while avoidingcliffs and obstacles.

This lab builds on Lab 6.10: Navigation in Statecharts (Deployment) and Lab 6.11:Hill Climb in Statecharts (Simulation).

6.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 214

Page 225: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.12.1 Prelab Reading

There is no prelab reading for this laboratory.

6.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 215

Page 226: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.12.2 Prelab Exercises

There are no prelab exercises for this laboratory.

6.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 216

Page 227: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.12.3 Lab Exercises

For the exercises below, begin with the solution you developed for Lab 6.10: Navigationin Statecharts (Deployment); be sure to review the background from this lab, as itunderscores important differences between the simulator and the real robot.

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

• Windows XP SP3, Windows Vista, Windows 7, or Windows 8• National Instruments LabVIEW 2014• National Instruments LabVIEW for myRIO Module 2014• National Instruments LabVIEW Real-Time Module 2014• National Instruments NI-RIO 13.1• National Instruments LabVIEW Statecharts Module 2014• National Instruments myRIO 1900 or 1950• DC power supply• USB cable• iClebo Kobuki

1. Hill Climb on the Kobuki: Program the real robot. Using feedback from theaccelerometer, your robot should differentiate between an incline and level ground,and when on an incline, orient and drive towards the top. You must satisfy all designrequirements as specified in §6.2 (Hill Climb Design Requirements).

(a) Did your Statechart require modification to work on the physical target? If so,what modifications did you make?

(b) How did you account for movement of the robot when reading from theaccelerometer? Describe any algorithms or filters used.

2. Share your Feedback: what did you like about this lab, and what would youchange?

6.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 217

Page 228: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 6. THE CAL KLIMBER: CPS DESIGN WITH THE KOBUKI

6.12.4 Troubleshooting

Refer to Lab 6.10: Navigation in Statecharts (Deployment) §6.10.4 (Troubleshooting)for troubleshooting issues with the robot configuration.

6.12. HILL CLIMB IN STATECHARTS (DEPLOYMENT) 218

Page 229: An Introductory Lab in Embedded and Cyber-Physical Systems

7Projects

The exercises in this chapter guide you through basic skills in project management, acritical component of any successful capstone design project. Additionally, a series ofopen-ended projects are proposed as starting points for a significant design project.

219

Page 230: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 7. PROJECTS

7.1 Project Management

Contributing Author: Christopher X. Brooks

A capstone design project is a significant team undertaking, and can benefit from somesimple project management. Well-managed projects are less stressful and ultimatelymore successful. Some useful project management tasks include:

• Specify the project by submitting a one-page charter.• Once a project charter has been reviewed and approved, submit a project plan

of action, a timeline for milestones, and a division of responsibilities for teammembers.

• Indicate core concepts addressed by the project, such as concurrency, modelingof physical dynamics, reliable real-time behavior, modal behavior governed byfinite state machines coupled with formal analysis, real-time networks, simulationstrategies, and design methodologies for embedded systems design.

• Pair with a mentor with relevant experience who is a professor, graduate student,researcher, or industry professional.

• Perform weekly progress checkpoints, which may alternate between in-classpresentations and one-page milestone reports comparing progress to the originalproject charter.

• At the project halfway point, host live demonstrations during a departmentopen-house, which facilitates functional milestones.

• Periodically submit peer evaluation forms to identify any issues with a particularteam member.

7.1. PROJECT MANAGEMENT 220

Page 231: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 7. PROJECTS

7.1.1 Prelab Reading

Carefully read the following content and be comfortable with the concepts coveredbefore beginning these exercises.

1. Project Management Instructions L (Brooks, 2008)2. Tortoise SVN4 (Kung et al., 2011)

Skim these documents to understand their content and layout. You should be able toquickly find relevant information within them. Sections pertaining to key topics maybe explicitly referenced, but you may need to reference other sections to completethese exercises.

1. Project Management and Embedded Systems L (Brooks, 2012b)2. Wikipedia

(a) Project Charter4 (Wikipedia, 2013c)(b) Milestone (Project Management)4 (Wikipedia, 2013b)(c) Work Breakdown Structure4 (Wikipedia, 2013e)

3. EECS Instructional Public Documentation - SVN Help4 (Brooks, 2012a)

You will need the following equipment and software to complete this lab, in additionto equipment used in prerequisite labs (if applicable):

1. Desktop computer2. Word processor3. Tortoise SVN Product Page4 (Tortoise SVN Team, 2013)

7.1. PROJECT MANAGEMENT 221

Page 232: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 7. PROJECTS

7.1.2 Prelab Exercises

1. What are two advantages of using a version control system such as SVN?

2. Alice and Bob both update their working copies at the beginning of the day. Theystart editing the same plain-text file. Alice commits her changes in the afternoon.What happens when Bob tries to commit his changes at the end of the day? Whatshould Bob do?

3. What is the SVN checkout URL for your group (your group number is on theGoogle spreadsheet)?

4. How long should a project charter be?

5. Why is it important to have a brief charter?

6. Suppose you are writing the work breakdown to design an automobile, whichhas subsystems such as steering, horn, drivetrain, transmission, motor, etc. Give anexample of a breakdown which would

(a) Violate the 100% rule.(b) Violate the Mutually Exclusive rule

7. Make a short list of skills / experience / interests you think would be most relevantfor your project. (i.e. Microcontroller coding, Circuit design, Project Management,etc.) Next to each, give an example project or class you took which demonstrates thatskill.

8. If you know you will be using a mentored project from the website, communicatewith them before this lab, asking for whatever details you need to know to completethe charter & schedule. i.e. you will need to know what components need to bedesigned, whether there is hardware tasks involved, if there are deadlines outside ofthis class, and other considerations. You should also schedule regular meetings withthem for them to track your progress. List all such components, tasks, and deadlines.

7.1. PROJECT MANAGEMENT 222

Page 233: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 7. PROJECTS

7.1.3 Lab Exercises

The exercises here guide you in the creation of a project charter. Your charter servesas the lab report for these exercises. Do not enumerate the questions below in yourcharter, but instead make sure that each question is answered somewhere in yourproject charter.

TortoiseSVN is a frontend for the program SVN, a version-control system. TortoiseSVNprovides handy right-click menus for updating, committing and reviewing your files.

1. Check out a Repository: To checkout your repository, create a new directorywhere you want the files (preferably one on a network drive). Right-click on the newdirectory and select “SVN Checkout...”. In “URL Repository” enter the URL of yourrepository. When a module is checked out, notice a check mark appears next to thefolder indicating your local copy is up-to-date.

2. Add Files to your Repository: Copy or move the files from your project charterand schedule into this newly created folder. Select both and right-click on them.Select “Tortoise SVN → Add...”. Notice there are now plus-signs next to the files.This means that this file is to be added to the repository on the next commit.

Go up a directory. The folder containing your local copy should now have a redexclamation point indicating your local copy is out-of-date. Right-click on the folderand select “SVN Commit...”. Enter a message such as “Added project charter &schedule”. Although not strictly enforced, it is good practice to always provide acommit message for other users and for remembering what you did in the future .The folder should now turn green again.

Go back into the directory. Your project charter and schedule should now have greencheckmarks indicating they are up-to-date. Try changing one of them– you should geta red exclamation point indicating local changes are out-of-date. You can commit thesechanges in the same way as before, but suppose you made a mistake and you want toundo your changes. Right-click on the file and select “Tortoise SVN → Revert...”. Ifyou press “OK”, the latest version in the repository will overwrite your copy. Youcan also revert to several versions behind if you want.

Note that because your files are probably in MS Word or some other binary format,then you cannot diff them easily. The diff feature works on plain-text files, such as Csource files, and highlights the changes, line-by-line, that you changed between tworevisions. This is essential for finding out which lines of code broke your program.

7.1. PROJECT MANAGEMENT 223

Page 234: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 7. PROJECTS

For plain-text files, you can also handle merges which happen if two people tried tochange the same lines– you will have to pick which one is used. For binary files, to“merge” you must simply pick one entire file or the other.

You will probably want to have every member set up their respective checkouts fromyour repository. This will allow you to work on the code somewhat independently, butwith a central master copy. You should get in the habit of committing your changesat least once a day ( like the CTRL-S of code development ). Your TAs and mentorswill also be using your repository to be familiar with your code.

3. (optional) Install SVN on Another Computer: This section is for your informationin case you want to set this up on your own computer.

Windows: Installation is fairly easy– simply download and install TortoiseSVN fromTortoise SVN Product Page4 (Tortoise SVN Team, 2013), making sure to get 32-bitor 64-bit based on what your OS is. On Windows 7, there may be problems with theicons showing properly. Therefore, you will need to use the “check for modifications”item in TortiseSVN’s right-click menu.

Linux: The “svn” command-line program should be available in most packagerepositories. For example, on Ubuntu systems, you can use “sudo apt-get installsubversion”. Refer to the man-page or online documentation for information on howto use the command-line program. There are also frontends available, such as kdesvn(“sudo apt-get install kdesvn”).

Mac: Mac OS X 10.7 may already have Subversion installed. To test this, start up aTerminal window and run “svn help”. If svn is not found, then install XCode fromhttp://developer.apple.com/xcode. Note that XCode is roughly a 1 gigabyte download.Apple is charging $5 for XCode 4, but XCode 3 will also work.

Unfortunately for the Mac, the free GUI Subversion options are fairly limited. SCPluginseems to be the best option out there, coming from the makers of subversion. It canbe found at http://scplugin.tigris.org/.

4. Team Member and Project Selection: During this lab (your choice – before orafter your charter is written) discuss with your lab TA that all skills requirements foryour project are satisfied by your group members. If you have a large (4 or 5) group,be prepared to justify why the extra manpower is needed.

(a) Who are your project members?(b) Give a one or two sentence description of your project.

7.1. PROJECT MANAGEMENT 224

Page 235: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 7. PROJECTS

5. Plan your Project: Follow Project Management Instructions4 (Brooks, 2008) tocreate a project charter.

Ensure that you are reasonable in your objectives and deliverables, especially consider-ing the experience of your group. i.e. Do not make a circuit board a major deliverableif no group member has any circuit design experience. On the same token, the scopeof the project should match the size of the group and the goal be to produce aninteresting and impressive product.

Your charter should include:

(a) Overview(b) Approach(c) Objectives(d) Major Deliverables(e) Constraints(f) Risk and Feasibility

Your charter should be one (1) page. The point is succinctly summarize your projectfor a busy manager.

Each group should submit one charter.

6. Set Milestones and a Schedule: Working backwards from the completion due date,determine when tasks need to be done to complete the project on time. Ensure you areallowing adequate time for debugging – integrating disjoint components from severalpeople can take a week or more. Be sure to consider events such as Spring Break,Finals Week, etc.. Milestones should indicate which team member is responsible andbe no more than one week apart.

Be sure to include non-technical tasks such as practicing the presentation or writingthe report. Also include a plan to meet with your mentor, preferably once a week(you may want to organize your milestones to land on these dates). Be sure to includevacations like Spring Break.

Do not hesitate to be painfully specific. Through the duration of this project, youshould submit milestone reports to track your progress. Certainly, the milestones couldchange during the course of the project as you learn and debug things.

7. Set a Work Breakdown Structure: Generate a Work Breakdown Structure (WBS)for your project, being careful to satisfy the 100% and mutual exclusion rules. The

7.1. PROJECT MANAGEMENT 225

Page 236: An Introductory Lab in Embedded and Cyber-Physical Systems

CHAPTER 7. PROJECTS

diagram should show dependencies between milestones and which tasks can beperformed in parallel. For simpler projects, this could be very linear, but try to dividethe tasks so as much as possible can be done in parallel so work can be split betweenpeople. Ensure that the WBS answers when a milestone will be finished and who isresponsible for it finishing.

8. Check your Charter into SVN.

9. Individual Writeup: In addition to the project charter, each team member shouldwrite an individual report which answers the following questions:

(a) What is the critical path on your WBS? How long will it take to complete?(b) What are the amounts time you have allotted to:

i. Designii. Development (i.e. new stuff being written)

iii. Debuggingiv. Other tasks ( such as writing presentations or reports)

(c) How have you designed your schedule adjust for unforeseen delays or earlycompletions?

(d) When have you regularly scheduled to meet with your mentor?

10. Share your Feedback: what did you like about this lab, and what would youchange?

7.1. PROJECT MANAGEMENT 226

Page 237: An Introductory Lab in Embedded and Cyber-Physical Systems

ALab Setup

This appendix describes how to configure hardware and software to support all of thelaboratory exercises in this text.

227

Page 238: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

A.1 Install LabVIEW

From the National Instruments LabVIEW National Instruments LabVIEW 2014 Plat-form DVD or Academic Site License DVD, install the following products

• LabVIEW English• VI Package Manager• Device Drivers• Real-Time → Real-Time Module• FPGA → FPGA Module• FPGA → Compilation Tools for FPGA Devices other than Virtex-II• Simulation and Control → PID and Fuzzy Logic Toolkit• Signal Processing, Analysis, and Math → MathScript RT Module• Software Development and Deployment → Statechart Module• Robotics → Robotics Module

All other packages may be deselected. When prompted for drivers to install, thedefault settings will suffice.

From the LabVIEW National Instruments LabVIEW 2014 for myRIO DVD, usethe default install settings to install the LabVIEW National Instruments LabVIEW2014 for myRIO Module and supporting drivers. The LabVIEW National InstrumentsLabVIEW 2014 module for myRIO may also be downloaded from

http://joule.ni.com/nidu/cds/view/p/id/4223/lang/en

Once all installers are complete, run NI Update Service to update all NI software.

Download two configuration files from the laboratory website,

http://LeeSeshia.org/lab/releases/1.70/labviewConfigurationFiles.zip

and extract its contents to your LabVIEW program directory, commonly

C:\Program Files (x86)\National Instruments\LabVIEW 2014

A.1. INSTALL LABVIEW 228

Page 239: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

Run through Lab 3.4: Program the myRIO Processor from LabVIEW to ensure thesoftware is configured correctly and to add any firewall exceptions needed.

A.1.1 Troubleshooting

When running NI Update Service, I receive the error message “This service has beendisabled by your administrator”: This indicates an environment variable is preventingthe FlexLM software from querying the academic site license – this is a variableset by either Xilinx SDK or other software using FlexLM licensing services. Fromthe System settings, find Environment Variables and record the value of the key“LM_LICENSE_FILE”. Clear the value (temporarily) and run NI Update again. Whenthe update is complete, restore the value of the LM_LICENSE_FILE key.

A.1. INSTALL LABVIEW 229

Page 240: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

A.2 Install Visual Studio Express

Microsoft Visual Studio is used to program CyberSim in C. Microsoft Visual StudioExpress is free for commercial use, and may be downloaded from:

• Microsoft Visual Studio Express 2013 for Desktop (Windows 7 and 8):

http://www.visualstudio.com/en-us/downloads

• Microsoft Visual C++ 2010 Express (Windows XP and Windows Vista):

http://www.visualstudio.com/en-us/downloads/download-visual-studio-vs

A.2. INSTALL VISUAL STUDIO EXPRESS 230

Page 241: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

A.3 Install C & C++ Development Tools

C & C++ Development Tools for NI Linux Real-Time, Eclipse Edition is used toprogram the myRIO processor in C. It is distributed for free and may be downloadedfrom

http://joule.ni.com/nidu/cds/view/p/id/4286/lang/en

Eclipse requires the Java Runtime Environment which may be downloaded from

http://www.java.com/getjava

Next, add the path of the compiler toolchain to the system path. From the WindowsControl Panel, open System and search for “Advanced System Settings→EnvironmentVariables”. Append the toolchain location to the PATH variable, ensuring that youseparate paths with a semicolon. The compile toolchain is installed by default to:

C:\Program Files (x86)\National Instruments\Eclipse\toolchain\gcc-4.4-arm\i386\bin

Remove “ (x86)” if you are on a 32-bit operating system.

Run through Lab 3.3: Program the myRIO Processor from Eclipse to ensure thesoftware is configured correctly and to add any firewall exceptions needed.

A.3. INSTALL C & C++ DEVELOPMENT TOOLS 231

Page 242: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

A.4 Install Xilinx SDK

Download Xilinx SDK 14.4 from the Xilinx website.

http://xilinx.com/support/download/

You will need to search to find Xilinx Software Development Kit 14.4 (2012.4). Youmay need to create a Xilinx online profile to download the software.

Extract the downloaded archive and run xsetup.exe to begin installation. Once theinstaller completes, run a supplemental installer that is copied by default to

C:\Xilinx\14.4\SDK\common\bin\nt64\vcredist_x64.exe

If you are not installing onto a 64 bit operating system, the path for the installer is

C:\Xilinx\14.4\SDK\common\bin\nt\vcredist_x86.exe

Plug in the Xilinx Platform USB Cable II and ensure the driver installs correctly, thenrestart the machine.

If you are on a 64-bit operating system, ensure that the 64-bit SDK is in the desktopand Start Menu (and not the 32-bit, for which JTAG drivers will not be installed).

To allow Xilinx SDK to see myRIO over JTAG, download

http://LeeSeshia.org/lab/releases/1.70/idecode.lst

and replace the existing file

C:\Xilinx\14.4\SDK\SDK\data\cse\idcode.lst

Run through Lab 3.2: Program MicroBlaze from Xilinx SDK to ensure the softwareis configured correctly and to add any firewall exceptions needed.

A.4. INSTALL XILINX SDK 232

Page 243: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

A.5 myRIO JTAG Wiring

Xilinx SDK uses JTAG to download and debug applications for MicroBlaze runningon the myRIO FPGA. This is only supported on myRIO 1950, and you may need tosoldier pin headers onto the JTAG header (J5) (Fig. A.1 and Table A.1).

See myRIO JTAG Instructions L (National Instruments, 2013j) for more informationon JTAG on myRIO.

Figure A.1: JTAG pinout on myRIO 1950.

JTAG Signal JTAG Color myRIO Pin (J5)TDO purple 1 (JTAG_TDO)

VREF red 2 (+1.8V)TCK yellow 3 (JTAG_TCK)TDI white 4 (JTAG_TDI)GND black 5 (GND)TMS green 6 (JTAG_TMS)

Table A.1: myRIO 1950 to JTAG wiring diagram.

A.5. MYRIO JTAG WIRING 233

Page 244: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

A.6 myRIO iRobot Create Wiring

A complete wiring diagram is shown in Fig. A.2, and mounting of myRIO in theiRobot Create is shown in Fig. A.3.

Run through the template project in Lab 5.10: Navigation in Statecharts (Deployment)to verify that communication is established between myRIO and the iRobot Create. Ifsensor data appears on the Front Panel, the configuration is correct.

Visit the myRIO Community4 (National Instruments, 2013h) for additional informationon myRIO.

13 12

11 10 9 8 7 6

5 4 3 2 1

iRobot Create cargo bay connector

25 24

23 22 21 20 17 17 17 16 15 14

myRIO Vcc+iRobot Cargo Pin 12 (+VBat)

myRIO Vcc‐iRobot Cargo Pin 25 (GND)

iRobot Cargo Pin 1 (UART RX)

iRobot Cargo Pin 14 (GND)

iRobot Cargo Pin 2 (UART TX)

iRobot Cargo Pin 14 (GND)

myRIO MXP A connector

Figure A.2: iRobot Create and myRIO wiring diagram. Pinout diagrams replicated fromthe iRobot Create Open Interface (OI) Specification (iRobot, 2006a).

A.6. MYRIO IROBOT CREATE WIRING 234

Page 245: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

z+

y+

x+

Figure A.3: Mounting of myRIO in the iRobot Create, and the resulting coordinate systemfor the onboard accelerometer.

A.6. MYRIO IROBOT CREATE WIRING 235

Page 246: An Introductory Lab in Embedded and Cyber-Physical Systems

APPENDIX A. LAB SETUP

A.7 Kobuki Wiring

Run through the template project in Lab 6.10: Navigation in Statecharts (Deployment)to verify that communication is established between myRIO and the Kobuki. If sensordata appears on the Front Panel, the configuration is correct.

Visit the myRIO Community4 (National Instruments, 2013h) for additional informationon myRIO.

Figure A.4: Kobuki wiring diagram. Pinout diagrams replicated from the Kobuki UserGuide Kobuki User Guide4 (YujinRobot, 2014d).

A.7. KOBUKI WIRING 236

Page 247: An Introductory Lab in Embedded and Cyber-Physical Systems

Bibliography

Bluetooth Special Interest Group, 2003: Bluetooth HID Profile. v1.0. Available: https://bluetooth.org/Technical/Specifications/adopted.htm.

Brooks, C., 2008: Project Management Instructions. Available: http://technology.berkeley.edu/cio/tpo/project/pmresources/tools/Project_Charter_Instructions.doc.

—, 2012a: EECS Instructional Public Documentation - SVN Help. Available: https://inst.eecs.

berkeley.edu/cgi-bin/pub.cgi?file=svn.help.

—, 2012b: Project Management and Embedded Systems. lecture slides for EECS 149, University of California,Berkeley. Available: http://chess.eecs.berkeley.edu/eecs149/projects/Brooks_eecs149_

sp12_ProjectManagementOverview.ppt.

Defense Advanced Research Projects Agency, 2012: Single chip timing and inertial measurement unit.Available: https://commons.wikimedia.org/wiki/File:DARPA_TIMU_Michigan_Penny.jpg.

Dudek, G. and M. Jenkin, 2000: Computational Principles of Mobile Robotics. Cambridge University Press.

Eclipse Foundation, 2013a: Eclipse. Available: http://eclipse.org.

—, 2013b: Eclipse Juno Documentation. Available: http://help.eclipse.org/juno/.

Fisher, C. J., 2010: Using an Accelerometer for Inclination Sensing. Analog Devices application noteAN-1057 v0. Available: http://analog.com/static/imported-files/application_notes/

AN-1057.pdf.

237

Page 248: An Introductory Lab in Embedded and Cyber-Physical Systems

BIBLIOGRAPHY

Freescale Semiconductor, 2013: Xtrinsic MMA8452Q 3-Axis 12-bit/8-bit Digital Accelerometer. docu-ment #MMA8452Q. Available: http://cache.freescale.com/files/sensors/doc/data_sheet/MMA8452Q.pdf.

Hickok, T., 2009: MicroBlaze Interrupts and the EDK. Available: http://chess.eecs.berkeley.edu/eecs149/documentation/th_ublaze_interrupts.pdf.

iRobot, 2006a: Create Open Interface Specification. v2. Available: http://irobot.com/filelibrary/create/Create%20Open%20Interface_v2.pdf.

—, 2006b: Create Owner’s Guide. v430.06. Available: http://irobot.com/filelibrary/create/

Create%20Manual_Final.pdf.

—, 2013: iRobot Create Product Page. Available: http://irobot.com/create.

Jensen, J. C., E. A. Lee, and S. A. Seshia, 2011: An introductory capstone design course on embedded systems.In IEEE International Symposium on Circuits & Systems (ISCAS), special session: Design, Project, &Learning Technology Innovations in Circuits, Signals, & Systems Education, Rio de Janeiro, Brazil, pp.1199–1202. doi:10.1109/ISCAS.2011.5937784.

—, 2012: Teaching embedded systems the berkeley way.

Kodosky, J., J. MacCrisken, and G. Rymar, 1991: Visual programming using structured data flow. In IEEEWorkshop on Visual Languages, IEEE Computer Society Press, Kobe, Japan, pp. 34–39.

Kung, S., L. Onken, and S. Large, 2011: Tortoise SVN. Available: http://tortoisesvn.net/docs/

release/TortoiseSVN_en/.

Lee, E. A., 2006: The problem with threads. Tech. Rep. UCB/EECS-2006-1, EECS Department, University ofCalifornia, Berkeley. Available: http://eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.html.

Lee, E. A. and S. A. Seshia, 2010: An introductory textbook on cyber-physical systems. In Proc. Workshop onEmbedded Systems Education (WESE), pp. 1–6. doi:10.1145/1930277.1930278.

—, 2015: Introduction to Embedded Systems. v2.0. Available: http://LeeSeshia.org.

Lee, E. A., S. A. Seshia, and J. C. Jensen, 2013: EECS 149 - Introduction to Embedded Systems. coursewebsite. Available: http://chess.eecs.berkeley.edu/eecs149.

Microsoft, 2014a: Visual Studio. Available: http://www.visualstudio.com/en-us/products/

visual-studio-express-vs.aspx.

—, 2014b: Visual Studio Get Started. Available: http://www.visualstudio.com/get-started/

overview-of-get-started-tasks-vs.

National Instruments, 2010: LabVIEW Quick Reference Card. P/N #373353D-01. Available: http://ni.com/pdf/manuals/373353d.pdf.

238

Page 249: An Introductory Lab in Embedded and Cyber-Physical Systems

BIBLIOGRAPHY

—, 2012a: Developing Algorithms Using LabVIEW MathScript RT Module: Part 1 - The LabVIEWMathScript Node. Available: http://www.ni.com/white-paper/3256/en.

—, 2012b: Developing Applications with the NI LabVIEW Statechart Module. Available: http://zone.ni.com/devzone/cda/tut/p/id/6194.

—, 2012c: Getting Started with MathScript RT. P/N #373123C-01. Available: http://zone.ni.com/

reference/en-XX/help/373123C-01/lvtextmathmain/ms_getting_started/.

—, 2012d: LabVIEW Statechart Module Help. P/N #372103D-01. Available: http://zone.ni.com/

reference/en-XX/help/372103D-01/.

—, 2012e: MathScript RT Module Functions. P/N #373123C-01. Available: http://zone.ni.com/

reference/en-XX/help/373123C-01/lvtextmath/msfunc_classes/.

—, 2013a: C Support for NI myRIO User Guide. Available: http://joule.ni.com/nidu/cds/view/p/id/4259/lang/en.

—, 2013b: Getting Started with LabVIEW. P/N #373427J-01. Available: http://ni.com/pdf/manuals/373427j.pdf.

—, 2013c: LabVIEW 2013 Help. P/N #371361K-01. Available: http://zone.ni.com/reference/

en-XX/help/371361K-01/.

—, 2013d: LabVIEW 2013 Real-Time Module Help. P/N #370622L-01. Available: http://zone.ni.com/reference/en-XX/help/370622L-01/.

—, 2013e: LabVIEW Product Page. Available: http://ni.com/labview.

—, 2013f: LabVIEW Robotics Simulator Wizard. P/N #372983D-01. Available: http://zone.ni.com/reference/en-XX/help/372983D-01/lvrobodialog/robo_sim_wizard/.

—, 2013g: myRIO 1950 User Guide and Specifications.

—, 2013h: myRIO Community. Available: http://decibel.ni.com/content/community/academic/products_and_projects/myrio.

—, 2013i: myRIO Getting Started. Available: http://ni.com/myrio/setup/getting-started/.

—, 2013j: myRIO JTAG Instructions.

—, 2013k: myRIO Product Page. Available: http://ni.com/myrio.

—, 2013l: myRIO Shipping Personality Reference. Available: http://www.ni.com/white-paper/14655/en.

—, 2014: Learn LabVIEW. Available: http://www.ni.com/academic/students/learn-labview/.

Nintendo, 2013: Nintendo Controllers. Available: http://nintendo.com/wii/console/controllers.

239

Page 250: An Introductory Lab in Embedded and Cyber-Physical Systems

BIBLIOGRAPHY

Orlando, G., 2010: Wii remote image. Creative Commons BY-SA 3.0 via Wikipedia. Available: http:

//en.wikipedia.org/wiki/File:Wiimote.png.

Ozyagcilar, T., 2011: Implementing a Tilt-Compensated eCompass using Accelerometer and MagnetometerSensors. Analog Devices application note AN-4248 v2. Available: http://freescale.com/files/sensors/doc/app_note/AN4248.pdf.

Smith, R., 2012: Open dynamics engine. Available: http://ode.org.

SparkFun Electronics, 2013: Triple Axis Accelerometer Breakout - ADXL335. CC BY-NC-SA 3.0. Available:http://sparkfun.com/products/9269.

Stoops, M., 2008: Wii remote uncovered. GNU Free Documentation License 1.2. Available: http://

wiibrew.org/wiki/File:Wii_Remote_uncovered.jpg.

Suvasa, E., 2011: Gnu logo. Free Art License. Available: https://en.wikipedia.org/wiki/File:

Heckert_GNU_white.svg.

Tortoise SVN Team, 2013: Tortoise SVN Product Page. Available: http://tortoisesvn.net/.

Washington, C., 2009: Designing Applications with the NI LabVIEW Statechart Module. National Instrumentswebcast. Available: http://www.ni.com/webcast/225/en/.

WiiBrew, 2012: WiiMote. Available: http://wiibrew.org/wiki/Wiimote.

Wikipedia, 2013a: Joint Test Action Group. Available: http://en.wikipedia.org/wiki/Jtag.

—, 2013b: Milestone (Project Management). Available: http://en.wikipedia.org/wiki/Milestone_(project_management).

—, 2013c: Project Charter. Available: http://en.wikipedia.org/wiki/Project_charter.

—, 2013d: Wii Remote. Available: http://en.wikipedia.org/wiki/Wii_Remote.

—, 2013e: Work Breakdown Structure. Available: http://en.wikipedia.org/wiki/Work_breakdown_structure.

Xilinx, 2012a: Embedded System Tools Reference Manual. UG111 v14.3. Available: http://xilinx.com/support/documentation/sw_manuals/xilinx14_4/est_rm.pdf.

—, 2012b: LogiCORE IP AXI Timer. DS764 v1.03.a. Available: http://xilinx.com/support/

documentation/ip_documentation/axi_timer/v1_03_a/axi_timer_ds764.pdf.

—, 2012c: MicroBlaze Processor Reference Guide. UG081 v14.4. Available: http://xilinx.com/

support/documentation/sw_manuals/xilinx14_4/mb_ref_guide.pdf.

—, 2013a: EDK support. Available: http://xilinx.com/support/index.html/content/xilinx/en/supportNav/design_tools/embedded_development_kit__edk.html.

240

Page 251: An Introductory Lab in Embedded and Cyber-Physical Systems

BIBLIOGRAPHY

—, 2013b: LogiCORE IP AXI INTC. DS747 v1.04.a. Available: http://xilinx.com/support/

documentation/ip_documentation/axi_intc/v1_04_a/ds747_axi_intc.pdf.

—, 2013c: MicroBlaze Soft Processor Core. Available: http://xilinx.com/tools/microblaze.htm.

YujinRobot, 2014a: Kobuki C++ Driver Specification. Available: https://yujinrobot.github.io/

kobuki/doxygen/enMainPage.html.

—, 2014b: Kobuki Documentation. Available: http://kobuki.yujinrobot.com/home-en/

documentation/.

—, 2014c: Kobuki Quick Guide. Available: http://kobuki.yujinrobot.com/files/3413/5752/

0704/kobuki_quickguide_A3.pdf.

—, 2014d: Kobuki User Guide. Available: http://kobuki.yujinrobot.com/home-en/

documentation/online-user-guide/.

241

Page 252: An Introductory Lab in Embedded and Cyber-Physical Systems

What is the feeling when you’re driving away from people,and they recede on the plaintill you see their specks dispersing?

It’s the too huge world vaulting us,and it’s goodbye.

But we lean forwardto the next crazy venturebeneath the skies.

–Jack Kerouac, On the Road

242