开启四个终端
1.第一个终端(ros1)
第一个终端在ros1中启动roscore
roscore
2.第二个终端 (ros2)
在ros2中执行以下指令
source /opt/ros/noetic/setup.bash ros2 run ros1_bridge dynamic_bridge
这里执行完第一行source以后会出现提示
ROS_DISTRO was set to 'foxy' before. Please make sure that the environment does not mix paths from different distributions.
这是正常现象不用理会,直接执行第二行代码即可
3.第三个终端(ros2)
第三个终端需要启动发布节点
cd camera_driver2 source install/setup.bash ros2 launch miivii_gmsl_camera single.bash
这是相机在ros2的发布驱动节点,消息类型是image
4.第四个终端(ros1)
第四个终端需要启动监听节点
这里可以直接启动rviz
左下角add一个image话题类型,然后手动输入话题名称如miivii_gmsl/image0
到这里就实现了同一台电脑在ros1和ros2 之间进行通信
分布式通信
1.
首先将通信的两台设备连到同一个网络中
然后我们需要知道两台设备的ip地址以及名称
ifconfig hostname
ifconfig指令用于查看本机ip地址
hostname用于查看本机名称
2.
其次,我们需要更改两台设备的文件 /etc/hosts
用下面这个指令
sudo gedit /etc/hosts
追加
另一台设备的ip 另一台设备的名称
如下
另一台设备也做同样的操作
3.
接下来需要修改~/.bashrc文件
sudo gedit ~/.bashrc
主机文件:
追加
export ROS_MASTER_URI=http://主机IP:11311 export ROS_HOSTNAME=主机IP
从机文件:
追加
export ROS_MASTER_URI=http://主机IP:11311 export ROS_HOSTNAME=从机IP
修改完后source一下
source ~/.bashrc
4.测试
主机和从机必须都启动roscore
主机启动发布节点
从机启动监听节点
通过rostopic list 可以查看所有主机发布的话题
rostopic list