Irrbloss 4G Rover

I have redesigned my Irrbloss 4G Rover, it is bigger and not as top heavy as the old one.
The camera is located slightly behind and quite high up on the rover to get a better view when driving.
This one is also more rigid and stronger.
I use the same control station with some modifications.
It can be controlled by Wifi or 4G and the FPV video/audio is also transmitted in the same way.

So I can drive everywhere where there is 4G coverage.
The default FPV resolution is 800x480 20fps, i can increase it but that will increase the lag.
The video lag over 4G about 150ms and the audio i think is 500ms.
The control signal delay is about 40ms.

Both the rover and control station uses a Raspberry Pi 3 as brain.

All the logic (code) is in two Steelsquid Kiss OS modules.
But the modules depends on all the logic inside Steelsquid Kiss OS.
And also a html page that contains the settings and map view.

Pictures of the control station

And here is the remote control and my son's hand :-)



Pictures of the rover

Here are a bunch of pictures of the new rover.



Different parts of the Control station

The control station is the server and the rover is connecting to it as client.
That is because the control station is on my home internet connection where i have a public IP.
But the rover has i USB 4G modem that not have public IP.
Below I just list all the different parts of the contol station.
  • Microphone
    On the top i added a microphone (The long stick that sits at the top).
    By pushing and holding the "Transmit Speech" button the microphone will record the sound (me speaking)
    When the button is released the recording will be transmitted to the rover and played on the speaker.
    The microphone is a cheap USB mic.

  • Telemetry display
    Above the main display i have a extra display that show important information (about the same information that shown on the map view on the main display.)
    But when i drive i can not look at the map view, so that is way i have this extra display.
    The display is a LCD that is controlled by UART so the refresh rate is not that good.
    http://digole.com/index.php?productID=1218

  • Speakers
    On the side of the main display i have the speaker so i can hear sound from the rover.

  • Main display
    On the main display you can see the FPV view, a map with telemetry data and settings.
    The map shows where the rover is and also some useful information.

    And here is the settings view

    The settings is transmitted to the rover either over the 4G (like all the other control signals) or direct on the local LAN. The first time when the rover don't have the IP of the control station i use the direct LAN to transmit the settings.
    When that is done the rover knows the IP of the control station ant can then use the 4G to save new settings.
    You can also change the bitrate, fps and resolution of the FPV feed.
    I also have a nave YouTube playlist, i can add links to YouTube songs  and when pressing the "Play YouTube" button it will play on the rover.

  • Small OLED diplay
    On the small OLED display i print uptime of the controll station, wired IP, WAN IP and IP of the rover.

    The rover IP is the IP-number that the rover has on the 4G Modem. That is not a public IP So I really do not have any use for it.
    I also print status of the different connection to the rover (Y=Connected, N=No connection).
    SYN: Sync variables between rover and control station.
            For example is headlight on, transmit video stream...
    COM: Send command from the control station to the rover.
              For example save settings, siren for 1 second...
    BIN: Send binary data to and from the rover.
            For example when i transmit speech from the control station to the rover.
    PUSH1/2: Push data from control station to the rover without response back (as quick as possible)
                    Send the drive signal...steer left and right  (Right joystick)
                    Send the tilt/pan camera signal (Left joystick)

  • Status LED's
    I have 8 status LED's.

    The left LED's will light when i press the blue buttons on the bottom (1 to 4).
    A sound will play and if:
    1 Will animate a heart on the led matrix on the rover.
    2 Will show a smile on the led matrix on the rover.
    3 Will show a angry face on the led matrix on the rover.
    4 Will show a waving man on the led matrix on the rover.
    The right LED's show:
    - Is the control station connected to to network.
    - Is the rover connected to the control station.
    - Has the rover GPS connection:
    - Red flash if some error.

  • Keyboard
    - On the small keyboard i can use to input new  settings.
    - Change bitrate on the fly.
    - Set home position on the map.
    - Start/stop timer (Mission time).
    - Increase decrease volume.
    - Zoom in out on the map.
    - Select if i want the map to follow were the rover is.
    - Take a screenshot (Will save to USB-memory).
    - Write a text and the text will speak on the rover with computer voice.

  • Button: Play YouTube
    The rover will start streaming from the play list and playing in the speakers.

  • Button: TCP Video Stream
    Toggle between use TCP or UDP when streaming the video from the rover.
    UDP can have some interruption in the video but the latency is smaller than with TCP.

  • Button: High Beam
    Turn on the weketory 7 inch 60W 4D 5D LED Work Light Bar and 6 Eagle Eye Light 10W.

  • Button: Headlight
    Turn on 8 3w eagle eyes. 4 yellow to the sides, 2 white to front and two red to back.
    Also turn on two COB LED bar, white on front red on back.
    And inside the frame there is a Read, green, blue LED list  (just for show...)

  • Button: Transmit Speech
    By pushing and holding the "Transmit Speech" button the microphone will record the sound (me speaking)
    When the button is released the recording will be transmitted to the rover and played on the speaker.
    The microphone is a cheap USB mic.

  • Button: Is Away
    The headlights will flash on the rover and a voice will say: The driver is temporarily away, please don't touch the robot.

  • Button: Show Settings
    This will show the settings view on the main display.

  • Button: Show Video Stream
    Make the rover transmit the video, audio stream and show it on the main display.

  • Button: Show Map
    Display map that show where the rover is and some other data

  • Button: Save stream to USB
    This will show the FPV video/audio stream and also save it to the USB memory.
    I have not bean able to mux the video, audio and map so there will be three video files.
    One with the FPV view, one with the audio and one with the map.
    Then I can join them in external video editing programs.

  • Button: Mute
    If i don't want to hear the FPV audio stream.

  • Button: Use external HDMI
    Will switch the picture to external display.

  • Button: Siren for 1 second
    Will make the siren on the rover sound for 1 second.

  • Button: Follow Waypoints
    Working on this...

  • Button: Follow Road
    Working on this...using vanishing point detection to follow the road

  • Button: Cruise Control
    On every press on this button the speed of the rover will increase by 5 percent.
    And double press will decrease by 5 percent.
    You steer the rover by turn the nob on the joystick below.
    As soon as you move the joystick up or down the rover will stop...cruise off.

  • Radio/Wifi/4G control
    The radio (433Mhz) is broken...do not use it.
    You can change if the rover shall use the wifi card or the USB modem to connect to the control station.

  • Button: 1, 2, 3, 4
    Will play sound and show animation on the 8x8 LED matrix on the rover.
    1 Will animate a heart and play a wolf whistle.
    2 Will show a smile and play a pling sound.
    3 Will show a angry face and play a monster roar.
    4 Will show a waving man and play a car horn.

  • Right Joystick
    Use this to drive the rover.
    Turn the knob will rotate the rover on the spot.
    If cruise control is activated the knob will steer the rover.

  • Left Joystick
    Pan and tilt the camera.
    In stabilization mode you can only tilt the camera, the camera will also stabilize for movements.
    By twisting the know in the joystick you enter pan mode, you can then also pan the camera. But then there is no stabilization.
    Twist know again to enter stabilization mode again.

  • Battery
    At the bottom of the control station there is plate with velcro on.
    And on the side two yellow connectors, so you can connect two batteries if you want.


