【二】、使用游戏手柄驱动二轮差分底盘

来源:互联网 发布:排山掌诀推算法 编辑:程序博客网 时间:2024/04/28 01:07

新建手柄节点

#include<ros/ros.h>#include<geometry_msgs/Twist.h>#include<sensor_msgs/Joy.h>#include<iostream>using namespace std;class TeleopJoy{public:  TeleopJoy();private:  void callBack(const sensor_msgs::Joy::ConstPtr& joy);  ros::NodeHandle n;  ros::Publisher pub;  ros::Subscriber sub;  int i_velLinear, i_velAngular;};TeleopJoy::TeleopJoy(){        n.param("axis_linear",i_velLinear,i_velLinear);    n.param("axis_angular",i_velAngular,i_velAngular);    pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",1);    sub = n.subscribe<sensor_msgs::Joy>("joy", 10, &TeleopJoy::callBack, this);}void TeleopJoy::callBack(const sensor_msgs::Joy::ConstPtr& joy){    geometry_msgs::Twist vel;    vel.angular.z = joy->axes[i_velAngular];    vel.linear.x = joy->axes[i_velLinear];    pub.publish(vel);}int main(int argc, char** argv){    ros::init(argc, argv, "teleopJoy");    TeleopJoy teleop_turtle;    ros::spin();}

使用 launch 启动手柄节点和 serial_node.py 节点

<?xml version="1.0" ?><launch>        <node pkg="rosserial_python" type="serial_node.py" name="serial_node" >         <param name="port" value="/dev/ttyACM0"/>         <param name="baud" value="57600"/>        </node>        <node pkg="chapter4_tutorials" type="c4_example1" name="c4_example1" />         <param name="axis_linear" value="3" type="int" />         <param name="axis_angular" value="0" type="int" />        <node respawn="true" pkg="joy" type="joy_node" name="joy_node">         <param name="dev" type="string" value="/dev/input/js1" />         <param name="deadzone" value="0.12" />        </node></launch>
原创粉丝点击