mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-03 15:28:53 +08:00
Added module.yaml and serial port configuration.
This commit is contained in:
committed by
Julian Oes
parent
35dae9e285
commit
3850322046
@@ -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
|
||||
|
||||
@@ -37,6 +37,7 @@ px4_add_module(
|
||||
SRCS
|
||||
roboclaw_main.cpp
|
||||
RoboClaw.cpp
|
||||
DEPENDS
|
||||
MODULE_CONFIG
|
||||
module.yaml
|
||||
)
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user