ROS Learning
  • 简介
  • Related Links
  • ROS Overview
  • ROS Env Configuration
    • Kinetic Installation
    • Noetic Installation
    • IDE & Tools Configuration
  • My Notes
    • Getting Start
    • ROS Concepts
      • ROS Topic 理论模型
      • ROS Service 理论模型
    • ROS Tutorials
      • ROS 文件系统 & 命令行工具
      • ROS Topic 通信简单示例
      • ROS Service 通信简单示例
      • ROS 参数服务器
      • ROS 分布式通信
    • Rotors Simulator
      • RotorS Simulator Installation
      • RotorS with virtual joystick
      • Rotors Simulator Usage
      • RotorS 分布式通信综合案例
  • ROS Official Docs
    • ROS Official Tutorials
      • Beginner Level
        • Installing and Configuring Your ROS Environment
        • Navigating the ROS Filesystem
        • Creating a ROS Package
        • Building a ROS Package
        • Understanding ROS Nodes
        • Understanding ROS Topics
        • Understanding ROS Services and Parameters
    • ROS Concepts
    • ROS Command Line Tools
  • ROS 2
    • Action
Powered by GitBook
On this page
  • 使用键盘控制无人机
  • 设置虚拟键盘控制器
  • 安装 Python-uniput
  • 配置设备权限
  • 安装Python-pygame
  • 测试虚拟键盘控制器
  • 安装ROS控制杆依赖包
  • 使用虚拟控制杆运行RotorS
  • 相关键盘操作
  • 相关问题
  • Error 1 : Unable to find uri [model://xxx]
  • Error 2 : gazebo闪退
  • Reference
  1. My Notes
  2. Rotors Simulator

RotorS with virtual joystick

PreviousRotorS Simulator InstallationNextRotors Simulator Usage

Last updated 1 year ago

使用键盘控制无人机

使用mav_with_keyboard.launch可以打开gazebo以及相关的控制界面,但需要做一些基础配置。

roslaunch rotors_gazebo mav_with_keyboard.launch mav_name:=firefly world_name:=basic

设置虚拟键盘控制器

配置原文 :

为了创建虚拟键盘控制器,需要用到Python-uniput(https://github.com/devbharat/python-uinput)

安装 Python-uniput

源仓库仅需要暂时复制一份以供安装使用

git clone git@github.com:devbharat/python-uinput.git
cd python-uinput
python setup.py build
sudo python setup.py install

需要加载内核的uinput模块,才能使用Python-uniput。使用以下命令加载:

modprobe -i uinput

uinput是一个内核模块,可以从用户空间模拟输入设备。通过写入 /dev/uinput(/dev/input/uinput)设备,进程可以创建具有特定功能的虚拟输入设备。一旦创建了这个虚拟设备,进程就可以通过它发送事件,这些事件将被传递给用户空间和内核中的使用者。

配置设备权限

我们需要程序能够访问uniput设备,执行以下操作并重启:

cd udev-rules
sudo cp 40-uinput.rules /etc/udev/rules.d

如果没有生效,则需要将用户添加到uniput的组中,同时重启:

sudo addgroup uniput
sudo adduser $USER uniput

安装Python-pygame

# python2
sudo python -m pip install -U pygame

测试虚拟键盘控制器

# 先切换到工作空间下
source ./devel/setup.bash
# 启动控制器
rosrun rotors_joy_interface key_joystick.py

如果能正常弹出虚拟键盘控制器的GUI,即说明一切正常。

安装ROS控制杆依赖包

根据ROS配置,可能需要安装控制杆的依赖包:

sudo apt-get install ros-kinetic-joy

使用虚拟控制杆运行RotorS

roslaunch rotors_gazebo mav_with_keyboard.launch

相关键盘操作

w - throttle up ↑ - pitch up

s - throttle down ↓ - pitch down

a - yaw left → - roll right

d - yaw right ← - roll left

相关问题

Error 1 : Unable to find uri [model://xxx]

错误描述

Error [parser.cc:581] Unable to find uri[model://sun]
Error [parser.cc:581] Unable to find uri[model://ground_plane]

解决方案

# 解压缩
tar -xzvf models.tar.gz

Error 2 : gazebo闪退

错误描述

[gazebo_gui-3]process has died

解决方案

方法1

使用以下命令关闭硬件加速

echo " export SVGA_VGPU10=0" >> ~/.bashrc
source ~/.bashrc

方法2

关闭虚拟机的3D图形加速

方法3

更新gazebo

Reference

Gazebo 需要互联网连接才能下载模型文件(例如默认世界的太阳和地平面)。如果您在第一次运行 Gazebo 时没有访问 Internet,则会出现此错误。还可以从 手动下载模型文件并将它们放在您的~/.gazebo/models文件夹中。

Setup virtual keyboard joystick · ethz-asl/rotors_simulator Wiki (github.com)
gazebosim.org/models
(71条消息) ROS 无人机仿真系统4 —— 通过键盘控制飞行器飞行_KongDaQing1290的博客-CSDN博客_ros无人机
Setup virtual keyboard joystick · ethz-asl/rotors_simulator Wiki (github.com)
erro2