Lanciers: Difference between revisions

From Rsewiki
Line 13: Line 13:
Each of the robots consists of two motors and a driver board of the same type used by Regbot.
Each of the robots consists of two motors and a driver board of the same type used by Regbot.


* Motor is type JGB37-545 with 1:10 or 1:18 gearing.
* Motor is type JGB37-545 with 1:10 or 1:19 gearing.
* The external gear has 84/24 teeth.
* The external gear has 84/24 teeth.
* The wheel distance is 14.5cm
* The wheel distance is 14.5cm

Revision as of 14:29, 25 September 2025

Lanciers demo robots

Eight of these robots are planned to perform a group performance, similar to one of the tours in Lanciers.

Therefore, the robot is called a dancer, and the robot group manager a dance master.

Hardware

The robot

Each of the robots consists of two motors and a driver board of the same type used by Regbot.

  • Motor is type JGB37-545 with 1:10 or 1:19 gearing.
  • The external gear has 84/24 teeth.
  • The wheel distance is 14.5cm
  • Wheel diameter 7.3cm
  • The robot's total mass is 1.35 kg.
  • Motor mass is 270g each.
  • The PCB mass is 98g.
  • The 2.2 Ah battery mass is 167g.

Dance master

The dance master is a Raspberry Pi.

The communication between the two is a (maybe one-way) LoRa radio connection at 433 MHz.

The dance master obtains the position of each dance from either Optitrack or by using a camera. The robots are then either equipped with a unique pattern of reflectors or a unique ArUco code.

Radio RFM98W to Regbot 6.3 board

Connector 1 (5-pin JST-ph 2mm)

1 black  - 3.3V
2 red    - SCK
3 white  - MOSI
4 yellow - MISO
5 orange - GND

Connector 2 (line sensor 10-pin connector)

1, 2 NC
3 blue   - DIO0
4 green  - DIO5
5 yellow - reset
6 orange - NSS (CS)
7 red    - DIO1
8 brown  - DIO4
9,10 NC

LoRa radio

The LoRa radio connection uses an RFM98W radio module from HOPERF Electronics.

Connections

ant                  GND
GND      top        DIO5
DIO3     view      reset
DIO4            NSS (CS)
3.3V     RFM         SCK
DIO0     98W        MOSI
DIO1                MISO
DIO2                 GND

Antenna 16cm wire.

Dancer side

On the dancer side, the library used is the RFM98W_library from https://github.com/weustace/LoRaLib.

The configuration is controlled by 6 register values, of which only 4 are used:

 /*  # data sheet
  *  # register
  *  # byte 1: reg 1D, 4msb = BW 7 = 125 kHz, 9 = 500 kHz, 4 = 15.6 kHz
  *  #                 4lsb = error coding 2 = 4/5, 8=4/8
  *  # byte 2: reg 1E, 4msb spreading factor: 7=128 chips / symbol, 9=512 c/s, c=4096 c/s
  *  #                 4lsb mode: 4 = CRC on
  *  # byte 3: reg 09, bit 7=PAboost 1=used, 0=not, bit 6-4 = base power 0=10.8dBm,
  *                    4lsb power reduction 0=full power, 8 = half power f=minimum power (1dBm)
  *  # byte 4,5 not used.
  *  # byte 6: reg 26, 4msb = 0,
  *  #                 4lsb: 4=AGC internal, not mobile, C= AGC internal + mobile node
  */
 byte my_config[6] = {0x72,0x74,0x8F,0xAC,0xCD, 0x0C}; // fair - Pi ok
 radio.configure(my_config);
 radio.setFrequency(434700000);

This gives the following:

  • The bandwidth used is 125kHz with coding rate of 4/5 (minimal overhead of 25%).
  • Spreading factor 7 increases the sensitivity by 7.5dB
  • Automatic AGC loop and flag as mobile.

The first two values need to be equal on both the receiver and the transmitter.

An interrupt is activated when a message is received. This should enable the rapid implementation of new mission plans without the need for constant polling for messages.

Note that at times, garbage is received, but then the CRC will return false.

Dance master side

The dance master is on the Raspberry Py and uses the pyLoraRFM9x library.

This is configured with 3 bytes:

from pyLoraRFM9x import LoRa, ModemConfig
import time
from enum import Enum
class MC(Enum):
   Bw125Cr45Sf128 = (0x72, 0x74, 0x04) # Radiohead default
   fast = (0x92, 0x74, 0x0C) # a bit too much (500kHz bandwidth)
   fair = (0x72, 0x74, 0x0C) # mobile bit set (used)

The full setup is when the radio is instantiated:

#    LoRa(CS pin, interrupt, ID, port, reset, frq,  Tx power, modem config, ack
lora = LoRa(1,     24,      127,   0,    25, 434.7, 10,        MC.fair,    True)
  • Uses chip select pin 1 (GPIO7, NSS on radio), reset is pin GPIO25, and tx-interrupt is GPIO 24 (DIO0 on radio side).
  • The device port is 0 (pins GPIO9 (MISO), GPIO10 (MOSI), and GPIO11 (CLK).
  • Additionally, 3.3V and ground are connected.
  • In total, 10 pins of the Raspberry Pi connector are used.

Dancer software

Dancer software is an extended version of the Regbot software, where IO is extended to accept commands from the LoRa receiver. No return channel is enabled.

Version 0 control parameters:


Firmware

The Lanciers firmware is identical to Regbot firmware.

The radio communication is enabled by

rfmuse 1

It can then be enabled at boot by saving the status to flash

eew

This allows commands to be sent through the radio channel.

Dance master software

To be made.