ROS如何进行开发?

文章目录

  • 0、引言
  • 1、安装ROS
  • 2、ROS创建工作空间和功能包
  • 3、在ROS中使用C++代码
  • 4、在ROS中使用Python代码

0、引言

  笔者研究生的课题是关于多传感器数据融合的,传感器数据获取一般是通过Arduino或者树莓派获取,Arduino主要偏硬件开发,一般数据处理能力相对树莓派较弱,笔者除了要获取数据,还需要进行大量数据同时处理。为实现多传感器数据同步建图,本文通过树莓派获取数据,硬件驱动代码是基于ROS开发的,ROS是Robot Operate System(机器人操作系统),可以驱动硬件获取数据,并能进行数据处理。本文为了实现传感器数据的获取和处理,进行ROS系统的安装和简单开发。本文介绍了ROS安装,ROS创建工作空间和功能包,ROS中执行C++文件,ROS中执行Python文件。

1、安装ROS

  (1)检查下载源;
  确认“软件和更新”对话框中“Ubuntu Software”项下,从互联网下载的前四项的复选框都勾选,并选择合适的下载源。
  在这里插入图片描述
  (2)添加ros软件源和秘钥;

//添加ROS软件源
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

//添加密钥
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

  在这里插入图片描述
  (3)检查Ubuntu系统版本确定ros版本;

sudo lsb_release -a

  在这里插入图片描述
  在这里插入图片描述
  本文使用Ubuntu18.04系统,安装Melodic版本ros。
  (4)安装ros和rosinstall;

//更新原有库
sudo apt update

//melodic为ubuntu18.04下的ros版本
sudo apt-get -f install ros-melodic-desktop-full

//初始化rosdep
sudo rosdep init

//更新rosdep
rosdep update

//安装rosinstall
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

//设置环境变量
echo "source /opt/ros/melodic/setup.bash">>~/.bashrc
source ~/.bashrc

  (5)检查ros是否成功安装。
  键入:roscore,若能启动,则说明ros安装成功。
  在这里插入图片描述

2、ROS创建工作空间和功能包

  工作空间是一个存放工程开发相关文件的文件夹,一般包含src、build、devel、install文件夹。
  功能包是一个项目文件夹,位于工作空间的src文件夹下。
  (1)创建工作空间;

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src

catkin_init_workspace

  (2)编译工作空间;

cd ~/catkin_ws/

catkin_make

//若想在编译空间中产生install文件夹,需再执行命令:
catkin_make install

  (3)创建功能包;

cd ~/catkin_ws/src

//创建功能包格式:catkin_create_pkg <package_name> [depend1] [depend2] [depend3] ...
catkin_create_pkg test_pkg std_msgs rospy roscpp

  在这里插入图片描述
  (4)编译功能包;

cd ~/catkin_ws

catkin_make

//若编译成功,以下代码执行结果不会报错
source ~/catkin_ws/devel/setup.bash

//若以上代码报错,可以执行以下代码
catkin_make_isolated
source ~/catkin_ws/devel_isolated/setup.bash

  (5)环境变量设置与检查。

//每打开新的终端需要重新设置环境变量
source devel/setup.bash
或者
source devel_isolated/setup.bash

//检查环境变量
echo $ROS_PACKAGE_PATH

  在这里插入图片描述

3、在ROS中使用C++代码

  (1)创建for.cpp文件;
  在~/catkin_ws/src/test_pkg/src下打开终端,键入:gedit for.cpp,输入以下代码,并保存。

#include <iostream>
using namespace std;
int main()
{
	int  a = 5;
	for (a; a < 10; a++)
	{
		cout << "a = " << a << endl;
	}
	return 0;
}

  得到for.cpp文件。
  在这里插入图片描述
  (2)添加编译规则;
  在这里插入图片描述

add_executable(for_cpp src/for.cpp)
target_link_libraries(for_cpp ${catkin_LIBRARIES})

  (3)编译并执行代码;