Different parts of the Rover

  • Motor and suspension
    The motors is 6 ServoCity 437 RPM HD Premium Planetary Gear Motor.
    Each motor have some ferrite blocks to remove DC motor interference and a PTC fuse to protect from over current.
    The PTC vill hold at 5A but always trip at 10A.


    Shocks is 130mm Aluminum Robot Shocks. I have two on each wheel.
    And i have stiffer springs on the back wheel (heaviest there).
    Also add some extra spring s between the arms of the suspension (the rover is pretty heavy).
    The cable tie that goes from the top stop bracket to the suspension arm is there to stop before the shocks extend to much, and the stop bracket with the small rubber list is to stop the shocks from compress too much (Think they can get damaged otherwise).

  • Drive strait
    If you drive straight (no more that 4% diff between left and right wheels) the Adafruit BNO055 Absolute Orientation Sensor will kick in and make it go straight.
    Every time you stop steer (not move joystick left or right) the heading from BNO055 is set to zero. And then if a bump in the road make it go left or right the motors will compensate for that and make it go back to the previous heading.
    If speed is over 20%
    • If rover pulling right, the left side motors will slow down.
    • If rover pulling left, the right side motors slow down.
    If speed is under 20%
    • If rover pulling right, the right side motors speed up.
    • If rover pulling left, the e side motors speed up.

  • Headlight and high beam
    The headlight and hight beam can be activated from the control station.


  • Speaker and microphone
    The speaker that play sound from YouTube playlist, speech from control station and other sounds.
    And the microphone that record sound from the rover to the control station.
     
    I had to encapsulate the microphone electronics in a metal pipe and connect it to ground.
    Otherwise it get some bad interference. 

  • Batteries
    The batteries is located at the bottom of the frame and is protected by black aluminium plates.

  • Camera and USB modem
    High up and to the back of the rover the camera and USB modem is located.
    I want the camera in that position to better see where the wheel of the rover is.
    And the modem i of course want i high as possible.
    There also is a LED matrix where i can show simple pictures and animations.

  • Power, OLED and GPS
    The back left box contains the power distribution board, a OLED to show IP-number and the GPS.
    In the bottom box there is also a lot of electrolytic capacitors. If there is a drop in the power from the batteries i hope this will kick in...but probably not necessary.
    The OLED and GPS in connected to the Raspberry Pi 3 i the box to the right of the.
    There is two power on switch, one pre charge (black) and then the main (metallic) power switch.
    First i switch the pre charge to load all the electrolytic capacitors, it has a power resister connected in series so the inrush of current will be smaller.
    The after some seconds i switch on the main switch.

  • Motor controller
    In the box on the back of the rover has the motor controller. I first had it in the power box but it made to interference so moved it to the back.
    And i also had to add a small fan to cool it.


  • Raspberry Pi
    The back right box contains the Raspberry Pi and other electronics.
    On the top of the box i have a fuse box.
     - 7.5A for the Raspberry Pi, gimbal and other electronic
     - 10A for the lighting
     - 40A for the motor controller
    Inside the box is:
     - Raspberry Pi
     - Servo controller (Adafruit 16-Channel 12-bit PWM/Servo Driver)
     - Summer
     - 
    Adafruit BNO055 Absolute Orientation Sensor
     - And a LC-filter to filter out interference from the motor controller.
    I had to make a extra cover to the end of the box to fit the cables. And there a also have a ADC (ADS1015 12-Bit ADC).
    I use the ADC to calculate the battery voltage.

  • Step-Down (Buck) Switching Regulators
    In the left upper box is two voltage converters.
    The small with display output 12V to the camera gimbal
    And the large outputs 5V to the Raspberry Pi

  • Relays switches
    In the right front box i have relays to control:
     - Siren 
     - Headlight
     - High Beam
    In the small box i have a buck converter to get 12V to the headlight.
    The siren and high beam use battery voltage (about 15-16V).


