ros - 机器人操作系统
查看ROS版本
首先在终端中输入roscore,
然后打开新的标签页,输入rosparam list,
最后输入rosparam get /rosdistro
环境变量设置
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
(相当于sudo gedit ~/.bashrc, 然后在最后一行中加入/opt/ros/kinetic/setup.bash)
source ~/.bashrc
如果使用zsh代替bash,那么:
echo "source /opt/ros/kinetic/setup.zsh" >> ~/.zshrc
source ~/.zshrc
创建ROS工作空间
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws
$ catkin_make
$ catkin_make install ##(optionally)
工作空间目录下会有build和devel两个文件夹, 其中catkin_make命令相当于
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install ##(optionally)
- 源码空间(src):用于存放功能包源代码
- 编译空间(build):用于存放编译产生的缓存信息、配置文件和其他中间文件
- 开发空间(devel):用于存放编译后的程序,如二进制代码。
创建catkin功能包
$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
前面是功能包名字,后面是依赖项,执行后在功能包目录下包含package.xml和CMakeLists.txt文件。感觉比较少用到,基本上都是在现有功能包上修改得到新功能包的。
功能包架构
- include/package_name/
- src/
- msg/
- srv/
- cfg/
- doc/
- script/
- CMakeLists.txt
- Package.xml
查找功能包依赖项
$ rospack depends1 packagename(主要依赖项)
$ rospack depends packagename(所有依赖项)
几个概念
- 功能包
功能包构成ROS中的原子级,。一个功能包具有用于创建ROS程序的最小结构和最少内容。它可以包含运行时的进程(节点)、配置文件等。
- 功能包清单
功能包清单提供有关功能包、许可证、依赖关系、编译标志等信息。由一个名为package.xml文件管理。
- 元功能包
元功能包的功能是将几个具有某些相关功能的功能包组织在一起。
- 元功能包清单
与功能包清单类似,但是结构上有一定的限制。
- 消息类型
消息是进程发送给其他进程的信息,ros有很多标准类型的消息,自定义的消息类型以.msg文件形式存放。
- 服务类型
服务文件以.srv文件形式存放,为ros中由每个进程提供的服务定义请求和响应数据结构。
常见命令集合
查找功能包:rospack find packagename 返回功能包的路径信息
切换到功能包目录下: roscd packagename 可以配合pwd命令输出当前路径信息
输出功能包下文件信息:rosls packagename 与ls在绝对路径下执行不同
记录数据rosbag
mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a (记录所有主题的数据)
rosbag info <your bagfile>
rosbag play <your bagfile>
rosbag play -r 2 <your bagfile>
rosbag record -o subset /turtle1/cmd_vel /turtle/pose (记录部分主题的数据)
节点node相关命令
$ rosnode list 列出所有正在运行的节点(rosnode list -h查看更多功能)
$ rosnode info /nodename 列出节点的信息
$ rosnode ping nodename 测试节点的连接性
$ rosnode kill nodename
$ rosnode cleanup 将无法访问节点的注册信息消除
主题topic相关命令
$ rostopic list 列出所有的主题(rostopic list -h查看更多的功能)
$ rostopic echo topicname (rostopic echo -h)
$ rostopic type /topicname 得到topic的msg类型名
$ rosmsg show msgname
$ rostopic pub [topic] [msg_type] [args]
服务service相关指令
rosservice list
rosservice call
rosservice type
rosservice type
rosservice find
消息message相关指令
rosmsg list
rosmsg package
rosmsg packages
参数param相关指令
rosparam set
rosparam get
rosparam load
rosparam dump
rosparam delete
rosparam list
rosrun相关指令
$ rosrun packagename nodename 运行节点
$ rosrun rqt_graph rqt_graph 节点主题动态图
$ rosrun rqt_plot rqt_plot
$ rosrun rqt_console rqt_console
$ rosrun rqt_logger_level rqt_logger_level
$ roslaunch [package] [filename.launch]