使用的是VMWare,直接看b站视频,链接如下:【两分半钟完成VMware安装及Linux-Ubuntu安装(全程无废话)】 https://www.bilibili.com/video/BV1W34y1k7ge/?share_source=copy_web&vd_source=17b5c0c03b47e66a5faf7ac4e2bcb32a
可以选择去镜像源下载ubantu系统镜像,也可以直接去官网下,还是建议官网下,问题比较少。虚拟机的设置我选择的是两个处理器,每个处理器的内核数量为3;运行内存16GB;硬盘150GB。因为如果要使用gazebo这样的仿真软件还是很吃资源的,即便是这种配置还是会有点卡。
ubantu安装完成之后首先设置分辨率,使得画面正好铺满整个0屏幕,这需要根据自己的电脑进行设置,多试几个就好了:1920×1080。
如果发现无法与windows实现复制粘贴的话就需要卸载VMware tools并且重新安装,这只是其中一个错误,可能还会有其他情况,如果这种方法不行的话,再去网上找其他方法:https://blog.csdn.net/Set_Mode/article/details/127173444
https://blog.csdn.net/qq_42450767/article/details/124738627
由于安装的是ubantu20.04所以这里选择的ROS2版本为foxy。
这里直接使用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
按照上面创建一个工作空间,进入工作空间中执行:
code ./
进入vscode(vscode的安装可以参照:https://www.bilibili.com/video/BV1gr4y1Q7j5/?p=10&spm_id_from=pageDriver&vd_source=2a10d30b8351190ea06d85c5d0bfcb2a)
①右击src,选择在集成中打开:
这样在vscode中就会出现类似终端的界面:
②创建功能包:
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文件,创建完之后此时功能包目录结构如下:
④编写代码:
#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 build --package-select 功能包名称