虚拟机、ubantu、ros2安装、工作空间、功能包创建

参考视频博主是b站的鱼香ROS

    • 一、VMWare及ubantu20.04安装:
      • 1.1分辨率设置:
      • 1.2VMware tools设置:
      • 1.3软件源更换
    • 二、ROS2安装:
      • 1、ubantu与ros2的版本对应关系:
      • 2、安装过程:
    • 三、工作空间创建及代码编译:
    • 四、创建c++版功能包(整体流程):
    • 五、colcon指令:只编译一个功能包

一、VMWare及ubantu20.04安装:

使用的是VMWare,直接看b站视频,链接如下:【两分半钟完成VMware安装及Linux-Ubuntu安装(全程无废话)】 https://www.bilibili.com/video/BV1W34y1k7ge/?share_source=copy_web&vd_source=17b5c0c03b47e66a5faf7ac4e2bcb32a
可以选择去镜像源下载ubantu系统镜像,也可以直接去官网下,还是建议官网下,问题比较少。虚拟机的设置我选择的是两个处理器,每个处理器的内核数量为3;运行内存16GB;硬盘150GB。因为如果要使用gazebo这样的仿真软件还是很吃资源的,即便是这种配置还是会有点卡。

1.1分辨率设置:

ubantu安装完成之后首先设置分辨率,使得画面正好铺满整个0屏幕,这需要根据自己的电脑进行设置,多试几个就好了:1920×1080。

1.2VMware tools设置:

如果发现无法与windows实现复制粘贴的话就需要卸载VMware tools并且重新安装,这只是其中一个错误,可能还会有其他情况,如果这种方法不行的话,再去网上找其他方法:https://blog.csdn.net/Set_Mode/article/details/127173444

1.3软件源更换

虚拟机、ubantu、ros2安装、工作空间、功能包创建_第1张图片
虚拟机、ubantu、ros2安装、工作空间、功能包创建_第2张图片
虚拟机、ubantu、ros2安装、工作空间、功能包创建_第3张图片
虚拟机、ubantu、ros2安装、工作空间、功能包创建_第4张图片
这样退出之后会让更新,点击更新即可。

二、ROS2安装:

1、ubantu与ros2的版本对应关系:

https://blog.csdn.net/qq_42450767/article/details/124738627
由于安装的是ubantu20.04所以这里选择的ROS2版本为foxy。

2、安装过程:

这里直接使用b站up主鱼香ROS官方网站中的一行代码直接配置,懒得装的话直接看他的文档就可以了:https://fishros.com/d2lros2/#/humble/chapt1/get_started/3.%E5%8A%A8%E6%89%8B%E5%AE%89%E8%A3%85ROS2
如果想自己配置的话可能会遇到比较多的问题,可以参考另一个up主古月居的教程:https://www.bilibili.com/video/BV16B4y1Q7jQ/?spm_id_from=333.337.search-card.all.click&vd_source=2a10d30b8351190ea06d85c5d0bfcb2a

三、工作空间创建及代码编译:

工作空间是包含若干个功能包的目录。
①在主目录下创建工作空间文件夹:mkdir my_ws
②进入工作空间创建src文件夹用于存放功能包:

cd my_ws
mkdir src

③执行编译,此时会在my_ws目录下新生成三个文件夹:build、install、log

colcon build

这里和ros1不一样,ros1使用catkin_make来进行编译。
如果提示没有colcon 这个指令的话需要手动安装:

sudo apt-get install python3-colcon-common-extensions

④此时可以进行测试,从github中拷贝例程进src目录下:

git clone https://github.com/ros2/examples src/examples -b foxy

如果无法下载可以连接手机热点试试;如果还不行可以使用鱼香ROSup主提供的代理方法:https://mirror.ghproxy.com/;如果这也不行就需要科学上网了,可以参考这个,新注册的可以免费一段时间:https://mahongfei.com/1776.html

拷贝成功之后再执行一次编译,等待编译成功之后即可进行测试:
首先进入工作空间,source一下,这样执行时才能找到我们的工作空间:

source install/setup.bash

运行一个订者节点:

ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function

运行一个发行者节点(每打开一个新的中断都需要source):

ros2 run examples_rclcpp_minimal_publisher publisher_member_function

现象:
虚拟机、ubantu、ros2安装、工作空间、功能包创建_第5张图片

四、创建c++版功能包(整体流程):

按照上面创建一个工作空间,进入工作空间中执行:

code ./

进入vscode(vscode的安装可以参照:https://www.bilibili.com/video/BV1gr4y1Q7j5/?p=10&spm_id_from=pageDriver&vd_source=2a10d30b8351190ea06d85c5d0bfcb2a)
①右击src,选择在集成中打开:
虚拟机、ubantu、ros2安装、工作空间、功能包创建_第6张图片
这样在vscode中就会出现类似终端的界面:
虚拟机、ubantu、ros2安装、工作空间、功能包创建_第7张图片
②创建功能包:

ros2 pkg create village_li --build-type ament_cmake --dependencies rclcpp

–pkg create 是创建包的意思
–build-type 用来指定该包的编译类型,一共有三个可选项ament_python、ament_cmake、cmake
–dependencies 指的是这个功能包的依赖,这里给了一个ros2的C++客户端接口rclcpp

③创建节点文件:
在village_li /src下右键选择新建文件,创建一个node_01.cpp文件,创建完之后此时功能包目录结构如下:
虚拟机、ubantu、ros2安装、工作空间、功能包创建_第8张图片
④编写代码:

#include "rclcpp/rclcpp.hpp"
int main(int argc, char **argv)
{
    /* 初始化rclcpp  */
    rclcpp::init(argc, argv);
    /*产生一个node_01的节点*/
    auto node = std::make_shared("node_01");
    // 打印一句自我介绍
    RCLCPP_INFO(node->get_logger(), "node_01节点已经启动.");
    /* 运行节点,并检测退出信号 Ctrl+C*/
    rclcpp::spin(node);
    /* 停止运行 */
    rclcpp::shutdown();
    return 0;
}

⑤修改CmakeLists文件:

add_executable(node_01 src/node_01.cpp)//生成可执行文件
ament_target_dependencies(node_01 rclcpp)//添加依赖

install(TARGETS    //让编译器编译node_01这个文件
  node_01
  DESTINATION lib/${PROJECT_NAME}
)

加入以上代码即可。

⑥执行
首先source:

source install/setup.bash

然后编译:

colcon build

最后执行:

ros2 run village_li node_01

现象:
在这里插入图片描述

五、colcon指令:只编译一个功能包

前面执行的编译指令是编译工作空间中的所有功能包,这样比较耗费时间,可以使用以下指令编译某个功能包:

colcon build --package-select 功能包名称

你可能感兴趣的:(机器人,c++)