博客地址:https://blog.csdn.net/xiaokai1999
笔者设备:北通 阿修罗
一共有14个按钮和4个线性杆
在上文中我们提到了/joy发布信息的类型为sensor_msgs/Joy
,头文件就需要加入#include <sensor_msgs/Joy.h>
我们使用手柄上的X(左转),Y(前进),B(右转),A(后退)来控制机器人的运动。
用手柄控制的方式和键盘控制的方式只有两个地方写法不同,如下:
整体程序请看
ROS联合webots实战案例(三)在webots中使用ROS控制小机器人 1. 订阅/joy话题ros::Subscriber joySub; joySub = n->subscribe("/joy",1,JoyDataCallback);手柄返回函数/******************************************************* * Function name :手柄返回函数 * Description :当手柄动作,就会进入此函数内 * Parameter : @value 返回的值 * Return :无 **********************************************************/ void JoyDataCallback(const sensor_msgs::Joy::ConstPtr &value) { // 发送控制变量 int send =0; //ROS_INFO("sub keyboard value = %d",a); if (value->buttons[2]) { // 左转 speeds[0] = -5.0; speeds[1] = 5.0; send=1; } else if(value->buttons[3]) { // 前进 speeds[0] = 5.0; speeds[1] = 5.0; send=1; } else if(value->buttons[0]) { // 后退 speeds[0] = -5.0; speeds[1] = -5.0; send=1; } else if(value->buttons[1]) { // 右转 speeds[0] = 5.0; speeds[1] = -5.0; send=1; } //当接收到信息时才会更新速度值 if (send) { updateSpeed(); send=0; } }2.最后配置
CMakeList.txt
,在最下面添加:add_executable(velocity_joy src/velocity_joy.cpp) add_dependencies(velocity_joy webots_ros_generate_messages_cpp) target_link_libraries(velocity_joy ${catkin_LIBRARIES})编译功能包 $ cd catkin_ws/ $ catkin_make运行launch文件,可能不会那么快可以TAB出来,打进去一样可以运行$ roslaunch webots_demo webots.launch打开joy功能包中的joy_node节点用于获取手柄数据$ rosrun joy joy_node运行编写好的代码$ rosrun webots_demo velocity_joy效果undefined3.gif
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。