在自己的工作空间中创建package:

要使用手柄控制

cd ~/wry_ws/src
catkin_create_pkg learning_joy roscpp turtlesim joy
cd ..
catkin_make

以上是在自己的工作空间中创建功能包,并编译工作空间。

因为要使用手柄控制turtlesim运动,因此该功能包依赖有:joy功能包和turtlesim功能包。

1、创建turtle_teleop_joy

在learning_joy/src下,运用自己熟悉的编译器,创建并编辑文件:turtle_teleop_joy.cpp,编辑内容为:

#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
#include <sensor_msgs/Joy.h>class TeleopTurtle
{
public:TeleopTurtle();private:void joyCallback(const sensor_msgs::Joy::ConstPtr& joy);ros::NodeHandle nh_;int linear_, angular_;double l_scale_, a_scale_;ros::Publisher vel_pub_;ros::Subscriber joy_sub_;};TeleopTurtle::TeleopTurtle():linear_(1), angular_(0)
{nh_.param("axis_linear", linear_, linear_);nh_.param("axis_angular", angular_, angular_);nh_.param("scale_angular", a_scale_, a_scale_);nh_.param("scale_linear", l_scale_, l_scale_);vel_pub_ = nh_.advertise<<span style="font-family:Arial, Helvetica, sans-serif;">geometry_msgs:</span>:Twist>("turtle1/cmd_vel", 1);joy_sub_ = nh_.subscribe<sensor_msgs::Joy>("joy", 10, &TeleopTurtle::joyCallback, this);}void TeleopTurtle::joyCallback(const sensor_msgs::Joy::ConstPtr& joy)
{geometry_msgs::Twist twist;twist.angular.z = a_scale_*joy->axes[angular_];twist.linear.x = l_scale_*joy->axes[linear_];vel_pub_.publish(twist);
}int main(int argc, char** argv)
{ros::init(argc, argv, "teleop_turtle");TeleopTurtle teleop_turtle;ros::spin();
}

注意:在hydro版本以后,发送turtlesim运动信息的topic:turtle/cmd_vel的类型为:geometry_msgs/Twist。

在hydro版本之前,均使用turtlesim/Velocity的消息类型。

在上述程序中,需要控制turtlesim运动,需要订阅手柄信息(通过topic:joy),并将从joy获得的手柄信息,通过joycallback函数转换为twist类型的数据,发布出去(发布到topic:turtle1/cmd_vel)。

2、设置手柄

将手柄的USB接口接到笔记本上,运行指令:

ls /dev/input/

显示如下内容:

by-id    event0  event2  event4  event6  event8  mouse0  mouse2  uinput
by-path  event1  event3  event5  event7  js0     mice    mouse1

可以发现,手柄的接入端口为js0;

测试手柄:

sudo jstest /dev/input/js0

运行该命令后,如果显示如下,说明joystick的驱动是合适的:

Driver version is 2.1.0.
Joystick (Microsoft X-BOX 360 pad) has 8 axes (X, Y, Z, Rx, Ry, Rz, Hat0X, Hat0Y)
and 11 buttons (BtnX, BtnY, BtnTR, BtnTL2, BtnTR2, BtnSelect,<span style="font-family: Arial, Helvetica, sans-serif;">BtnThumbL, BtnThumbR, ?, ?, ?</span><span style="font-family: Arial, Helvetica, sans-serif;"> ).</span>
Testing ... (interrupt to exit)

运行roscore,设置系统对于手柄的默认端口:

rosparam set joy_node/dev "/dev/input/js0"

3、创建launch文件:

<launch><!-- Turtlesim Node--><node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node"/><!-- joy node --><div>  <node respawn="true" pkg="joy" type="joy_node" name="joy_node" ></div>    <param name="dev" type="string" value="/dev/input/js0" /><param name="deadzone" value="0.12" /></node><!-- Axes --><param name="axis_linear" value="1" type="int"/><param name="axis_angular" value="0" type="int"/><param name="scale_linear" value="2" type="double"/><param name="scale_angular" value="2" type="double"/><div>
</div><div>  <node pkg="learning_joy" type="turtle_teleop_joy" name="teleop_turtlesim" /></div><div></launch></div>

4、运行launch文件

roslaunch learning_joy turtle_joy.launch

即可用手柄控制turtlesim运行

5、运行rosrun rqt_graph rqt_graph 即可看到节点关系图。

