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

news2024/12/22 18:00:00

   本篇文章主要介绍在安装完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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python 面向对象 - 类 - 实例 - 类的使用 - self - init方法 - ATM面向对象实验

目录 面向过程和面向对象的对比? 面向对象 面向对象两个重要概念: > class(类)、实例 类:具有相同属性或方法的对象的集合 属性(变量):编号、位置、余额 方法(函数)&#xf…

[论文阅读笔记24]Social-STGCNN: A Social Spatio-Temporal GCNN for Human Traj. Pred.

论文: 论文地址 代码: 代码地址 作者在这篇文章中直接用GNN对目标的轨迹时空特征进行建模, 并用时序CNN进行预测, 代替了训练难度较大和速度较慢的RNN类方法. 0. Abstract 行人轨迹预测是一个比较有挑战性的任务, 有着许多的应用. 一个行人的轨迹不仅是由自己决定的, 而且受…

Vue消息订阅与发布

引入第三方库pubsub.js: npm i pubsub-js Student.vue import pubsub from pubsub-jsmethods:{sendStudentName(){// this.$bus.$emit(hello,this.name)pubsub.publish(hello,666)}}, School.vue import pubsub from pubsub-jsmounted() {// console.log("school&quo…

【监控系统】Promethus的查询PromQL详解及案例实战

首先我们先来了解一下什么是PromQL。 PromQL是Prometheus提供了内置的数据查询语言PromQL&#xff0c;全称为Prometheus Query Language。PromQL是对指标(Metric)的查询/聚合/过滤的处理&#xff0c;Metric的语法格式 <metric name>{<label name><label value&…

优维低代码实践:添加构件

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

Mac 安装启动RabbitMq

使用HomeBrew安装 未安装的请参照我的这篇Mac安装HomeBrew文章 安装 执行命令 brew install rabbitmq启动方式 brew services start rabbitmq端口说明 端口用处5672RabbitMQ通讯端口&#xff0c;也就是连接使用的端口15672RabbbitMQ管理界面端口&#xff0c;需要开启Manage…

区块链实验室(10) - 实例说明PBFT的共识过程

前面描述过PBFT的仿真方式&#xff0c;见区块链实验室(3) – 用Go语言仿真PBFT算法&#xff0c;本文以上述仿真程序说明PBFT的共识过程。 为叙述方便&#xff0c;首先给出1个简化的网络&#xff0c;共4个节点&#xff0c;构成如下图所示的网络。这样的网络可以避免冗余的网络报…

ASEMI快恢复二极管SFP6012A参数, SFP6012A规格

编辑-Z SFP6012A参数描述&#xff1a; 型号&#xff1a;SFP6012A 最大峰值反向电压(VRRM)&#xff1a;1200V 平均整流正向电流(IF)&#xff1a;60A 非重复峰值浪涌电流(IFSM)&#xff1a;500A 工作接点温度和储存温度(TJ, Tstg)&#xff1a;-40 to 175℃ 最大热阻(RθJC…

链动2+1营销系统开发模式深度解析

链动21模式其实是一种针对快消品行业的营销模式&#xff0c;主要逻辑就是用薄利多销丰厚返利的方式来吸引客户&#xff0c;同时快速裂变团队。 这个模式的玩法也很简单&#xff0c;只有代理和老板两种身份&#xff0c;代理身份是用户购买499元产品可以解锁&#xff0c;同时享受…

【压测指南|压力测试核心性能指标及行业标准】

文章目录 压力测试核心性能指标及行业标准指标1&#xff1a;响应时间指标2&#xff1a;吞吐量&#xff08;TPS)指标3&#xff1a;失败率总结&#xff1a; 压力测试核心性能指标及行业标准 在做压力测试时&#xff0c;新手测试人员常常在看报告时倍感压力&#xff1a;这么多性能…

58,#include<algorithm>集合算法set_difference

功能描述&#xff1a; 求两个集合的差集 函数原型&#xff1a; set_difference(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest); //求两个集合的差集 //注意&#xff1a;两个集合必须是有序序列 //beg1 容器1开始迭代器 //end1 容器1结束迭代…

【Visual Studio】解决编译时报 .dll 缺失

VS启动白屏&#xff1a; VS2015启动界面卡在白屏的处理方法&#xff08;亲测有效&#xff09; 目前我遇到的 .dll 缺失错误&#xff0c;分为两种情况。 系统 .dll 文件缺失&#xff1a; 点击【调试】->【选项】&#xff0c;在弹出的对话框中点击【调试】->【符号】&…

java实现netcdf(.nc)数据读取解析

netcdf简介及应用说明 NetCDF数据是一种常用的科学数据格式&#xff0c;它可以存储多维数组、元数据和附加的描述信息。NetCDF数据被广泛应用于气象、海洋、地球科学、天文学等领域&#xff0c;可用于分析、可视化和共享数据。 虽然NetCDF数据在科学研究中发挥着重要作用&…

C# winform窗体全屏显示设置

文章目录 C# winform窗体全屏显示设置 C# winform窗体全屏显示设置 窗体全屏显示&#xff0c;并覆盖桌面任务栏。 全屏显示后&#xff0c;如果拖拽标题栏&#xff0c;会使窗体全屏失效&#xff08;如果禁用了最大话按钮&#xff09;&#xff0c;为了解决这样的问题&#xff0…

C语言学习笔记 第一个C语言项目-07

目录 1.新建一个文件夹 2.新建一个文件&#xff0c;后缀以.cpp结尾 3.编写代码 4.编译与执行代码 代码解析 总结 1.新建一个文件夹 2.新建一个文件&#xff0c;后缀以.cpp结尾 如下图所示&#xff0c;选择相应的文件夹&#xff0c;然后点击新建文件按钮&#xff0c;新建的文…

Django框架:使用channels实现websocket,配置和项目实际使用

一、基本配置 依赖包&#xff1a; Django3.2 django-cors-headers3.5.0 redis4.6.0 #操作redis数据库的 channels3.0.0 #websocket channels-redis4.1.0 #通道层需要&#xff0c;依赖redis包项目目录结构&#xff1a; study_websocket --study_websocket --__init__.py --s…

【无标题】小创业公司死亡剧本

感觉蛮真实的&#xff1b;很多小创业公司没有阿里华为的命&#xff0c;却得了阿里华为的病。小的创业公司要想活无非以下几点&#xff1a; 1 现金流&#xff0c;现金流&#xff0c;现金流&#xff1b; 2 产品&#xff0c;找痛点&#xff0c;不要搞伪需求&#xff1b; 3 根据公司…

SpringBoot中配置文件的加载

springboot 启动会扫描一下位置的application.properties或者application.yml文件作为springboot的默认配置文件 file:./config/(项目根目录config文件夹下的配置文件) file:./(项目根目录下的配置文件) classpath:/config/(resources目录config文件下的配置文件) classpat…

Python调用文心千帆的API

文心千帆官网申请使用&#xff1a;点击 1、申请使用 2、使用并创建应用 Python调用 代码(GUI) 代码出处&#xff1a;点我 from tkinter import * from tkinter import messagebox import json import requestsAPI_KEY "API KEY内容" SECRET_KEY "Secret Key…

MySQL的基本概念(数据库类、数据模型、服务启动与连接)

目录 数据库基础 DB和DBMS 数据库的类型 RDBMS的结构 MySQL的服务启动与连接&#xff08;Windows系统下&#xff09; 服务启动 客户端连接 数据库基础 DB和DBMS 什么是DB 将大量的数据保存起来&#xff0c;通过计算机加工而成的可以进行高效访问的数据集合就成为数据…