ROS练习
作者:互联网
ROS练习
过了一遍ros wiki的教程,感觉写的不是很详细,随便记点东西~
http://wiki.ros.org/ROS/Tutorials
1)查看ROS环境
#因为使用了zsh,所以需要重新设置环境变量
printenv | grep ROS #无输出
#打开/home/.zshrc添加一行
source /opt/ros/noetic/setup.zsh
#添加工作空间的环境变量
source /data/helloB/ROSWork/catkin_work/devel/setup.zsh
#查看是否配置成功
echo $ROS_PACKAGE_PATH
在ros工作空间下进行各种测试,不然文件到处都是;
2)linux
#查看当前版本shell
cat /etc/shells
echo $SHELL #zsh
#在当前shell环境下读取并执行FileName中的命令
source filename # 该命令可用 . 代替: . filename
sh filename #创建一个子shell,并在子shell中执行脚本中的语句
./filename #同sh filename (脚本本身具有可执行权限), . 表示当前目录
3)rospack,roscd,rosls
#使用rospack返回包路径
rospack find package_name #返回包节点名称
#使用roscd 进入包节点
roscd package_name/subdir
roscd roscpp/cmake
roscd log #进入ros存储日志的文件夹
#使用rosls列出包节点内容
rosls roscpp_turtorials
#ros指令支持tab键补全
4)catkin_create_pkg与rospack
# 将软件包构建在catkin工作空间下(src目录下)
cd src/
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp #构建的包名及相关依赖
#返回工作空间构建软件包
cd ..
catkin_make #构建软件包
#将构建后的工作空间添加到ros环境中
. ./devel/setup.zsh
#显示包节点的一阶依赖关系
rospack depends1 beginner_turtorials
#显示包节点的所有依赖关系
rospack depends beginner_turtorials
#package.xml的主要内容
<build_depend> : 编译时所需依赖
<buildtool_depend> : 用于构建工具包
<exec_depend> : 运行时所需软件包
<test_depend> : 测试软件包
5)catkin_make
#在catkin工作空间中构建ros节点
catkin_make #在catkin_ws目录下进行构建
catkin_make install
#在非catkin的工作空间中构建ros节点
catkin_make --source mysrc
catkin_make install --source mysrc
6)rosnode
ros节点是ros包中的可执行文件(ros包中有很多可执行文件)
#ros图的基本概念
Nodes; Message; Topics; Master(ros的名称服务器); rosout(ros的标准输入输出); roscore(= Master + rosout + parameter server);
#使用ros第一步
roscore
#rosnode 使用
rosnode list #查看ros节点
rosnode info /rosout #查看/rosout的详细信息
#rosrun使用
rosrun package_name node_name #运行包节点中的某一节点
rosrun turtlesim turtlesim_node
#给启动的节点自定义名称
rosrun turtlesim turtlesim_node __name:=my_turtle
#rosnode ping测试节点是否启动
rosnode ping myturtle
7)rostopic
# 启动roscore
roscore
# 查看发布到主题上的数据信息
rostopic echo /turtle1/cmd_vel
# 列出所有的主题信息
rostopic list -v #列出详细信息
rostopic list -p #列出发布者
rostopic list -s #列出订阅者
# 列出rostopic主题的类型
rostopic type /turtle1/cmd_level
# 显示数据类型
rosmsg show geometry_msgs/Twist
# 发布特定消息到某一主题
rostopic pub -l /turtle1/cmd_level geometry_msgs/Twist -- '[2.0 ,2.0 2.0]' '[0.0, 0.0 , 1.8]' #-l表示只发布一次
rostopic pub /turtle1/cmd_level geometry_msgs/Twist -r 1 -- '[2.0 ,2.0 2.0]' '[0.0, 0.0 , 1.8]' #-l表示只发布一次
# 报告数据发布到主题上的频率
rostopic hz [topic]
# 使用rqt_plot 进行绘图
rosrun rqt_plot rqt_plot #启动rqt_plot Node
8)rosservice 与rosparam
- 服务是节点相互通信的另一种方式,服务允许节点发送请求并接收响应;
# 列出节点支持的服务
rosservice list
# 查看某一服务需要的数据类型
rosservice type [service]
demo:
rosservice type /spawn | rossrv show
# 调用某一服务的方法
rosservice call [service] [args]
demo:
rosservice call /spawn 2 2 0.2 ""
- rosparam允许你在ros参数服务器上存储和处理数据,rosparam使用yaml标记语法;
# 列出参数服务器上的当前参数
rosparam list
# 设置ros参数
rosparam set [param_name]
# 获取ros参数
rosparam get [param_name]
# 从参数服务器上存储参数到本地文件
rosparam dump [file_name] [namespace]
# 从本地加载参数服务器
rosparam load [file_name] [namespace]
9)rqt_console与roslaunch
# 启动rqt_console与rqt_logger_level
rosrun rqt_console rqt_console
rosrun rqt_logger_level rqt_logger_level
- 日志记录级别:Fatal,Error,Warn,Info,Debug
# 使用roslaunch 启动launch文件中定义的节点
roslaunch [package] [filename.launch]
# 首先在包节点下创建launch文件夹
roscd beginner_tutorials
mkdir launch
cd launch
vim turtlemimic.launch # 创建并编辑launch文件
1 <launch> #启动标签
2
3 <group ns="turtlesim1"> #命名空间标签
4 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
5 </group>
6
7 <group ns="turtlesim2">
8 <node pkg="turtlesim" name="sim" type="turtlesim_node"/>
9 </group>
10
11 <node pkg="turtlesim" name="mimic" type="mimic"> #以主题输入输出重命名为turtlesim1和turtlesim2来启动模拟节点
12 <remap from="input" to="turtlesim1/turtle1"/>
13 <remap from="output" to="turtlesim2/turtle1"/>
14 </node>
15
16 </launch>
rqt_graph : 图形化显示Node Graph
10) rosed
rosed 是rosbash的一部分,她允许直接使用包名称直接编辑包中的文件,而不必键入包的完整路径
use:
rosed [package_name] [filename]
demo:
rosed roscpp Logger.msg
# rosed 支持tab键补全
rosed默认的编辑器是vim
11)rossrv 与rosmsg
- msg : msg文件是用于描述ros消息字段的简单文本文件,用于为不同语言生成源代码;
- srv : srv文件用于描述服务,其由2部分组成:请求和响应;
- msg包含的字段:int8、int16、int32、int64、float32、float64、string、time、…;srv类似msg,但其包含request与response两部分;
demo :
roscd beginner_tutorials
#使用msg
mkdir msg #将msg文件放在msg文件夹下
echo "int64 num" > msg/Num.msg
#在package.xml中添加字段
...
#在CMakeLists.txt中添加字段
...
#使用rosmsg
rosmsg show beginner_tutorials/Num
#使用srv
roscd beginner_tutorials
mkdir srv
roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
#在package.xml与CMakeList.txt中添加字段
...
#roscp使用
roscp [package_name] [file_to_copy] [copy_path]
#使用rossrv
rossrv show beginner_tutorials/AddTwoInts
编写完srv与msg文件,配置好package.xml与CMakeList.txt文件后,重新进行catkin_make编译生成源代码
roscd beginner_tutorials
cd ../..
catkin_make
cd -
12)编写Publisher与Subscriber节点
…
13)编写Server与Client节点
14)rosbag
- 从运行的ros系统中记录主题数据,并将数据保存在bag file文件中
rosbag info <yourbagfile>
rosbag play <yourbagfile> #回放
标签:rqt,ROS,catkin,name,练习,msg,ros,节点 来源: https://blog.csdn.net/hellohake/article/details/110723635