File tree 5 files changed +35
-11
lines changed
5 files changed +35
-11
lines changed Original file line number Diff line number Diff line change 37
37
38
38
#include " vesc_driver/vesc_interface.h"
39
39
#include " vesc_driver/vesc_packet.h"
40
+ #include " vesc_msgs/VescCommand.h"
40
41
41
42
namespace vesc_driver
42
43
{
@@ -95,15 +96,12 @@ class VescDriver
95
96
int fw_version_major_; // /< firmware major version reported by vesc
96
97
int fw_version_minor_; // /< firmware minor version reported by vesc
97
98
98
- // Optional
99
- int can_id_ = -1 ;
100
-
101
99
// ROS callbacks
102
100
void timerCallback (const ros::TimerEvent& event);
103
101
void dutyCycleCallback (const std_msgs::Float64 ::ConstPtr& duty_cycle);
104
102
void currentCallback (const std_msgs::Float64 ::ConstPtr& current);
105
103
void brakeCallback (const std_msgs::Float64 ::ConstPtr& brake);
106
- void speedCallback (const std_msgs:: Float64 ::ConstPtr& speed);
104
+ void speedCallback (const vesc_msgs::VescCommand ::ConstPtr& speed);
107
105
void positionCallback (const std_msgs::Float64 ::ConstPtr& position);
108
106
void servoCallback (const std_msgs::Float64 ::ConstPtr& servo);
109
107
};
Original file line number Diff line number Diff line change
1
+ <!-- -*- mode: XML -*- -->
2
+ <launch >
3
+
4
+ <arg name =" node_name" default =" vesc_driver_node" />
5
+
6
+ <!-- Optionally launch in GDB, for debugging -->
7
+ <arg name =" debug" default =" false" />
8
+
9
+ <arg if =" $(arg debug)" name =" launch_prefix" value =" gdb -ex run --args" />
10
+ <arg unless =" $(arg debug)" name =" launch_prefix" value =" " />
11
+
12
+ <!-- VESC driver parameters -->
13
+ <arg name =" port" default =" /dev/serial/by-id/usb-STMicroelectronics_ChibiOS_RT_Virtual_COM_Port_304-if00" />
14
+
15
+ <!-- VESC driver node -->
16
+ <node pkg =" vesc_driver" type =" vesc_driver_node" name =" $(arg node_name)"
17
+ output =" screen" launch-prefix =" $(arg launch_prefix)" >
18
+ <param name =" port" value =" $(arg port)" />
19
+ <param name =" can_id" value =" 2" />
20
+ </node >
21
+
22
+ </launch >
Original file line number Diff line number Diff line change @@ -58,9 +58,6 @@ VescDriver::VescDriver(ros::NodeHandle nh,
58
58
ros::shutdown ();
59
59
return ;
60
60
}
61
-
62
- if (private_nh.getParam (" can_id" , can_id_))
63
- ROS_INFO (" Communicating with can_id = %d" , can_id_);
64
61
65
62
// attempt to connect to the serial port
66
63
try
@@ -231,14 +228,18 @@ void VescDriver::brakeCallback(const std_msgs::Float64::ConstPtr& brake)
231
228
* driver. However, note that the VESC may impose a more restrictive bounds on the
232
229
* range depending on its configuration.
233
230
*/
234
- void VescDriver::speedCallback (const std_msgs:: Float64 ::ConstPtr& speed)
231
+ void VescDriver::speedCallback (const vesc_msgs::VescCommand ::ConstPtr& speed)
235
232
{
233
+ ROS_DEBUG (" Received speed callback." );
236
234
if (driver_mode_ == MODE_OPERATING)
237
235
{
238
- if (can_id_ > 0 )
239
- vesc_.setSpeed (speed_limit_.clip (speed->data ), can_id_);
236
+ if (speed->can_id > 0 )
237
+ {
238
+ ROS_DEBUG (" Setting speed with can_id" );
239
+ vesc_.setSpeed (speed_limit_.clip (speed->command ), speed->can_id );
240
+ }
240
241
else
241
- vesc_.setSpeed (speed_limit_.clip (speed->data ));
242
+ vesc_.setSpeed (speed_limit_.clip (speed->command ));
242
243
}
243
244
}
244
245
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ find_package(catkin REQUIRED COMPONENTS
9
9
add_message_files(
10
10
DIRECTORY msg
11
11
FILES
12
+ VescCommand.msg
12
13
VescState.msg
13
14
VescStateStamped.msg
14
15
)
Original file line number Diff line number Diff line change
1
+ float32 command
2
+ int32 can_id
You can’t perform that action at this time.
0 commit comments