2022年9月16日
一、ros快速体验
刚开始ros的学习,真的是基础不牢地动山摇啊!!!
1.ros工作空间的创建,mkdir-p name/src cd name catkin_make,这才算把工作空间创建好。
2.工作包的创建,cd src catkin_create_pkg name roscpp rospy std_msgs 。
3.源码的实现,cd name cd src,编写源码,错误百出!!!
#include "ros/ros.h"
int main(int argc,char *argv[]){
ros::init(argc, argv, "helloWorld");
ROS_INFO("helloWorld!");
return 0;
}
第一个helloWorld为节点名,注意ROS_INFO函数的用法。
修改cmakeLists.txt文件。
add_executable(helloWorld_node src/helloWorld_c.cpp)
target_link_libraries(helloWorld_node
${catkin_LIBRARIES}
)
其中helloWorld_node为调用时运行的文件名。
写好后,到工作空间的根目录编译catkin_make。
4.代码的运行
首先运行roscore指令,另外打开一个终端,运行source指令,刷新环境变量,也可以直接在.bashrc文件中写入下面的第一行程序,保存后退出,再根目录下调用第二行程序即可。
source ~/demo_stu/devel/setup.bash
source .bashrc
这样每次就不需要运行该指令。然后运行rosrun指令,指定package和node即可。
yankai@yankai-linux:~/demo_stu$ rosrun helloWorld helloWorld_node
[ INFO] [1663319467.507848846]: helloWorld!
二、ros开发集成环境搭建
1.Terminator终端的安装
常用快捷键
Alt+Up //移动到上面的终端
Alt+Down //移动到下面的终端
Alt+Left //移动到左边的终端
Alt+Right //移动到右边的终端
Ctrl+Shift+O //水平分割终端
Ctrl+Shift+E //垂直分割终端
Ctrl+Shift+C //复制选中的内容到剪贴板
Ctrl+Shift+V //粘贴剪贴板的内容到此处
Ctrl+Shift+W //关闭当前终端
Ctrl+Shift+Q //退出当前窗口,当前窗口的所有终端都将被关闭
Ctrl+Shift+X //最大化显示当前终端
Ctrl+Shift+Z //最大化显示当前终端并使字体放大
2.vscode的安装与使用
一步一步来即可。
其中注意复制下面的代码
快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build
可以点击配置设置为默认,修改.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"
}
]
}
中文乱码解决,在主函数前加上以下任何一行程序即可
setlocale(LC_CTYPE, "zh_CN.utf8");
setlocale(LC_ALL, "");
3.launch文件演示
launch文件是写在包下单独创建的launch文件夹中
写完launch文件后,按ctrl+~,完成launch文件的更新
简单的launch文件
node ---> 包含的某个节点
pkg -----> 功能包
type ----> 被运行的节点文件
name --> 为节点命名
output-> 设置日志的输出目标
三.ROS框架
1.ros文件系统
WorkSpace --- 自定义的工作空间
|--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。
|--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。
|--- src: 源码
|-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成
|-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件
|-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)
|-- scripts 存储python文件
|-- src 存储C++源文件
|-- include 头文件
|-- msg 消息通信格式文件
|-- srv 服务通信格式文件
|-- action 动作格式文件
|-- launch 可一次性运行多个节点
|-- config 配置信息
|-- CMakeLists.txt: 编译的基本配置
2.ros文件相关命令
1.增
catkin_create_pkg 自定义包名 依赖包 === 创建新的ROS功能包
sudo apt install xxx === 安装 ROS功能包
2.删
sudo apt purge xxx ==== 删除某个功能包
3.查
rospack list === 列出所有功能包
rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径
roscd 包名 === 进入某个功能包
rosls 包名 === 列出某个包下的文件
apt search xxx === 搜索某个功能包
4.改
rosed 包名 文件名 === 修改功能包文件
需要安装 vim
比如:rosed turtlesim Color.msg
5.执行
5.1roscore
roscore === 是 ROS 的系统先决条件节点和程序的集合, 必须运行 roscore 才能使 ROS 节点进行通信。
roscore 将启动:
ros master
ros 参数服务器
rosout 日志节点
5.2rosrun
rosrun 包名 可执行文件名 === 运行指定的ROS节点
比如:
rosrun turtlesim turtlesim_node
5.3roslaunch
roslaunch 包名 launch文件名 === 执行某个包下的 launch 文件
3.ros设计图
ROS 内置的小乌龟案例来演示计算图
首先,按照前面所示,运行案例
然后,启动新终端,键入: rqt_graph 或 rosrun rqt_graph rqt_graph,可以看到类似下图的网络拓扑图,该图可以显示不同节点之间的关系。
以上为今天所学内容,今天上午摸鱼,下午晚上才学,进度也算可以了,明天继续加油!!!