MATLAB与ROS联合仿真——ROS环境搭建及相关准备工作(上)

   本篇文章主要介绍在安装完ROS后,在进行MATLAB与ROS联合仿真之前,需要进行的一些环境搭建以及准备工作,主要分为 创建ROS工作空间及功能包、必备功能包安装、安装Gazebo11、导入实验功能包至工作空间、安装Visual_Studio_Code(选做)、常用便捷工具安装(选做) 六部分。

   本部分内容共分为上下两篇,上篇包括创建ROS工作空间及功能包和必备功能包安装这两部分,下篇包括、安装Gazebo11、导入实验功能包至工作空间、安装Visual_Studio_Code(选做)、常用便捷工具安装(选做)这四部分。


在这里插入图片描述


   第一部分 创建ROS工作空间及功能包

   1、工作空间用来存放工程的文件,里面的src文件夹是用来存放功能包的,功能包的配置文件等,build文件夹用来存放编译过程中产生的一些中间文件,devel文件夹存放编译生成的一些可执行文件,一些库,一些脚本等,install文件夹主要用来存放安装的一些文件。

   2、创建工作空间:

   (1)在主文件夹下用mkdir命令创建一个子文件夹,取名为catkin_ws ,这个名字是可以自己起的(为后续代码移植方便,建议不要修改名字),后面的src是不能变的,接下来要利用命令cd进入到该文件夹下,然后用catkin_init_workspace命令将该文件夹变为ros工作空间的属性

   初次接触时,也许你并不理解以上这段话,你只需要按顺序执行下面三条指令就可以了

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

在这里插入图片描述


   (2)创建完工作空间后,要对工作空间进行编译,编译时需要在工作空间的根目录下进行编译,也就是我们需要先进入catkin_ws文件夹下,再利用catkin_make命令对其进行编译,这个命令会编译src下面所有功能包的源码,并将结果放到devel文件夹下,编译后生成了build和devel这两个文件夹,这个命令不能生成install文件夹,需要用catkin_make install命令来生成install文件夹

   以上这段话,同样对应三条指令,只需要按顺序执行下面三条指令就可以了

cd ~/catkin_ws/
catkin_make
catkin_make install

在这里插入图片描述


   (3)为了让系统找到我们的工作空间,还需要设置环境变量,执行以下语句:

source devel/setup.bash

   (4)设置环境变量之后,输入以下指令去检查一下

echo $ROS_PACKAGE_PATH

   3、到这里工作空间就创建完成了,为方便后续的开发,这里可以多做一步操作,当我们改变工作空间里的内容之后,都需要使用catkin_make命令来编译,编译完成后接下来就是利用命令source devel/setup.bash去设置环境变量,为了不在每次运行时都去设置环境变量,可以将该语句添加到主文件下的.bashrc文件中,该文件是隐藏文件,在主文件夹下,需要按ctrl+h才能显示出来,打开后,在最后添加source devel/setup.bash ,添加时候需要修改一下路径改成该工作空间下的路径,比如我应该添加的是source /home/jzx/catkin_ws/devel/ setup.bash 重新启动终端生效,有了这一步操作后,就不用每次都运行source devel/setup.bash了,而且可以在任意路径下运行rosrun命令

   4、创建功能包(选做)

   在创建代码的时候一定要创建一个功能包,功能包是ROS里面放置源码的最小单元,所有的源码必须放到功能包下面,不允许直接放在src文件夹下,用catkin_create_pkg命令创建功能包,后面跟的第一个参数是功能包的名字,后面的参数是这个功能包的依赖,也就是这个功能包需要用到ros里面的那些其他的功能包,因为要用c++编程所以要添加依赖roscpp,因为要用Python编程,所以要添加依赖rospy ,标准的消息结构std_msgs ,创建的功能包要放在src文件夹下,添加完功能包后,我们返回到catkin_ws目录下,再对工作空间进行编译,就会把刚才添加的功能包也编译了。只有设置了环境变量后才能让系统找到我们的工作空间 ,用命令echo $ROS_PACKAGE_PATH来检查我们创建的环境变量

   上面那段话是帮助大家理解的,操作的的话,只需要按顺序输入以下指令就可以了(功能包的名字可以任取)

cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

   在创建的功能包test_pkg中有一个src文件夹,用来放置功能包的代码,比如cpp文件等,include文件夹可以用来存放头文件,另外两个文件是每个功能包必须存在的两个文件,这两个文件的存在才标志着,这个文件夹是一个功能包,而不是普通文件夹

