ROS2放弃指南4:ros2的topic


参考链接 已取得作者本人同意: 鱼香ROS2 .

在这里插入图片描述
参考链接:ros2 dashing版本 官方教程
系统版本:ubuntu18.04+ros2-dashing

相关知识

调试工具 rqt_graph

topic 命令作用
list返回系统中当前活动的所有主题的列表
list -t增加消息类型
echo打印实时话题内容
info查看主题信息
interface show查看消息类型 dashing无 foxy有
pub arg手动发布命令
ros2 topic echo /chatter
ros2 interface show std_msgs/msg/String
ros2 topic pub /chatter std_msgs/msg/String 'data: "123"'
ros2 topic pub /chatter std_msgs/msg/String "{data: '123'}"
ros2 pkg create <package-name>  --build-type  {cmake,ament_cmake,ament_python}  --dependencies <依赖名字>
功能包类型用法
ament_python适用于python程序
cmake适用于C++
ament_cmake适用于C++程序,是cmake的增强版 是默认的创建类型
功能包相关指令含义
create创建一个新的 ROS2 包
executables输出包特定可执行文件的列表
list输出可用包的列表
prefix输出包的前缀路径
xml输出包清单或特定标签的 XML dashing版本沒有此功能
ros2 pkg executables    // 列出所有功能包的可执行文件
ros2 pkg executables turtlesim  // 列出某个功能包的可执行文件

rosdep install --from-paths src --ignore-src  -rosdistro=dashing -y 
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

// 只编译一个包
colcon build --packages-select YOUR_PKG_NAME 
// 不编译测试单元
colcon build --packages-select YOUR_PKG_NAME  --cmake-args -DBUILD_TESTING=0
// 每次调整 python 脚本时都不必重新build了
colcon build --symlink-install

在ROS的API的实现层级中,最下面的是第三方的DDS,rmw(中间件接口)层是对各家DDS的抽象层,基于rmw实现了rclc,有了rclc,我们就可以实现各个语言的库,大家都知道C语言是各个语言的鼻祖(汇编除外)所以基于rclc,ROS2官方实现了rclpy和rclcpp

实践创建文件

创建文件

// 建立工作空间和功能包
mkdir -p ~/test-ros2-launch/src
cd ~/test-ros2-launch/src
ros2 pkg create fishbot_description --build-type ament_python
// 建立URDF文件
cd fishbot_description && mkdir urdf 
cd urdf
touch fishbot_base.urdf

cd ../
mkdir launch
cd launch
touch display_rviz2.launch.py

colcon build
source install/setup.bash
ros2 launch fishbot_description display_rviz2.launch.py                                

查看信息的命令

// | grep 过滤命令
ros2 pkg list | grep vill*    
// 打印节点的发布与接受信息
ros2 node info /li4

实际的topic代码




编程思想

OOP编程就是面向对象编程
非OOP就是面向过程的编程方法 也就是POP
函数式思想,是FP
对象 = 属性+行为

报错解决

对‘rosidl_message_type_support_t const* rosidl_typesupport_cpp::get_message_type_support_handle<std_msgs::msg::String_<std::allocator<void> > >()’未定义的引用

原因 用C++编写功能包的时候,没有在 CMakeLists.txt中添加依赖

// 我使用了std_msgs,所以添加std_msgs 如果使用别的 就添加别的
find_package(std_msgs REQUIRED)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值