Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >ROS学习——第1讲 ROS概述及环境搭建

ROS学习——第1讲 ROS概述及环境搭建

原创
作者头像
Arya
发布于 2024-11-22 09:21:39
发布于 2024-11-22 09:21:39
5500
举报
文章被收录于专栏:后端开发专栏后端开发专栏

在文章开始之前,推荐一篇值得阅读的好文章!感兴趣的也可以去看一下,并关注作者!

题目:HarmonyOS 应用中复杂业务场景下的接口设计

好事文章地址:https://cloud.tencent.com/developer/article/2469534

在开发复杂业务应用时,接口设计不仅需要满足业务功能,还要考虑通用性和高效性。对于多业务耦合场景,接口如何灵活扩展、避免过度设计,同时保证数据传输的高效,是开发者需要解决的重要问题。本文结合 HarmonyOS 的开发实践,分享如何针对复杂业务场景设计高扩展性、低耦合的接口。

引出


ROS学习——第1讲 ROS概述及环境搭建

第1讲 ROS概述及环境搭建

Ros的安装

代码语言:java
AI代码解释
复制
root@ubuntu:/# cd /usr/lib/python3/dist-packages/
root@ubuntu:/usr/lib/python3/dist-packages# find . -type f | xargs grep "raw.githubusercontent"
代码语言:java
AI代码解释
复制
sudo gedit ./rosdistro/__init__.py 
sudo gedit ./rosdep2/gbpdistro_support.py
sudo gedit ./rosdep2/sources_list.py
sudo gedit ./rosdep2/rep3.py

Ros测试

ROS 内置了一些小程序,可以通过运行这些小程序以检测 ROS 环境是否可以正常运行

  1. 首先启动三个命令行(ctrl + alt + T)
  2. 命令行1键入:roscore
  3. 命令行2键入:rosrun turtlesim turtlesim_node(此时会弹出图形化界面)
  4. 命令行3键入:rosrun turtlesim turtle_teleop_key(在3中可以通过上下左右控制2中乌龟的运动)

如何进入root用户

如果没有在root用户下,会出现很多奇奇怪怪的问题,包括不限于ros运行不起来,得切换su,vs编译命令报错等,所以最好开始登录就进入root用户

Ubuntu 20.04使用root身份自动登录_ubuntu20.04root登录-CSDN博客

代码语言:java
AI代码解释
复制
sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 
sudo gedit /etc/pam.d/gdm-autologin
sudo gedit /etc/pam.d/gdm-password
sudo gedit /root/.profile
tty -s &&mesg n || true
sudo gedit /etc/gdm3/custom.conf
代码语言:java
AI代码解释
复制
user-session=ubuntu
#手工输入登陆系统的用户名和密码
greeter-show-manual-login=true
#禁用guest用户
all-guest=false
#启动后以root身份自动登录
autologin-user=root

HelloWorld程序

包冲突解决

创建文件目录,catkin_make

创建工作空间

代码语言:java
AI代码解释
复制
root@ubuntu:/home/peter/demo01_ws# cd src/
root@ubuntu:/home/peter/demo01_ws/src# catkin_create_pkg helloworld roscpp rospy std_msgs

上述命令,会在工作空间下生成一个功能包,该功能包依赖于 roscpp、rospy 与 std_msgs,其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。

解决:没有新建文件选项

C++的实现

编写源文件

代码语言:java
AI代码解释
复制
// 1. ros hand file

#include "ros/ros.h"
// 2. main 
int main(int argc, char *argv[]){
    // 3. ros node
    ros::init(argc,argv,"hello_node");
    // 4. output log
    ROS_INFO("hello world");
    return 0;
}
关于 permissions necessary to save

Could not save the file "/home/peter/demo01_ws/sr...oworld/src/helloworld.cpp". You do not have the permissions necessary to save the file.Please check that you typed the location correctly and try again. 1//1

修改配置文件

进行编译

报错解决:
没有roscpp
代码语言:java
AI代码解释
复制
CMake Error at /opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by "roscpp" with any
  of the following names:

    roscppConfig.cmake
    roscpp-config.cmake