使用北通手柄控制turtlesim运动相关推荐

  1. 用摇杆或北通手柄控制海康摄像头

    今天没事看到家里有一款海康的网络摄像头,这个摄像头支持上下左右旋转,另外还可以镜头远近缩放.刚好家里又有一款摇杆和一个北通的手柄.想着写一个软件实现用手柄和摇杆控制摄像头运动, 还能将实时画面显示在软 ...

  2. 在ROS中使用Xbox360手柄控制小车运动

    思路:接受手柄发出的/joy话题,解析后发布用来控制小车或小乌龟运动的/cmd_vel话题. 步骤: 一.安装xbox360手柄驱动 sudo apt-get install ros-melodic- ...

  3. 微软Xbox One无线手柄控制机器人

    ROS中的joy包提供了游戏手柄的驱动,并且包含joy_node节点,这一节点可以发布包含手柄按钮和轴信息的Joy消息.在终端中输入下面命令,安装joy包: $ sudo apt-get instal ...

  4. myelicpes2019初次使用设置_【北通手柄设置】实况足球2019手柄操作设置教程-挖辣椒攻略...

    北通手柄设置 运动类型的游戏,如果没有手柄的辅助加成,玩起来也是非常之累.相信不少玩家在这一代中从键鼠党玩家成为了手柄派了,那么操作设置上面需要注意什么呢?今天带来的就是实况足球2019手柄操作设置教 ...

  5. 树莓派笔记6:自制小车(手柄控制)

    继续树莓派小车的内容,这次记录手柄控制小车运动的实现. 1 方案设计 对于手动控制小车的工具,大概有这么几种: ①用红外遥控器,小车上放一个接收器,读取遥控器信息.实现应该比较简单,红外收发元件也很便 ...

  6. 雷赛运动控制卡能不能用c语言_基于PMAC控制卡的三坐标测量机控制系统

    三坐标测量机控制原理 三坐标测量机获取测头触碰点相对于系统原点的三坐标值,然后经特定算法处理,得到尺寸公差或形位公差.测头在X.Y,Z三个相互垂直的导轨上进行复合运动,实现逐点测量:或按一定运动轨迹, ...

  7. 基于ROS搭建简易软件框架实现ROV水下目标跟踪(三)--软件框架简述

    项目链接:GitHub - cabinx/cabin_auv_ws: A simple demo for rov/auv underwater object tracking based on ros ...

  8. xbox360无线控制turtle bot

    时间:2020.9.22 目的:控制turtle bot(AiDrivin racebot)运动,进行测试 本文主要是记录xbox360控制小车的调试过程,此前小车已经将驱动都已安装好,下述驱动安装仅 ...

  9. ROS机器人操作系统AutolaborOS全面开源

    还在为要不要装双系统纠结?为装不上ROS而烦恼?明明按照官方文档操作,为什么还一堆报错? 安装AutolaborOS,和这些问题说再见. AutolaborOS是什么 AutolaborOS 由 Au ...

最新文章

  1. visual studio 的git插件推荐
  2. 【移动战略说第·十三期】技术驱动下的新零售创新
  3. linux菜鸟入门-1
  4. linux centos 回收站,centos rm 回收站
  5. ndr4108贴片晶振是多少频率_关于山羊挺身你知道多少?这些干货速来了解一下...
  6. Vertx编程风格:您的反应式Web Companion REST API解释了
  7. php manager iis 8,PHPManager2下载
  8. 数据库访问的性能问题与瓶颈问题【z】
  9. uml 时序图_面向对象设计与统一建模语言UML
  10. 函数指针与回调函数、句柄
  11. 美封锁对华半导体出口:14nm制造可以 X86设计不行
  12. DOM Element对象 参考手册
  13. 在源文件(.c)和头文件(.h)中声明和定义的区别——C语言
  14. 4用计算机显示内存不足,电脑提示内存不足的解决方法总汇
  15. maze3D-一款三维迷宫游戏
  16. 苹果服务器消息转发,好消息!微信语音也可以转发啦!不好的消息!目前苹果还不行!...
  17. nextpolish安装_使用nextpolish对三代组装进行polish
  18. C++实现视频格式转换PC客户端工具(支持多任务,暂停,断点续转,删除等基本功能)
  19. java jnlp 签名_JNLP(jar包签名)
  20. 多种导出方式,教你快速将每个快递信息导出CSV表格

热门文章

  1. MySQL 系统变量(system variables)
  2. scp命令默认传输速度多大_linux中scp命令使用技巧详解(传输速度)linux操作系统 -电脑资料...
  3. 【翻译】两种高性能I/O设计模式(Reactor/Proactor)的比较
  4. (转)名企工资一览表 更加明确 自己的目标。
  5. 科学使用 Python 的 Lambda 表达式
  6. 乐高大颗粒作品10:滑板车的搭建
  7. 基于STM32的声控洗衣机
  8. 【最终版】PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口
  9. 末日搜索神器3.0发布
  10. 本地文件上传服务器node插件,node 搭建本地文件上传服务器