二、ROS集成开发环境

1.安装terminator

sudo apt install terminator

快捷键
Ctrl+Alt+T:启动终端
Ctrl+Shift+O:水平分割终端
Ctrl+Shift+E:垂直分割终端
Ctrl+Shift+C:复制选中的内容到剪贴板
Ctrl+Shift+V:粘贴剪贴板的内容到此处
Ctrl+Shift+W:关闭当前终端
在这里插入图片描述

2.安装VScode

下载VScode:.deb

sudo dpkg -i xxx.deb

安装插件:ROS、Cmake Tools、C/C++、Python、Chinese

修改VScode字体:

  1. 文件 ---- 首选项 ---- 设置 ---- 常用设置
  2. Font Size设置成:18
  3. Font Family设置成:
 monospace,'Droid Sans Mono', 'monospace','Droid Sans Fallback'
  1. 设置ctrl+滚轮实现代码字体大小缩放:在设置中搜索zoom,然后给Editor: Mouse Wheel Zoom打钩

3.在VScode中使用ROS

3.1 创建工作空间

cd ~/My_Ros_WorkSpace
mkdir test2_workspace
cd  test2_workspace
mkdir src
cd src
catkin_init_workspace
cd ..
catkin_make
catkin_make install

在这里插入图片描述

3.2 启动VScode

在工作空间下面,键入code .

code .

在这里插入图片描述

3.3 配置VScode

配置编译相关的命令和参数(Ctrl + Shift + b)
选择要运行的生成任务:点catkin_make:build后面的小齿轮,修改.vscode/tasks.json 文件
复制下面的内容到.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"
        }
    ]
}

不要忘记,每次改完都要Ctrl + s保存一下

这样改完tasks.json 文件,以后写完代码需要编译,直接快捷键(Ctrl + Shift + b)就会默认编译整个工作空间!

在这里插入图片描述

3.4 创建功能包

选中src,右键Create Catkin Package
录入功能包名字"hello_pkg",回车
录入依赖"roscpp rospy std_msgs",再回车
避免依赖名字可能写错了,也可以(Ctrl + Shift + b)编译一下,看看有没有问题!

3.5 编写C++文件

在功能包"hello_pkg"里面的src里面新建一个hello.cpp(最里面的src)

#include "ros/ros.h"

int main(int argc, char *argv[])
{
    //节点初始化:节点名为hello2333(节点名中不能有空格)
    ros::init(argc,argv,"hello2333");

    //输出日志
    ROS_INFO("哈哈哈哈哈哈哈哈哈哈");
    return 0;
}

如果有报错或者没有代码补全的提示:
修改 .vscode/c_cpp_properties.json,设置 "cppStandard"为 “c++17”,保存一下

3.6 配置CMakeLists.txt

修改与package.xml平级的CMakeLists.txt(别搞错了,不是上一级的CMakeLists.txt)

//add_executable(可执行文件名称       src/C++源文件名.cpp)
//target_link_libraries(可执行文件名称      ${catkin_LIBRARIES})
//为了方便,一般会令可执行文件的名称与C++源文件名称相同
add_executable(hello     src/hello.cpp)
target_link_libraries(hello    ${catkin_LIBRARIES})
#############
## Install ##
#############

一般会令,可执行文件名称=src/C++源文件名,这里都叫hello
节点名=hello2333
功能包名=hello_pkg

3.7 运行节点

(Ctrl + Shift + B)编译一下工作空间
在这里插入图片描述

然后在VScode里面新建一个终端:

roscore

然后在VScode里面再新建一个终端:

source devel/setup.bash
rosrun   <功能包名>   <可执行文件名>

在这里插入图片描述

输出中文乱码的问题
在hello.cpp程序中加入以下任意一句

    setlocale(LC_CTYPE, "zh_CN.utf8");
    setlocale(LC_ALL, "");
#include "ros/ros.h"

int main(int argc, char *argv[])
{
    //setlocale(LC_CTYPE, "zh_CN.utf8"); //设置编码,防止中文乱码
    setlocale(LC_ALL, "");

    //节点初始化:节点名为hello2333(节点名中不能有空格)
    ros::init(argc,argv,"hello2333");

    //输出日志
    ROS_INFO("哈哈哈哈哈哈哈哈哈哈");
    return 0;
}

重新编译和运行(记得先终止前面打开的两个终端)
在这里插入图片描述

以后建立新的工作空间,好像得把上面的配置重新走一步,或者复制一个工作空间过来直接改

3.8 使用launch文件一次启动多个节点

进入工作空间的根目录,鼠标右键在终端中打开,并启动VScode

code .

