一、境外资源屏蔽,helloworld,Terminator,VsCode与ROS实现,lanuch文件,ROS命令,ROS计算图

1、境外资源被屏蔽

  1. 错误提示:
    ERROR: cannot download default sources list from:
    https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
    Website may be down.
  2. 解决思路:
    通过修改hosts文件中的域名与IP映射解决
  3. 实现:
    1. 查询域名IP
      网址
    2. 修改/etc/hosts文件
      sudo gedit /etc/hosts

2、Helloworld

1. C++版

  1. 创建工作空间并初始化
    mkdir -p 空间名称/src //创建工作空间,并在工作空间下创建src文件夹,用来存放功能包
    cd 空间名称 //切换到工作空间路径
    catkin_make // 编译代码,会在工作空间下生成build和devel两个文件夹
    
  2. 进入src文件夹,添加一来
    cd src
    catkin_creat_pkg 自定义功能包名 roscpp rospy std_msgs //创建功能包时一般都会用到这三个库,会在功能包下生成include,src两个文件和CMakeLists.txt文件
    
  3. 进入功能包的src文件
    cd 功能包
    创建helloworld_c.cpp文件
     //1.包含ROS头文件
     #include "ros/ros.h"
    
     //2.编写main函数
     int main(int argc, char *argv[]){
     //3.初始化ROS节点,给节点命名
     ros::init(argc,argv,"hello_node");//helo_node为节点名称,是一个字符串
     //4.输出日志
     ROS_INFO("hello world");
     return 0;
     }   
    
  4. 编辑ROS包下的Cmaklists.txt文件
    add_executable(haha src/helloword_c.cpp)// haha为helloword_c.cpp的映射,通常映射名为被映射的文件名
    
    
    target_link_libraries(haha
    ${catkin_LIBRARIES}
    ) //haha为节点名,与add_executable相对应
    
  5. 进入工作空间再次编译(一共编译两次)
    cd 工作空间
    catkin_make //生成build devel
    
  6. 执行
    roscore
    cd 工作空间
    source ./devel/setup.bash //更新环境变量
    rosrun 包名 节点名(haha)//此处的节点名为自己定义的节点名
    

注意:

source ./devel/setup.bash 只能在当前终端下运行ROS节点,新的终端需要重新运行source ./devel/setup.bash 命令,才能运行ROS节点,解决办法:
法一:直接编辑.bashrc文件,最后添加source ./devel/setup.bash (需要crtl+h显示隐藏文件)
法二:echo "source ~/工作空间/devel/setup.bash">> ~/.bashrc
虽然一劳永逸,但是耦合增加,建议使用第一种方法

2. Python版

  1. 进入ROS包添加scripts文件夹,用于存放Python文件
    cd ROS包
    mkdir scripts
    
  2. 编辑Python文件
    #导入Python解释器
    #!/usr/bin/env python
    
    import rospy #导入ROS包
    if __name__ == "__main__":
    rospy.init_node("Hello")#初始化ROS节点,取名为Hello
    rospy.loginfo("Hello World!!!")
    
  3. 为Python文件添加可执行文件
    chmod +x 自定义的文件名.py
  4. 修改ROS包下的Cmakelists.txt文件
    catkin_install_python(PROGRAMS
    scripts/helloworld_p.py //自己编写的Python文件
    DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
    )
    
  5. 进入工作空间编译
    cd 工作空间
    catkin_make
    
  6. 进入工作空间执行
    roscore
    cd 工作空间
    source ./devel/setup.bash
    rosrun 包名 自定义文件名.py
    

3、Terminator终端快捷键

