Package:软件包,ROS应用程序代码的组织单元。每个软件包都可包含程序库、可执行文件、脚本或其他手动创建文件。
Manifest(package.xml):清单,对“软件包”信息做描述,定义软件包相关元信息之间的依赖关系(版本、维护者、许可协议等)。
获取软件包的相关信息
用法:rospack find [包名称]
是rosbash命令集的一部分,允许直接切换(cd)工作目录到某个软件包或软件集当中。
用法:roscd find [本地名称[/子目录]]
可用pwd
输出当前工作目录。
roscd只能切换到在 ROS_PACKAGE_PATH 环境下的软件包路径。
用echo $ROS_PACKAGE_PATH
查看 ROS_PACKAGE_PATH 包含的路径,每条路径用冒号:分隔。
roscd log可切换到ROS保存日记文件的目录下。(若没执行过ROS程序,会报错)
是rosbash命令集的一部分,允许直接按软件包名称,而不是绝对路径执行ls命令。用法:rosls [本地包名称[/子目录]]
当软件包过长时,用 TAB键自动补全。
想查看所有已安装列表时,用roscd 和 两次TAB键
可以实现。
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
第一次运行时,会在src中创建 CMakeLists.txt 的链接
若使用python 3时,第一次创建用
catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
新生成setup.bash文件
source devel/setup.bash
需确保ROS_PACKAGE_PATH环境变量包含你的工作空间目录,查看方式为:
echo $ROS_PACKAGE_PATH
(1)必须包含catkin compliant package.xml文件。
(age.xml文件提供有关程序包的元信息)
(2)必须包含一个catkin 版本的CMakeLists.txt文件,而Catkin metapackages中必须包含一个对CMakeList.txt文件的引用。
(3)每个目录下只能有一个程序包
程序包格式为:
my_package/
CMakeLists.txt
package.xml
1.cd ~/catkin_ws/src
进到catkin工作空间中src目录下
2. catkin_create_pkg 创建新的程序包名 这个程序包依赖包
例:std_msgs rospy roscpp
这将会创建一个名为新程序包名的文件夹,这个文件夹里面包含一个package.xml文件和一个CMakeLists.txt文件。这两个文件都自动包含了部分执行catkin_create_pkg命令时提供的信息。
rospack depends1 程序包名
来查看。 roscd beginner_tutorials
cat package.xml
rospack depends1 rospy
rospack depends 程序包名
<description>The beginner_tutorials package</description>
<maintainer email="[email protected]">user</maintainer>
<license>BSD</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
因为在编译和运行时我们需要用到所有指定的依赖包,因此还需要将每一个依赖包分别添加到run_depend标签中。
source /opt/ros/groovy/setup.bash
cd ~/catkin_ws
catkin_make
切换到catkin workspace 并查看src文件夹,可以看到一个名为beginner_tutorials的文件夹。
cd ~/catkin_ws/
ls src
使用catkin_make
编译
rosversion -d
查本地ros版本sudo apt-get install ros-本机安装ros版本-ros-tutorials
安装一个轻量级的模拟器 sudo chown -R <your_username> ~/.ros
ROS客户端库允许使用不同编程语言编写的节点之间互相通信:
rosnode list
: 查看当前运行节点的名称
rosnode info/指定节点
返回特定节点信息
rosrun [package_name] [node_name]
例:重新打开一个终端
rosrun turtlesim turtlesim_node
可以看到 turtlesim 窗口。
ROS可以通过命令行重新配置名称。
关闭 turtlesim 窗口停止运行节点 (或者回到rosrun turtlesim终端并使用ctrl-C
),重新运行并改变节点名:
rosrun turtlesim turtlesim_node __name:=my_turtle
若仍有/turtlesim,则用rosnode cleanup
删除
可以使用ping来测试rosnode ping my_turtle
roscore
运行rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
,可以通过键盘来控制turtle的运动。urtlesim_node节点和turtle_teleop_key节点之间是通过一个ROS话题来互相通信的。turtle_teleop_key在一个话题上发布按键输入消息,而turtlesim则订阅该话题以接收该消息。
rosrun rqt_graph rqt_gra
看节点通信图rostopic
获取有关ROS话题信息rostopic -h
查看rostopic子命令rostopic echo [topic]
显示在某个话题上发布的数据。rosrun rqt_graph rqt_gra
)。可以看到rostopic echo(红色显示部分)也订阅了turtle1/command_velocity话题。rostopic list
能够列出所有当前订阅和发布的话题。rostopic list -h
可以查看一下list子命令需要的参数rostopic list -v
会显示出有关所发布和订阅的话题及其类型的详细信息