没有rospy
代码语言:java
AI代码解释
复制
CMake Error at /usr/share/catkin/cmake/catkinConfig.cmake:82 (find_package):
  Could not find a package configuration file provided by "rospy" with any of
  the following names:

    rospyConfig.cmake
    rospy-config.cmake

进行运行

代码语言:java
AI代码解释
复制
cd 工作空间
source ./devel/setup.bash
rosrun 包名 C++节点
报错解决
python3-roslaunch
代码语言:java
AI代码解释
复制
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
root@ubuntu:/home/peter# roscore

Command 'roscore' not found, but can be installed with:

apt install python3-roslaunch
python3-catkin-pkg-modules_1.0.0-1_all.deb
代码语言:java
AI代码解释
复制
Errors were encountered while processing:
 /var/cache/apt/archives/python3-catkin-pkg-modules_1.0.0-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
代码语言:java
AI代码解释
复制
Resource not found: roslaunch
ROS path [0]=/opt/ros/noetic/share/ros
ROS path [1]=/opt/ros/noetic/share
The traceback for the exception was written to the log file
代码语言:java
AI代码解释
复制
sudo apt-get install ros-noetic-roslaunch
代码语言:java
AI代码解释
复制
… logging to /home/gm/.ros/log/24112dc4-6213-11e9-87a9-98541bdb0e48/roslaunch-gm-Lenovo-ideapad-4266.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB

https://blog.csdn.net/qq_50942093/article/details/126998638

代码语言:java
AI代码解释
复制
rosclean check
rosclean purge
代码语言:java
AI代码解释
复制
root@ubuntu:/home/peter/demo01_ws# rosrun helloworld HAHA

Command 'rosrun' not found, but can be installed with:

apt install rosbash

任意地方都能运行

Pyhton实现

报错解决:python 软连接到Python3
代码语言:java
AI代码解释
复制
/usr/bin/env: ‘python’: No such file or directory
代码语言:java
AI代码解释
复制
sudo ln -s /usr/bin/python3 /usr/bin/python
报错:只能开一个roscore
代码语言:java
AI代码解释
复制
RLException: roscore cannot run as another roscore/master is already running. 
Please kill other roscore/master processes before relaunching.
The ROS_MASTER_URI is http://127.0.0.1:11311/
The traceback for the exception was written to the log file

集成开发环境搭建

终端工具

vscode安装

代码语言:java
AI代码解释
复制
sudo apt update
sudo apt install software-properties-common apt-transport-https wget
代码语言:java
AI代码解释
复制
wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
sudo apt install code

安装插件

报错解决:root启动code . 失败
代码语言:java
AI代码解释
复制
root@ubuntu:/home/peter/demo02_ws# code .
You are trying to start Visual Studio Code as a super user which isn't recommended. If this was intended, please add the argument `--no-sandbox` and specify an alternate user data directory using the `--user-data-dir` argument.
代码语言:java
AI代码解释
复制
vi ~/.bashrc
# 添加一行
alias code='/usr/share/code/code . --no-sandbox --unity-launch'
# 报存生效
source ~/.bashrc
关于字体太小

在vscode中开发C++

项目配置

