in webserver_pkg/webserver_pkg/vehicle_control.py [0:0]
def api_manual_drive():
"""API that publishes control messages to control the angle and throttle in
manual drive mode.
Returns:
dict: Execution status if the API call was successful.
"""
webserver_node = webserver_publisher_node.get_webserver_node()
angle = request.json.get("angle")
throttle = request.json.get("throttle")
max_speed = request.json.get("max_speed")
if angle is None:
return api_fail("angle is required")
if throttle is None:
return api_fail("throttle is required")
if max_speed is None:
return api_fail("max_speed is required")
if angle < -1.0 or angle > 1.0:
return api_fail("angle out of range")
if throttle < -1.0 or throttle > 1.0:
return api_fail("throttle out of range")
webserver_node.get_logger().info(f"Angle: {angle} Throttle: {throttle}")
# Create the servo message.
msg = ServoCtrlMsg()
# bound the throttle value based on the categories defined
msg.angle = -1.0 * get_categorized_manual_angle(angle)
categorized_throttle = get_categorized_manual_throttle(throttle)
msg.throttle = -1.0 * get_rescaled_manual_speed(categorized_throttle, max_speed)
webserver_node.pub_manual_drive.publish(msg)
return jsonify({"success": True})