Git Product home page Git Product logo

retina's Introduction

ch.ethz.idsc.retina+gokart Build Status

Sensor and actuator interfaces, Gokart software

The repository was developed with the following objectives in mind

  • interface sensors without loss of precision or temporal resolution
  • interface actuators of gokart using a protocol that is specific to the MicroAutoBox implementation

The code in the repository operates a heavy and fast robot that may endanger living creatures. We follow best practices and coding standards to protect from avoidable errors. See development_guidelines

Features

  • interfaces to lidars Velodyne VLP-16, HDL-32E, Quanergy Mark8, HOKUYO URG-04LX-UG01
  • interfaces to event based camera Davis240C with lossless compression by 4x
  • lidar based localization
  • simultaneous localization and mapping for event-based vision systems inspired by Weikersdorfer/Hoffmann/Conradt, reliable waypoint extraction and following
  • offline processing of log data

Gallery

usecase_gokart

Trajectory pursuit

planning_obstacles

Static obstacles

autonomous_braking

Autonomous braking

visioneventbased

Event-based SLAM, Fig. 8

Architecture

Source file size distribution

retina

We use LCM for message interchange. All messages are encoded using a single type BinaryBlob. The byte order of the binary data is little endian since the encoding is native on most architectures.

GOKART

gokart_operation

Actuation

PriorityModulePurposeRimoSteerLinmotMisc
HardwareSteerBatteryChargerprevent overcharging of batteryX
HardwareLinmotFireFighterprevent brake hardware damageX
EmergencyLinmotCoolingModuleno acceleration while temperature of linmot criticalX
EmergencyMiscEmergencyModuleno acceleration with steering battery lowX
EmergencySteerEmergencyModuleno acceleration with uncalibrated steeringX
EmergencyVlp16ClearanceModuleno acceleration towards a close obstacleX
EmergencyEmergencyBrakeProviderbrake maneuver based on obstacle in pathX
EmergencyLinmotTakeoverModuleswitch linmot to passive when driver pushes brake pedalX
EmergencyDeadManSwitchModulebrake if driver doesn't use joystick and gokart is above certain speedX
CalibrationSteerCalibrationProviderexecute steering calibration procedure, duration ~5[s]X
CalibrationLinmotCalibrationProviderexecute calibration of brake, duration ~4[s]X
CalibrationMiscIgnitionProviderACK of communication problem to microautobox by human operator, duration 0.3[s]X
ManualRimoTorqueJoystickModuletorque control by joystickX
ManualSteerJoystickModulesteering control by joystickX
ManualLinmotJoystickModulebraking by joystickX
TestingRimoComponentinteraction with motors in GUIX
TestingSteerComponentinteraction with steering in GUIX
TestingLinmotComponentinteraction with brake in GUIX
TestingMiscComponentinteraction with misc in GUIX
SafetyLinmotSafetyModuleno acceleration with brake disabledX
AutonomousPurePursuitRimocontrol of speed during pure pursuit trajectory followingX
AutonomousPurePursuitSteersteering during pure pursuitX
FallbackRimoPutFallbackzero torque on motorsX
FallbackSteerPutFallbackzero torque on steering columnX
FallbackLinmotPutFallbackmaintain operation in home positionX
FallbackMiscPutFallbacknormal operation, all LEDs offX

LIDAR

Velodyne VLP-16

  • point cloud visualization and localization with lidar video

Velodyne HDL-32E

  • 3D-point cloud visualization: see video

distance as 360[deg] panorama

velodyne distances

intensity as 360[deg] panorama

intensity

Quanergy Mark8

  • 3D-point cloud visualization: see video

HOKUYO URG-04LX-UG01

urg04lx

our code builds upon the urg_library-1.2.0

DVS

IniLabs DAVIS240C

Rolling shutter mode

05tram

04peds

00scene

Global shutter mode

dvs_2500

2.5[ms]

dvs_5000

5[ms]

Events only

dvs_noaps_1000

1[ms]

dvs_noaps_2500

2.5[ms]

dvs_noaps_5000

5[ms]

AEDAT 2.0, and AEDAT 3.1

  • parsing and visualization
  • conversion to text+png format as used by the Robotics and Perception Group at UZH
  • loss-less compression of DVS events by the factor of 2
  • compression of raw APS data by factor 8 (where the ADC values are reduced from 10 bit to 8 bit)

Device Settings

Quote from Luca/iniLabs:

  • Two parameters that are intended to control framerate: APS.Exposure and APS.FrameDelay
  • APS.RowSettle is used to tell the ADC how many cycles to delay before reading a pixel value, and due to the ADC we're using, it takes at least three cycles for the value of the current pixel to be output by the ADC, so an absolute minimum value there is 3. Better 5-8, to allow the value to settle. Indeed changing this affects the framerate, as it directly changes how much time you spend reading a pixel, but anything lower than 3 gets you the wrong pixel, and usually under 5-6 gives you degraded image quality.

We observed that in global shutter mode, during signal image capture the stream of events is suppressed. Whereas, in rolling shutter mode the events are more evenly distributed.

streaming DAT files

hdr

streaming DAVIS recordings

shapes_6dof

generating DVS from video sequence

cat_final

synthetic signal generation

synth2

synth1

Integration

Due to the rapid development of the code base, retina is not yet available as a maven artifact. Instead, download the project and run mvn install on your machine. Subsequently, you can use the project on your machine as

<dependency>
  <groupId>ch.ethz.idsc</groupId>
  <artifactId>retina</artifactId>
  <version>0.0.1</version>
</dependency>

retina's People

Contributors

datahaki avatar themarcheim avatar marcheim avatar valentinacavinato avatar ynager avatar alezana avatar gzardini avatar jelavice avatar nisaak avatar jzilly avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.