代码语言:java
AI代码解释
复制
{
// 有关 tasks.json 格式的文档,请参见
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
            "label": "catkin_make:debug", //代表提示的描述性信息
            "type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
            "command": "catkin_make",//这个是我们需要运行的命令
            "args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
            "group": {"kind":"build","isDefault":true},
            "presentation": {
                "reveal": "always"//可选always或者silence,代表是否输出信息
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

新建包+添加依赖

代码语言:java
AI代码解释
复制
roscpp rospy std_msgs

新建文件写代码

代码语言:java
AI代码解释
复制
#include "ros/ros.h"

int main(int argc, char *argv[])
{
    ros::init(argc,argv,"hello_c");
    ROS_INFO("HELLO");
    
    return 0;
}

修改CMakeList文件

进行编译

终端运行

解决乱码

使用Python开发

添加权限

代码语言:java
AI代码解释
复制
chmod +x *.py

修改配置

编译执行

其他问题

launch文件

代码语言:java
AI代码解释
复制
<launch>
     <!-- add node -->
     <!-- Tutle gui -->
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>
代码语言:java
AI代码解释
复制
    <node pkg= "hello_vscode" type="hello_vscode_c" name="hello" output="screen" />

报错解决

ERROR: cannot launch node of type turtlesim/turtlesim_node: turtlesim
代码语言:java
AI代码解释
复制
sudo apt-get install ros-noetic-ros-tutorials
ERROR: cannot launch node of type turtlesim /turtlesim_node: turtlesim

ROS架构

ROS文件系统

代码语言:java
AI代码解释
复制
WorkSpace --- 自定义的工作空间

    |--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。

    |--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。

    |--- src: 源码

        |-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成

            |-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件

            |-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)

            |-- scripts 存储python文件

            |-- src 存储C++源文件

            |-- include 头文件

            |-- msg 消息通信格式文件

            |-- srv 服务通信格式文件

            |-- action 动作格式文件

            |-- launch 可一次性运行多个节点 

            |-- config 配置信息

        |-- CMakeLists.txt: 编译的基本配置
package.xml
CMakeList.txt
代码语言:java
AI代码解释
复制
apt search ros-noetic-* | grep -i gmapping

ROS计算图


总结

ROS学习——第1讲 ROS概述及环境搭建

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ROS入门篇
ROS是一个松耦合的分布式软件框架。上图中有很多的Node(节点),每个节点是在机器人系统中完成一个具体功能的进程,比方说有的Node是完成图像识别,有的Node是完成一个图像的驱动,它们之间会有一系列图像的传输。节点与节点之间位置也不是固定的,比如上图中有两台电脑,一个A,一个B,有些节点可以在A当中,有些节点可以在B当中,它们之间可以通过一系列的传输方式来完成通讯。每个节点的编程语言也不是固定的,可以使用Python,也可以使用C++。
算法之名
2023/10/16
2.3K0
ROS入门篇
ROS1机器人多机网络通信案例turtlesim
ROS1 kinetic+melodic+noetic,可以直接互通,c++程序全部通用的。
zhangrelay
2022/05/10
3670
ROS1机器人多机网络通信案例turtlesim
【C++】ROS:ROS1环境配置与基础示例
官网:https://www.ros.org/ 中文wiki:http://wiki.ros.org/cn ubuntu安装ros:http://wiki.ros.org/cn/melodic/Installation/Ubuntu
DevFrank
2024/07/24
9320
【C++】ROS:ROS1环境配置与基础示例
ROS Beginner(长文预警!
参考网站:http://wiki.ros.org/cn/ROS/Tutorials
From Zero
2021/12/07
9230
(二)ROS系统架构及概念 ROS Architecture and Concepts 以Kinetic为主更新 附课件PPT
第2章 ROS系统架构及概念 ROS Architecture and Concepts
zhangrelay
2019/01/23
1.4K0
蓝桥ROS机器人之第一个功能包helloros
helloros cmake_minimum_required(VERSION 2.8.3) project(helloros) ## Compile as C++11, supported in ROS Kinetic and newer # add_compile_options(-std=c++11) ## Find catkin macros and libraries ## if COMPONENTS list like find_package(catkin REQUIRED COM
zhangrelay
2022/05/01
5130
蓝桥ROS机器人之第一个功能包helloros
机器人操作系统ROS学习实战篇之——让小乌龟画矩形
之前,在ROS的安装过程中,我们执行了如下命令:(此命令就是向当前用户添加ROS的环境变量)
用户1696846
2019/12/30
2.7K0
机器人操作系统ROS学习实战篇之——让小乌龟画矩形
ROS 编程入门的介绍
ROS(Robot Operating System)是一种开源的机器人软件框架,广泛用于机器人开发中。通过使用 ROS,开发者可以轻松创建和管理机器人应用程序。在本节中,我们将介绍如何创建一个 ROS 功能包并实现一些基本功能。
芯动大师
2024/09/18
1900
ROS 编程入门的介绍
ROS学习记录①:安装、起步和IDE工具
依次打开 File -> Setting -> Editor -> File and Code Templates -> Python Script,添加
小黑鸭
2020/11/24
1.3K0
ros系统
apt install ros-melodic-desktop-full rosdep update echo “source /opt/ros/indigo/setup.bash” >> ~/.bashrc source ~/.bashrc sudo apt-get install python-rosinstall
sofu456
2019/08/26
1.3K0
ros系统
ROS_Kinetic_05 ROS基础内容(二)
官网教程:http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingNodes
zhangrelay
2019/01/23
7010
ROS Topic
创建工作空间、功能包 创建工作空接,详见我的另一篇文章 CmakeList.txt CmakeList.txt 定义一个包的编译指令 cmake不会找package.xml文件,依据cmakelists.txt文件编译需要清晰指出头文件和库文件的指向。 catkin_package(CATKIN_DEPENDS roscpp)声明依赖本包同时需要的其他ros包 find_package(catkin REQUIRED COMPONENTS)声明编译本包所需要其他ros包 add_executable声明编
小飞侠xp
2019/09/30
3.4K0
ROS Topic
Cpp ROS(一)发布器Publisher和订阅器Subscriber简单例子
创建完成以后,在目录my_node_demo下多出两个文件(package.xml ,CMakeLists.txt)和两个文件夹(src, include)。
Autooooooo
2020/11/09
9740
Cpp ROS(一)发布器Publisher和订阅器Subscriber简单例子
【ROS】pcl_ros使用与点云转换示例
pcl_ros是一个用于将PCL(点云库)与ROS(机器人操作系统)集成的软件包。它提供了用于在ROS环境中处理和可视化点云数据的工具和功能。
DevFrank
2024/07/24
5440
(一)ROS开发平台环境搭建与测试
1、ROS发环境搭建 (1)配置Ubuntu软件库 打开Ubuntu的设置->软件与更新->Ubuntu软件->勾选关键字universe,restricted,multiverse三项。 (2)添
Must
2020/09/24
2.1K0
(一)ROS开发平台环境搭建与测试
ROS_Kinetic_06 ROS基础内容(三)
先插入一段闲话,关于android的碎片化,无非集中于版本过多,型号各异,品牌杂乱等,似乎这是开源软件无法摆脱的宿命,ROS似乎也在这条路上越走越远,但真是如此吗?有专门的文章论述这类的问题,有兴趣了解ROS版本,点击查看,其实核心的东西一直在那里,从来没有改变,开源的核心是开放,开放的核心是包容,正因为如此才有了如此多的应用,如此丰富的可能,这可以理解为碎片化,也可以看作多样性的例证,更是开源活力的证明。这是一个异彩纷呈开源时代。退一步来讲,不论是微软,苹果也不都在不断升级更新自己的软硬件嘛,也有各种各样的版本号,这就不是碎片化。当初用微软的机器人仿真平台觉得非常不错,免费但不开源,几年前就已经OVER了。
zhangrelay
2019/01/23
7790
虚拟机VMware下ROS Neotic(Ubuntu 20.04)下安装OpenCV
ROS的官方安装步骤: 1、noetic / Ubuntu 20.04 : http://wiki.ros.org/noetic/Installation/Ubuntu 2、melodic / Ubuntu 18.04: http://wiki.ros.org/melodic/Installation/Ubuntu 3、kinetic / Ubuntu 16.04: http://wiki.ros.org/kinetic/Installation/Ubuntu 一键安装:鱼香ROS提供了一个全面且方便的脚本,可以直接运行来安装系统对应版本的ROS
用户10922923
2024/04/27
5240
虚拟机VMware下ROS Neotic(Ubuntu 20.04)下安装OpenCV
人机智能交互技术(ROS-HRI-人与机器人的智能交互)课程介绍与资料
这是机器人系统设计与控制技术的后续课程,全部的课程内容包括四门课程(本科),如下:
zhangrelay
2019/01/23
1.6K0
在ubuntu上安装ros_车机安装第三方app教程
sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’122
全栈程序员站长
2022/09/30
8960
在ubuntu上安装ros_车机安装第三方app教程
ROS学习记录⑥:动态配置参数
动态配置参数 1. 新建功能包 2. 创建cfg文件 3. 节点文件 4. 启动配置 1. 新建功能包 cd catkin_ws/src catkin_create_pkg pid roscpp rospy rosmsg std_msgs dynamic_reconfigure 2. 创建cfg文件 新建一个cfg文件夹,在里面新建一个.cfg文件 mkdir cfg cd cfg touch PID.cfg 动态调参的核心API: gen.add(name,type, level,description
小黑鸭
2020/11/24
1.1K0
相关推荐
ROS入门篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档