ROS控制crazyflie无人机(一)

2023-05-16

ROS控制crazyflie无人机

        • 参考资料
        • 测试环境
        • 一、设置用户权限
        • 二、安装Crazyflie程序库和客户端
        • 三、安装crazyflie_ros程序包
        • 四、遥控器控制crazyflie无人机

本篇博客记录了测试使用ros控制crazyflie无人机。

参考资料

  • Flying Multiple UAVs Using ROS
  • crazyflie_ros
  • crazyflie-lib-python

测试环境

  • Ubuntu 18.04
  • ROS Melodic
  • Crazyflie 2.1
  • Crazyradio PA

一、设置用户权限

  1. 打开一个终端,输入:
$ sudo groupadd plugdev
$ sudo usermod -a -G plugdev $USER
  1. 创建.rules文件,在终端中输入
$ sudo gedit /etc/udev/rules.d/99-crazyradio.rules

然后在创建的文件中添加

# Crazyradio (normal operation)
SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", ATTRS{idProduct}=="7777", MODE="0664", GROUP="plugdev"
# Bootloader
SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", ATTRS{idProduct}=="0101", MODE="0664", GROUP="plugdev"

保存文件并退出。继续在该文件夹下创建另一个文件,在终端中输入

$ sudo gedit /etc/udev/rules.d/99-crazyflie.rules

然后在创建的文件中添加

SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE="0664", GROUP="plugdev"

保存文件并退出。

  1. 重载rules。在终端中输入:
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger

完成上述操作后需要重新登录用户,以使更改生效,然后在PC上插入一个Crazyradio PA。

二、安装Crazyflie程序库和客户端

  • 安装crazyflie-lib-python库。
    首先安装相关依赖文件:
$ sudo apt-get install python3-pip python3-pyqt5 python3-numpy python3-zmq
$ sudo pip3 install pyusb==1.0.0b2
$ sudo pip3 install pyqtgraph appdirs

然后安装程序库:

$ mkdir ~/crazyflie
$ cd ~/crazyflie
$ git clone https://github.com/bitcraze/crazyflie-lib-python.git
$ cd crazyflie-lib-python
$ pip3 install --user -e .
  • 安装crazyflie-client-python客户端
$ cd ~/crazyflie
$ git clone https://github.com/bitcraze/crazyflie-clients-python.git
$ cd crazyflie-clients-python
$ pip3 install --user -e .

可以在终端中输入下面的命令来启动客户端:

$ cd ~/crazyflie/crazyflie-clients-python
$ python3 bin/cfclient

在这里插入图片描述
注意:本次测试时,使用的crazyflie-lib-python和crazyflie-client-python版本分别为

  • de15fc461baf0853489a4d081629ead2bfe74809
  • d77c1d7179046f51aba19828bc9c0dcb45570fc0

三、安装crazyflie_ros程序包

  1. 安装和编译crazyflie_ros程序包。在终端中输入:
$ mkdir -p ~/ROS/crazyflie_ws/src
$ cd ~/ROS/crazyflie_ws/src
$ catkin_init_workspace
$ git clone https://github.com/whoenig/crazyflie_ros.git
$ cd ~/ROS/crazyflie_ws
$ catkin_make
$ source ~/crazyflie_ws/devel/setup.bash
  1. 扫描和检测crazyflie无人机
    打开一个crazyflie无人机。在终端中输入:
$ rosrun crazyflie_tools scan

将会启动对范围内的无人机的扫描,并在终端中返回该无人机的uri号,如

radio://0/80/2M

注意:本次测试时,使用的crazyflie_ros程序包的版本为

  • 83d1fcf8b2b4dbcaebce899fc11b1a542f6959b7

四、遥控器控制crazyflie无人机

  1. 使用XBox360遥控器
    打开一个终端,输入:
$ roslaunch crazyflie_demo teleop_xbox360.launch uri:=radio://0/80/2M

其中uri:=radio://0/80/2M为无人机uri参数设置,需要根据前面的扫描结果进行相应更改。运行该文件会打开一个rviz可视化窗口,
在这里插入图片描述
其中的红色箭头显示了从crazyflie上读取到的实时的IMU数据。由于我手头上目前没有XBox360遥控器,因此无法对无人机进行遥控,但我们可以查看此时ros中消息的传递过程。打开一个终端,输入:

$ rqt_graph

可以看到
在这里插入图片描述
控制无人机的关键是/crazyflie/cmd_vel话题。打开一个终端,输入:

$ rostopic pub -r 50 /crazyflie/cmd_vel geometry_msgs/Twist "linear:
  x: 0.0
  y: 0.0
  z: 40000.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0"

可以看到crazyflie的桨叶开始旋转。

  1. 使用Logitech遥控器
    连接遥控器与电脑(USB),电脑将会自动创建一个新的设备文件/dev/input/js0。通常为js0,可以通过命令
$ ls /dev/input

进行查看。然后在终端中运行

$ rosrun joy joy_node _dev:=/dev/input/js0

并在另一个终端中查看ros消息

