UGV

1 - Vehicle

Pirate-4WD Mobile Platform

Pirate-4WD Mobile Platform is a robotics platform of the DFRobot brand. It is the first robot used in the UviSpace.

The power supply of the robot is a Lithium Polymer battery. This battery has a voltage of 7,4 V (2 cells of 3,7 V each) and 2200 mAh of capacity that supplies power to the 4 DC motors (one per wheel) and to the UGV controller.

It also has some PCB’s:

  • Fuel gauge PCB monitors few battery parameters as the

State Of Charge, the voltage or the temperature. Theese values are transmitted via I2C protocol to the UGV controller.

  • Battery charger PCB allow to charge the battery either using an external

power supply or the Wireless Power Transfer System.

communicates with the main controller in order to deal with two main tasks:

One, transmit the battery parameters to the main controller using a Zigbee module so that it can now if the battery is in good conditions to continue working, and the other is to deal with the navigation of the UGV.

  • Zigbee module

2 - Arduino Romeo v1.1

This is an all-in-one controller board. In this section it will be explained all the important features of the board as well as the programs that implements in the UviSpace.

Link to external web where it can be found all the documentation.

Hardware

Software

In the arduino-UGV-controller repository complete information can be found.

3 - Communications Board

Communications Shield

ZigBee Module

Hardware

Software

WiFi Module

Hardware

Software

4 - Fuel gauge

Some introduction to the functionalities that board implements and explain the reasons that make this board necessary.

Hardware

This section includes all the versions of the fuel gauge PCB that pretends to show the complete history of this board from the very beginning, explaining the first design with all the details and design considerations, to the latest design, including all the new features implemented and tested.

1 - Version 1.0

Here explain the first version that is the one on the Degree thesis included in the pcb-designs repository, inside fuel gauge folder.

2 - Version 1.1

In this PCB version the v1.0 was modified including:

  • The I2C jumpers in order to connect either the PC or the ZigBee to the IC.
  • Rsense traces improved: width of traces modified with tin in order to minimize

the voltage drop in this critical part of the circuit.

3 - Version 2.0

In this PCB version the v1.1 was modified including:

  • Safety shutdown ciruit
  • I2C replacement by a SPDT switch
  • Number of PCB vias reduced dramatically

Firmware configuration

In this section has to be specified how to program all the registers of the IC and how to do the calibration. Also explained the issues that we have found when doing that process the first times. In the past we used the bq34z100. That chip had an error with the alert and it didn’t work. We purchase a new design: the bq34z100-G1. In the voltage calibration process we had allways the same error. Later on, we’ve discoverde the problem was the software used was corrupted. Once we update the software to the latest build, the calibration was perfect.

Battery Management Studio (bqStudio) Software v1.3.80 Build 1 28-SEP-2017 http://www.ti.com/tool/bqstudio?keyMatch=bqstudio&tisearch=Search-EN-Everything

bq34z100EVM Wide Range Impedance Track™ Enabled Battery Fuel Gauge Solution http://www.ti.com/lit/ug/sluu904a/sluu904a.pdf A guide of how to calibrate the fuel Gauge

Drivers for EV2300 can be foud in the repository

5 - Charger

6 - Wireless power transfer

Primary Hardware

Secondary Hardware

Primary Software

————————-UGV explanation Javi—————————— The actuators and sensors of the UGVs are managed by an Arduino board on each of them. Due to the need to control 2 DC-motors, it is an essential requirement of the boards to have a DC motor driver, or include instead an external one. The developed Arduino project was implemented on the laboratory using a board accomplishing the first option, namely the Arduino Romeo board.

The work load on the boards is intended to be minimum, and thus obtain the data from the Data Fusion Controller as processed as possible. The software on them is built from an Arduino project, and is divided into 3 different parts:

  • BoardParams.h is a header containing the PIN mapping of the board and constants relating to the implemented serial protocol (Commands, functions and master/slave identifiers).

  • UGV.ino contains the setup function and the main loop of the program, which is an infinite loop that continually checks incoming messages from the master. The work pipeline when a message is received is the following:

    • Check that the STX initial byte is correct (byte[0]).
    • Read the following auxiliary bytes (byte[1..5]) and store in the corresponding variables (id_slave, id_master, fun_code and length).
    • Read the number of bytes indicated in length variable, and store on data variable.
    • Check that the ETX end byte is correct (byte[length+6]).
    • Call process_message function.
  • Functions.ino contains auxiliary functions that are run in different is situations and always after a message is received and read by the main loop. The aforementioned functions are the following:

    • process_message is the function called after a message is read, and deals with the data received. depending on the value stored in fun_code, different routines are run. In any case, at the end of the function, an ACK_MSG message is sent back to the master (unless an invalid fun_code is received).
    • move_robot gets the speed set point for each wheel motor of the UGV and applies it to the corresponding output PINs. Prior to write on them, the values are clipped if they are out of valid limits. It is also checked if they belong to a direct or reverse direction, and writes accordingly to the direction PINs
    • publish_data is called at the end of the process_message function, and deals with the construction of a valid answer message, according to the serial protocol. Afterwards, it is ‘printed’ to the serial port, in order to be sent back the answer message to the master.

————————-UGV explanation Javi——————————

To operate the vehicle (Roberto Explanation):

  • Connect a charged battery.
  • Press the ON switch and the vehicle should be ready for communication with the main controller.
  • Press the SW2 (Switch 2) in the Arduino Romeo board to switch OFF the vehicle.
  • When the BATTERY STATUS led is red charge the vehicle:
    • Remove the battery and use a LiPo Universal Charger.
    • or set the WIRED/WIRELESS switch to WIRED in the back panel and connect the POWER SUPPLY connector a 12V power supply with 2A or more.
    • or, if the vehicle has WPT system installed, place it centered to the primary coil and switch on the primary coil of the WPT primary board.