本帖参考: https://blog.csdn.net/u014587147/article/details/75673110
https://blog.csdn.net/u014695839/article/details/78348600
本帖使用遥控手柄控制小乌龟移动,代码本质是写一个node接受来自于joy的消息并将消息转发给turtlesim_node节点。包里只有一个cpp文件和一个launch文件。
cpp文件源码如下:

#include <ros/ros.h>
#include <sensor_msgs/Joy.h>
#include <geometry_msgs/Twist.h>class class_js
{
public:class_js();private:ros::NodeHandle n_;ros::Publisher  pub_;ros::Subscriber sub_;void SubCallback(const sensor_msgs::Joy::ConstPtr& Joy);geometry_msgs::Twist vel_cmd;double vlinear,vangular;//我们控制乌龟的速度,是通过这两个变量调整int axis_ang,axis_lin; //axes[]的键
};class_js::class_js()
{sub_ = n_.subscribe("/joy", 10, &class_js::SubCallback, this);pub_ = n_.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
}void class_js::SubCallback(const sensor_msgs::Joy::ConstPtr& Joy){//我们将这几个变量加上参数,可以在参数服务器方便修改n_.param<int>   ("axis_linear" , axis_lin, 1);      //默认axes[1]接收速度 n_.param<int>   ("axis_angular", axis_ang, 0);      //默认axes[0]接收角度 n_.param<double>("vel_linear"  , vlinear , 1);      //默认线速度1 m/s n_.param<double>("vel_angular" , vangular, 1);      //默认角速度1 单位rad/svel_cmd.linear .x = Joy->axes[axis_lin] * vlinear;vel_cmd.angular.z = Joy->axes[axis_ang] * vangular;pub_.publish(vel_cmd);ROS_INFO("linear:%.3lf angular:%.3lf", vel_cmd.linear.x, vel_cmd.angular.z);
}int main(int argc, char** argv)
{ros::init(argc, argv, "mll_js");class_js js_cmd;ros::spin();return 0;
}

launch文件源码如下:

<launch><node pkg="turtlesim" type="turtlesim_node" name="sim" /><node pkg="mll_js"    type="mll_js"         name="logteleop" output="screen" /> <!--input axis --><param name="axis_linear"  value="4"   type="int"/><param name="axis_angular" value="3"   type="int"/><!--input vel --><param name="vel_linear"   value="2"   type="double"/><param name="vel_angular"  value="1.5" type="double"/><node pkg="joy"       type="joy_node"       name="joystick" respawn="true"/></launch>

现象是,运行launch文件,使用手柄能够控制小乌龟运动。新开一个终端,使用rosparam命令能够设置axis_linear、axis_angular、axis_angular、vel_angular四个param的值。与参考帖子不同的是,他将

    //我们将这几个变量加上参数,可以在参数服务器方便修改n_.param<int>   ("axis_linear" , axis_lin, 1);      //默认axes[1]接收速度 n_.param<int>   ("axis_angular", axis_ang, 0);      //默认axes[0]接收角度 n_.param<double>("vel_linear"  , vlinear , 1);      //默认线速度1 m/s n_.param<double>("vel_angular" , vangular, 1);      //默认角速度1 单位rad/s

放在了类的构造函数里。经测试这样并不能在运行中改变param的值,放在回调函数中后,测试成功。

