[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;
}
效果: