【Nail it】ROS1 ROS2 通信(ros2/ros1_bridge)

情况说明:目标是实现ros2容器和ros1主机的通信,可以起一个ros1容器作为桥梁(若是在一个主机同时包含ros1&ros2,配置更加方便).

1.起一个 noetic 的容器

docker run -it --network host  --name my_bridge ros:noetic-ros-core

2.进入 https://github.com/ros2/ros2/releases/tag/release-foxy-20230620,把ros2 的预编译版本拷贝到noeltic容器里 (注意版本,lsb_release -a 查看ubuntu版本,下对应的ros2预购建二进制文件).

docker cp /home/firefly/ros-linux my_bridge:/

(笔者这里是先下载到ubuntu主机里,后拷贝到容器里面)

3.进入容器,在~/.bashrcbash~/.zshrczsh中配置环境(一般在~/.bashrc里面配):

export ROS1_INSTALL_PATH=/opt/ros/noetic
export ROS2_INSTALL_PATH=/ros-linux
source ~/.bashrc

4.在noetic容器里装 spdlog

apt install libspdlog-dev

5.在noetic容器git clone ros2/ros1_bridge源码:

git clone https://github.com/ros2/ros1_bridge.git

6.按照GitHub官方ros2/ros1_bridge教程依次启动四个终端(使用docker attach my_bridge&docker exec -it my_bridge /bin/bash

1)shell A:source ${ROS1_INSTALL_PATH}/setup.bashroscore
(2)shell B:source ${ROS1_INSTALL_PATH}/setup.bashsource ${ROS2_INSTALL_PATH}/setup.bashexport ROS_MASTER_URI=http://localhost:11311ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
(3)shell C:source ${ROS1_INSTALL_PATH}/setup.bashsudo apt-get install ros-noetic-ros-tutorialsrosrun rospy_tutorials talker
(4)shell D:source ${ROS2_INSTALL_PATH}/setup.bashros2 run demo_nodes_cpp listener

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45768.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中的成员内部类

Java中的成员内部类(也称为非静态内部类)是定义在另一个类(外部类)内部的类。 这种内部类与它的外部类之间有着紧密的联系,主要体现在几个方面:它可以访问外部类的所有成员(包括私有成员&#…

C++小白Python选手2小时入门C++

学习链接:C入门/2小时从C到C快速入门(2018,C教程) C在C语言的基础上增加了面向对象和通用算法语言特征。 C头文件不必是.h结尾,C头文件举例:cmath、cstdio注释:单行//、多行/**/为了防止名字冲…

MQ基础1

对应B站视频: MQ入门-01.MQ课程介绍_哔哩哔哩_bilibili 微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后…

【JavaScript脚本宇宙】强大的自然语言处理:六款JavaScript库详解

从语义到实体:深入了解JavaScript自然语言处理库 前言 随着人工智能和自然语言处理技术的飞速发展,JavaScript在这一领域也有了越来越多的应用。本文将介绍几个优秀的JavaScript库,它们专注于处理英语文本,并提供了丰富的功能和…

求立方体面积体积以及判断(c++)

代码&#xff1a; #include<iostream> using namespace std;class Cube { public:void setL(int l){m_L l;}int getL(){return m_L;}void setW(int w){m_W w;}int getW(){return m_W;}void setH(int h){m_H h;}int getH(){return m_H;}int calculateS(){return 2 * (…

netdata 监控软件安装与学习

netdata官网 netdata操作文档 前言&#xff1a; netdata是一款监控软件&#xff0c;可以监控多台主机也可以监控单台主机&#xff0c;监控单台主机时&#xff0c;开箱即用&#xff0c;web ui很棒。 环境&#xff1a; [root192 ~]# cat /etc/system-release CentOS Linux rel…

彻底清理Conda环境:使用conda remove命令的终极指南

彻底清理Conda环境&#xff1a;使用conda remove命令的终极指南 在Conda环境中&#xff0c;随着时间的推移&#xff0c;可能会积累大量不再需要的包和它们的依赖项。这不仅会占用宝贵的磁盘空间&#xff0c;还可能影响环境的性能。conda remove命令是Conda提供的一个强大工具&…

GD32F407VET6新建固件库工程并下载运行

零、所需文件及环境&#xff1a; 1、固件库的压缩包 GD32F4xx_Firmware_Library_V3.2.0.7z 官网 2、GD32F407的keil支持包 官网 兆易创新GigaDevice-资料下载兆易创新GD32 MCU 2、 keilkilll.bat 用来删除编译过程文件 可以不要 &#xff08;原子、野火资料里都有&…

LeetCode热题100(JavaScript)

哈希 两数之和 暴力解法 /*** param {number[]} nums* param {number} target* return {number[]}*/ var twoSum function(nums, target) {for(let i 0;i<nums.length;i){let x1 nums[i]for(let j 0 ; j<nums.length;j){if(i!j){let x2 nums[j]if(x1x2target){ret…

算法金 | 来了,pandas 2.0

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 今日 210/10000 Pandas 是一个强大的数据分析库&#xff0c;广泛应用于科学研究、金融分析、商业智能等领域。它提供了高效的数据结构…

[WUSTCTF2020]level4题解 入土为安的第三天

二叉树 Practice my Data Structure code..... Typing....Struct.....char....*left....*right............emmmmm...OK! Traversal! Traversal type 1:2f0t02T{hcsiI_SwA__r7Ee} Traversal type 2:20f0Th{2tsIS_icArE}e7__w Traversal type 3: //type3(&x[22]); No w…

samba服务、安装-smbpasswd工具、pdbedit工具、testparm工具

在Windows构建的网络生态里&#xff0c;各主机间的文件及打印资源共享&#xff0c;主要依赖微软专有的SMB/CIFS网络协议来达成。SMB&#xff08;即Server Message Block&#xff0c;服务消息块&#xff09;与CIFS&#xff08;全称Common Internet File System&#xff0c;通用互…

ShardingSphere的项目应用

1. 事情的起因 最近,随着业务的发展,我们的项目面临着日益增长的数据挑战。系统使用的数据库是mysql,每天的增量差不多在百万左右,由于没有进行分库分表,以前设置的单表保存已经越发不能满足需求,所以想维持表的性能,甲方考虑对这些大数据量的表进行分表操作,同时也采…

MySQL left join、right join以及inner join的区别 ?

LEFT JOIN&#xff08;左连接&#xff09;、RIGHT JOIN&#xff08;右连接&#xff09;和INNER JOIN&#xff08;内连接&#xff09;是SQL中用于连接两个或多个表以检索数据的重要操作。它们之间的主要区别在于如何处理那些在连接条件下没有匹配的行。下面通过具体的例子来说明…

扫地机器人如何解决安全性与隐私保护

扫地机器人在解决安全性与隐私保护方面&#xff0c;需要从多个角度入手&#xff0c;包括产品设计、技术实现、用户教育以及法律法规遵守等方面。以下是具体的解决方案&#xff1a; 一、安全性解决方案 1.提升避障能力&#xff1a;使用先进的传感器技术&#xff0c;如激光雷达、…

JavaScript switch 语句

JavaScript switch 语句 JavaScript 中的 switch 语句是一种多分支选择结构&#xff0c;用于根据变量的值执行不同的代码块。它提供了一种简洁的方式来替代多个 if...else 语句&#xff0c;特别是在处理多个条件时。 基本语法 switch (expression) {case value1:// 代码块 1…

微信小程序实现省市区级联选择组件

微信小程序实现省市区级联选择组件 首先&#xff0c;创建一个新的组件&#xff0c;命名为 area-picker。 在 area-picker.wxml 文件中添加以下代码&#xff1a; <view class"area-picker"><picker mode"multiSelector" bindchange"onPick…

C++基础篇(2)

目录 前言 1.缺省参数 2.函数重载 2.1函数重载的基本规则 ​编辑2.2注意事项 2.3 重载解析&#xff08;Overload Resolution&#xff09;--补充内容 3.引用 3.1引用的概念和定义 3.2引用的特性 3.3引用的使用 3.4const引用 4.指针和引用的关系 结束语 前言 上节小编…

PlantUML 教程:绘制时序图

绘制时序图是 PlantUML 的一个强大功能&#xff0c;下面是详细的 PlantUML 时序图教程&#xff0c;帮助你理解如何使用它来创建清晰的时序图。 基本概念 时序图&#xff08;Sequence Diagram&#xff09;用于展示对象之间的交互以及它们之间的消息传递顺序。它主要由以下元素…

感应灯光画纯电路开源版本

前言 之前那版灯光画用的从垃圾佬淘的电路板拼出来的&#xff0c;功能不全&#xff0c;显示效果不太好而且无法固定到相框上&#xff0c;这次改版用的嘉立创smt&#xff0c;贴了5片板子&#xff08;19元&#xff09;&#xff0c;功能上的改进是加了无极触摸调光、添加了黄白两…