Alt+Up                          //移动到上面的终端
Alt+Down                        //移动到下面的终端
Alt+Left                        //移动到左边的终端
Alt+Right                       //移动到右边的终端
Ctrl+Shift+O                    //水平分割终端
Ctrl+Shift+E                    //垂直分割终端
Ctrl+Shift+Right                //在垂直分割的终端中将分割条向右移动
Ctrl+Shift+Left                 //在垂直分割的终端中将分割条向左移动
Ctrl+Shift+Up                   //在水平分割的终端中将分割条向上移动
Ctrl+Shift+Down                 //在水平分割的终端中将分割条向下移动
Ctrl+Shift+S                    //隐藏/显示滚动条
Ctrl+Shift+F                    //搜索
Ctrl+Shift+C                    //复制选中的内容到剪贴板
Ctrl+Shift+V                    //粘贴剪贴板的内容到此处
Ctrl+Shift+W                    //关闭当前终端
Ctrl+Shift+Q                    //退出当前窗口,当前窗口的所有终端都将被关闭
Ctrl+Shift+X                    //最大化显示当前终端
Ctrl+Shift+Z                    //最大化显示当前终端并使字体放大
Ctrl+Shift+N or Ctrl+Tab        //移动到下一个终端
Ctrl+Shift+P or Ctrl+Shift+Tab  //Crtl+Shift+Tab 移动到之前的一个终端



F11                             //全屏开关
Ctrl+Shift+T                    //打开一个新的标签
Ctrl+PageDown                   //移动到下一个标签
Ctrl+PageUp                     //移动到上一个标签
Ctrl+Shift+PageDown             //将当前标签与其后一个标签交换位置
Ctrl+Shift+PageUp               //将当前标签与其前一个标签交换位置
Ctrl+Plus (+)                   //增大字体
Ctrl+Minus (-)                  //减小字体
Ctrl+Zero (0)                   //恢复字体到原始大小
Ctrl+Shift+R                    //重置终端状态
Ctrl+Shift+G                    //重置终端状态并clear屏幕
Super+g                         //绑定所有的终端,以便向一个输入能够输入到所有的终端
Super+Shift+G                   //解除绑定
Super+t                         //绑定当前标签的所有终端,向一个终端输入的内容会自动输入到其他终端
Super+Shift+T                   //解除绑定
Ctrl+Shift+I                    //打开一个窗口,新窗口与原来的窗口使用同一个进程
Super+i                         //打开一个新窗口,新窗口与原来的窗口使用不同的进程

4、VsCode中ROS功能包实现

1.C++版

  1. 创建ROS工作空间
    mkdir -p 工作空间/src //必须有src
    cd 工作空间
    catkin_make //编译
    code . //启动vscode
    
  2. 在vscode中设置编译ROS的快捷键
    1. 快捷键crtl+shift+B调用编译
    2. 选择:catkin_make:build
    3. 修改.vscode/tasks.json文件,用下面的代码覆盖:
      {
      // 有关 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"
              }
          ]
      }
      
  3. 创建ROS功能包
    1. 选定src右击–>create catkin package
    2. 设置包名–>添加依赖:roscpp rospy std_msgs
    3. 编写程序:
      #include"ros/ros.h" //引入ROS包
      int main(int argc, char *argv[]){
      setlocale(LC_ALL,"");//防止中文乱码
      ros::init(argc,argv,"hello_vscode");
      ROS_INFO("hello哈哈 vscode!!!");
      return 0;
      }
      
    注意:
    如果没有代码提示,修改.vscode/c_cpp_properties.json
    设置 “cppStandard”:“c++17”
  4. 配置CmakeLists.txt
    add_executable(节点名称
    src/C++源文件名.cpp
    )
    target_link_libraries(节点名称
    ${catkin_LIBRARIES}
    )
    
  5. 编译执行
    编译:crtl+shift+B
    执行:roscore-->source ./devel/setup.bash-->rosrun 包名 节点名
    

2.Python版

  1. 假设已经创建好功能包
  2. 在功能包下创建scripts,用于存放.py文件
  3. 编写Python文件
    #解释器声明
    #可以选择Python和Python3(noetic默认为3.8)
    #! /usr/bin/env python
    
    import rospy
    
    if __name__ == "__main__":
        rospy.init_node("hello_vscode_p")
        rospy.loginfo("hello vscode,我是python!")
    
  4. 给Python文件添加可执行权限
    chmod +x *.py
  5. 配置CMakeLists.txt文件
    在noetic版本中,需要配置该文件,以前的版本不需要配置该文件,但是该版本的标准步骤需要配置,所以以后按照标准配置进行编程
    catkin_install_python(PROGRAMS scripts/自定义文件名.py
    DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
    )
    
  6. 编译执行
    1. 编译:crtl+shift+B
    2. roscore
    3. rosrun 包名 节点名.py

