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

相关文章

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

Nexus安装和启动的实现教程

《Nexus安装和启动的实现教程》:本文主要介绍Nexus安装和启动的实现教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Nexus下载二、Nexus安装和启动三、关闭Nexus总结一、Nexus下载官方下载链接:DownloadWindows系统根

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

Redis指南及6.2.x版本安装过程

《Redis指南及6.2.x版本安装过程》Redis是完全开源免费的,遵守BSD协议,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSIC语言编写、支持网络、... 目录概述Redis特点Redis应用场景缓存缓存分布式会话分布式锁社交网络最新列表Redis各版本介绍旧

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获