ros
ros1
ros命名空间
由浅到深理解ROS(3)-命名空间 - jason来自星星 - 博客园
ros2
名词解释
abi
是二进制接口
详细讲解
api
是编程的接口
cli
命令行界面(Command Line Interface)

tui
终端用户界面(Terminal User Interface)
也就是在cli的基础上添加了点图形化的东西,更好看
colcon
可以理解成ros1中的catkin,编译的工具
oop
面向对象编程
也就是说在写程序前,要先想好些什么类,生成一个什么样的对象,这个对象需要什么功能,有什么作用。把这些需求集中在类中
pop
面向过程编程
需要啥功能写啥函数
基础知识
python
ros2中面向过程编程
1 | import rclpy |
ros2中面向对象编程
父类
class WriterNode(Node):
这表示writerNode的父类是Node
1 | class WriterNode(Node): |
这里的super()是指父类,这里表示父类初始化。
就相当于上面的 node=Node("li4")
c++
rclcpp中的智能指针
这里的智能指针和c++stl库里面的智能指针道理是一样的,都是为了避免内存泄漏,能够在作用周期结束后自动释放相关资源。
创建订阅节点
1 | rclcpp::Subscription<std_msgs::msg::String>::SharedPtr sub_; |
这里详细解释一下
creat_subscription使用来创建话题订阅者,这里表示王二订阅书。
("sexy_girl", 10, std::bind(&SingleDogNode::topic_callback, this, _1))
这里面的sexy_girl表示的是要订阅什么话题,10表示频率,而后面的是用来绑定回调函数。将当前对象和topic_callback绑定,_1是占位符,也就是说当你不确定callback的数据类型的时候,可以选择只用一个占位符。他只是表示topic—callback的第一个参数的位置
创建发布节点
1 | rclcpp::Publisher<std_msgs::msg::UInt32>::SharedPtr pub_; |
不编译某个包
1 | colcon build --packages-select YOUR_PKG_NAME --cmake-args -DBUILD_TESTING=0 |
允许通过更改src下的部分文件来改变install(重要)
每次调整 python 脚本时都不必重新build了
1 | colcon build --symlink-install |
加强记忆
- msg文件开头首字母一定要大写,ROS2强制要求,原因小鱼盲猜应该是为了和类名保持一致
服务通信
实现方法
使用多线程执行器和回调组来实现多线程
题外话
rtos
实时操作系统(Real-time operating system, RTOS)
(tensorflowboys=tfboys)