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

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

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

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

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

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

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

引出


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

第1讲 ROS概述及环境搭建

Ros的安装

代码语言:java
复制
root@ubuntu:/# cd /usr/lib/python3/dist-packages/
root@ubuntu:/usr/lib/python3/dist-packages# find . -type f | xargs grep "raw.githubusercontent"
代码语言:java
复制
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
复制
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
复制
user-session=ubuntu
#手工输入登陆系统的用户名和密码
greeter-show-manual-login=true
#禁用guest用户
all-guest=false
#启动后以root身份自动登录
autologin-user=root

HelloWorld程序

包冲突解决

创建文件目录,catkin_make

创建工作空间

代码语言:java
复制
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
复制
// 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
复制
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
复制
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
复制
cd 工作空间
source ./devel/setup.bash
rosrun 包名 C++节点
报错解决
python3-roslaunch
代码语言:java
复制
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
复制
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
复制
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
复制
sudo apt-get install ros-noetic-roslaunch
代码语言:java
复制
… 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
复制
rosclean check
rosclean purge
代码语言:java
复制
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
复制
/usr/bin/env: ‘python’: No such file or directory
代码语言:java
复制
sudo ln -s /usr/bin/python3 /usr/bin/python
报错:只能开一个roscore
代码语言:java
复制
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
复制
sudo apt update
sudo apt install software-properties-common apt-transport-https wget
代码语言:java
复制
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
复制
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
复制
vi ~/.bashrc
# 添加一行
alias code='/usr/share/code/code . --no-sandbox --unity-launch'
# 报存生效
source ~/.bashrc
关于字体太小

在vscode中开发C++

项目配置

代码语言:java
复制
{
// 有关 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
复制
roscpp rospy std_msgs

新建文件写代码

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

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

修改CMakeList文件

进行编译

终端运行

解决乱码

使用Python开发

添加权限

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

修改配置

编译执行

其他问题

launch文件

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

报错解决

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

ROS架构

ROS文件系统

代码语言:java
复制
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
复制
apt search ros-noetic-* | grep -i gmapping

ROS计算图


总结

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

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引出
  • 第1讲 ROS概述及环境搭建
    • Ros的安装
    • Ros测试
      • 如何进入root用户
    • HelloWorld程序
      • 包冲突解决
      • 创建文件目录,catkin_make
      • 创建工作空间
    • C++的实现
      • 编写源文件
      • 修改配置文件
      • 进行编译
      • 进行运行
      • 任意地方都能运行
    • Pyhton实现
    • 集成开发环境搭建
      • 终端工具
      • vscode安装
    • 在vscode中开发C++
      • 项目配置
      • 新建包+添加依赖
      • 新建文件写代码
      • 修改CMakeList文件
      • 进行编译
      • 终端运行
    • 使用Python开发
      • 添加权限
      • 修改配置
      • 编译执行
    • 其他问题
    • launch文件
      • 报错解决
    • ROS架构
      • ROS文件系统
      • ROS计算图
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档