(一)ROS学习
ROS安装
安装的为Ubuntu16.04,ros为Kinetic版本
步骤6解决依赖执行第一个命令时
sudo rosdep init
rosdep update
出现以下问题
bash ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.
解决方法链接:https://blog.youkuaiyun.com/u013468614/article/details/102917569
Ubuntu使用
VMware Tools安装:
自适应屏幕大小和方便本机和虚拟机之间直接拖拽文件
安装链接:https://blog.youkuaiyun.com/engerla/article/details/83009677
没有Tab键自动补全功能
- unbunt下的shell为bash,若要tab之后直接选择命令,则要安装zsh
方法一:
- 利用vi编辑器打开/etc/bash.bashrc文件(需要root权限)
sudo vi /etc/bash.bashrc
- 找到文件中的下列代码
#enable bash completion in interactive shells
# if ! shopt -oq posix; then
# if [ -f /usr/share/bash-completion/bash_completion ]; then
# . /usr/share/bash-completion/bash_completion
# elif [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
# fi
# fi
- 去掉 if 到 fi 之间的注释 “#” 号
#enable bash completion in interactive shells
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
- 最后刷新一下即可
source /etc/bash.bashrc
- 如果在普通用户执行不了则如下操作
sudo source /etc/bash.bashrc
方法二:
- 打开主目录home文件,ctrl+h显示出隐藏文件
- 打开.bashrc文件,在结尾加入. /etc/bash_completion
Lunix编辑文档一些操作命令
- 命令模式进入编辑模式:i,退出:e
- 删除内容:分为删除一行还是一个字符
如果是一行:执行两次 d
如果是删除某个字符:x
如果是要将文件整个删除,在shell下敲命令:rm -f file (-f是目录) - 编辑模式返回命令模式:Esc键
- 末行模式:Shift键+:,保存退出:wq,放弃所有改动直接退出:q!
ros安装目录
默认在我的虚拟机的opt/ros里面
安装目录功能
- bin文件夹:存放可执行的具体的程序,是ros系统或者功能包提供的可直接执行的命令,常在终端下执行,故要配置环境变量,让系统找到它。
- etc文件夹:ros相关的配置文件。 include文件夹:安装的功能包代码的头文件。
- lib文件夹:可执行的Python文件和一些可执行文件,即功能包中的节点,通过运行节点就可以启动相应功能包的功能。
- share文件夹:保存的是功能包里面节点的信息,如话题、服务、action机制的定义等。
ROS常用命令
- ros+Tab键*2:查看ros常用命令(例roscp、rosnode)
- 命令+空格+Tab键:查看命令参数
- 命令+空格+ --help:查看使用方法和说明
ROS应用框架
第一个程序小海龟仿真
- 打开三个终端(打开终端快捷键:Ctrl+Alt+T),之后分别输入命令234
- 启动ROS Master:
roscore
# ROS Master即ROS提供的节点管理器,它在整个网络通信架构里相当于管理中心,管理各个节点,必须启动
# 节点管理器启动,同时启动的还有rosout和parameter server。rosout是负责日志输出的一个节点,其作用是告知用户当前系统的状态,包括输出系统的error、warning等,并将log记录在日志文件里;parameter server是参数服务器,它不是一个节点,是存储参数配置的一个服务器。
# 会显示ros信息,如ros版本号:1.12.17
# 主机资源地址:ROS_MASTER_URI=http://x-virtual-machine:11311/
# 退出:Ctrl+C
- 启动小海龟仿真器:
rosrun turtlesim turtlesim_node
rosrun pkg_name node_name
# rosrun:运行功能包中的可执行文件即启动节点,后跟两个参数
# turtlesim:为该功能包的名字
# turtlesim_node:为该节点名字,该节点归属于该功能包下面
- 启动海龟控制节点:
rosrun turtlesim turtle_teleop_key
# 提供使用键盘来控制小海龟的运动的功能
- 打开计算图:
rqt_graph
# 使用rqt_graph可视化工具查看系统中运行的计算图,将系统中的主要资源可视化的展现出来
- 列出当前节点(查看话题列表):
rosnode list
- 查看节点信息:
rosnode info +节点
例: rosnode info /turtlesim
- 列出当前发布或订阅的话题/服务:
rostopic list / rosservice list
- 查看话题/服务信息:
rostopic info +话题 / rosservice info +服务
例: rostopic info /turtle1/cmd_vel
rosservice info /spawn //该服务作用为在服务器里面新生一只海龟
- 监听话题/服务具体发布或订阅信息:
rostopic echo +话题
- 查找提供服务的节点:
rosservice node +服务名
例: rostopic echo /turtle1/cmd_vel //监听小海龟运动,角速度,线速度
rosservice node /spawn
- 发布服务请求:
rosservice call + 服务名 + agrs
查看服务参数agrs:rosservice agrs + 服务名 / 命令8
例: rosservice call /spawn + Tab键*2 //键盘左右移动修改参数
rosservice call /spawn 3 3 0 Peter //新生成一只坐标(x,y)=(0,0),朝向角度为0,名字为Peter的小海龟
- 通过终端发布简单的订阅消息(发布话题消息):
a.查看所发布话题的消息类型:rostopic type +话题
例: rostopic type /turtle1/cmd_vel
- b.查看消息的详细情况:
rosmsg show +该话题数据类型
例: rosmsg show geometry_msgs/Twist
- c.①.
rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
参数说明:
# rostopic pub:这条命令将会发布消息到某个给定的话题。
# -1:(单个破折号)这个参数选项使rostopic发布一条消息后马上退出。
# /turtle1/cmd_vel:这是消息所发布到的话题名称。
# geometry_msgs/Twist:这是所发布消息的类型。
# -- :(双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。这在参数里面包含有破折号-(比如负号)时是必须要添加的。
# '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]':在一个geometry_msgs/Twist消息里面包含有两个浮点型元素:linear和angular。
在本例中,2.0是linear的值,1.8是angular的值。这些参数是按照YAML语法格式编写的,在YAML文档中有更多描述。
- ②.
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
# 以1Hz的频率发布速度发布到话题上。-r:频率参数;1:1Hz
- d.zsh脚本解释器下命令:
①rostopic pub +话题名+该话题数据类型(Tab键可直接出来)
②rostopic pub -r 10 +话题名+该话题数据类型 //-r:频率参数;
例: rostopic pub /turtle1/cmd_vel geometry_msgs/Twist //这只发布一次
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist //-r:频率参数;10:频率,10次/秒,按频率发布
rqt_plot 命令报错
rqt_plot
:可视化工具,将系统中某一个话题的具体信息数据通过曲线的方式展现出来。
使用方法:输入具体话题名,如/turtle1/pose/x,/turtle1/pose/y,点击加号加入绘制区域,软件就会订阅小海龟的坐标位置,在绘制区域显示出来。
-
报错如下:
-
通过以下命令判断是否安装python pip
pip --version # Python2.x 版本命令
pip3 --version # Python3.x 版本命令
- 若未安装,则按照提示输入安装命令:
sudo apt install python-pip
sudo apt install python3-pip
- 升级 matpoltlib
pip show matplotlib //查看 matpoltlib 版本
pip install --upgrade matplotlib //升级 matpoltlib
- 最后再运行
rqt_plot
,运行成功。