Instalación de drivers y puesta en marcha:
sudo apt update
sudo apt install git linux-headers-generic dkms dwarves
cp /sys/kernel/btf/vmlinux /usr/lib/modules/`uname -r`/build/
git clone https://github.com/RinCat/RTL88x2BU-Linux-Driver
cd RTL88x2BU-Linux-Driver
sudo make uninstall
make clean
make
sudo make install
sudo modprobe 88x2bu
sudo reboot
Comprobar que aparece el nuevo adaptador con ip a
Si tras hacer el paso anterior y después de actualizar deja de detectarse el adaptador, tendremos que ejecutar los siguientes comandos:
cd RTL88x2BU-Linux-Driver
sudo make install
sudo modprobe 88x2bu
Y debería volver a aparecer el adaptador en ip a
.
Activar modo AP en el adaptador WiFi:
nmcli d wifi hotspot ifname wlx30de4be0df50 ssid turtlebot4PC band a password 12345678 channel 44
Para ver todos los mensajes relacionados con el adaptador wifi es recomendable usar el comando:
journalctl -f -u wpa_supplicant -u NetworkManager -u systemd-networkd
Y así depuraremos los errores con más facilidad.
Añadir una regla iptables para habilitar el tráfico a modo de router NAT:
sudo iptables -t nat -s 10.42.0.0/24 -A POSTROUTING -j MASQUERADE
Guardar la regla de manera persistente:
sudo su
apt install iptables-persistent
iptables-save > /etc/iptables/rules.v4
Mediante conexión Ethernet, configurar el PC para que tenga IP estática:
- IP: 192.168.185.5
- mask: 255.255.255.0
- gateway: 192.168.185.1
Conectarse mediante ssh al turtlebot [email protected]
(contraseña: turtlebot4) e introducir el comando para configurar la conexión wifi: turtlebot4-setup
Una vez dentro seleccionar Wi-Fi Setup con la siguiente configuración:
Despues guardar y aplicar cambios, se reiniciará y ya tendrá IP.
A partir de este momento desconectaremos el cable ethernet de la RP y nos conectaremos a ella a traves de ssh por la interfaz wifi
Al usar ROS2 Humble es recomendable activar el discovery-server para que solamente se conecte la Raspberry al AP, y que el Create 3 actúe como un cliente local. De esta manera nos ahorramos problemas con el multicasting.
Para activar el Discovery-Server se siguen las instrucciones del manual de usuario.
Al final de todos los pasos deberemos poder ver todos los topics de la raspberry y del Create 3 desde el PC.
En nuestro PC editar el archivo /etc/chrony/chrony.conf
y añadir lo siguiente:
# cnfig ntp sync with turtlebot
server 10.42.0.21 presend 0 minpoll 0 maxpoll 0 iburst prefer trust
# enable serving time to ntp clients on 10.42.0.0 subnet
allow 10.42.0.0/24
# serve time even offline
local stratum 10
Tendremos que abrir el puerto 123 en el protocolo UDP para aceptar peticiones NTP:
sudo ufw allow from any to any port 123 proto udp
Y en la Raspberry editar /etc/chrony/chrony.conf
y añadir:
server 10.42.0.1 iburst prefer
Y reiniciar chrony sudo systemctl restart chronyd
.
De esta forma el PC actuará como servidor NTP. Antes de proseguir comprobaremos con el comando date
que se muestra la misma fecha y hora que en el PC. Puede que debamos ejecutar varias veces el comando date
.
Para tener acceso a internet deberemos editar el archivo /etc/netplan/50-wifis.yaml
para que tenga el siguiente aspecto:
network:
version: 2
wifis:
renderer: NetworkManager
wlan0:
access-points:
turtlebot4PC:
band: 5GHz
password: '12345678'
addresses:
- 10.42.0.21/24
routes:
- to: default
via: 10.42.0.1
dhcp4: false
optional: true
Guardamos la configuración ejecutando sudo netplan apply
. Con esto usaremos la dirección 10.42.0.1 como gateway de todo nuestro tráfico.
Comprobamos que tenemos acceso a internet:
ping 8.8.8.8
Falta añadir los servidores DNS editando el fichero /etc/resolv.conf
y añadiendo el PC como servidor DNS:
nameserver 10.42.0.1
Ahora instalaremos un paquete para poder aplicar la configuración del DNS de forma permanente:
sudo apt update; sudo apt install resolvconf -y
sudo systemctl enable resolvconf.service
sudo systemctl start resolvconf.service
Añadiremos la siguiente linea a /etc/resolvconf/resolv.conf.d/head
:
nameserver 10.42.0.1
Reiniciamos y aplicamos los cambios:
sudo resolvconf --enable-updates
sudo resolvconf -u
sudo systemctl restart resolvconf.service
sudo systemctl restart systemd-resolved.service
Ahora podremos actualizar todo el sistema, taradará un buen rato, así que debemos tener paciencia:
sudo apt upgrade -y;
Para tener una distinción clara cuando se esté conectado a la raspberry se propone cambiar el color del bash prompt y el nombre del host.
Primero editaremos el archivo /etc/hostname
y cambiaremos el nombre por raspberry
.
Despues iremos al archivo ~/.bashrc
y descomentaremos la línea que dice force_color_prompt=yes
. También en la linea que tiene el siguiente aspecto:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
Cambiaremos el color verde [01;32m]
por el color rojo [0;31m]
justo antes de donde pone \u@\h
.
Aplicaremos los cambios completamente reiniciando la raspberry.
Para que el lidar no esté girando en todo momento, y solo cuando hay un nodo suscrito a su topic /scan
se recomienda deshabilitar el nodo turtlebot_diganostics siempre y cuando no vayamos a necesitarlo.
Para ello editaremos el archivo /etc/turtlebot4/setup.bash
y cambiaremos la variable de entorno TURTLEBOT4_DIAGNOSTICS
a 0.
En el caso de que hayamos completado toda la configuración y funcione todo correctamente, se recomienda crear una imagen a modo de copia de seguridad.
En el PC ejecutaremos el siguiente comando:
ssh [email protected] 'sudo dd if=/dev/mmcblk0 bs=4M' > ~/backup_rp_img.img
Guardaremos la imagen para disponer de ella en un futuro si hiciera falta.
El Create 3 tiene configurada la zona horaria en UTC, mientra que la zona horaria en Valencia es CEST (UTC +2), por lo que está 2 horas con retraso. De momento no se consigue configurar para que vaya correctamente.
Como por el momento no se ha conseguido cambiar la zona horaria del Create 3 para que esté sincronizado con el PC y la Raspberry, lo que se propone es cambiar la zona horaria tanto en el PC como en la Raspberry a Greenwich Mean Time (GMT). De la siguiente manera:
timedatectl set-timezone GMT
Esto es una solución provisional, ya que lo ideal es que estemos usando la hora correcta en todos los ordenadores, y no acoplarnos a la hora incorrecta. Pese a esto, no soluciona los mensajes de error y el problema de sincronización sigue presente.