3.在不编译的情况下,直接运行Python文件,会抛出异常

 表现:
 Traceback (most recent call last):
 File "/media/d102/EPAN/Desktop/code_study_ubuntu/rosdemo_02/src/hello_vscode/scripts/hello_noconfig.py", line 3, in <module>
     import rospy
 File "/opt/ros/noetic/lib/python3/dist-packages/rospy/__init__.py", line 49, in <module>
     from .client import spin, myargv, init_node, \
 File "/opt/ros/noetic/lib/python3/dist-packages/rospy/client.py", line 52, in <module>
     import roslib
 File "/opt/ros/noetic/lib/python3/dist-packages/roslib/__init__.py", line 50, in <module>
     from roslib.launcher import load_manifest  # noqa: F401
 File "/opt/ros/noetic/lib/python3/dist-packages/roslib/launcher.py", line 42, in <module>
     import rospkg
 ImportError: No module named rospkg
原因:
  在noetic版本中,标准的编写Python功能包是需要配置
  CmakeLists.txt文件的,以前的版本是不需要的。在不
  编译的情况下,如果编译器代码为`#! /usr/bin/env 
  python`,代码是不能直接运行的,`#! /usr/bin/
  env python3`可以直接运行。这是因为在noetic版本
  中,Python版本为3.8。
解决办法:
  解决一:(不推荐)
     #! /usr/bin/env python3
     不推荐这种方法,因为当使用以前的Python开发包的时候,需要一个一个修改,太麻烦
  解决二:(推荐)
     创建软连接,将Python连接到Python3
     sudo ln -s /usr/bin/python3 /usr/bin/python
     如果提示文件已存在,则修改命令:
     sudo ln -f /usr/bin/python3 /usr/bin/python

5、launch文件

  1. 作用
    同时启动多个节点,提高工作效率
  2. 实现
    1. 在功能包下添加launch文件夹
    2. 在launch文件下添加文件名.launch文件
    3. 编写文件内容
      <launch>
          <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
          <node pkg="turtlesim" type="turtle_teleop_key" name="key1"/>
          <node pkg="hello_vscode" type="hello_vscode_c" name="key2" output="screen"/>
      </launch>
      注:
          node:包含的某个节点,不需要修改
          pkg:功能包
          type:节点名,不包含后缀
          name:给节点重新起的名
          output:保证在屏幕上有输出,否则输出不在屏幕上显示
      
    4. 运行launch文件
      roslaunch 包名 launch文件名
      注意:运行前要更新环境变量
      source ./devel/setup.bash

6、 ROS文件系统

  1. 结构图
    文件系统
WorkSpace --- 自定义的工作空间

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

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

    |--- src: 源码,用于存放功能包文件夹

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

            |-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件,在写cpp和py的时候要修改

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

            |-- scripts 存储python文件

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

            |-- include 头文件

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

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

            |-- action 动作格式文件

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

            |-- config 配置信息

        |-- CMakeLists.txt: 编译的基本配置

7、ROS相关命令

  1. catkin_creat_pkg:创建功能包,在vscode中,可以右键创建
    sudo apt install xxx:安装ROS功能包
    

  2. sudo apt purge xxx:删除功能包
  3. rospack list:列出所有功能包
    rospack find 包名:查找包是否存在,如果存在,返回包的路径
    roscd 包名:进入某个功能包
    rosls 包名:列出某个包下的文件
    apt search xxx:在网络上搜索某个功能包
    

  4. rosed 包名 文件名:修改功能包文件
  5. 执行
    1. roscore
      1.1. rosrun 包名 可执行文件名
      1.2. roslaunch 包名 launch文件名

8、ROS计算图

安装:

$ sudo apt install ros-<distro>-rqt
$ sudo apt install ros-<distro>-rqt-common-plugins
distro:Ubuntu版本名(noetic)

运行:

rqt_graph 或者 rosrun rqt_graph rqt_graph
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值