carla-ros跨机通信(ros、carla_ros_bridge安装,开发板通信)

2024-03-04 22:50

本文主要是介绍carla-ros跨机通信(ros、carla_ros_bridge安装,开发板通信),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

carla-ros通信

一、ros、carla_ros_bridge安装

1.ros安装步骤

ros的版本选择要与ubnutu系统版本对应,建议使用ros2(通信更便捷)
ROS与操作系统版本对应关系:ROS与操作系统版本对应关系_ros版本与ubuntu对应版本_万俟淋曦的博客-CSDN博客

(1)配置系统软件源

打开“软件和更新”,进入到“Ubuntu软件“页面,允许universe、restricted、multiverse三项,即勾选这三项,如下图所示。
在这里插入图片描述

(2)添加秘钥
打开终端,输入以下指令添加秘钥:

sudo apt install curl gnupg2 -y
curl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | sudo apt-key add -

(3)设置软件源
输入以下指令将存储库添加到源列表:

sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'

(4)安装ros

sudo apt update
sudo apt install ros-foxy-desktop 

注:此处安装的是foxy版本,安装其他版本需将版本号替换
(5)安装自动补全工具

sudo apt install python3-argcomplete -y

(6)设置环境变量

echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
source .bashrc

(7)查看已安装ros版本

printenv | grep -i ROS

(8)测试运行
ros2安装好后可以运行官方demo来验证是否完成安装:打开两个终端,分别执行两条指令,第一条用于发布话题消息,第二条用于订阅话题消息。

ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener

2、carla_ros_bridge安装步骤

Carla_ros_bridge版本选择要与carla的版本相对应,carla-simulator/ros-bridge: ROS bridge for CARLA Simulator (github.com)
(1)下载对应版本的carla_ros_bridge源码(一定要注意版本)
在这里插入图片描述

(2)解压安装包

mkdir  -p  ~/carla-ros-bridge/project/src
//将解压后的文件夹ros-bridge复制到~/carla-ros-bridge/project/src目录下

在这里插入图片描述
在这里插入图片描述

(3)安装依赖

cd  ~/carla-ros-bridge/project
rosdepc init
rosdepc update
rosdepc install --from-paths src --ignore-src -r 

rosdepc安装:rosdepc是rosdep的国内版,一般rosdep会遇到网络连接问题,建议使用rosdepc
安装命令:wget http://fishros.com/install -O fishros && . fishros
运行后在终端选择4安装即可
(4)编译

cd  ~/carla-ros-bridge/project
colcon build

编译完后会生成build、install、log文件夹
注:编译过程可能会出现依赖缺失的问题,需要手动下载

二、carla-ros跨机通信

1、pc端ros与x3板端ros通信

ROS1想要实现跨机通信,需要配置单Master或者多Master网络环境,过于麻烦;ROS2只要保证多台机器处于同一个局域网就可以实现通信,但是仍需要注意一些细节设置。
X3板端安装的是地平线官方提供的togetheRos.Bot,本质上是ros2-foxy的简化版本,但不支持ros2的显示功能(rviz、pcl等)。
(1)pc与x3板处于同一个局域网
如果使用的是vm虚拟机或vritual box虚拟机,需要将网络连接方式设置为桥接模式,NAT模式无法通信。
在这里插入图片描述

让pc和x3板连接同一无线网,查看网络ip在同一网段,测试是否可以双向ping通,如果只能pc端ping通x3板端,需要关闭pc防火墙设置。
在这里插入图片描述

(2)测试通信

pc端终端输入:ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
X3终端输入:source /opt/tros/setup.bash
ros2 run examples_rclcpp_minimal_publisher publisher_member_function

上述两条指令也可以替换,实现互相发布订阅:
在这里插入图片描述

出现上图结果就表明可以进行ros的跨机通信。

2、pc端carla与pa端ros通信(以深蓝学院控制算法pid为例)

深蓝学院提供了实现ros-carla控制算法的开源代码(c++、carla0.9.13):gxf1002/ShenLanAcademy-PlanningControl: 纵向控制:PID ;横向控制:Stanely \ LQR \ MPC (github.com)
(1)下载解压编译功能包
在上面的网站下载功能包并解压,以解压后的carla-ros-bridge目录为工作空间,在此目录下colcon build编译。在这里插入图片描述

(2)运行算法
第一步:启动carla
在carla安装目录下,运行./CarlaUE4.sh

第二步:配置环境变量

export PYTHONPATH=$PYTHONPATH:<path-to-carla>/PythonAPI/carla/dist/carla-<carla_version_and_arch>.egg

是carla安装路径。

carla-<carla_version_and_arch>.egg选择对应的版本和架构。
在这里插入图片描述

第三步:在终端中添加功能包路径
cd到工作空间carla-ros-bridge,在终端输入source /install/laocl_setup.sh

第四步:launch启动carla-ros桥控制界面(以pid算法为例)