$ rostopic echo /joy

通过按动遥控器上的按钮和推杆,就可以找到其与无人机飞行轴之间的对应关系。根据该遥控器的对应关系,对xbox360.launch文件和crazyflie_demo/scripts/controller.py文件中的映射进行相应更改,就可以使用该遥控器直接操纵crazyflie了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS控制crazyflie无人机(一) 的相关文章

  • 使用WTGAHRS2(JY-GPSIMU)在ROS中读取数据并发布话题

    目录 IMU简介 驱动程序 IMU串口通信协议 程序 效果 IMU简介 十轴惯性导航传感器WTGAHRS2传感器集成高精度的陀螺仪 加速度计 地磁场传感器 GPS 模块 采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法 能够快速求
  • ROS系统基本功能的使用详解(基本指令/节点/服务/启动文件/动态参数)

    ROS系统基本功能的使用详解 一 创建工作空间 二 创建与编译ROS功能包 三 ROS的基本命令 3 1 节点 3 2 主题 3 3 服务 3 4 参数服务器 四 节点的创建与运行 4 1 创建源文件 4 2 修改CMakeLists tx
  • ros+arduino学习(六):重构ros_lib库文件

    前言 ros lib是arduino程序和ros连接的库文件 通过使用这些库文件和相关函数 可以在arduino上通过编程使得arduino硬件开ros节点程序 这样arduino硬件就可以与上位机通过话题进行通讯 从而把arduino从传
  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • ros 中ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdist

    ros 中ERROR cannot download default sources list from https raw githubusercontent com ros rosdistro master rosdep sources
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • Ubuntu16.04安装ROS Kinetic详细步骤

    文章目录 ROS安装 配置Ubuntu软件仓库 设置sources list 设置密钥 更新Debian软件包索引 安装ROS 初始化 rosdep 环境配置 构建工厂依赖 测试安装 开发环境 ROS安装 ROS Kinetic只支持Wil
  • Ubuntu下vscode配置ROS环境

    摘要 最近准备放弃用clion开发ROS使用更主流的vscode 整理一下在ubuntu18 04下的VSCode安装和ROS环境配置流程 安装 方法一 软件商店安装 个人还是推荐使用ubuntu软件下载vscode 简单不容易出错 方法二
  • Ubuntu18.04配置Seetaface6

    目录 一 下载安装Qt软件 1 安装包下载 2 安装Qt 3 配置 二 下载源码 三 编译工具 四 编译 1 编译OpenRoleZoo 2 编译SeetaAuthorize 3 编译TenniS 五 运行 1 修改lib路径 2 buil
  • 解决ros安装 使用roscore命令测试问题

    本人安装教程完成ROS的安装后 在进行测试如图1命令 出现 解决办法输入完命令1后要输入命令2才行 即可测试成功 测试成功的界面如下
  • Ubuntu安装ROS

    原文链接 https blog csdn net qq 44830040 article details 106049992 这也是我在ubuntu里面安装ROS的第N次 以前每次安装过程都忘记总结了 导致每次安装ROS都浪费了很多的时间用
  • 最快实现一个自己的扫地机

    作者 良知犹存 转载授权以及围观 欢迎关注微信公众号 羽林君 或者添加作者个人微信 become me 扫地机介绍 扫地机器人行业本质是技术驱动型行业 产品围绕导航系统的升级成为行业发展的主旋律 按功能划分 扫地机器人分为四大系统 即导航系
  • 进入 docker 容器,exec 丢失 PATH 环境变量

    这是我的 Dockerfile FROM ros kinetic ros core xenial CMD bash 如果我跑docker build t ros docker run it ros 然后从容器内echo PATH 我去拿 o
  • 可视化点云

    我在找到的视差图像上有来自 gpu reprojectImageTo3D 的 3D 点 我现在想显示这个点云 如何将找到的点云转换为OpenCV to sensor msgs PointCloud2 我不需要发布点云 这仅用于调试可视化 是
  • 从 pcl::PointCloud 中删除点

    我是 PCL 新手 我正在使用 PCL 库 并且正在寻找一种从点云中提取点或将特定点复制到新点的方法 我想验证每个点是否符合条件 并且我想获得仅包含优点的点云 谢谢 使用 ExtractIndices 类 将要删除的点添加到 PointIn
  • Caught exception in launch(see debug for traceback)

    Caught exception in launch see debug for traceback Caught exception when trying to load file of format xml Caught except
  • 可以在catkin工作区之外创建ROS节点吗?

    我想在catkin工作区之外创建一个ROS发布者节点 可以创建吗 当然可以 像对待任何其他 cpp 库或 python 包一样对待 ROS 在Python中你必须保留PYTHONPATH环境变量指向ros包 opt ros kinetic
  • 无法在 Ubuntu 20.04 上安装 ROS Melodic

    我正在尝试使用这些命令在 Ubuntu 20 04 上安装 ROS Melodic sudo sh c echo deb http packages ros org ros ubuntu lsb release sc main gt etc
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c

随机推荐