Added module.yaml and serial port configuration.

This commit is contained in:
Timothy Scott
2019-08-05 02:45:33 -07:00
committed by Julian Oes
parent 35dae9e285
commit 3850322046
7 changed files with 44 additions and 34 deletions
@@ -73,10 +73,13 @@ then
param set RBCLW_BAUD 8
param set RBCLW_COUNTS_REV 1200
param set RBCLW_ADDRESS 128
# param set SER_TEL4_BAUD 115200
# 104 corresponds to Telem 4
param set RBCLW_SER_CFG 104
fi
# Start this driver after setting parameters, because the driver uses some of those parameters.
roboclaw start /dev/ttyS3
# roboclaw start /dev/ttyS3
# Configure this as rover
set MAV_TYPE 10
+2 -1
View File
@@ -37,6 +37,7 @@ px4_add_module(
SRCS
roboclaw_main.cpp
RoboClaw.cpp
DEPENDS
MODULE_CONFIG
module.yaml
)
+11 -12
View File
@@ -77,7 +77,7 @@
bool RoboClaw::taskShouldExit = false;
RoboClaw::RoboClaw(const char *deviceName):
RoboClaw::RoboClaw(const char *deviceName, const char *baudRateParam):
_uart(0),
_uart_set(),
_uart_timeout{.tv_sec = 0, .tv_usec = TIMEOUT_US},
@@ -87,11 +87,10 @@ RoboClaw::RoboClaw(const char *deviceName):
_motorSpeeds{0, 0}
{
_param_handles.actuator_write_period_ms = param_find("RBCLW_WRITE_PER");
_param_handles.encoder_read_period_ms = param_find("RBCLW_READ_PER");
_param_handles.counts_per_rev = param_find("RBCLW_COUNTS_REV");
_param_handles.serial_baud_rate = param_find("RBCLW_BAUD");
_param_handles.serial_baud_rate = param_find(baudRateParam);
_param_handles.address = param_find("RBCLW_ADDRESS");
_parameters_update();
@@ -580,39 +579,39 @@ void RoboClaw::_parameters_update()
param_get(_param_handles.serial_baud_rate, &baudRate);
switch (baudRate) {
case 1:
case 2400:
_parameters.serial_baud_rate = B2400;
break;
case 2:
case 9600:
_parameters.serial_baud_rate = B9600;
break;
case 3:
case 19200:
_parameters.serial_baud_rate = B19200;
break;
case 4:
case 38400:
_parameters.serial_baud_rate = B38400;
break;
case 5:
case 57600:
_parameters.serial_baud_rate = B57600;
break;
case 6:
case 115200:
_parameters.serial_baud_rate = B115200;
break;
case 7:
case 230400:
_parameters.serial_baud_rate = B230400;
break;
case 8:
case 460800:
_parameters.serial_baud_rate = B460800;
break;
default:
_parameters.serial_baud_rate = B9600;
_parameters.serial_baud_rate = B2400;
}
}
+2 -3
View File
@@ -84,10 +84,9 @@ public:
* serial port e.g. "/dev/ttyS2"
* @param address the adddress of the motor
* (selectable on roboclaw)
* @param pulsesPerRev # of encoder
* pulses per revolution of wheel
* @param baudRateParam Name of the parameter that holds the baud rate of this serial port
*/
RoboClaw(const char *deviceName);
RoboClaw(const char *deviceName, const char *baudRateParam);
/**
* deconstructor
+6
View File
@@ -0,0 +1,6 @@
module_name: Roboclaw Driver
serial_config:
- command: roboclaw start ${SERIAL_DEV} ${BAUD_PARAM}
port_config_param:
name: RBCLW_SER_CFG
group: Roboclaw
+8 -6
View File
@@ -109,13 +109,14 @@ the driver terminates immediately.
The command to start this driver is:
$ roboclaw start <device>
$ roboclaw start <device> <baud>
`<device>` is the name of the UART port. On the Pixhawk 4, this is `/dev/ttyS3`.
`<baud>` is te baud rate.
All available commands are:
- `$ roboclaw start <device>`
- `$ roboclaw start <device> <baud>`
- `$ roboclaw status`
- `$ roboclaw stop`
)DESCR_STR");
@@ -132,7 +133,7 @@ All available commands are:
int roboclaw_main(int argc, char *argv[])
{
if (argc < 2) {
if (argc < 4) {
usage();
}
@@ -148,7 +149,7 @@ int roboclaw_main(int argc, char *argv[])
deamon_task = px4_task_spawn_cmd("roboclaw",
SCHED_DEFAULT,
SCHED_PRIORITY_MAX - 10,
1500,
2000,
roboclaw_thread_main,
(char *const *)argv);
return 0;
@@ -183,14 +184,15 @@ int roboclaw_thread_main(int argc, char *argv[])
argv += 2;
if (argc < 2) {
printf("usage: roboclaw start <device>\n");
printf("usage: roboclaw start <device> <baud>\n");
return -1;
}
const char *deviceName = argv[1];
const char *baudRate = argv[2];
// start
RoboClaw roboclaw(deviceName);
RoboClaw roboclaw(deviceName, baudRate);
thread_running = true;
+11 -11
View File
@@ -98,17 +98,17 @@ PARAM_DEFINE_INT32(RBCLW_ADDRESS, 128);
* Roboclaw serial baud rate
*
* Baud rate of the serial communication with the Roboclaw. The Roboclaw must be configured to match this rate.
* @min 1
* @max 8
* @value 1 2400 baud
* @value 2 9600 baud
* @value 3 19200 baud
* @value 4 38400 baud
* @value 5 57600 baud
* @value 6 115200 baud
* @value 7 230400 baud
* @value 8 460800 baud
* @min 2400
* @max 460800
* @value 2400 2400 baud
* @value 9600 9600 baud
* @value 19200 19200 baud
* @value 38400 38400 baud
* @value 57600 57600 baud
* @value 115200 115200 baud
* @value 230400 230400 baud
* @value 460800 460800 baud
* @group Roboclaw driver
* @reboot_required true
*/
PARAM_DEFINE_INT32(RBCLW_BAUD, 1);
PARAM_DEFINE_INT32(RBCLW_BAUD, 2400);