ROS基础学习笔记(一)
2016-07-12 15:13
309 查看
初始化空间信息:
1.首先需要创建工作空间,比如catkin_ws,我们一般将package包放在src文件夹下面,一般创建空间以后是没有其余子目录的,src自己创建,并在src下进行初始化:
当然,如果你只需要重新编译其中的一个包的话也可以直接:
4.当你使用之前版本rosbuild的时候可能需要以下命令:
当出现这种情况说明你没有安装相应软件:
你可以使用以下语句安装并再执行:
常用命令(以下操作的实现需要你将包路径存放在你的ROS_PACKAGE_PATH文件中才可以被访问到):
#路径列表:
#切换目录:
#日志路径:
#详细列表:
创建和执行最简单的应用:
1.首先认识一下包的结构:
再认识一下含有工作空间的结构:
2.现在开始创建一个包package:
这里使用了catkin_create_pkg命令创建包的结构,中括号里填写包的依赖包名:
3.编译并添加包路径:
catkin_make能够在devel产生变化,第三步能够将工作空间添加到ROS环境中去。
4.关于包的依赖(可以创建时直接指定也可以后续在package.xml中添加):
查询某个包的一级依赖:
也可以直接进入package.xml文件直接看:
其内部结构如下:
当然,也有可能包的依赖包还依赖有自己的包(rospy为beginner_tutorials的依赖包):
自然我们也有直接查看所有包的指令:
5.自然我们先在可以查看创建的包的信息了package.xml,其他信息自由操作,但是这里有个凭证license需要填写,一般可写:
<license>BSD</license>
自此完整package.xml如下:
1 <?xml version="1.0"?>
2 <package>
3 <name>beginner_tutorials</name>
4 <version>0.1.0</version>
5 <description>The beginner_tutorials package</description>
6
7 <maintainer email="you@yourdomain.tld">Your Name</maintainer>
8 <license>BSD</license>
9 <url type="website">http://wiki.ros.org/beginner_tutorials</url>
10 <author email="you@yourdomain.tld">Jane Doe</author>
11
12 <buildtool_depend>catkin</buildtool_depend>
13
14 <build_depend>roscpp</build_depend>
15 <build_depend>rospy</build_depend>
16 <build_depend>std_msgs</build_depend>
17
18 <run_depend>roscpp</run_depend>
19 <run_depend>rospy</run_depend>
20 <run_depend>std_msgs</run_depend>
21
22 </package>
6.编译新建的包:
首先要将环境搭建好:
$ source /opt/ros/%YOUR_ROS_DISTRO%/setup.bash
$ source /opt/ros/kinetic/setup.bash (For Kinetic for instance)
编译(其实就是之前的操作,这里详细看看):
# In a catkin workspace
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
上句其实就是原来版本的好多句集成语句:
# In a CMake project
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install # (optionally)
所以本版本直接一条:
# In a catkin workspace
$ catkin_make
$ catkin_make install # (optionally)
在src下编译:
$ catkin_make
节点的详细介绍:
1.准备工作:
$ sudo apt-get install ros-indigo-ros-tutorials
2.启动ros系统:
$ roscore
3.此时系统启动节点rosout,可以用以下命令查看当前开启节点:
$ rosnode list
将会看到:/rosout
当然也可以查看某个节点详细信息:
$ rosnode info /rosout
4.启动选定节点:
$ rosrun [package_name] [node_name]
$ rosrun turtlesim turtlesim_node
也可以给自己启动的节点改名字:
$ rosrun turtlesim turtlesim_node __name:=my_turtle
当你查看自己的节点通不通时:
$ rosnode ping my_turtle
主题的详细介绍:
1.启动ROS:
$ roscore
2.对于上一个里的turtlesim包,启动它的一个节点,用来显示乌龟:
$ rosrun turtlesim turtlesim_node
启动这个节点就是接收键盘方向信息并移动乌龟:
$ rosrun turtlesim turtle_teleop_key
3.上述2步骤中,turtle_teleop_key是发布者,他会发布坐标信息变化主题,turtlesim作为接收者去接到信息改变乌龟的位置
这里我们使用rqt_graph包来进行topic的说明演示,先下载安装:
$ sudo apt-get install ros-<distro>-rqt
$ sudo apt-get install ros-<distro>-rqt-common-plugins
然后我们就可以用rqt_graph来显示目前我们节点间的通信方式了:
$ rosrun rqt_graph rqt_graph
(一般都是几个圈加链接圈与圈之间的箭头,箭头上显示的是传送的消息格式)
3.介绍有关topic命令:
[1]:
rostopic echo [topic]
$ rostopic echo /turtle1/cmd_vel
这样便会显示发布在topic上的数据信息,这里我们查看了/turtle1/cmd_vel
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
[2]:
$ rostopic list -h/-v
4.ROS消息机制:
查看主题的消息类型:
rostopic type [topic]
当我们执行:
$ rostopic type /turtle1/cmd_vel
得到:
geometry_msgs/Twist
同时可以使用rosmsg查看消息的详细信息:
$ rosmsg show geometry_msgs/Twist
得到:
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
5.主题和消息的使用:
[1]:
rostopic pub [topic] [msg_type] [args]
我们举例:
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
-1表示就发一遍停止,/turtle1/cmd_vel是要发表到这个主题上, geometry_msgs/Twist表示要发送的消息类型,后续是具体消息内容
这样之后会发现乌龟绕圆滑动了一部分。
再举例:
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
[2]:
rostopic hz [topic]
表示显示数据发布的频率。
举例看turtlesim_node发布/turtle1/pose的频率:
$ rostopic hz /turtle1/pose
显示得到:
subscribed to [/turtle1/pose]
average rate: 59.354
min: 0.005s max: 0.027s std dev: 0.00284s window: 58
average rate: 59.459
min: 0.005s max: 0.027s std dev: 0.00271s window: 118
average rate: 59.539
min: 0.004s max: 0.030s std dev: 0.00339s window: 177
average rate: 59.492
min: 0.004s max: 0.030s std dev: 0.00380s window: 237
average rate: 59.463
min: 0.004s max: 0.030s std dev: 0.00380s window: 290
可以使用综合语句:
$ rostopic type /turtle1/cmd_vel | rosmsg show
6.画图工具介绍:
启动工具:
$ rosrun rqt_plot rqt_plot
1.首先需要创建工作空间,比如catkin_ws,我们一般将package包放在src文件夹下面,一般创建空间以后是没有其余子目录的,src自己创建,并在src下进行初始化:
$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace其余的类似devel等文件夹通过编译make指令进行自动创建:
$ cd ~/catkin_ws $ catkin_make2.每次编写新的package包之后都需要将其路径放入ros中以便快速查找到,source一下:
$ source ~/catkin_ws/devel/setup.bash $ rospack profile
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc3.当你要删除自己创建的包时不要去直接删除src目录,二十去执行:
$ cd ~/catkin_ws $ \rm -rf devel build install做完上述步骤之后就可以重新编译:
$ cd ~/catkin_ws $ catkin_make
$ source devel/setup.bash
当然,如果你只需要重新编译其中的一个包的话也可以直接:
$ cd ~/catkin_ws $ catkin_make --pkg package_name
4.当你使用之前版本rosbuild的时候可能需要以下命令:
$ rosws init ~/ros_workspace ~/catkin_ws/devel
当出现这种情况说明你没有安装相应软件:
rosws: command not found
你可以使用以下语句安装并再执行:
$ sudo apt-get install python-rosinstall
常用命令(以下操作的实现需要你将包路径存放在你的ROS_PACKAGE_PATH文件中才可以被访问到):
#路径列表:
$ echo $ROS_PACKAGE_PATH#包的查找:
$ rospack find [package_name] $ rospack find roscpp
#切换目录:
$ roscd [locationname[/subdir]] $ roscd roscpp
#日志路径:
$ roscd log
#详细列表:
$ rosls [locationname[/subdir]] $ rosls roscpp_tutorials
创建和执行最简单的应用:
1.首先认识一下包的结构:
my_package/ CMakeLists.txt package.xml
再认识一下含有工作空间的结构:
workspace_folder/ -- WORKSPACE src/ -- SOURCE SPACE CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin package_1/ CMakeLists.txt -- CMakeLists.txt file for package_1 package.xml -- Package manifest for package_1 ... package_n/ CMakeLists.txt -- CMakeLists.txt file for package_n package.xml -- Package manifest for package_n
2.现在开始创建一个包package:
$ cd ~/catkin_ws/src $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
这里使用了catkin_create_pkg命令创建包的结构,中括号里填写包的依赖包名:
# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
3.编译并添加包路径:
$ cd ~/catkin_ws $ catkin_make
$ . ~/catkin_ws/devel/setup.bash
catkin_make能够在devel产生变化,第三步能够将工作空间添加到ROS环境中去。
4.关于包的依赖(可以创建时直接指定也可以后续在package.xml中添加):
查询某个包的一级依赖:
$ rospack depends1 beginner_tutorials
也可以直接进入package.xml文件直接看:
$ cat package.xml
其内部结构如下:
<package> ... <buildtool_depend>catkin</buildtool_depend> <build_depend>roscpp</build_depend> <build_depend>rospy</build_depend> <build_depend>std_msgs</build_depend> ... </package>
当然,也有可能包的依赖包还依赖有自己的包(rospy为beginner_tutorials的依赖包):
$ rospack depends1 rospy
自然我们也有直接查看所有包的指令:
$ rospack depends beginner_tutorials
5.自然我们先在可以查看创建的包的信息了package.xml,其他信息自由操作,但是这里有个凭证license需要填写,一般可写:
<license>BSD</license>
自此完整package.xml如下:
1 <?xml version="1.0"?>
2 <package>
3 <name>beginner_tutorials</name>
4 <version>0.1.0</version>
5 <description>The beginner_tutorials package</description>
6
7 <maintainer email="you@yourdomain.tld">Your Name</maintainer>
8 <license>BSD</license>
9 <url type="website">http://wiki.ros.org/beginner_tutorials</url>
10 <author email="you@yourdomain.tld">Jane Doe</author>
11
12 <buildtool_depend>catkin</buildtool_depend>
13
14 <build_depend>roscpp</build_depend>
15 <build_depend>rospy</build_depend>
16 <build_depend>std_msgs</build_depend>
17
18 <run_depend>roscpp</run_depend>
19 <run_depend>rospy</run_depend>
20 <run_depend>std_msgs</run_depend>
21
22 </package>
6.编译新建的包:
首先要将环境搭建好:
$ source /opt/ros/%YOUR_ROS_DISTRO%/setup.bash
$ source /opt/ros/kinetic/setup.bash (For Kinetic for instance)
编译(其实就是之前的操作,这里详细看看):
# In a catkin workspace
$ catkin_make [make_targets] [-DCMAKE_VARIABLES=...]
上句其实就是原来版本的好多句集成语句:
# In a CMake project
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install # (optionally)
所以本版本直接一条:
# In a catkin workspace
$ catkin_make
$ catkin_make install # (optionally)
在src下编译:
$ catkin_make
节点的详细介绍:
1.准备工作:
$ sudo apt-get install ros-indigo-ros-tutorials
2.启动ros系统:
$ roscore
3.此时系统启动节点rosout,可以用以下命令查看当前开启节点:
$ rosnode list
将会看到:/rosout
当然也可以查看某个节点详细信息:
$ rosnode info /rosout
4.启动选定节点:
$ rosrun [package_name] [node_name]
$ rosrun turtlesim turtlesim_node
也可以给自己启动的节点改名字:
$ rosrun turtlesim turtlesim_node __name:=my_turtle
当你查看自己的节点通不通时:
$ rosnode ping my_turtle
主题的详细介绍:
1.启动ROS:
$ roscore
2.对于上一个里的turtlesim包,启动它的一个节点,用来显示乌龟:
$ rosrun turtlesim turtlesim_node
启动这个节点就是接收键盘方向信息并移动乌龟:
$ rosrun turtlesim turtle_teleop_key
3.上述2步骤中,turtle_teleop_key是发布者,他会发布坐标信息变化主题,turtlesim作为接收者去接到信息改变乌龟的位置
这里我们使用rqt_graph包来进行topic的说明演示,先下载安装:
$ sudo apt-get install ros-<distro>-rqt
$ sudo apt-get install ros-<distro>-rqt-common-plugins
然后我们就可以用rqt_graph来显示目前我们节点间的通信方式了:
$ rosrun rqt_graph rqt_graph
(一般都是几个圈加链接圈与圈之间的箭头,箭头上显示的是传送的消息格式)
3.介绍有关topic命令:
[1]:
rostopic echo [topic]
$ rostopic echo /turtle1/cmd_vel
这样便会显示发布在topic上的数据信息,这里我们查看了/turtle1/cmd_vel
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
---
[2]:
$ rostopic list -h/-v
4.ROS消息机制:
查看主题的消息类型:
rostopic type [topic]
当我们执行:
$ rostopic type /turtle1/cmd_vel
得到:
geometry_msgs/Twist
同时可以使用rosmsg查看消息的详细信息:
$ rosmsg show geometry_msgs/Twist
得到:
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
5.主题和消息的使用:
[1]:
rostopic pub [topic] [msg_type] [args]
我们举例:
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
-1表示就发一遍停止,/turtle1/cmd_vel是要发表到这个主题上, geometry_msgs/Twist表示要发送的消息类型,后续是具体消息内容
这样之后会发现乌龟绕圆滑动了一部分。
再举例:
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
[2]:
rostopic hz [topic]
表示显示数据发布的频率。
举例看turtlesim_node发布/turtle1/pose的频率:
$ rostopic hz /turtle1/pose
显示得到:
subscribed to [/turtle1/pose]
average rate: 59.354
min: 0.005s max: 0.027s std dev: 0.00284s window: 58
average rate: 59.459
min: 0.005s max: 0.027s std dev: 0.00271s window: 118
average rate: 59.539
min: 0.004s max: 0.030s std dev: 0.00339s window: 177
average rate: 59.492
min: 0.004s max: 0.030s std dev: 0.00380s window: 237
average rate: 59.463
min: 0.004s max: 0.030s std dev: 0.00380s window: 290
可以使用综合语句:
$ rostopic type /turtle1/cmd_vel | rosmsg show
6.画图工具介绍:
启动工具:
$ rosrun rqt_plot rqt_plot
相关文章推荐
- iphone
- Mapped Statements collection does not contain value forQuestion.selectParam
- bat批处理语法
- android studio遇到的问题
- Ubuntu下Android Studio模拟器启动失败
- MFC中定时器的使用
- DistroWatch 评估 XStream 桌面 153 版本
- [个人收藏]iOS HOOK 注入与重签名
- Devops和系统管理员不能放过的400+免费资源
- 欢迎使用CSDN-markdown编辑器
- 控制HTML元素的显示与隐藏——display和visibility
- Maven常用插件(转)
- CDN缓存那些事
- Android开发:keytool' 不是内部或外部命令 也不是可运行的程序
- Nginx搭建集群服务器过程详解
- 关于spring security权限控制
- find 查找文件命令
- FreeStyler 序列文件分析
- CentOS卸载OpenJDK并安装Sun JDK
- Making the Elephant Dance: Strategic Enterprise Analysis