一、ROS测试
命令行1键入:roscore
命令行2键入:rosrun turtlesim turtlesim_node(此时会弹出图形化界面)
命令行3键入:rosrun turtlesim turtle_teleop_key(在3中可以通过上下左右控制2中乌龟的运动)
二、ROS创建
1.创建ros工程(下面ros_workspace为工作空间名称、helloworld为功能包名称)
mkdir -p ros_workspace/src
cd ros_workspace/
catkin_make #创建工作空间
cd src/
catkin_create_pkg helloworld roscpp rospy std_msgs #创建功能包
其中roscpp是使用C++实现的库,而rospy则是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。
注意: 在ROS中,虽然实现同一功能时,C++和Python可以互换,但是具体选择哪种语言,需要视需求而定,因为两种语言相较而言:C++运行效率高但是编码效率低,而Python则反之,基于二者互补的特点,ROS设计者分别设计了roscpp与rospy库,前者旨在成为ROS的高性能库,而后者则一般用于对性能无要求的场景,旨在提高开发效率。
2.在功能包src文件中写cpp
3.编辑功能包下的Cmakelist.txt文件
add_executable(节点命名 src/步骤2的源文件名.cpp)
target_link_libraries(与上面一致的节点命名 ${catkin_LIBRARIES})
4.进入工作空间目录ros_demo/并编译
catkin_make
5.运行
开终端打开ros
roscore
新开终端运行程序
cd 工作空间
source ./devel/setup.bash
rosrun 功能包名 节点名
6.新开终端自动刷新环境,使用上更方便
echo "source ~/ros_workspace/devel/setup.bash" >> ~/.bashrc
三、vscode
code . #工作空间运行打开vscode
当ROS__INFO 终端输出有中文时,会出现乱码
INFO: ????????????????????????
解决办法:在函数开头加入下面代码的任意一句
setlocale(LC_CTYPE, "zh_CN.utf8");
setlocale(LC_ALL, "");
四、launch
node包含的某个节点
pkg功能包
type被运行的节点文件
name为节点命名
output设置日志的输出目标
<launch>
<node pkg="turtlesim" type="turtlesim_node" name="turtle_GUI"/>
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_key"/>
<node pkg="helloworld" type="helloworld" name="hello" output="screen"/>
</launch>
运行 roslaunch 包名 launch文件名
五、工具
计算图:键入: rqt_graph 或 rosrun rqt_graph rqt_graph
rosnode -h
rosnode ping test connectivity to node
rosnode list list active nodes
rosnode info print information about node
rosnode machine list nodes running on a particular machine or list machines
rosnode kill kill a running node
rosnode cleanup purge registration information of unreachable nodes
rostopic -h
rostopic bw display bandwidth used by topic
rostopic delay display delay of topic from timestamp in header
rostopic echo print messages to screen
rostopic find find topics by type
rostopic hz display publishing rate of topic
rostopic info print information about active topic
rostopic list list active topics
rostopic pub publish data to topic
rostopic type print topic or field type
rosservice -r
rosservice args print service arguments
rosservice call call the service with the provided args
rosservice find find services by service type
rosservice info print information about service
rosservice list list active services
rosservice type print service type
rosservice uri print service ROSRPC uri
rosmsg -h
rosmsg show Show message description
rosmsg info Alias for rosmsg show
rosmsg list List all messages
rosmsg md5 Display message md5sum
rosmsg package List messages in a package
rosmsg packages List packages that contain messages
rossrv -h
rossrv show Show service description
rossrv info Alias for rossrv show
rossrv list List all services
rossrv md5 Display service md5sum
rossrv package List services in a package
rossrv packages List packages that contain services
rosparam -h
rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam delete delete parameter
rosparam list list parameter names