005 机器人建模
机器人建模URDF为了在仿真软件里面加载机器人本体,我们通常需要对机器人进行建模。而ROS及一些仿真软件通常使用URDF(Unified Robot Description Format)格式的文件来对机器人建模 URDF是一种基于XML的机器人模型描述格式,主要用于定义机器人的连杆(links)、关节(joints)、几何形状和物理属性 基本结构URDF文件以<robot>为根标签,包含<link>(描述刚体)和<joint>(描述连接关系)两类核心标签 1234567<?xml version="1.0"?><robot name="my_robot"> <!-- 定义连杆 --> <link name="base_link">...</link> <!-- 定义关节 --> <joint name="joint_1"...
003 功能包开发
写一个节点解决VSCODE找不到头文件 在C++ configuration里面手动添加rcl的路径 添加完成后在.json中可以看见 创建功能包和节点1.使用CLI创建功能包 ros2 pkg create demo1 --build-type (ament_cmake)可省略 --dependencies rclcpp 2.在功能包的src文件手动创建节点的cpp文件 3.在CMakeLists.txt最后添加如下代码 123456789101112add_executable(demo_node src/demo.cpp)ament_target_dependencies(demo_node rclcpp)#每有一个可执行文件都得写一次add_executable(demo_oop_node src/demo_oop.cpp)ament_target_dependencies(demo_oop_node rclcpp)install(TARGETS demo_node demo_oop_node #每个节点都要写上 DESTINATION...
001 基本概念
基本概念节点定义:每个节点负责一个单独的模块化的功能,本质上就是一个进程,也是可执行文件 节点之间的通信方式 话题、服务、动作、参数 CLI工具运行一个节点 ros2 run <功能包名字> <可执行文件名> 查看节点列表 ros2 node list 查看节点信息 ros2 node info <node_name> 运行时重映射节点名称 ros2 run <pkd> <node_name> --ros-args --remap __node=:xxxx 功能包定义:实现一个功能可能需要多个节点,ROS将实现某功能的多个节点看成一个功能包 功能包的手动编译有3种方式: ament_python(python) ament_cmake(ROS2定义的一系列CMake函数) cmake 手动编译的功能包一般需要手动source工作空间的install目录 除了手动编译,也可直接下载开源功能包: sudo apt install...
002 节点间的通信
节点间的通信发布-订阅模式注意事项1.发布、订阅的接口类型要相同,比如都是字符串类型的 2.发布者和订阅者可以是1对n、n对n、n对1的 可视化rqt_gragh可以可视化目前所有节点 topic常用指令1.返回系统当前所有topic ros2 topic list 2..返回系统当前所有topic及其数据类型 ros2 topic list -t 3.打印实时话题信息 ros2 topic echo /<话题name> 4.查看话题信息:发布者和订阅者个数、数据类型 ros2 topic info /<话题name> 5.查看消息具体内容 ros2 interface show <消息类型> 6.手动发送话题信息 ros2 topic pub <数据类型> <具体数据> CPP实现订阅者节点具体步骤: 1.导入消息的类型,如std_msgs/msg/string.hpp 2.创建订阅者 3.创建订阅的回调函数
004 常用工具
常用工具Launch作用:通过Launch工具,我们可以同时启动多个节点,并且给节点传递参数 开发方式有3种开发方式,分别是用python、xml和yaml文件 使用方式参考:1.启动管理工具-Launch编写脚本 1ros2 launch <pkg> xxx.py colconcolcon就是ros2中用来编译功能包的工具(ros1中是catkin)简单来说,colcon是cmake的更高级的封装: 程序在cmake编译是这样的流程:cmake指令依据你的CMakeLists.txt 文件,生成makefiles文件,make再依据此makefiles文件编译链接生成可执行文件 colcon是将cmake与make的编译方式做了一个封装的指令工具, 规范了工作路径与生成文件路径,它会自动生成install和build和log文件夹 123456789# 在一个CMake项目里 mkdir build cd build cmake .. make make install # # 使用colconcolcon build ...
007 导航
...
006 机器人仿真
机器人仿真常见仿真软件目前市面上有许多机器人仿真软件,这些仿真软件其实是独立于ROS的,他们是通过一些物理引擎做的。通过一些插件,可以让这些仿真软件和ROS2结合。下面的笔记全是基于Gazebo的 所需参数仿真时URDF文件必须定义一些子标签: 碰撞(collison标签) 内参:包括物体质量(mass标签)、旋转惯量(inertia标签)、摩擦力(gazebo扩展的一些标签) Gazebo的使用Gazebo本身是个与ROS无关的软件,必须通过一些插件,才能让它和ROS2结合 启动直接启动Gazebo的话,不会启动对应的ROS2 node,这样的话就无法和ROS2联动了。所以启动Gazebo的时候必须指定ROS2插件 1gazebo --verbose -s libgazebo_ros_init.so -s libgazebo_ros_factory.so 此时会创建一个叫/gazebo的ROS节点,该节点创建了一些service,让我们可以与其交互(gazeo里面本身也有一些GUI操作工具,但是无法直接加载urdf文件) 1234567891011121314ros2...







