-
Notifications
You must be signed in to change notification settings - Fork 10
The Rover
The rover is responsible for exploring the Martian Surface, managing its resources and conveying its results to Mission Control back on Earth. The rover meets these responsibilities using its equipment and sensors stack and its operating system.
The Kernel defines the rover's operating system. At its heart lies a State Machine which governs the behavior of the rover. Following is a list of the states for the rover:
- Listening State
- Transmitting State
- Exploring State (Spectrometer)
- Moving State
- RadarScanning State
- Photographing State
- Sensing State (Lidar)
- Sleeping State
- Hibernating State
The Sleeping State and Hibernating State are passive states and are responsible for conserving battery and recharging the battery respectively. The rest of the states can be understood to be active states and usually define their own protocol buffers to package their data payload.
- Camera
- Radar
- Lidar
- Spectroscope
- TelemetrySensor
- Pacemaker
- Battery & BatteryMonitor
The rover is capable of communicating with Mission Control using 2 kafka channels.
- Rover Transmitting Channel -> curiosity_to_earth_1
- Rover Receiving Channel -> earth_to_curiosity_1
- Using the radio to either receive or send a message reduces its lifeSpan by 1.
Here is a snapshot of the kafka.properties file used to set up the kafka producer and consumer:
zookeeper.connect=localhost:2181 group.id=space.exploration.mars.newRover auto.offset.reset=largest source.topic=earth_to_curiosity_1 destination.topic=curiosity_to_earth_1 metadata.broker.list=localhost:9092 bootstrap.servers=localhost:9092 key.serializer=org.apache.kafka.common.serialization.StringSerializer value.serializer=org.apache.kafka.common.serialization.ByteArraySerializer
It takes anywhere between 8 - 12 minutes for light to travel to mars and vice-versa. This One Way Light Time - is simulated in the rover's radio. For expediency, the delay is scaled up by a factor of 60 - thus it takes anywhere between 8 - 12 seconds for the rover to talk to Mission Control and vice-versa.
Please refer to RoverStatus.proto to understand the rover's default communication protocol.
For any questions or concerns regarding the project, its code - copyrights etc - please use the following contact details.
Sanket Korgaonkar http://github.com/mo3pheus sanket.korgaonkar@gmail.com