
Use -Wno-dev to suppress it.ĬMake/SlicerVersion.cmake:99 (SlicerMacroExtractRepositoryInfo) Skipping repository info extraction: directory is not a GIT orĬMake/SlicerVersion.cmake:55 (SlicerMacroExtractRepositoryInfo) This software is not intended for clinical use.]Ĭonfiguring Slicer requires admin account Ĭonfiguring Slicer install root Ĭonfiguring Slicer release type ĬMake Warning (dev) at CMake/SlicerMacroExtractRepositoryInfo.cmake:94 (message): Selecting Windows SDK version 1.0 to target Windows 2.Ĭould NOT find Subversion (missing: Subversion_SVN_EXECUTABLE)Ĭonfiguring Slicer organization domain Ĭonfiguring Slicer default home module Ĭonfiguring Slicer default favorite modules Ĭonfiguring Slicer text of disclaimer at startup [Thank you for using %1! LeftEngine.This text message is after configuration and generate via CMake. RightEngine.SetSpeed ((sbyte) -rightSpeed) SteerPID.SetPoint = (sbyte) (-gearRatio * (u + steeringOffset))

LeftSpeed = (sbyte) (driveSpeed * Math.Abs (maxOutput - u) / maxOutput) See if the correction is outside admitted bounds If (Math.Abs (error) deadband) || (Math.Abs (error) = 3*deadband)ĭriveSpeed = (sbyte) (maxDriveSpeed / 3)

Determine if error is within deadband and if not, compute the correction While (!stopDrive.WaitOne (driveSamplingTime))Įrror = (sbyte) (setPoint - reflectedLight) The Sup3r Car model has no differential gearbox on the rear wheels so the differential gearbox must be emulated reducing the speed of the internal wheel during a curve. Last, but very important, thing is to adjust the relative speed of the rear wheels according to direction and intensity of the steering. After that, a fixed additional correction is made to account for the gears backlash than it is fed The correction to the trajectory is than evaluated against the valid range and eventually saturated to the violated boundary. It means that vehicle slows down when a curve is detected, just as a human driver would do. Once the correction, if any, has been computed, an adjustment to the vehicle speed is performed. The external Drive loop is a proportional controller with a dead band on the regulation error this means that if the absolute value of the regulation error is smaller than the defined threshold, no correction is applied to the vehicle trajectory. The Drive Thread is maybe the most interesting of this project. InputSignal with the current value read from the Ev3 Medium Motor tachometer. This thread asynchronously also feeds the

The responsibility of the Sensors Update Thread is to read the values from the sensors and update the corresponding private fields. the Steering Thread whose thread is responsible of steering the front wheels and represents the internal Steer loop controller described in Part 2.the Drive Thread that implements the external Drive loop controller described in Part 2.

the LCD Thread which updates the Ev3 brick LCD with debug information.the Sensors Update Thread whose responsibility is to update the readings from the sensors.SuperCar class starts the following concurrent threads: SuperCar where i just dropped the “3” in Sup3er. The code running on board the Sup3r Car in the track following program, is based on a single class indeed called the ← Part 2 – The control strategy The (simple) code architecture The source code above is happily shared under the Code Project Open Licence (CPOL) 1.02. You can compile the code I propose in this page using Xamarin Studio 5.10.1 (Build 6), with Mono 4.2.1 as active runtime and the Monobrick Firmware Library 1.6 to let it work on board the Lego Mindstorms Ev3 with the Monobrick firmware.
