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

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2