Installa ROS Kinetic, TurtleBot3, Raspicam su Raspberry Pi 4b: 5 passaggi
Installa ROS Kinetic, TurtleBot3, Raspicam su Raspberry Pi 4b: 5 passaggi
Anonim
Installa ROS Kinetic, TurtleBot3, Raspicam su Raspberry Pi 4b
Installa ROS Kinetic, TurtleBot3, Raspicam su Raspberry Pi 4b

TurtleBot3 Burger viene fornito con Raspberry Pi 3 B/B+ e non supporta il nuovo Raspberry Pi 4b (dal 9/2019). Segui i passaggi seguenti per far funzionare TurtleBot3 su Raspberry Pi 4b, incluso

  • costruire ROS Kinetic da sorgenti su Raspberry Pi 4b Raspbian Buster
  • aggiunta di pacchetti specifici per TurtleBot3
  • aggiungendo raspicam-nodo a

Passaggio 1: installa Raspbian e configura Raspberry Pi 4b

Installa Raspbian e configura Raspberry Pi 4b
Installa Raspbian e configura Raspberry Pi 4b

Scarica un'immagine Raspbian. Ho usato Raspbian Buster datato 2019–07–10.

Masterizza l'immagine Raspbian scaricata su una scheda SD (di almeno 8 Gb di dimensione). Collega un display, una tastiera e un mouse al tuo Raspberry Pi 4b, avvia e connettiti al WiFi. Estendi il file system per occupare l'intera scheda SD e, facoltativamente, abilita SSH e VNC eseguendo

sudo raspi-config

Passaggio 2: scarica le fonti cinetiche ROS

Scarica sorgenti cinetiche ROS
Scarica sorgenti cinetiche ROS

Le istruzioni seguenti seguono il tutorial ROS ufficiale e l'istruzione DmitryM8.

Accedi al tuo Raspberry Pi 4b ed esegui questi comandi per aggiungere il repository del pacchetto ROS, creare strumenti e inizializzare lo strumento di dipendenza ROS.

sudo sh -c 'echo "deb https://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt-get update sudo apt-get install -y python-rosdep python-roinstall-wstool python python-rosinstall build-essential cmake sudo rosdep init rosdep update

Crea uno spazio di lavoro per creare ROS Kinetic dal sorgente.

mkdir ~/ros_catkin_ws

cd ~/ros_catkin_ws

Scarica il codice sorgente per il pacchetto "ros_comm", che contiene moduli essenziali destinati a funzionare sul computer di bordo del robot. Qui rosinstall_generator crea un elenco di repository di codice sorgente da scaricare. wstool procede quindi al download del codice sorgente.

rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall

wstool init -j8 src kinetic-ros_comm-wet.rosinstall rosdep install --from-paths src --ignore-src --rosdistro kinetic -y

Per eseguire TurtleBot3 e raspicam avrai bisogno di questi pacchetti ROS oltre a ros_comm: common_msgs, rosserial, image_common, image_transport_plugins e diagnostics. Per aggiungere questi pacchetti esegui questi comandi.

rosinstall_generator common_msgs common_msgs rosserial image_common image_transport_plugins diagnostics nodelet_core --rosdistro kinetic --deps --wet-only --tar > kinetic-extra-wet.rosinstall

wstool merge -t src kinetic-extra-wet.rosinstall wstool update -j8 -t src rosdep install --from-paths src --ignore-src --rosdistro kinetic -y

Poiché le versioni delle dipendenze cambiano nel tempo, potrebbero esserci errori come "python-rosdistro-modules_0.7.5-1_all.deb (--unpack): tentativo di sovrascrivere '/usr/lib/python2.7/dist-packages/rosdistro/_init_.py', che è anche nel pacchetto python-rosdistro 0.7.2-1". Risolvi questi errori di "tentativo di sovrascrittura":

sudo dpkg --remove --force-all python-catkin-pkg python-catkin-pkg-modules python-rosdistro python-rosdistro-modules python-rospkg python-rospkg-modules

// o sudo apt remove sudo apt --fix-broken install

Passaggio 3: correggi manualmente gli errori di compilazione del ROS