ros2 launch carla_shenlan_bridge_ego_vis carla_bridge_ego_vehilce.launch.py

出现以下画面即表示carla和ros可以进行通信:
在这里插入图片描述

第五步:运行控制算法节点
在工作空间carla-ros-bridge下打开一个新终端输入:

source /install/laocl_setup.sh
ros2 run carla_shenlan_pid_controller carla_shenlan_pid_controller_node

运行节点后就可以看到车辆运行,pid控制算法调节车辆纵向速度,在终端中输出实时速度、速度误差、角度误差等信息。
在这里插入图片描述

3、x3板端ros跨机与pc端carla通信

上面两种通信方式的实现,为跨机通信提供了可能性,当启动carla-ros桥控制界面,x3板端和pc端ros能接受和订阅的话题内容是相同的,因此在x3板端发布车辆控制信息给vehicle_control_cmd话题,在pc端就可以订阅vehicle_control_cmd话题话题中的信息,通过这种方法来实现跨机通信。
第一步:在pc端启动carla(同上)
第二步:在pc端启动carla-ros桥控制界面(同上)
第三步:在x3板端运行控制算法节点(同上)
使用ros2 topic list查看X3板端接收话题,运行节点:
在这里插入图片描述

跨机通信时间:统计pid算法中发布一次信息到话题vehicle_control_cmd上的时间
在这里插入图片描述

可以看到发布一次信息到话题vehicle_control_cmd上的时间可以忽略不计,表明跨机通信方式不会影响程序运行效率。

三、功能包、消息类型

1、carla_ros_bridge

carla_ros_bridge是carla官方提供的carla和ros通信工具,ros1和ros2都适用。本质上是一个由多个功能包组成的ros工作空间,包含了所有基础的功能包以及实现自己算法的功能包。
对基础功能包的解释参考官网:
在这里插入图片描述
以深蓝学院pid控制算法为例:
在这里插入图片描述

其中carla_shenlan_project_1就是开发者自己添加的功能包,包括实现控制算法的.cpp文件和头文件等,如果实现其他算法,则需要修改替换.cpp文件和头文件。
在这里插入图片描述

2、carla消息类型(通信接口)

消息是ros中的一种接口定义方式,carla官方定义了有关carla仿真的消息类型msgs(carla_msga文件夹)。
比如车自车车辆控制CarlaEgoVehicleControl.msg,定义了消息中包含信息的名称和数据类型(int32、float32、bool等),向话题发布和订阅的信息要和话题定义的消息类型中的信息相同,详细内容参考官网:CARLA messages reference - CARLA Simulator
在这里插入图片描述

四、ros通信相关内容

1、节点

在这里插入图片描述

节点的职责就是执行某些具体的任务,从计算机操作系统的角度来看,也叫做进程;每个节点都是一个可以独立运行的可执行文件,比如执行某一个python程序,或者执行C++编译生成的结果,都算是运行了一个节点;节点功能各不相同,根据系统设计的不同,可能位于计算机A,也可能位于计算机B,还有可能运行在云端,这叫做分布式,也就是可以分布在不同的硬件载体上;每一个节点都需要有唯一的命名,当我们想要去找到某一个节点的时候,或者想要查询某一个节点的状态时,可以通过节点的名称来做查询。

2、话题

话题是节点间传递数据的桥梁。
(1)发布订阅模式
话题数据传输的特性是从一个节点到另外一个节点,发送数据的对象称之为发布者,接收数据的对象称之为订阅者,每一个话题都需要有一个名字,传输的数据也需要有固定的数据类型。支持多对多通信。
在这里插入图片描述

(2)异步通信
所谓异步,只要是指发布者发出数据后,并不知道订阅者什么时候可以收到,异步的特性也让话题更适合用于一些周期发布的数据,比如传感器的数据,运动控制的指令等等,如果某些逻辑性较强的指令,比如修改某一个参数,用话题传输就不太合适了。
(3)消息接口
在ROS中,话题通信数据的描述格式称之为消息,对应编程语言中数据结构的概念。比如这里的一个图像数据,就会包含图像的长宽像素值、每个像素的RGB等等,在ROS中都有标准定义。
消息是ROS中的一种接口定义方式,与编程语言无关,我们也可以通过.msg后缀的文件自行定义,有了这样的接口,各种节点就像积木块一样,通过各种各样的接口进行拼接,组成复杂的系统。

3、服务

服务是一种你问我答的同步通信效果。
从服务的实现机制上来看,这种你问我答的形式叫做客户端/服务器模型,简称为CS模型,客户端在需要某些数据的时候,针对某个具体的服务,发送请求信息,服务器端收到请求之后,就会进行处理并反馈应答信息。
在这里插入图片描述

这篇关于carla-ros跨机通信(ros、carla_ros_bridge安装,开发板通信)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/774607

相关文章

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是