cd ~/catkin_ws/

catkin_make
或
catkin_make_isolated

source devel/setup.bash
或
source devel_isolated/setup.bash

//在另外一个终端输入以下代码,启动ros
roscore

//在原终端输入,执行可执行文件
rosrun test_pkg for_cpp

  在这里插入图片描述

4、在ROS中使用Python代码

  (1)创建for.py文件;
在~/catkin_ws/src/test_pkg/下新建一个文件script,进入该文件,并打开终端,键入:gedit for.py,输入以下代码,并保存。

#!/usr/bin/python
for a in range(5, 10):
    if a < 10:
        print 'a = ', a
        a += 1
    else:
        break

  在这里插入图片描述
  (2)设置文件可执行;
  在这里插入图片描述
  (3)添加编译规则;
  在这里插入图片描述
  (4)执行代码(python代码无需编译)。

cd ~/catkin_ws/

catkin_make
或
catkin_make_isolated

source devel/setup.bash
或
source devel_isolated/setup.bash

//在另外一个终端输入以下代码,启动ros
roscore

//在原终端输入,执行可执行文件
rosrun test_pkg for.py

  在这里插入图片描述

参考资料:
[1] 古月居GYH. 【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程; 2019-07-16 [accessed 2023-04-09].
[2] Mr.Vco. 在ubuntu18.04下安装ros,以及一些踩坑总结; 2020-04-13 [accessed 2023-04-09].
[3] 年少策马且长歌. 安装ROS时执行到sudo rosdep init时出现sudo: rosdep:找不到命令提示; 2019-12-03 [accessed 2023-04-09].
[4] 角落de男孩. 解决Ubuntu18.04 安装ROS中 sudo rosdep init 和 rosdep update 失败问题; 2021-05-27 [accessed 2023-04-09].
[5] 长沙有肥鱼. ROS rosdep update更新失败(简单解决); 2021-10-04 [accessed 2023-04-09].
[6] 爱折腾. ROS入门教程-安装并配置ROS环境(Kinetic 版本); [accessed 2023-04-09].
[7] 原来的1024. Ubuntu16.04下创建工作空间并添加自己的功能包(python代码); 2020-12-09 [accessed 2023-04-09].
[8] qq_42735696. source devel/setup.bash bash: devel/setup.bash: No such file or directory解决方法; 2021-01-20 [accessed 2023-04-09].
[9] 未·央. source devel/setup.bash bash: devel/setup.bash: No such file or directory解决方法; 2021-04-23 [accessed 2023-04-09].
[10] 区块链市场观察家. 问题:Ubuntu虚拟机没有IP地址; 2021-03-25 [accessed 2023-04-09].
[11] 三颗草丶. ubuntu查看系统版本; 2022-09-19 [accessed 2023-04-09].
[12] 万俟淋曦. ROS与操作系统版本对应关系; 2023-04-06 [accessed 2023-04-09].
[13] longgggggggggggggggg. linux中创建一次创建多个目录或创建多级目录; 2019-06-20 [accessed 2023-04-09].
[14] Runnnnlin. ROS catkin_make 问题; 2019-09-08 [accessed 2023-04-09].
[15] 唐僧洗头用飘柔dp. python3-rosdep2 : Depends: python3-catkin-pkg but it is not going to be installed; 2022-03-12 [accessed 2023-04-09].
[16] qq_34911636. ROS创建工作空间遇到问题解决; 2019-08-21 [accessed 2023-04-09].
[17] Believe yourself!!!. ROS使用Python编写的步骤; 2022-01-05 [accessed 2023-04-09].
[18] 托尼stark. ubuntu中查看安装的python版本; 2019-04-12 [accessed 2023-04-09].
[19] OKMOON540. linux后台执行./run.py提示python syntax error near unexpected token `('; 2018-08-22 [accessed 2023-04-09].

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

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

相关文章

sql语法:详解DDL

Mysql版本&#xff1a;8.0.26 可视化客户端&#xff1a;sql yog 目录一、DDL是什么&#xff1f;二、和数据库相关的DDL2.1 创建数据库2.2 删除数据库2.3 查看所有的数据库&#xff0c;当前用户登录后&#xff0c;可以看到哪些数据库2.4 查看某个数据库的详细定义2.5 修改数据库…

在深圳做了5年软件测试,到头来啥也不是~

本科非计算机专业&#xff0c;在深圳做了5年软件测试工作&#xff0c;从一开始一脸懵的点点点&#xff0c;到现在会自动化测试了&#xff0c;浅谈一下从事软件测试的一点点心得体会&#xff0c;仅供参考交流。如果你本科且非计算机专业的话可以试下&#xff08;但就目前环境建议…

谈一谈Java的ThreadLocal

目录 先说原理&#xff1a; 再上代码&#xff1a; 运行结果&#xff1a; 先说原理&#xff1a; ThreadLocal 是一个本地线程副本变量工具类&#xff0c;它可以在每个线程中创建一个副本变量&#xff0c;每个线程可以独立地修改自己的副本变量&#xff0c;而不会影响其他线程…

测试的价值不仅仅是找

测试的价值不仅仅是找Bug 在我测试工作的前5年&#xff0c;一直以为测试的目标和价值就是在黑盒测试活动中找bug&#xff0c;以找到bug越多越自豪。但当我随着商业意识的不断积累&#xff0c;跳出测试的视角&#xff0c;站在公司的角度看测试时&#xff0c;会发现测试的目标是商…

linux驱动学习加强版-5(ioctl的使用)

文章目录一、添加ioctl控制节点二、修改测试APP2.1 测试APP的代码&#xff1a;2.2 驱动代码&#xff1a;ioctl是用户空间和内核空间相互交流时候用的比较多的一种手段。我们也可以在HAL层通过ioctl调到驱动里面。一、添加ioctl控制节点 先看patch 吧 这是在驱动中添加的ioct…

个人-计算机操作系统第五章

第五章 虚拟存储器 一、章节练习 1.系统抖动是指( )。 A. 使用机器时&#xff0c;千万屏幕闪烁的现象 B. 刚被调出的页面又立刻被调入所形成的频繁调入调出现象 C. 系统盘不净&#xff0c;千万系统不稳定的现象 D. 由于内存分配不当&#xff0c;偶然造成内存不够…

02-神经网络基础

一、从机器学习到神经网络 1. 两层神经网络 - 多层感知机 2. 浅层神经网络特点 (1)需要数据量小、训练速度快; (2)对复杂函数的表示能力有限,泛化能力受到制约。 Kurt Hornik 证明了理论上两层神经网络足以拟合任意函数,而且过去没有足够的数据和计算能力,因此之前的…

兰伯特光照模型(Lambert Lighting)和半兰伯特光照模型(Half-Lanbert)

关于漫反射 光打到凹凸不平的平面上&#xff0c;光线会被反射到四面八方&#xff0c;被称为漫反射 关于这种模型&#xff0c;由于光线由于分散&#xff0c;所以进入人眼的光线强度和观察角度没有区别 在A点和B点接收到的光线强度是一样的 在漫反射下&#xff0c;光线强度只和光…

卫龙携手契约锁,推动人事、采购、销售业务电子签

知名辣味休闲食品企业——卫龙&#xff0c;携手契约锁就印章管控及电子签章技术展开合作&#xff0c;打造覆盖总部及20多家子公司的印章管控平台&#xff0c;以现有泛微OA、钉钉APP为基础&#xff0c;推动人事、采购、销售业务电子签&#xff0c;通过签字、盖章无纸化&#xff…

使用Navicat进行ssh通道连接MySQL数据库

1、正常打开连接窗口&#xff0c;选择SSH&#xff1b; 2、填写完SSH对应参数&#xff0c;重新选择常规&#xff1b; SSH参数&#xff1a; 主机 > 服务器IP 端口 > 22 【一般22&#xff0c;SSH监听端口】 用户名 > 登录服务器账户 密码 > 登录服务器密码常规的参数…

mplfinancet绘制K线图

mplfinancet绘制K线图 1、安装 安装速度快 pip install mplfinance -i https://pypi.tuna.tsinghua.edu.cn/simple C:\Users>pip install mplfinance -i https://pypi.tuna.tsinghua.edu.cn/simple Defaulting to user installation because normal site-packages is not …

35岁的测试工程师被公司强行辞退,感叹道:我以前就该好好努力了

曾经的高薪软件测试工程师&#xff0c;今年35岁了&#xff0c;被公司劝退了&#xff0c;外卖跑到凌晨&#xff0c;很累&#xff0c;但还是有一种想诉说的冲动。哪怕让大家觉得已经说得太多了&#xff0c;烦了&#xff0c;都成祥林嫂了&#xff0c;但是&#xff0c;我是真的想说…

js:手写一个promise

背景 promise 作为前端开发中常用的函数&#xff0c;解决了 js 处理异步时回调地狱的问题&#xff0c;大家应该也不陌生了&#xff0c;今天来学习一下 promise 的实现过程&#xff0c;这样可以加&#xff08;面&#xff09;深&#xff08;试&#xff09;理&#xff08;要&…

第八天并发编程篇

一、简述线程、进程、程序的基本概念&#xff1f; 1.进程&#xff1a; 我们把运行中的程序叫做进程,每个进程都会占用内存与CPU资源,进程与进程之间互相独立. 2.线程&#xff1a; 线程就是进程中的一个执行单元&#xff0c;负责当前进程中程序的执行。一个进程可以包含多个线程…

Matlab在线IDE:计算定积分上限

上一篇文章&#xff1a;Matlab在线IDE&#xff1a;MATLAB Online介绍与计算定积分案例 1、案例介绍 % 定义符号变量 x syms x;% 定义函数 f(x) x f x;% 定义定积分的值 I I 2;% 计算函数 f(x) 在 [0, x] 区间的定积分&#xff0c;并求其反函数 F(x) F finverse(int(f, 0, …

【hello Linux】Linux软件管理器yum

目录 1.Linux软件管理器yum 1.1 关于lrzsz 1.2 使用yum时的注意事项 1.3 查看软件包&#xff1a;yum list 1.4 安装软件&#xff1a;yum install 1.5 卸载软件&#xff1a;yum remove 1.6 更新yum源 1.7 实战项目 Linux&#x1f337; 1.Linux软件管理器yum 在windows系统下有应…

ROS学习——艰辛的环境安装之路一Ubuntu

文章目录Ubuntu安装和下载页面设置安装Vmware Tools安装VSCODE用几个常用命令简单熟悉下UbuntuUbuntu 安装和下载 Ubuntu的安装和下载 看这个链接 Ubuntu安装和下载1 或者这个链接 Ubuntu安装和下载2 页面设置 安装Vmware Tools 看这个链接 VMware Tools的介绍和安装 安装…

超详细从入门到精通,pytest自动化测试框架实战-pytest插件的开发(八)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 pytest框架采用的是…

3年测试经验只会“点点点”,不会自动化即将面临公司淘汰?沉淀100天继续做测试

前段时间一个朋友跟我吐槽&#xff0c;说自己做软件测试工作已经3年了&#xff0c;可这三年自己的能力并没有得到提升&#xff0c;反而随着互联网的发展&#xff0c;自己只会“点点点”的技能即将被淘汰。说自己很苦恼了&#xff0c;想要提升一下自己&#xff0c;可不知道该如何…

简单的做一个学校毕业啊项目

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…