ROS之游戏手柄控制小乌龟移动相关推荐

  1. ROS之游戏手柄控制乌龟和机器人

    导师买了个游戏手柄,就研究了一下怎么用游戏手柄控制机器人.想不到有点简单,编写一断代码即可,同时对我这两天学习的复习. 开始教程. (1)游戏手柄控制乌龟. rosrun turtlesim turt ...

  2. 《动手学ROS2》3.4小游戏_小乌龟求偶大作战

    本系列教程作者:小鱼 公众号:鱼香ROS QQ交流群:139707339 教学视频地址:小鱼的B站 完整文档地址:鱼香ROS官网 版权声明:如非允许禁止转载与商业用途. 3.4 小游戏:小乌龟求偶大作 ...

  3. ROS学习笔记之小乌龟跟随

    ROS学习笔记之小乌龟跟随 说明:整个案例是跟着赵虚左老师的视频和文档资料学习的,特此感谢赵虚左老师和Autolabor官方 文档地址 视频地址 学习案例之前的预备知识:TF坐标变换 大体实现流程: ...

  4. cocos之游戏手柄控制实例

    cocos之游戏手柄控制实例 1.场景布置 2. 添加手柄监听器 3. 添加小车的控制 1. 小车的旋转 2. 小车的移动 最终效果 1.场景布置 2. 添加手柄监听器 监听事件的变化 由原先的mou ...

  5. ROS indigo 使用游戏手柄控制turtlebot2

    参考链接:创客智造-xbox360无线游戏杆控制turtlebot 我使用的游戏手柄是 北通 阿修罗TE BTP-2185. 进入正题 1.安装手柄驱动 安装方法与Xbox360手柄驱动一样. sud ...

  6. ROS上用北通阿修罗手柄控制小乌龟

    文章借鉴了这边博客https://blog.csdn.net/u014587147/article/details/75673110. 这篇文章记录下自己操作过程中遇到的问题,更加适合新手. 1.使用 ...

  7. ros:游戏手柄控制海龟

    手柄:罗技游戏手柄 Linux版本:14.04 ROS版本:ros-indigo 首先安装手柄驱动,进入/dev/input文件中含有js0的文件夹. 安装手柄测试程序: $sudo apt-get ...

  8. ROS安装并运行小乌龟

    镜像选择: 2. ROS kinetic安装与使用 爲了保證安裝速度,請選擇國內鏡像如下:ustc鏡像 2.1 设置安装源 ROS Kinetic只支持Wily(15.10)和Xenial(16.04 ...

  9. ROS 下的仿真小乌龟

    ROS 是机器人操作系统,如果不是基本版,都安装有仿真小乌龟.这里做个基本介绍. 1:启动ROS核: 在终端运行: roscore 就出现如下运行界面: 界面有提示可以用Ctrl + C  中断此程序 ...

最新文章

  1. 阎王爷让我给他做个生死簿后台管理系统
  2. Ubuntu12.10 安装Nessus
  3. java 环境变量的涵义
  4. Windows2003无法看到网络连接,修复COM+组件
  5. spring-cloud eureka注册发现
  6. 被围绕的区域(dfs)
  7. vue处理json数据的原理_Vue解析json数据的渲染
  8. PHP各种实用的开源库推荐
  9. 杭电1027Ignatius and the Princess II模拟
  10. vim配置之snippets代码块
  11. 蚂蚁(51Nod-1266)
  12. REDHAT5.6dhcp服务器及dhcp中继代理配置
  13. linux dstat,使用Dstat来进行Linux综合性能诊断
  14. 怎么制作真人qq秀_QQ 首款捏脸产品「卡噗」上线,这是微信也能玩的 3D 厘米秀...
  15. python实现英雄联盟信息获取
  16. 量子计算机物理学,使用量子计算机来测试物理学的基本原理
  17. solidworks背景改为纯白色
  18. SpringSecurity整合Redis实现单点登录及认证返回json数据
  19. [oeasy]python0125_汉字打印机_点阵式打字机_汉字字形码
  20. mongo查询时区转换

热门文章

  1. CarPlay 有线连接(USB)方案详解
  2. MTK LCM驱动知识
  3. 浙江大学计算机学院保研率,浙江省大学保研情况,浙江大学保研率最高,推免人数1549人...
  4. 利用photoshop的动作功能实现图片批处理操作
  5. C++转换为C需要注意的各项问题
  6. 医院HIS系统哪家好?
  7. ASP.NET文件的上传和下载
  8. 【拍摄日志三】分镜头撰写和修改
  9. 电路分析基础教程(一)——— 电路的组成
  10. Iphone内存测试软件,教你免越狱一次性查出iPhone 6内存型号