第二次跟着赵虚左老师学习ROS进行的一些基本问题的总结,有些语言比较接地气,主要是为了更好的理解,学得比较浅薄,对自己来说觉得收获很大,如果内容有问题希望可以指正!!!
目录
一、命令行复习
1.智能车比赛基本命令
①.rviz source ./devel/setup.bash
roslaunch urdf01_rviz demo01_helloworld.launch
②.gazebo source ./devel/setup.bash
roslaunch urdf02_gazebo demo01_helloworld.launch
③.自主运行
- roslaunch racecar Run_car.launch 开启传感器,雷达laser.launch
- 进入cd racecar/src/racecar_drive/src/后
- roslaunch racecar race_laser race_laser_pub.launch
④roslaunch 运行.launch文件,可同时启动多个节点
- 用roslaunch不用roscore
- 用rosrun必须先单独一个终端启动roscore
- roscore是所有节点启动的核心
2.①ROS终端C++代码在工作空间下编译catkin_make会在工作空间出现devel、build文件,src源文件,三个(目录)处于同一级
- 工作空间(自定义)
- src子目录
- 功能包(自定义)
- src放C代码(源文件),scripts放python代码
C++ | Python | |||
所放目录 | src | scripts | ||
原文件 名后缀 | 自定义文件名.cpp | 自定义文件名.py | ||
添加可执行权限 | 不需要 | 法一: $chmod +x 自定义文件名.py 法二:给所有python文件添加$chmod +x *.py $ll | ||
配置文件Cmakelist.txt Ctrl+/ 自动去除注释 | (136行) add_executable(源文件名1 src/源文件名2.cpp) (149行) target_link_libraries(源文件名1 ${catkin_LIBRARIES}) | (162行) catkin_install_python(PROGRAMS scripts/自定义文件名.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) 是为了指定解释器,noetic版本特定的python | ||
源文件名1和2可以一样或不一样,不一样运行1.(一般1和2一样) 执行代码roslaunch/rosrun + 功能包名 + 被运行的源文件名(跟配置文件前面映射的那个名字一致) 下面11点有示例 | ||||
注释 | /* */ | // | ‘’’ ‘’’ | # |
注意事项 | 要编译 | 代码内指定解释器 Python 版 helloworld | ||
Vscode中编译ros | 为了频繁编译省事:
|
②编译catkin_make要在工作空间下,roslaunch不需要进入工作空间。
3.不source ./devel/setup.bash编译不成功,可以在brashrc里加入source ./devel/setup.bash(在C代码编译后进行),每次也不用再刷新环境变量
- Ctrl+H调出主目录下的隐藏文件
- 找到.bashrc文件
- 最后一行加入source ~/工作空间/devel/setup.bash
- 保存
- 终端输入source .bashrc
可以在任意终端下执行要执行的源文件,不用在对应工作空间下source ./devel/setup.bash后才能执行。
刷新环境变量要在工作空间下,不然也会报错
4.创建完功能包名后就不能更改了,更改也没用,执行源文件还是会报错找不到功能包roslaunch/rosrun + 功能包名 + 被运行的源文件名(不用带后缀.cpp或.py),配置文件写的是执行源文件)
注意事项:配图理解
- 执行源文件要回到对应工作空间目录下
- python添加可执行权限要在源文件目录下打开终端进行
- 配置文件时,C++有对应映射名,去掉.cpp即可,python没有
5.Python之前的版本不需要配置文件,noetic需要
主要作用是:可以正确安装python脚本,帮我们定位到合适的python解释器执行python脚本
配置的话自动定位到python3(ROS noetic 用的是python3解释器)
不配置要直接在代码里声明解释器为 #! /usr/bin/env python3
文档1.4.2里的------4.8里有具体解释
6..ros中内置的小乌龟,其实是配置好的功能包,后面学习还会用到导航用到的gmapping功能包等
- $ apt search ros-noetic-* 搜索到ros-noetic版本下网络上可用的所有功能包
- 进一步具体搜索用$ apt search ros-noetic-* | grep -i gmapping
- 可以根据需要安装$ sudo apt install + 要安装的包
二、和Windows有关
1.ROS有好多版本,我用的是ROS noetic, cd /opt/ros/noetic/
用sudo apt-get install ros-noetic-desktop-full
还有,ROS melodic版本,ROS kinetic版本
注:2022版的Ubuntu软件源会出现问题
2.想要使用windows上的截屏,可以Ctrl+Alt将鼠标指针从虚拟机中移除后使用快捷键截屏然后粘贴在文档上。
3.ROS有对应官网页http://wiki.ros.org/
三、好用的代码
1.进入vscode
cd 工作空间名
code .
2.计算图的使用
- rosrun rqt_graph rqt_graph,即rosrun+功能包名+节点名
- 也可以在命令行直接输入rqt_graph也可以启动这个节点
使用方法:
- 一个终端启动功能包节点
- 新开一个终端,rosrun rqt_graph rqt_graph
<node pkg="功能包名" type="可执行源文件名" name="对节点另起的一个名字" output="screen" />
launch文件里一个节点写完要加<node />,像C语言中的分号,代表结束
- 想要在终端输出日志(内容)得加上output="screen"
- name名会在rqt_graph中出现,一个name名对应一个节点node
- name相当于别名,防止和其他节点的冲突,替换初始化的节点名
- 箭头上方是两个节点交互数据的一种方式