Work log

Just some steps from the build...
On the old rover some of the screws came loos so I use loctite on all screws, 
Some of the steps below is changed later in the build...
  • Bottom U-beam
    Where the suspension arm is connected. On the old rover this was a long U-beam, but on this i use 3 small instead so the batteries can be mounted between them.


  • Suspension arms
    Then its time for the suspension arms to be connected to the U-beam.
    And a also have two fixing on each side of the joint. On the old rover the screw was bent when drive hard.
    The suspension arms is also much longer...

    I use Lucas red n tacky grease for the joint.


  • Motor fixing
    On each of the suspension arms i need to connect the motor fixing bracket.

  • Fixings for upper U-beam and suspension arm strengthen
    Add some fixing to connect the lover U-beam to the upper U-beam. 
    And some extra fixings to strengthen the suspension arms.

  • Light holdings
    I also add the light holding to the lover U-beam.
    https://steelsquid-org.firebaseapp.com/irrbloss2/irr_60.jpg

  • Change oil in the shocks
    I change to higher viscosity oil in the shocks.

  • Upper U-beam
    Add the bracket that stop the suspension to go to low.

  • Connect upper and lower U-beam
    The lover U-beam is connected to the upper U-beam.

  • Camera and USB modem platform

  • Mount shocks


  • Back and front light fix plate
    Add aluminium plate on the front and back that can hold the headlights.


  • Headlights and high beam
    Mount the high beam front and rear headlight.
    Later on i mount the LED bars and the side light.

  • All the electronics





  • Mount the DC motors