在这里插入图片描述



   第二部分 必备功能包安装

   1、安装JAVA环境:

   (1)输入以下指令安装JAVA环境:

sudo apt update
sudo apt install openjdk-11-jdk

   (2)如果你需要安装其他版本的,将上面的版本11改成对应的数字就行了,比如说版本8,就改为sudo apt install openjdk-8-jdk 指令java -version可以查看 Java 版本

   (3)以下指令可以查看JAVA的安装路径

sudo update-alternatives --config java

   (4)通过下面第一条指令,可以打开环境设置文件,在文件的最后添加下面的第二条指令,可以设置 JAVA_HOME 指定到 OpenJDK 11

sudo nano /etc/environment
 JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

   (5)执行以下指令使其生效

source /etc/environment

   2、安装32位运行库:

   输入以下指令,安装:

sudo apt-get install lib32z1

   3、安装effort_controllers

   输入以下指令,安装:

sudo apt-get install ros-noetic-effort-controllers

   4、安装python3.8

   (1)可运行以下指令安装 :

sudo apt-get install python3.8

   (2) 设置软连接,依次输入以下指令进行设置

whereis python3.8
cd /usr/bin
sudo ln -s /usr/bin/python3.8 python

   5、安装ackermann-msgs

   可运行以下指令安装 :

sudo apt install ros-noetic-ackermann-msgs

   6、安装net-tools

   可运行以下指令安装 :

sudo apt install net-tools

   7、安装 map-server功能包

   可运行以下指令安装 :

sudo apt-get install ros-noetic-map-server

   8、安装teb_local_planner功能包

   可运行以下指令安装 :

sudo apt install ros-noetic-teb-local-planner
sudo apt install ros-noetic-teb-local-planner-dbgsym

   9、安装move-base功能包

   可运行以下指令安装 :

sudo apt install ros-noetic-move-base

   10、安装navigation功能包

   可运行以下指令安装 :

sudo apt install ros-noetic-navigation

   11、安装gmapping功能包

roslaunch bringup slam_gmapping.launch

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mac端数据库管理 Navicat Premium 15 for Mac v15.0.36

Navicat Premium 15是一款功能强大的数据库管理工具,由PremiumSoft CyberTech Ltd.开发。它提供了一个集成的界面,用于连接和管理多种不同类型的数据库,如MySQL、Oracle、SQL Server、PostgreSQL等。 Navicat Premium 15具有直观和用户友好的…

NFT和数字藏品的安全方案解析

一、NFT和数字藏品 01 NFT是什么? NFT 是Non-Fungible Tokens 的缩写,意思是不可互换的代币,它是相对于可互换的代币而言的。不可互换的代币也称为非同质代币。什么是可互换的代币?比如BTC(比特币)、ETH&…

SDN系统方法 | 5. 交换机操作系统

随着互联网和数据中心流量的爆炸式增长,SDN已经逐步取代静态路由交换设备成为构建网络的主流方式,本系列是免费电子书《Software-Defined Networks: A Systems Approach》的中文版,完整介绍了SDN的概念、原理、架构和实现方式。原文: Softwar…

react native 本地存储 AsyncStorage

An asynchronous, unencrypted, persistent, key-value storage system for React Native. Async Storage 只能用来储存字符串数据,所以为了去储存object类型的数据,得先进行序列化(JSON.stringify())当你想要使用数据的时候&…

低代码:“提效降本”是如何炼成的

人们向往着从前车马慢的生活,可对于工厂而言,慢节奏如同噩梦。 目录 01、低代码的到来 02、让开发提效降本 03、结束语 在没有数字化以前的制造业,多个厂区之间的信息传递,例如采购单或者审批单,要用货车拉&#xff0c…

Keepalived热备、Keepalived+LVS、HAProxy监控及后端服务器健康检查、负载均衡调度器对比

day02 day02KeepAlived高可用集群配置高可用的web集群监控本机80端口,实现主备切换实现原理实施配置高可用、负载均衡的web集群配置高可用、负载均衡HAProxy配置haproxy负载均衡调度器比较LVS(Linux Virtual Server)NginxHAProxy KeepAlive…

iptables 防火墙

防火墙:隔离功能 部署在网络边缘或者主机边缘,在工作中,防火墙的主要作用,决定哪些数据可以被外网使用,以及哪些数据可以进入内网访问 主要工作在网络层 安全技术 1.入侵检测系统:检测出威胁&#xff0…

【后端面经】微服务构架 (1-3) | 熔断:熔断-恢复-熔断-恢复,抖来抖去怎么办?