Correggi manualmente gli errori di compilazione del ROS
Correggi manualmente gli errori di compilazione del ROS

La creazione di ROS a questo punto fallirà con vari errori. Risolviamo questi errori modificando manualmente il codice sorgente di ROS.

Modificare

/home/pi/ros_catkin_ws/src/opencv3/modules/python/src2/cv2.cpp riga 885

Sostituire

char* str = PyString_AsString(obj);

insieme a

const char* str = PyString_AsString(obj);

Modifica i file di seguito.

/home/pi/ros_catkin_ws/src/rospack/include/rospack/rospack.h /home/pi/ros_catkin_ws/src/rospack/src/rospack.cpp /home/pi/ros_catkin_ws/src/rospack/src/utils.cpp

Rimuovi tutte le occorrenze di

/tr1

e sostituire tutte le occorrenze di

std::tr1

insieme a

Incremento

Modifica i file di seguito.

/home/pi/ros_catkin_ws/src/actionlib/include/actionlib/client/simple_action_client.h /home/pi/ros_catkin_ws/src/actionlib/include/actionlib/destruction_guard.h /home/pi/ros_catkin_ws/src/actionlib/include /actionlib/server/simple_action_server_imp.h /home/pi/ros_catkin_ws/src/actionlib/src/connection_monitor.cpp /home/pi/ros_catkin_ws/src/actionlib/test/destruction_guard_test.cpp /home/pi/ros_catkin_ws/src/bond_core /bondcpp/src/bond.cpp /home/pi/ros_catkin_ws/src/ros_comm/roscpp/include/ros/timer_manager.h /home/pi/ros_catkin_ws/src/ros/roslib/test/utest.cpp

Sostituisci tutte le occorrenze di

boost::posix_time::millisecondi(…)

insieme a

boost::posix_time::millisecondi(int(…))

Modifica il file qui sotto.

/home/pi/ros_catkin_ws/src/geometry2/tf2/src/buffer_core.cpp

Sostituisci tutto

logAvverti

insieme a

CONSOLE_BRIDGE_logAvviso

e

logError

insieme a

CONSOLE_BRIDGE_logError

Passaggio 4: crea ROS Kinetic

A questo punto la build dovrebbe avere successo.

cd ~/ros_catkin_ws

sudo./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic

Aggiungi a ~/.bashrc ed esegui anche nella tua shell:

source /opt/ros/kinetic/setup.bash

Passaggio 5: crea i pacchetti TurtleBot3 e Raspicam

Costruisci i pacchetti TurtleBot3 e Raspicam
Costruisci i pacchetti TurtleBot3 e Raspicam

Queste istruzioni seguono il tutorial ROBOTIS.

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/ catkin_make source devel/setup.bash

Modifica ~/.bashrc e aggiungi

source /home/pi/catkin_ws/devel/setup.bash

Ora, esegui

cd ~/catkin_ws/src

git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone https://github.com/ROBOTIS-GIT/turtlebot3. git git clone https://github.com/UbiquityRobotics/raspicam_node.git cd ~/catkin_ws/src/turtlebot3 rm -r turtlebot3_description/ turtlebot3_teleop/ turtlebot3_navigation/ turtlebot3_slam/ turtlebot3_example/ cd ~/catkin_make_ws && catkin

La build dovrebbe avere successo.

Configura Raspberry Pi 4b per riconoscere le periferiche USB TurtleBot3.

rosrun turtlebot3_bringup create_udev_rules

Esegui ifconfig e annota l'IP di Raspbery Pi.

ifconfig

Modifica ~/.bashrc. Aggiungi le righe sottostanti ed eseguile anche nella tua shell.

esporta ROS_MASTER_URI=https://YOUR. ROS. MASTER. IP:11311

esporta ROS_HOSTNAME=YOUR. RASPBERRY. PI. IP

Sincronizzare Raspberry Pi e l'ora del PC:

sudo apt-get install ntpdate

sudo ntpdate ntp.ubuntu.com

A questo punto, la configurazione dovrebbe essere completata. Ora puoi usare il tuo Raspberry Pi 4b invece di Raspberry Pi 3/3+ nel tuo TurtleBot3.

Consigliato: