ROS2学习笔记:topic话题、build包、workspace、package创建

学习topic话题感觉套用CAN总线的知识非常高效,Publisher就是在一条CAN总线写入一个信息,Subscriber就是在CAN总线监听一个信息。发送端(总线写入)可以有多个,接收端(总线监听)也可以有多个。

常用的topic命令:

ros2 topic list

ros2 topic echo <topic_name>: ros2 topic echo /turtle1/cmd_vel

ros2 interface show <msg_type>: ros2 interface show geometry_msgs/msg/Twist

ros2 topic pub <topic_name> <msg_type> ‘<args>’ : ros2 topic pub /turtle1/cmd_vel geometry_msgs/msg/Twist “{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}”

ros2 topic hz: ros2 topic hz /turtle1/pose

ros2 topic bw: ros2 topic bw /turtle1/pose

ros2 topic find <topic_type>: ros2 topic find geometry_msgs/msg/Twist
/turtle1/cmd_vel

 

 

相对来说概念很容易理解的,几个常见的命令感觉可以用力记一下,不然每次调试想到要用还要查命令查语法。

workspace 的概念不打算记录了,很像C++的namespace,主要用作同名区分。常用的整个ws编译命令如下:

colcon build

Package包是 ROS 2 代码的组织单元。若用于移植或者分享ROS2的代码,那么Package包是最小的单位。ROS 2 使用 ament 作为构建系统,colcon 作为构建工具来创建包。官方支持C++(CMake)和Python来构建包。一个包通常是个文件夹,其结构如下:

workspace_folder/
src/
cpp_package_1/
CMakeLists.txt
include/cpp_package_1/
package.xml
src/

py_package_1/
package.xml
resource/py_package_1
setup.cfg
setup.py
py_package_1/
...
cpp_package_n/
CMakeLists.txt
include/cpp_package_n/
package.xml
src/

通过ROS2来生成这些基础格式的命令如下:

cd ~/ros2_ws/src

ros2 pkg create --build-type ament_python --license Apache-2.0 <package_name>

通过上述命令就有了基础的框架,在其中填充业务代码即可去编译。下边两个命令是这个ws全部package编译和选择其中一个编译:

colcon build

colcon build --packages-select my_package

编译通过后要运行我们的包,需要先将其加载到环境,再执行:

source install/local_setup.bash

ros2 run my_package my_node

此时可以回过头看一下文件夹中的内容,有一部分xml是描述本节点的元数据的,填入适当的内容,让其他人更好的理解该节点做的事情。

 

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.