Skip to content

Commit 52b4f1c

Browse files
committed
update command (3
1 parent 99714b8 commit 52b4f1c

File tree

9 files changed

+384
-206
lines changed

9 files changed

+384
-206
lines changed

chassis/chassis.c

Lines changed: 90 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
#define DBG_LEVEL DBG_LOG
66
#include <rtdbg.h>
77

8+
#define DEFAULT_VELOCITY_LINEAR_X 0.2
9+
#define DEFAULT_VELOCITY_LINEAR_Y 0.2
10+
#define DEFAULT_VELOCITY_ANGULAR_Z 1
11+
812
chassis_t chassis_create(wheel_t* c_wheels, kinematics_t c_kinematics)
913
{
1014
// Malloc memory for new chassis
@@ -93,40 +97,115 @@ rt_err_t chassis_update(chassis_t chas)
9397
return RT_EOK;
9498
}
9599

96-
static void chassis_stop(command_info_t info)
100+
rt_err_t chassis_straight(chassis_t chas, float linear_x)
97101
{
98-
rt_kprintf("stop cmd\n");
102+
struct velocity target_velocity = {
103+
.linear_x = linear_x,
104+
.linear_y = 0.0f,
105+
.angular_z = 0.0f
106+
};
107+
rt_int16_t* res_rpm = kinematics_get_rpm(*chas->c_kinematics, target_velocity);
108+
return chassis_set_rpm(chas, res_rpm);
99109
}
100-
static void chassis_forward(command_info_t info)
101-
{
102110

103-
}
104-
static void chassis_backward(command_info_t info)
111+
rt_err_t chassis_move(chassis_t chas, float linear_y)
105112
{
113+
struct velocity target_velocity = {
114+
.linear_x = 0.0f,
115+
.linear_y = linear_y,
116+
.angular_z = 0.0f
117+
};
118+
rt_int16_t* res_rpm = kinematics_get_rpm(*chas->c_kinematics, target_velocity);
119+
return chassis_set_rpm(chas, res_rpm);
120+
}
106121

122+
rt_err_t chassis_rotate(chassis_t chas, float angular_z)
123+
{
124+
struct velocity target_velocity = {
125+
.linear_x = 0.0f,
126+
.linear_y = 0.0f,
127+
.angular_z = angular_z
128+
};
129+
rt_int16_t* res_rpm = kinematics_get_rpm(*chas->c_kinematics, target_velocity);
130+
return chassis_set_rpm(chas, res_rpm);
107131
}
108-
static void chassis_turn_left(command_info_t info)
132+
133+
static void chassis_stop(command_info_t info, void *param, rt_uint16_t size)
109134
{
135+
if (info->target != RT_NULL)
136+
{
137+
chassis_straight(info->target, 0);
138+
}
139+
}
110140

141+
static void chassis_forward(command_info_t info, void *param, rt_uint16_t size)
142+
{
143+
if (info->target != RT_NULL)
144+
{
145+
chassis_straight(info->target, DEFAULT_VELOCITY_LINEAR_X);
146+
}
111147
}
112-
static void chassis_turn_right(command_info_t info)
148+
149+
static void chassis_backward(command_info_t info, void *param, rt_uint16_t size)
113150
{
151+
if (info->target != RT_NULL)
152+
{
153+
chassis_straight(info->target, -DEFAULT_VELOCITY_LINEAR_X);
154+
}
155+
}
114156

157+
static void chassis_rotate_left(command_info_t info, void *param, rt_uint16_t size)
158+
{
159+
if (info->target != RT_NULL)
160+
{
161+
chassis_rotate(info->target, DEFAULT_VELOCITY_ANGULAR_Z);
162+
}
115163
}
116-
static void chassis_move_left(command_info_t info)
164+
165+
static void chassis_rotate_right(command_info_t info, void *param, rt_uint16_t size)
117166
{
167+
if (info->target != RT_NULL)
168+
{
169+
chassis_rotate(info->target, -DEFAULT_VELOCITY_ANGULAR_Z);
170+
}
171+
}
118172

173+
static void chassis_move_left(command_info_t info, void *param, rt_uint16_t size)
174+
{
175+
if (info->target != RT_NULL)
176+
{
177+
chassis_move(info->target, DEFAULT_VELOCITY_LINEAR_Y);
178+
}
119179
}
120-
static void chassis_move_right(command_info_t info)
180+
181+
static void chassis_move_right(command_info_t info, void *param, rt_uint16_t size)
121182
{
183+
if (info->target != RT_NULL)
184+
{
185+
chassis_move(info->target, DEFAULT_VELOCITY_LINEAR_Y);
186+
}
187+
}
122188

189+
static void chassis_forward_with_param(command_info_t info, void *param, rt_uint16_t size)
190+
{
191+
if (info->target != RT_NULL)
192+
{
193+
if (size == sizeof(struct cmd_dt_velocity))
194+
{
195+
struct cmd_dt_velocity *velocity_info = (struct cmd_dt_velocity *)param;
196+
chassis_straight(info->target, velocity_info->data.linear_x);
197+
}
198+
}
123199
}
124200

125-
static void chassis_command_register(void)
201+
static int chassis_command_register(void)
126202
{
127203
// TODO
128204
command_register(COMMAND_CAR_STOP, chassis_stop);
129205

206+
command_register(COMMAND_CAR_FORWARD_WITH_PARAM, chassis_forward_with_param);
207+
208+
return RT_EOK;
130209
}
131210

132211
INIT_APP_EXPORT(chassis_command_register);

chassis/chassis.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ rt_err_t chassis_set_rpm(chassis_t chas, rt_int16_t target_rpm[]);
2525

2626
rt_err_t chassis_update(chassis_t chas);
2727

28+
rt_err_t chassis_straight(chassis_t chas, float linear_x);
29+
rt_err_t chassis_move(chassis_t chas, float linear_y);
30+
rt_err_t chassis_rotate(chassis_t chas, float angular_z);
31+
2832
#endif

0 commit comments

Comments
 (0)