Índice:
- Etapa 1: O que funcionou e o que não funcionou
- Etapa 2: Instalação de drivers Freenect e Freenect_stack
- Etapa 3: Instalação do RTAB MAP independente
- Etapa 4: Instalando Rtabmap_ros
- Etapa 5: Mostrar hora
- Etapa 6: Referências
Vídeo: RGB-D SLAM com Kinect no Raspberry Pi 4 [Buster] ROS Melódico: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
No ano passado, escrevi um artigo sobre como construir e instalar o ROS Melodic no novo (naquela época) Raspberry Pi com Debian Buster OS. O artigo tem recebido muita atenção tanto aqui no Instructables quanto em outras plataformas. Estou muito feliz por ter ajudado tantas pessoas a instalar com êxito o ROS no Raspberry Pi. No vídeo que acompanha, também demonstrei brevemente como obter imagens de profundidade do Kinect 360. Mais tarde, várias pessoas me contataram no LinkedIn e me perguntaram como eu consegui usar o Kinect com Raspberry Pi. Fiquei meio surpreso com a pergunta, já que o processo de preparação do Kinect naquela época demorava cerca de 3 a 4 horas e não parecia extremamente complicado. Eu compartilhei meus arquivos.bash_history com todas as pessoas me perguntando sobre o problema e em abril finalmente encontrei tempo para escrever um artigo sobre como instalar drivers do Kinect e executar RGB-D SLAM com RTAB-MAP ROS. Semana de noites sem dormir depois de começar a escrever o artigo, agora entendo por que tantas pessoas me fizeram essa pergunta:)
Vou começar com uma breve explicação sobre quais abordagens funcionaram e quais não funcionaram. Em seguida, explicarei como instalar os drivers do Kinect para uso com ROS Melodic e, finalmente, como configurar sua máquina para RGB-D SLAM com RTAB-MAP ROS.
Etapa 1: O que funcionou e o que não funcionou
Existem alguns drivers disponíveis para Kinect no Raspberry Pi - dois deles são suportados pelo ROS.
Drivers OpenNI - pacote openni_camera para ROS
drivers libfreenect - pacote freenect_stack para ROS
Se você olhar seus respectivos repositórios GitHub, poderá descobrir que o driver OpenNI foi atualizado pela última vez há anos e, na prática, é EOL há muito tempo. ibfreekinect, por outro lado, está sendo atualizado em tempo hábil. O mesmo para seus respectivos pacotes ROS, freenect_stack foi lançado para ROS melódico, enquanto a última distro openni_camera listou suporte para é Fuerte…
É possível compilar e instalar o driver OpenNI e o pacote openni_camera no Raspberry Pi para ROS Melodic, embora não tenha funcionado para mim. Para fazer isso, siga este guia, as etapas 1, 2, 3, nas etapas 2 e 3, remova o sinalizador "-mfloat-abi = softfp" do arquivo Platform / Linux / Build / Common / Platform. ARM (por conselho sobre este Problema do Github). Em seguida, clone o pacote openni_camera em seu espaço de trabalho catkin e compile com catkin_make. Não funcionou para mim, o erro foi a falha na criação do gerador de profundidade. Motivo: a interface USB não é compatível!
Usar libfreenect e freenect_stack rendeu sucesso no final, mas havia alguns problemas para resolver e a solução era um pouco hacky, embora funcionando muito estável (1 hora + operação contínua).
Etapa 2: Instalação de drivers Freenect e Freenect_stack
Presumo que você use minha imagem ROS Melodic Desktop deste artigo. Se você deseja fazer a instalação em um ambiente diferente, por exemplo ros_comm image ou no Ubuntu para Raspberry Pi, certifique-se de ter conhecimento suficiente sobre ROS para resolver problemas que possam surgir dessa diferença.
Vamos começar compilando os drivers libfreenect a partir do código-fonte, já que a versão pré-compilada do repositório apt-get está muito desatualizada.
sudo apt-get update
sudo apt-get install libusb-1.0-0-dev
git clone
cd libfreenect
mkdir build && cd build
cmake -L..
faço
sudo make install
Esperançosamente, o processo de construção será sem intercorrências e cheio de mensagens ecológicas. Depois de instalar o driver libfreenect, a próxima coisa a fazer é instalar o pacote freenect_stack para ROS. Existem alguns outros pacotes dos quais depende, teremos que cloná-los e construir com catkin_make todos juntos. Antes de começar, certifique-se de que seu espaço de trabalho do catkin esteja configurado e fornecido corretamente!
Na pasta src do espaço de trabalho catkin:
git clone
git clone
git clone
git clone
git clone
git clone
Uau, isso foi muita clonagem.
EDIÇÃO MAIS TARDE: Como foi apontado por um dos meus leitores, o repositório vision_opencv precisa ser definido como ramo melódico. Para esse cd para src / vision_opencv e execute
git checkout melódico
Em seguida, volte para a pasta do espaço de trabalho do catkin. Para verificar se temos dependências para todos os pacotes no local, execute este comando:
instalação do rosdep --from-path src --ignore-src
Se você clonou com sucesso todos os pacotes necessários, ele solicitará o download do libfreekinect com apt-get. Responda não, uma vez que já o instalamos a partir do código-fonte.
sudo apt-get install libbullet-dev libharfbuzz-dev libgtk2.0-dev libgtk-3-dev
catkin_make -j2
Hora do chá;) ou qualquer que seja sua bebida favorita.
Após a conclusão do processo de compilação, você pode tentar iniciar a pilha do kinect e verificar se ela produz a profundidade e as imagens coloridas de maneira adequada. Eu uso o Raspberry Pi sem cabeça, então preciso executar o RVIZ no meu computador desktop.
No Raspberry Pi, faça (altere o endereço IP para o endereço IP do seu Raspberry Pi!):
exportar ROS_MASTER_URI = https://192.168.0.108: 11311
export ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration: = true
Você verá a saída como na captura de tela 1. "Parando o dispositivo RGB e a descarga de fluxo de profundidade." indica que o Kinect está pronto, mas nada está inscrito em seus tópicos ainda.
Em seu computador desktop com ROS Melodic instalado, faça:
exportar ROS_MASTER_URI = https://192.168.0.108: 11311
export ROS_IP = [your-desktop-computer-ip] rviz
Agora você deve ser capaz de ver os streams de imagem RGB e Depth no RVIZ como na captura de tela 2 acima … mas não ao mesmo tempo.
Ok, aqui é onde as coisas hacky começam. Passei 3 dias tentando diferentes drivers e abordagens e nada funcionou - assim que tentasse acessar dois streams simultaneamente, o Kinect começava a expirar, como você pode ver na imagem 3. Tentei de tudo: melhor fonte de alimentação, commits mais antigos de libfreenect e freenect_stack, parando usb_autosuspend, injetando água sanitária nas portas USB (ok, não o último! não faça isso, é uma piada e não deve constituir um conselho técnico:)). Então, em um dos problemas do Github, vi o relato de uma pessoa que disse que seu Kinect era instável, até que "carregou o barramento USB" conectando um dongle WiFi. Eu tentei isto, e funcionou. Por um lado, estou feliz que funcionou. Por outro lado, alguém realmente deve consertar isso. Bem, enquanto isso (meio que) corrigimos isso, vamos passar para a próxima etapa.
Etapa 3: Instalação do RTAB MAP independente
Primeiro, temos um monte de dependências a serem instaladas:
Apesar de haver um pacote armhf pré-construído disponível para PCL, precisaremos compilá-lo a partir do código-fonte devido a esse problema. Consulte o repositório GitHub PCL para ver como compilá-lo a partir do código-fonte.
sudo apt-get install libvtk6-dev libvtk6-qt-dev libvtk6-java libvtk6-jni
sudo apt-get install libopencv-dev cmake libopenni2-dev libsqlite3-dev
Agora vamos clonar o repositório git do pacote independente rtab map para nossa pasta pessoal e compilá-lo. Usei a versão mais recente (0.18.0).
git clone
cd rtabmap / build
cmake..
make -j2
sudo make install
sudo ldconfig rtabmap
Agora, quando compilamos o RTAB MAP autônomo, podemos passar para a última etapa - compilar e instalar o wrapper ROS para RTAB MAP, rtabmap_ros.
Etapa 4: Instalando Rtabmap_ros
Se você chegou até aqui, provavelmente já sabe o que fazer:) Clone o repositório rtabmap_ros para a pasta src do espaço de trabalho catkin. (Execute o próximo comando de sua pasta src do espaço de trabalho catkin!)
git clone
Precisaremos desses pacotes ROS também, dos quais rtabmap_ros depende:
git clone
git clone
git clone
git clone
git clone
Antes de iniciar a compilação, você pode se certificar de que não está perdendo nenhuma dependência com o seguinte comando:
instalação do rosdep --from-path src --ignore-src
Instale mais dependências do ap-get (elas não interromperão a vinculação, mas irão gerar um erro durante a compilação)
sudo apt-get install libsdl-image1.2-dev
Em seguida, vá para a pasta do espaço de trabalho catkin e comece a compilar:
CD..
catkin_make -j2
Espero que você não tenha colocado sua bebida favorita da compilação em nenhum lugar muito longe. Depois que a compilação terminar, estamos prontos para fazer o mapeamento!
Etapa 5: Mostrar hora
Faça aquele truque hacky ao adicionar algo como WiFi ou dongle Bluetooth a uma porta USB - eu estava usando 2 portas USB 2.0, uma para Kinect e outra para dongle WiFi.
No Raspberry Pi, faça (mude o endereço IP para o endereço IP do seu Raspberry Pi!): 1º terminal:
exportar ROS_MASTER_URI = https://192.168.0.108: 11311
export ROS_IP = 192.168.0.108
roslaunch freenect_launch freenect.launch depth_registration: = true data_skip: = 2
2º terminal:
roslaunch rtabmap_ros rgbd_mapping.launch rtabmap_args: = - delete_db_on_start --Vis / MaxFeatures 500 --Mem / ImagePreDecimation 2 --Mem / ImagePostDecimation 2 --Kp / DetectorStrategy 6 --OdomF2M / MaxSizev 1000 --Odomiz / ImageDecimation 2 -: = falso
Você verá a saída como na captura de tela 1. "Parando o dispositivo RGB e a descarga de fluxo de profundidade." indica que o Kinect está pronto, mas nada está inscrito em seus tópicos ainda. No segundo terminal, você deve ver mensagens sobre a qualidade do odom. Se você mover o Kinect muito rápido, a qualidade odom irá para 0 e você precisará mover para um local anterior ou iniciar do banco de dados limpo.
Em seu computador desktop com o pacote ROS Melodic e rtab_map instalado (eu recomendo que você use o computador Ubuntu para isso, já que os pacotes pré-construídos estão disponíveis para a arquitetura amd64), faça:
exportar ROS_MASTER_URI = https://192.168.0.108: 11311
exportar ROS_IP = [seu-computador-desktop-ip]
rviz
Adicione os visores MapGraph e MapCloud ao rviz e escolha os tópicos correspondentes vindos de rtab_map. Bem, é isso, doce sabor da vitória! Vá em frente e faça um mapeamento:)
Etapa 6: Referências
Enquanto escrevia este artigo, consultei vários recursos, principalmente fóruns e questões do GitHub. Vou deixá-los aqui.
github.com/OpenKinect/libfreenect/issues/338
www.reddit.com/r/robotics/comments/8d37gy/ros_with_raspberry_pi_and_xbox_360_kinect_question/
github.com/ros-drivers/freenect_stack/issues/48
official-rtab-map-forum.67519.x6.nabble.com/RGB-D-SLAM-example-on-ROS-and-Raspberry-Pi-3-td1250.html
github.com/OpenKinect/libfreenect/issues/524
Adicione-me no LinkedIn se tiver alguma dúvida e inscreva-se no meu canal no YouTube para ser notificado sobre projetos mais interessantes envolvendo aprendizado de máquina e robótica.
Recomendado:
ROS Melodic no Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: 6 etapas
ROS Melodic no Raspberry Pi 4 [Debian Buster] + RPLIDAR A1M8: Este artigo cobrirá o processo de instalação do ROS Melodic Morenia no Raspberry Pi 4 executando o Debian Buster mais recente e como usar o RPLIDAR A1M8 com nossa instalação. Já que o Debian Buster foi oficialmente lançado há apenas algumas semanas (no momento
Instale ROS Kinetic, TurtleBot3, Raspicam no Raspberry Pi 4b: 5 etapas
Instale ROS Kinetic, TurtleBot3, Raspicam no Raspberry Pi 4b: TurtleBot3 Burger vem com Raspberry Pi 3 B / B + e não é compatível com o novo Raspberry Pi 4b (em 9/2019). Siga as etapas abaixo para fazer o TurtleBot3 funcionar no Raspberry Pi 4b, incluindo a construção do ROS Kinetic a partir de fontes no Raspberry Pi 4b Raspbian
Introdução ao ROS Melodic no Raspberry Pi 4 Modelo B: 7 etapas
Introdução ao ROS Melodic no Raspberry Pi 4 Modelo B: O Robot Operating System (ROS) é um conjunto de bibliotecas de software e ferramentas usadas para construir sistemas robóticos e aplicativos. A versão de serviço de longo prazo atual do ROS é Melodic Morenia. ROS Melodic é compatível apenas com Ubuntu 18.04 Bionic Beaver
Instalando o Raspbian Buster no Raspberry Pi 3 - Introdução ao Raspbian Buster com Raspberry Pi 3b / 3b +: 4 etapas
Instalando o Raspbian Buster no Raspberry Pi 3 | Introdução ao Raspbian Buster com Raspberry Pi 3b / 3b +: Olá pessoal, recentemente a organização Raspberry pi lançou um novo sistema operacional Raspbian chamado Raspbian Buster. É uma nova versão do Raspbian para Raspberry pi's. Então, hoje neste instructables aprenderemos como instalar o Raspbian Buster OS no seu Raspberry pi 3
Roomblock: uma plataforma para aprender navegação ROS com Roomba, Raspberry Pi e RPLIDAR: 9 etapas (com imagens)
Roomblock: uma plataforma para aprender navegação ROS com Roomba, Raspberry Pi e RPLIDAR: O que é isso? &Quot; Roomblock " é uma plataforma de robô composta por um Roomba, um Raspberry Pi 2, um sensor a laser (RPLIDAR) e uma bateria móvel. O quadro de montagem pode ser feito por impressoras 3D. O sistema de navegação ROS permite fazer um mapa dos quartos e usar i