然后在功能包"hello_pkg"下面,新建一个名为"launch"的文件夹
然后在名为"launch"的文件夹里面继续新建一个后缀为.launch的文件,名字随便起
我这里是"start_turtle.launch",主要是为了启动小乌龟节点
在这里插入图片描述
编写"start_turtle.launch"文件

<launch>
    <!--添加被执行的节点-->
</launch>

先不添加节点,Ctrl + s先保存文件,然后并按Ctrl + ~ 准备执行launch
在出现的终端中,先设置环境变量

source devel/setup.bash

然后执行launch文件:roslaunch <功能包名> <launch文件>

roslaunch  hello_pkg   start_turtle.launch

可以看到执行成功,并且只要在launch文件中写了< launch >根标签,就能自动打开roscore
在这里插入图片描述

确保启动launch文件没有问题了以后,就可以开始启动一些节点了

<launch>
    <!--添加被执行的节点-->
    <!--  <node pkg="功能包名" type="src/C++源文件名=可执行文件名" name="为节点简单的命名一下,这个name可以随便取" output="设置日志的输出目标" />  -->

    <!--启动乌龟GUI-->
    <node  pkg="turtlesim"  type="turtlesim_node"  name="seu_turtle2333"/>
     <!--启动键盘控制乌龟-->   
    <node  pkg="turtlesim"  type="turtle_teleop_key"  name="seu_turtlekey2333"/>

</launch>

Ctrl + s 保存一下,然后再Ctrl + ~执行launch
光标移动到终端,就可以↑↓←→控制小乌龟了
在这里插入图片描述

到这里为止应该可以用launch文件启动小乌龟了
将上面写的hello节点也添加到launch文件试一试,能不能在终端输出"哈哈哈哈哈哈"

<launch>
    <!--添加被执行的节点-->
    <!--  <node pkg="功能包名" type="src/C++源文件名=可执行文件名" name="为节点简单的命名一下,这个name可以随便取" output="设置日志的输出目标" />  -->

    <!--启动乌龟GUI-->
    <node  pkg="turtlesim"  type="turtlesim_node"  name="seu_turtle2333"/>
     <!--启动键盘控制乌龟-->   
    <node  pkg="turtlesim"  type="turtle_teleop_key"  name="seu_turtlekey2333"/>
     <!--启动哈哈节点-->   
    <node  pkg="hello_pkg"  type="hello"  name="seu_hello2333"  />
</launch>

在这里插入图片描述

可以看到虽然启动了hello节点,但是终端里头没有输出"哈哈哈哈哈哈"
这是因为,如果节点中含有日志输出并想让日志显示在终端,就必须在launch文件中再设置一个属性output=“设置日志的输出目标”
这里为了将日志输出到终端,就要写成output=“screen”

<launch>
    <!--添加被执行的节点-->
    <!--  <node pkg="功能包名" type="src/C++源文件名=可执行文件名" name="为节点简单的命名一下,这个name可以随便取" output="设置日志的输出目标" />  -->

    <!--启动乌龟GUI-->
    <node  pkg="turtlesim"  type="turtlesim_node"  name="seu_turtle2333"/>
     <!--启动键盘控制乌龟-->   
    <node  pkg="turtlesim"  type="turtle_teleop_key"  name="seu_turtlekey2333"/>
     <!--启动哈哈节点-->   
    <node  pkg="hello_pkg"  type="hello"  name="seu_hello2333"  output="screen"/>

</launch>

在这里插入图片描述

3.8 使用计算图看节点之间的关系

再新建一个终端

rqt_graph

报错
在这里插入图片描述
解决方法:
打开报错中指出的文件缺失的目录/opt/ros/melodic/share/rqt_virtual_joy/
新建文件plugin.xml
打开plugin.xml,复制粘贴下面的代码,保存退出即可

Ctrl + Alt + T打开终端

cd /opt/ros/melodic/share/rqt_virtual_joy
sudo touch plugin.xml
sudo gedit plugin.xml
<library path="src">
  <class name="My Plugin" type="rqt_virtual_joy.virtual_joy_module.MyPlugin" base_class_type="rqt_gui_py::Plugin">
    <description>
      An example Python GUI plugin to create a great user interface.
    </description>
    <qtgui>

      <group>
        <label>Robot Tools</label>
      </group>
      <!-- <group>
        <label>Subgroup</label>
      </group> -->

      <label>Virtual Joystick</label>
      <icon type="file">resource/input-gaming.png</icon>
      <statustip>Great user interface to provide real value.</statustip>
    </qtgui>
  </class>
</library>

如果显示的是一个完全空白的窗口,就试一下这条指令

rqt_graph --clear-config

在这里插入图片描述

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值