创建工作空间
查看正在使用的工作空间
echo $ROS_PACKAGE_PATH
创建工作空间文件夹
mkdir -p ~/dev/catkin_ws/src
cd ~/dev/catkin_ws/src
catkin_init_workspace
编译工作空间
cd ~/dev/catkin_ws
catkin_make
完成配置
source devel/setup.sh
或者执行下面这行命令
echo "source /opt/ros/kinetic/setup.sh" >> ~/.bashrc
source ~/.bashrc
创建ROS功能包
catkin_create_pkg [功能包名字] [依赖项]
常见依赖项:
std_msg: 常见消息类型
roscpp: 使用C++ 实现各种ROS功能。
编译功能包
catkin_make 此命令必须在工作空间文件夹下运行。
使用ROS节点
rosnode list: 查看当前运行的节点。
rosnode info /节点名字:查看节点信息。
rosrun [功能包名字] [节点名字]:启动新节点。
使用主题
rostopic list:查看主题清单。
rostopic echo [topic_name]:查看主题信息(即消息内容)。
rostopic type [topic_name]:查看消息类型。
rosmsg show [type_name]:查看消息字段。
rostopic pub [topic_name] [type_name] [args]:向某一topic直接发布消息。
使用服务
rosservice call /service :调用某个服务。
rosservice type /service 输出服务类型。
rossrv show [type_name]:查看消息参数。
rosservice type /service | rossrv show:查看某类型消息参数,等于前两条命令。
使用参数服务器
rosparam list:查看所有节点使用的参数服务器。
rosparam get /param:获得某个参数的值。
rosparam set /param:设置某个参数的值。
rosparam dump [file_name]:保存参数服务器的内容。
rosparam load [file_name] [namespace] 想参数服务器加载新的数据文件。
创建节点
编码相关节点代码。
编译节点
rosed [pkg_name] CMakeLists.txt :编辑CMakeLists。
catkin_make [pkg_name]:编译。
创建msg和srv文件
用于说明传输数据的类型和数据值的文件。
创建msg文件
1.创建msg文件。
2. 编辑package.xml,添加build depend 项,run depend项。
3. 编辑CMakeLists.txt,添加find_package部分,msg file以及msg生成所需的依赖项等。
4. catkin_make:编译。
创建srv文件
1. 创建srv文件。
2. rosed [pkg_name] package.xml:编辑package.xml,添加build depend 项,run depend项。
3. 编辑CMakeLists.txt,添加find_package部分,srv file以及srv生成所需的依赖项等。
4. catkin_make:编译。
使用新建的srv和msg文件
使用srv文件
需要两个节点:一个服务器、一个客户端。服务器包含srv文件及相关头文件,创建服务并在ROS中发布广播。
在客户端调用服务。
使用msg文件
启动文件
<?xml version="1.0"?>
<launch>
<node name = "name1" pkg = "pkg_name" type = "type_name1"/>
<node name = "name2" pkg = "pkg_name" type = "type_name2"/>
</launch>
roslaunch [pkg_name] [launch_file.launch]
rqt_console:查看信息。
ps:用命令行只运行一个节点可以看到ROS_INFO打印的消息,使用启动文件时,看不到 要用rqt_console.
动态参数
1. 创建cfg/cfg_name.cfg文件
ps: exit(gen.generate(PACKAGE, "Node name", "config_prefix"))---
第一个参数:包的名字;
第二个参数:节点名字;
第三个参数:生成的文件名字的前缀,比如<config_prefix>Config.h(C++)或者<config_prefix>Config.py(python)。
2. chmod a+x cfg/file_name.cfg:使文件可由任何用户执行和运行。
3. 编辑CMakeLists.txt。
4. 编写支持动态重配置的新节点。参数访问方式必须与配置文件相同。
ps:f = boost::bind(&callback, _1, _2)------其中_1和_2 是占位参数。
5. 编译并运行节点和动态重配置界面(Dynamic Reconfigure GUI):
ps: rosrun rqt_reconfigure rqt_reconfigure.