文章目录 一、前置知识1、什么是熔断?2、什么是限流?3、什么是降级?4、怎么判断微服务出现了问题?A、指标有哪些?B、阈值如何选择?C、超过阈值之后,要不要持续一段时间才触发熔断?5、服务恢复正常二、面试环节1、面试准备2、面试基本思路三、总结 在微服务构架中…

【业务功能篇50】ObjectMapper-将java对象转为json字符串

ObjectMapper可以实现Java对象和json字符串间互相转换,我们经常用到的是它的Java对象转json字符串功能。 这里目的是 Java对象 json字符串相互转换 api 【json字符串转为Java对象:readValue(json字符串,类.class)】【Java对象转为json字符串&#xff1a…

WPF实战学习笔记09-创建工作单元

创建工作单元 添加包 Microsoft.EntityFrameworkCore.AutoHistory A plugin for Microsoft.EntityFrameworkCore to support automatically recording data changes history. Microsoft.EntityFrameworkCore.UnitOfWork A plugin for Microsoft.EntityFrameworkCore to suppor…

Python实战项目——旅游数据分析(四)

由于有之前的项目,所以今天我们直接开始,不做需求分析,还不会需求分析的可以看我之前的文章。Python实战项目——用户消费行为数据分析(三) 导入库 import numpy as np import pandas as pd import matplotlib.pyplo…

Canal深入调研

Canal深入调研 1.canal的设计 1.1 Canal的设计理念 canal的组件化设计非常好,有点类似于tomcat的设计。使用组合设计,依赖倒置,面向接口的设计。 说明: ​ server代表一个canal运行实例,对应于一个jvm ​ instance…

elasticsearch操作(命令方式)

说明:elasticsearch是目前最流行的搜索引擎,功能强大,非常受欢迎。特点是倒排索引,在海量数据的模糊查找领域,效率非常高。elasticsearch的安装和使用参考:http://t.csdn.cn/yJdZb。 本文介绍在es的索引库…

ajax/axios访问后端测试方法

文章目录 1、浏览器执行javascript方法GET请求POST请求 2、Postman测试工具GET请求POST请求 3、idea IDE提供的httpclient4、Apache JMeter 1、浏览器执行javascript方法 GET请求 http://localhost:6060/admin/get/123 POST请求 技巧:打开谷歌浏览器&#xff0c…

隧道安全监测解决方案

隧道安全监测 解决方案 一、监测目的 通过监控量测,实现信息化施工,不仅能及时掌握隧道实际的地质情况,掌握隧道围岩、支护衬砌结构的受力特征和变形情况,据此可以尽早发现塌方、大变形等灾害征兆,及时采取措施&…

使用ffmpeg合并视频遇到的坑

下面以Linux环境介绍为主 1.ffmpeg可执行命令不同的环境是不同的,Linux在执行命令前还需要授权。 2.合并视频命令: 主要命令: {} -f concat -auto_convert 0 -safe 0 -i {} -y -c:v copy 坑一:其中第一个花括号替换的是可执行命令所在的…

elementui全局给select option添加title属性

场景 有天边上的同事问了我一个问题,示例如下,有个数据特别长,导致下拉部分被横向撑大。希望在全局对所有的option进行处理,按照select的宽度,超出隐藏。 处理 方式一 第一眼看过去直接修改源码好了,修…

权智A133P 安卓10移植SPI转串WK2124驱动

硬件连接示意图 主控CPU通过SPI总线与WK2XXX芯相连接。WK2XXX控制4个UART的数据收发。 其中重要的参数有CS片选线和IRQ中断引脚。 LInux串口驱动框架 当WK2XXX驱动在内核注册成功后,会在/dev目录下面生成ttysWK0,ttysWK1,ttysWK2,ttysWK3节点。上层通过open,read,w…

精通正则表达式 - 打造高效正则表达式

目录 一、典型示例 1. 稍加修改——先迈最好使的腿 2. 效率 vs 准确性 3. 继续前进——限制匹配优先的作用范围 4. “指数级”匹配 二、全面考察回溯 1. 传统 NFA 的匹配过程 2. POSIX NFA 需要更多处理 3. 无法匹配时必须进行的工作 4. 看清楚一点 5. 多选结构的代…

Spring Boot日志:SLF4J和Logback

日志的分类 SpringBoot中的日志库分为两种: 实现库:提供具体的日志实现,例如日志级别的控制、打印格式、输出目标等。外观库:自身不提供日志实现,而是对其他日志库进行封装,从而方便使用。基于外观模式实…