Olá a todos, sou Xiaoyu. Ontem, fui incentivado por amigos do grupo no artigo relacionado ao DDS. Eu disse que o código-fonte é bom para experimentar o DDS. Xiaoyu não pode mais coo, então vou compartilhá-lo hoje, FastDDS instalação e experiência.
1. Sobre as três maneiras de abrir o FastDDS
Assim como os pacotes ROS comuns, o FastDDS possui três métodos de instalação: instalação binária, compilação do código-fonte e Docker.
Porque o oficial colocou o binário e o Docker no site oficial. . E você precisa preencher suas informações pessoais para fazer o download. . E a velocidade de download é super super lenta. . E não é conveniente observar o código-fonte. . Então Xiaoyu leva você para instalar a partir do código-fonte.
Originalmente queria fazer uma instalação com um clique, salve todo mundo digitando o script! !
Amar uma pessoa não deve estar acostumada a ele, assim como a farinha de peixe, para que todos pensem mais ao copiar e colar (na verdade, para compensar o número de palavras no artigo), Xiaoyu levará todos para instalar e compilar o código fonte passo a passo.
No entanto, a instalação do código fonte também é muito simples, não tenha medo. .
Como o DDS está relacionado ao ROS2, também podemos usar o colcon para compilar sem cmake (se você precisar de cmake, poderá encontrá-lo no site oficial)
2. Compile e instale o FastDDS a partir do código-fonte
O download e a compilação do DDS são divididos em três etapas. A primeira etapa pode ser ignorada se você já tiver instalado o ROS2. .
1. Ferramenta de instalação
sudo apt install python3-colcon-common-extensions python3-vcstool zip openjdk-8-jdk -y
2. Crie um diretório e baixe o warehouse
mkdir -p fastdds_ws/src
cd fastdds_ws && wget https://downloads.gradle-dn.com/distributions/gradle-6.4-bin.zip && unzip gradle-6.4-bin.zip
wget http://fishros.com/tools/files/fastrtps.repos && vcs import src < fastrtps.repos
3. Compilar
colcon build
cd src/fastddsgen/ && gradle assemble
Etapa final: configurar variáveis de ambiente
xxx é o prefixo do seu diretório
echo 'source xxx/fastdds_ws/install/setup.bash' >> ~/.bashrc
echo 'export PATH=$PATH:xxx/fastdds_ws/gradle-6.4/bin/' >> ~/.bashrc
echo 'export DDSGEN=xxx/fastdds_ws/src/fastddsgen/scripts' >> ~/.bashrc
3. Rotina HelloFish
O RTPS usado pelo DDS é o protocolo Real-Time Publish Subscribe, na verdade, parece o mesmo que publicar e assinar no ROS e no ROS2, então executamos uma rotina para enviar e receber mensagens, e o conteúdo da mensagem é chamadoHelloFish
O programa escrito por Xiaoyu está pronto e colocado no github. Você pode baixá-lo diretamente para compilar e testar~
código de download
git clone https://github.com/fishros/dds_tutorial.git
Compilar rotinas
cd dds_tutorial/examples/01-hellofishros
mkdir build && cd build
cmake ..
make
executar rotina
abra um terminal
./DDSHelloFishRosPublisher
abra outro terminal
./DDSHelloFishRosSubscribe
Ver resultados
O resultado correto é como o seguinte, que provou que está tudo OK~
Teste pubsub DDS
4. Resumo
Não é incrível ver o familiar publicar e assinar? A camada inferior do FASTDDS usa uma variedade de protocolos para transmissão de dados, incluindo o UDP não confiável, mas muito rápido, o TCP confiável, mas não muito rápido, e a sensação de que não transmitir memória de troca (SHM).
Para mostrar o que é chamado de baixo rendimento (preguiçoso), Xiaoyu decidiu explicar o código para você amanhã~
O conteúdo acima foi escrito por Xiaoyu depois de ficar acordado até tarde e pisar no poço. Se você ler com atenção, é equivalente a ficar acordado até tarde de graça~