[ROS] ROS的环境配置和安装
前期环境配置
推荐使用双系统以更好地发挥硬件性能。
Ubuntu系统的安装( 双系统)
- 系统镜像iso下载地址:Index of /ubuntu-releases/20.04/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- 引导u盘制作工具:rufus-3.4.exe 密码: om26
- 注意:需要安装ubuntu20.04版本和ROS1
安装ROS1
- 使用国内源(清华源)
- 推荐使用鱼香ros的一键安装(noetic版本)
- 打开终端(快捷键ctrl+alt+T)输入
wget http://fishros.com/install -O fishros && . fishros - 按照提示进行安装
测试
- 在终端输入
roscore启动ros核心 - 在网址
index.ros.org获取软件包 - 安装软件包的一般格式:
ros-noetic-Name,例如sudo apt install ros-noetic-rqt-robot-steering则安装一个调节机器人速度的软件包 - 然后运行
rosrun rqt_robot_steering rqt_robot_steering前面为包名称,后面为节点名称

- 随后安装一只小乌龟(操作对象)
sudo apt install ros-noetic-turtlesim
启动小乌龟rosrun turtlesim turtlrsim_node

更改/cmd_vel为turtle1/cmd/vel即可操控小乌龟
使用Github
目录结构
~/catkin_ws/src
使用mkdir命令进行创建- 在src目录下安装git
sudo apt install git - 克隆源代码
在src目录下git clone (url于github“code”页面复制)(以wpr_wimulation为例) 
进入scripts文件夹,该目录用于放置脚本文件和Python程序

一些脚本文件,针对不同ros版本
在该目录下打开终端,使用脚本安装编译需要的依赖库./install_for_noetic.sh
- 回到
catkin_ws目录运行catkin_make
进行编译 - 使用cource指令载入空间的环境设置
source ~/catkin_ws/devel/setup.bash - 使用roslaunch运行编译好的ros程序
roslaunch wpr_simulation wpb_simple.launch
通常把设置工作空间环境参数的source指令添加到终端程序初始化的脚本~/.bashrc文件中,操作方法如下:gedit !/.bashrc
于末尾添加source ~/catkin_ws/devel/setup.bash
Terminator常用快捷键
ctrl+shift+E 横向分屏ctrl_shift+O 纵向分屏ctrl+shift+W 取消分屏alt+方向键 移动焦点
ubuntu可能会出现键位冲突 输入ibus-setup 修改/删除 快捷键VS Code环境配置
安装VS Code
官网:https://code.visualstudio.com/
- 下载.deb文件安装包
- 安装deb文件命令:
sudo dpkg -i 文件名 - 导入工作空间(src文件夹)
下载插件
- 中文包
- ros
- cmake tools
配置快速编译
- ctrl+shift+B 选择"cmake-build"
- 点击齿轮

如图更改第14行。
Node节点与Package包
节点与包


创建一个简单的包和节点
创建一个package包
打开终端 进入src目录catkin_create_pkg ssr_pkg rospy roscpp std_msgs
创建一个名为"ssr_pkg"的package
catkin_create_pkg <包名> <依赖项列表>
在终端中进入指定软件包的文件地址roscd pkg_name
创建node节点

于src目录中建立一个cpp文件
全球统一 输出Hello world!
#include <ros/ros.h>
int main(int argc, char const *argv[])
{
printf("Hello World!\n");
return 0;
}
源码编译
- 进入CmakeLists.txt文件,为新建的节点添加编译规则

找到build章节 如图 第133行 声明c++可执行文件
双井号为说明 单井号为命令行

复制指令 于文件末尾粘贴 更改名称
保存ctrl+shift+B进行编译

运行节点
- 打开终端 运行ros
roscore
运行节点rosrun ssr_pkg chao_node

成功!
ros节点的完善
#include <ros/ros.h>
int main(int argc, char *argv[])//去除const
{
ros::init(argc,argv,"chao_node");//初始化
printf("Hello World!\n");
return 0;
}- 链接函数所在库文件

添加在文件末尾

- 保持节点运行,添加while循环
#include <ros/ros.h>
int main(int argc, char *argv[])//去除const
{
ros::init(argc,argv,"chao_node");//初始化
while(ros::ok())//使用ros::ok()可以响应外部信号,true则不行,无法使用ctrl+c中断程序
{
printf("好好好好好\n");
}
return 0;
}效果:

小结
