ros笔记
ros
most delay
这个作者很懒,什么都没留下…
展开
-
ros之服务通信
服务通信简介:服务通信也是ROS中一种极其常用的通信模式,服务通信是基于请求响应模式的,是一种应答机制。也即: 一个节点A向另一个节点B发送请求,B接收处理请求并产生响应结果返回给A。比如如下场景:机器人巡逻过程中,控制系统分析传感器数据发现可疑物体或人… 此时需要拍摄照片并留存。在上述场景中,就使用到了服务通信。一个节点需要向相机节点发送拍照请求,相机节点处理请求,并返回处理结果与上述应用类似的,服务通信更适用于对时时性有要求、具有一定逻辑处理的应用场景。一、服务通信理论模型服务通信较之于话原创 2021-10-23 14:34:10 · 700 阅读 · 0 评论 -
ros之话题通信
1.简单的发布方框架#include "ros/ros.h"#include "std_msgs/String.h"/* 发布方实现 1.包含头文件 ros中的文本类型对应---->"std_msgs/string.h" 2.初始化ros节点(创建二狗子对象) 3.创建节点句柄 4.创建发布者对象 5.编写发布逻辑并发布数据*/int main(int argc, char *ar原创 2021-10-23 13:59:45 · 510 阅读 · 0 评论 -
ubuntu20.04安装arduino IDE(亲测可用)
步骤一:在官网下载arduino安装包选择相应的版本下载链接步骤二:解压下载的安装包在相应的目录下执行下面语句tar -xvf 安装包名步骤三:将解压后的安装包移动到/opt目录下sudo mv 解压过后的包名 /opt步骤四:进入/opt/arduino…包下给安装脚本赋予可执行权限suao chmod +x install.sh步骤五:执行安装脚本sudo ./install.sh到此安装完毕,可以打开终端输入arduino执行arduino IDE....原创 2021-10-12 14:55:58 · 2707 阅读 · 2 评论 -
ros文件系统相关命令
1.增catkin_create_pkg 自定义包名 依赖包 === 创建新的ROS功能包sudo apt install xxx === 安装 ROS功能包2.删sudo apt purge xxx ==== 删除某个功能包3.查rospack list === 列出所有功能包rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径roscd 包名 === 进入某个功能包rosls 包名 === 列出某个包下的文件apt search xxx原创 2021-08-13 17:05:42 · 113 阅读 · 0 评论 -
执行roscore没有任何反应
解决方案:sudo vi ~/.bashrc在底部加入:export ROS_HOSTNAME=localhostexport ROS_MASTER_URI=http://localhost:11311配置完成后,更新环境变量source ~/.bashrc然后重启网络服务器:service networking restart原创 2021-08-08 17:11:47 · 907 阅读 · 0 评论 -
URDF、Gazebo与Rviz综合应用(05)
关于URDF(Xacro)、Rviz 和 Gazebo 三者的关系,前面已有阐述: URDF 用于创建机器人模型、Rviz 可以显示机器人感知到的环境信息,Gazebo 用于仿真,可以模拟外界环境,以及机器人的一些传感器,如何在 Gazebo 中运行这些传感器,并显示这些传感器的数据(机器人的视角)呢?本节主要介绍的重点就是将三者结合:通过 Gazebo 模拟机器人的传感器,然后在 Rviz 中显示这些传感器感知到的数据。主要内容包括:运动控制以及里程计信息显示雷达信息仿真以及显示摄像头信息仿真以原创 2021-08-03 17:37:03 · 763 阅读 · 0 评论 -
Gazebo仿真环境搭建(04)
Gazebo 中创建仿真实现方式有两种:1.直接添加内置组件创建仿真环境1.1启动 Gazebo 并添加组件1.2保存仿真环境添加完毕后,选择 file —> Save World as 选择保存路径(功能包下: worlds 目录),文件名自定义,后缀名设置为 .world1.3 启动<launch> <!-- 将 Urdf 文件的内容加载到参数服务器 --> <param name="robot_description" comman原创 2021-08-01 15:59:27 · 2008 阅读 · 0 评论 -
Rviz中控制机器人模型运动(arbotix)
前言:通过 URDF 结合 rviz 可以创建并显示机器人模型,不过,当前实现的只是静态模型,如何控制模型的运动呢?在此,可以调用 Arbotix 实现此功能。简介:Arbotix:Arbotix 是一款控制电机、舵机的控制板,并提供相应的 ros 功能包,这个功能包的功能不仅可以驱动真实的 Arbotix 控制板,它还提供一个差速控制器,通过接受速度控制指令更新机器人的 joint 状态,从而帮助我们实现机器人在 rviz 中的运动。这个差速控制器在 arbotix_python 程序包中,完整的原创 2021-07-31 22:09:07 · 3175 阅读 · 3 评论 -
小车底盘的基础上加雷达和摄像头
需求描述:在前面小车底盘基础之上,添加摄像头和雷达传感器。结果演示:实现分析:机器人模型由多部件组成,可以将不同组件设置进单独文件,最终通过文件包含实现组件的拼装。实现流程:首先编写摄像头和雷达的 xacro 文件然后再编写一个组合文件,组合底盘、摄像头与雷达最后,通过 launch 文件启动 Rviz 并显示模型1.摄像头和雷达 Xacro 文件实现摄像头 xacro 文件:<robot name="mycar" xmlns:xacro="http://wiki.ros原创 2021-07-31 21:51:22 · 473 阅读 · 0 评论 -
xacro完整使用列子(小车底盘实现)
需求描述:使用 Xacro 优化 URDF 版的小车底盘模型实现1.编写 Xacro 文件<robot name="mycar" xmlns:xacro="http://wiki.ros.org/xacro"> <xacro:property name="footprint_radius" value="0.001" /> <!-- 添加base_footprint --> <link name="base_footprint">原创 2021-07-31 21:38:53 · 259 阅读 · 0 评论 -
Xacro基础用法
目的:简单了解 xacro 的基本语法。需求描述:使用xacro优化上一节案例中驱动轮实现,需要使用变量封装底盘的半径、高度,使用数学公式动态计算底盘的关节点坐标,使用 Xacro 宏封装轮子重复的代码并调用宏创建两个轮子(注意: 在此,演示 Xacro 的基本使用,不必要生成合法的 URDF )。准备:创建功能包,导入 urdf 与 xacro。1.Xacro文件编写编写 Xacro 文件,以变量的方式封装属性(常量半径、高度、车轮半径…),以函数的方式封装重复实现(车轮的添加)。<r原创 2021-07-31 21:29:24 · 2421 阅读 · 1 评论 -
urdf仿真小车模型
1.编写urdf文件<robot name="mycar"> <!-- 添加base_footprint --> <link name="base_footprint"> <visual> <geometry> <sphere radius="0.001" /> </geometry> </原创 2021-07-30 10:37:43 · 530 阅读 · 0 评论 -
URDF语法详解03_joint
<!-- 需求:设置机器人底盘,添加摄像头 --><robot name="mycar"><!-- 1.底盘link --> <link name="base_link"> <visual> <geometry> <box size="0.3 0.2 0.1" /> </geometry>原创 2021-07-29 20:48:28 · 974 阅读 · 0 评论 -
URDF语法详解01_robot
1 URDF语法详解01_robot:robot:urdf 中为了保证 xml 语法的完整性,使用了robot标签作为根标签,所有的 link 和 joint 以及其他标签都必须包含在 robot 标签内,在该标签内可以通过 name 属性设置机器人模型的名称(1)属性name: 指定机器人模型的名称(2)子标签其他标签都是子级标签2 URDF语法详解02_link:link:urdf 中的 link 标签用于描述机器人某个部件(也即刚体部分)的外观和物理属性,比如: 机器人底座、轮子、激原创 2021-07-29 15:16:44 · 508 阅读 · 1 评论 -
ros中urdf的基本使用及优化
实现流程:1.准备:新建功能包,导入依赖2.核心:编写 urdf 文件3.核心:在 launch 文件集成 URDF 与 Rviz4.在 Rviz 中显示机器人模型1.创建功能包,导入依赖创建一个新的功能包,名称自定义,导入依赖包:urdf与xacro在当前功能包下,再新建几个目录:urdf: 存储 urdf 文件的目录meshes:机器人模型渲染文件(暂不使用)config: 配置文件launch: 存储 launch 启动文件2.编写 URDF 文件新建一个子原创 2021-07-29 11:05:14 · 1959 阅读 · 0 评论 -
rosbag的命令使用以及代码编写
概念:rosbag是用于录制和回放 ROS 主题的一个工具集。作用;实现了数据的复用,方便调试、测试。本质:rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。官网简介命令方式:1.准备创建目录保存录制的文件mkdir ./xxxcd xxx2.开始录制rosbag record -a -O 目标文件3.查看文件rosbag inf原创 2021-07-28 20:52:09 · 1184 阅读 · 1 评论 -
tf2动态坐标订阅方实现
#include "ros/ros.h"#include "tf2_ros/transform_listener.h"#include "tf2_ros/buffer.h"#include "geometry_msgs/PointStamped.h"#include "tf2_geometry_msgs/tf2_geometry_msgs.h"/*订阅方:订阅发布的坐标相对关系,传入一个坐标点,调用·tf实现转换流程:1.包含头文件2.编码,初始化节点 Nodehandle3.创建订原创 2021-07-28 20:32:13 · 156 阅读 · 0 评论 -
tf乌龟动态坐标发布
#include "ros/ros.h"#include "turtlesim/Pose.h"#include "tf2_ros/transform_broadcaster.h"#include "geometry_msgs/TransformStamped.h"#include "tf2/LinearMath/Quaternion.h"/* 发布方:订阅乌龟的位置信息,转换成相对于窗体的关系,并发布 准备 话题:/turtle1/pose 消息:原创 2021-07-28 09:16:54 · 156 阅读 · 0 评论 -
tf中静态坐标订阅方实现
/*订阅方:订阅发布的坐标相对关系,传入一个坐标点,调用·tf实现转换流程:1.包含头文件2.编码,初始化节点 Nodehandle3.创建订阅对象 ----> 订阅坐标相对关系4组织一个坐标点的数据5.转换算法,需要调用tf内置函数6.最后输出*/#include "ros/ros.h"#include "tf2_ros/transform_listener.h"#include "tf2_ros/buffer.h"#include "geometry_msgs/Poin原创 2021-07-28 08:10:21 · 265 阅读 · 0 评论 -
ros静态坐标发布
需求:发布两个坐标系的关系流程:1.包含头文件2.设置编码 节点初始化3.创建发布者对象包含:#include “tf2_ros/static_transform_broadcaster.h”tf2_ros::StaticTransformBroadcaster pub;4.组织发布消息包含:#include “geometry_msgs/TransformStamped.h”geometry_msgs::TransformStamped tfs;5.发布数据6.spin()...原创 2021-07-25 23:09:36 · 803 阅读 · 0 评论 -
ubuntu20.04安装ros配置秘钥时出现gpg: keyserver receive failed: Connection timed out
gpg: keyserver receive failed: Connection timed out也是从公钥服务器接收失败:连接超时解决方案:这大多数是网络的问题,如果虚拟机是使用的桥接模式,可以上网,但是它访问这些公网可能连接不上,这时我们将虚拟机的网络配置成NAT模式就可以了。(尽量不要让桥接模式为自动状态)...原创 2021-07-24 23:15:38 · 6903 阅读 · 4 评论 -
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
[rospack] Error: package ‘teleop_twist_keyboard’ not found解决方案:1.cd ~/catkin_ws/src(如果没有这个目录先在工作目录下创建工作空间:mkdir -p catkin_ws/src)2.git clone https://github.com/ros-teleop/teleop_twist_keyboard(一定要在src目录下)3.cd ~/catkin_ws4.catkin_make5.source ~/catkin原创 2021-07-17 17:57:35 · 6471 阅读 · 1 评论 -
LINUX进程的概念
1.什么是进程:进程是程序运行起来的一次活动。2.如何查看系统中有哪些进程:(1)使用ps指令(ps -aux查看全部进程)一般配合grep使用(ps -aux|grep init)。(2)使用top指令查看CPU运行等等。3.什么是进程标识符:每个进程都有一个非负整数表示唯一的ID,叫pid。pid = 0:称为交换进程(进程调度)pid = 1:称为init进程(系统初始化)4.常用API:getpid:获取自身进程标识符;getppid:获取父进程的进程标识符;5.什么是父原创 2021-07-02 17:07:00 · 70 阅读 · 0 评论