使用北通手柄控制turtlesim运动
在自己的工作空间中创建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运行
使用北通手柄控制turtlesim运动相关推荐
- 用摇杆或北通手柄控制海康摄像头
今天没事看到家里有一款海康的网络摄像头,这个摄像头支持上下左右旋转,另外还可以镜头远近缩放.刚好家里又有一款摇杆和一个北通的手柄.想着写一个软件实现用手柄和摇杆控制摄像头运动, 还能将实时画面显示在软 ...
- 在ROS中使用Xbox360手柄控制小车运动
思路:接受手柄发出的/joy话题,解析后发布用来控制小车或小乌龟运动的/cmd_vel话题. 步骤: 一.安装xbox360手柄驱动 sudo apt-get install ros-melodic- ...
- 微软Xbox One无线手柄控制机器人
ROS中的joy包提供了游戏手柄的驱动,并且包含joy_node节点,这一节点可以发布包含手柄按钮和轴信息的Joy消息.在终端中输入下面命令,安装joy包: $ sudo apt-get instal ...
- myelicpes2019初次使用设置_【北通手柄设置】实况足球2019手柄操作设置教程-挖辣椒攻略...
北通手柄设置 运动类型的游戏,如果没有手柄的辅助加成,玩起来也是非常之累.相信不少玩家在这一代中从键鼠党玩家成为了手柄派了,那么操作设置上面需要注意什么呢?今天带来的就是实况足球2019手柄操作设置教 ...
- 树莓派笔记6:自制小车(手柄控制)
继续树莓派小车的内容,这次记录手柄控制小车运动的实现. 1 方案设计 对于手动控制小车的工具,大概有这么几种: ①用红外遥控器,小车上放一个接收器,读取遥控器信息.实现应该比较简单,红外收发元件也很便 ...
- 雷赛运动控制卡能不能用c语言_基于PMAC控制卡的三坐标测量机控制系统
三坐标测量机控制原理 三坐标测量机获取测头触碰点相对于系统原点的三坐标值,然后经特定算法处理,得到尺寸公差或形位公差.测头在X.Y,Z三个相互垂直的导轨上进行复合运动,实现逐点测量:或按一定运动轨迹, ...
- 基于ROS搭建简易软件框架实现ROV水下目标跟踪(三)--软件框架简述
项目链接:GitHub - cabinx/cabin_auv_ws: A simple demo for rov/auv underwater object tracking based on ros ...
- xbox360无线控制turtle bot
时间:2020.9.22 目的:控制turtle bot(AiDrivin racebot)运动,进行测试 本文主要是记录xbox360控制小车的调试过程,此前小车已经将驱动都已安装好,下述驱动安装仅 ...
- ROS机器人操作系统AutolaborOS全面开源
还在为要不要装双系统纠结?为装不上ROS而烦恼?明明按照官方文档操作,为什么还一堆报错? 安装AutolaborOS,和这些问题说再见. AutolaborOS是什么 AutolaborOS 由 Au ...
最新文章
- visual studio 的git插件推荐
- 【移动战略说第·十三期】技术驱动下的新零售创新
- linux菜鸟入门-1
- linux centos 回收站,centos rm 回收站
- ndr4108贴片晶振是多少频率_关于山羊挺身你知道多少?这些干货速来了解一下...
- Vertx编程风格:您的反应式Web Companion REST API解释了
- php manager iis 8,PHPManager2下载
- 数据库访问的性能问题与瓶颈问题【z】
- uml 时序图_面向对象设计与统一建模语言UML
- 函数指针与回调函数、句柄
- 美封锁对华半导体出口:14nm制造可以 X86设计不行
- DOM Element对象 参考手册
- 在源文件(.c)和头文件(.h)中声明和定义的区别——C语言
- 4用计算机显示内存不足,电脑提示内存不足的解决方法总汇
- maze3D-一款三维迷宫游戏
- 苹果服务器消息转发,好消息!微信语音也可以转发啦!不好的消息!目前苹果还不行!...
- nextpolish安装_使用nextpolish对三代组装进行polish
- C++实现视频格式转换PC客户端工具(支持多任务,暂停,断点续转,删除等基本功能)
- java jnlp 签名_JNLP(jar包签名)
- 多种导出方式,教你快速将每个快递信息导出CSV表格
热门文章
- MySQL 系统变量(system variables)
- scp命令默认传输速度多大_linux中scp命令使用技巧详解(传输速度)linux操作系统 -电脑资料...
- 【翻译】两种高性能I/O设计模式(Reactor/Proactor)的比较
- (转)名企工资一览表 更加明确 自己的目标。
- 科学使用 Python 的 Lambda 表达式
- 乐高大颗粒作品10:滑板车的搭建
- 基于STM32的声控洗衣机
- 【最终版】PyQt5 自定义标题栏,实现无边框,最小化最大化关闭事件,窗口拖动移动,窗口改变大小,仿百度网盘色调美化,添加内容窗口
- 末日搜索神器3.0发布
- 本地文件上传服务器node插件,node 搭建本地文件上传服务器