470 Commits

Author SHA1 Message Date
Andy Piper
9562c98f84 AP_Scripting: allow vehicles to yaw to target
docs for set_target_velocity_NED()
add set_target_angle_and_rate_and_throttle() for precise vehicle control
manual binding for set_target_velocity_NED() to allow optional boolean
update docs for attitude control
2025-12-17 16:31:37 +00:00
Andy Piper
a14116f64a AP_Scripting: add get_throttle_in() to scripting 2025-12-17 16:31:37 +00:00
Thomas Watson
a550087eee AP_Scripting: generator: dynamically create userdata metatables
The `luaL_testudata` and `luaL_checkudata` functions correctly treat the
absence of a metatable for the type to check as the type not matching,
so there is no need to have the type's metatable in memory until an
object using it exists. Therefore we can defer the metatable's creation
until the first time an object of that type is created.

Saves some 4500 bytes of Lua heap RAM, at least if no such objects are
created. The created metatables are shared between all scripts, so there
is no increase in the total RAM usage if all objects are used. However,
there is some increased risk of heap fragmentation and unexpected
out-of-memory errors on rarely used code paths.

It would be nice to construct the object in the new utility function,
but it's not possible in C++ to take the address of a constructor.
Instead passing in a lambda is ugly, hardly any more efficient, and
screws up constructors which take parameters.

Also optimizes by using the generated userdata creators where possible,
and convincing the compiler to omit unnecessary checks.
2025-12-16 11:13:16 +11:00
Thomas Watson
00a2b76779 AP_Scripting: generator: dynamically create ap_object metatables
The `luaL_testudata` and `luaL_checkudata` functions correctly treat the
absence of a metatable for the type to check as the type not matching,
so there is no need to have the type's metatable in memory until an
object using it exists. Therefore we can defer the metatable's creation
until the first time an object of that type is created.

Saves some 1500 bytes of Lua heap RAM, at least if no such objects are
created. The created metatables are shared between all scripts, so there
is no increase in the total RAM usage if all objects are used. However,
there is some increased risk of heap fragmentation and unexpected
out-of-memory errors on rarely used code paths.
2025-12-16 11:13:16 +11:00
Thomas Watson
628ed68a21 AP_Scripting: factor non-templated definitions out of generated code
In some far future we may use a real templating language, but this makes
that code easier to edit today.
2025-12-10 14:39:14 -06:00
Thomas Watson
fbf146fc35 AP_Scripting: fix spelling mistake in error message 2025-12-04 21:12:30 -06:00
Thomas Watson
3b93ae972b AP_Scripting: fix binding generator spelling mistakes 2025-12-04 21:12:30 -06:00
Andy Piper
83e2647b5e AP_Scripting: add access to more fence methods 2025-12-03 19:18:19 +00:00
Peter Barker
27781c8f18 AP_Scripting: add a pair of warnings about using RC set_override method
had an instance where a script was using this override and didn't failsafe as expected
2025-11-28 18:26:08 +11:00
Andy Piper
7ede7dc715 AP_Scripting: clean-up semaphore access for CRSF 2025-11-19 19:01:11 +11:00
Andy Piper
94bc8d86e3 AP_Scripting: add CRSF peek_menu_event() and pop_menu_event()
add CRSF send_response() method
2025-11-19 19:01:11 +11:00
Peter Barker
93f45acb45 AP_Scripting: rename airspeed methods on AHRS to include EAS or TAS
mixing these up has caused confusion in the past.

"estimate" could also be confused as to mean "synthetic", when it will often come from a sensor.
2025-11-17 18:46:52 -06:00
Iampete1
790c735999 AP_Scripting: allow scripting report power percentage ESC telem 2025-11-16 11:44:35 +11:00
Iampete1
1c3784c575 AP_Scripting: allow adding depends keyword to fields 2025-11-16 11:44:35 +11:00
Iampete1
38e8f23302 AP_Scripting: Periph bindings get_yaw_earth and get_vehicle_state should depend on AP_PERIPH_NOTIFY_ENABLED 2025-11-16 11:11:33 +11:00
Andy Piper
c5540252e4 AP_Scripting: add get_breach_direction_NED() to lua bindings
optionally return last breach position
2025-11-05 18:24:54 +11:00
Oleksiy Protas
979142b953 AP_Scripting: serial begin() automatic baud rate
If the baud rate is omitted or nil, use the HAL-derived value
which usually is taken from the corresponding parameter.
2025-10-20 23:05:47 +02:00
Thomas Watson
da676fd438 AP_Scripting: fix gcs:set_message_interval port range
Despite the implications of the example and the
`MAVLINK_COMM_NUM_BUFFERS` limit in the description, the actual first
argument to this function is the serial port number.

Correct the argument range to allow any possible port number (no need to
limit as the list is sparse) and enhance the example to give more port
numbers.
2025-10-13 22:48:12 -05:00
Peter Barker
9b240db037 AP_Scripting: add a binding for set_alt_m 2025-10-11 12:39:41 -05:00
Tim Tuxworth
6b4743f027 AP_Scripting: plane_follow.lua applet 2025-10-07 11:48:50 +11:00
Peter Barker
e783bb4ab8 AP_Scripting: add define so user can omit AP_Vehicle bindings 2025-10-01 18:05:38 +10:00
Peter Barker
da93d1467c AP_Scripting: add define so user can omit AP_Motors bindings 2025-10-01 18:05:38 +10:00
Tom Pittenger
08b209d340 AP_Scripting: fix periph:get_vehicle_state to be 64 bit 2025-09-29 15:16:23 +10:00
Iampete1
064655cb4a AP_Scripting: add binding for UART set_unbuffered_writes 2025-09-15 18:18:55 -05:00
Iampete1
5f33bc7af8 AP_Scripting: update esc_telem:update_rpm method to use float 2025-09-15 18:18:55 -05:00
Andrew Tridgell
3393fa2ed9 AP_Scripting: added is_pending() method on sockets
allows for non-blocking TCP connections
2025-09-03 15:17:39 +01:00
Tim Tuxworth
cc0b8164d2 AP_Scripting: scripted arming checks 2025-08-16 19:55:15 +01:00
Peter Barker
4e7e417dc3 AP_Scripting: add test for NAMED_VALUE_STRING 2025-08-10 08:38:08 +10:00
Andrew Tridgell
086472de8f AP_Scripting: added an add_route() binding
allows custom network routes
2025-07-13 13:31:59 +10:00
Yuri Rage
e952d4b16b AP_Scripting: add net-ntrip applet
Co-authored-by: Thomas Watson <twatson52@mac.com>

Co-authored-by: Thomas Watson <twatson52@mac.com>
2025-06-20 19:44:33 -05:00
Abdulaziz
6b30f2cccb AP_Scripting: provide bindings for parity and stop bits 2025-06-07 18:51:00 -05:00
Peter Barker
fa899c14cc AP_Scripting: new scripting bindings get_roll_rad
deprecate the old get_roll binding
2025-06-05 17:28:41 +10:00
Peter Barker
c873d8bb53 AP_Scripting: rename AHRS get_roll etc accessors to include _rad 2025-06-05 17:28:41 +10:00
Peter Barker
3ec715e81c AP_Scripting: rename get_relative_position_NED_origin methods to include 'float'
can't have both postype and these methods, something has to shift names
2025-05-24 09:23:35 +09:00
Peter Barker
18ba475340 AP_Scripting: add param-set-filter LUA applet and bindings for same
AP_Scripting: add param-set.md to document new applet

with thanks to ChatGPT for the documentation!
2025-05-20 13:32:16 +10:00
Andrew Tridgell
4a442d3b20 AP_Scripting: support DroneCAN messaging in lua
allow for sending broadcast messages, subscribing to broadcast
messages and sending requests
2025-05-09 13:08:40 +10:00
Peter Barker
bf8a9e5df4 AP_Scripting: add _cm to get_vector_from_origin_NEU
... and the _NE equivalent.

Moves us closer to using metres in interfaces.  Several places already *0.01 the result of these methods
2025-04-29 08:29:41 +09:00
Iampete1
d82e92a5b7 AP_Scripting: Battery monitor: allow setting state of health 2025-04-15 08:40:48 +10:00
Andy Piper
ea0ea2f4af AP_Scripting: add margin breach time to scripting 2025-04-09 17:01:04 +01:00
Andy Piper
980f4ad45d AP_Scripting: expose get_breach_distance() 2025-04-09 17:01:04 +01:00
Andy Piper
a409118b00 AP_Scripting: add get_breached_margins() 2025-04-09 17:01:04 +01:00
Andy Piper
a62207298e AP_Scripting: rename AP_CRSF_SCRIPTING_ENABLED 2025-04-09 17:16:58 +10:00
Andy Piper
17753490ca AP_Scripting: update CRSF bindings 2025-04-09 17:16:58 +10:00
Andy Piper
814da063f1 AP_Scripting: update crsf menu docs 2025-04-09 17:16:58 +10:00
Andy Piper
fa36e5623d AP_Scripting: add CRSF menu bindings
add CRSF menu example
add scripted CRSF menu events
custom CRSFMenu helpers
play Beethoven's 5th on CRSF command
use native packed strings for CRSF menus and payloads
support CRSF submenus
2025-04-09 17:16:58 +10:00
Peter Barker
47f73e3037 AP_Scripting: correct myggcs to mygcs
not sure what the extra "g" was supposed to be for, best suggestion so far is "great".

Doesn't really add anything, so we should remove it.
2025-04-02 19:48:47 +11:00
Andrew Tridgell
f3506c6481 AP_Scripting: added gyro to set_pose 2025-04-02 07:05:04 +11:00
Andrew Tridgell
efbb1cf06f AP_Scripting: added set_pose SITL binding
and example script
2025-03-26 20:02:20 +11:00
Randy Mackay
594d44708d AP_Scripting: remove AR_PosControl slew rate binding 2025-03-26 18:47:52 +11:00
Randy Mackay
22de072ab3 AP_Scripting: Follow binding enabled for Rover
Some checks are pending
colcon build/test / build-test (push) Waiting to run
Cygwin Build / build (push) Waiting to run
ESP32 Build / build (esp32buzz, 10) (push) Waiting to run
ESP32 Build / build (esp32s3empty, 10) (push) Waiting to run
Macos Build / build (CubeOrange) (push) Waiting to run
Macos Build / build (sitl) (push) Waiting to run
QURT Build / build (push) Waiting to run
test ccache / build (10, chibios) (push) Waiting to run
test chibios / build (CubeOrange-ODID, 10, chibios) (push) Waiting to run
test chibios / build (CubeOrange-PPP, 10, chibios) (push) Waiting to run
test chibios / build (CubeOrange-bootloader, 10, chibios) (push) Waiting to run
test chibios / build (CubeRed-EKF2, 10, chibios) (push) Waiting to run
test chibios / build (CubeRedPrimary-bootloader, 10, chibios) (push) Waiting to run
test chibios / build (MatekF405-Wing, 10, chibios) (push) Waiting to run
test chibios / build (Pixhawk6X-PPPGW, 10, chibios) (push) Waiting to run
test chibios / build (SOHW, 10, chibios) (push) Waiting to run
test chibios / build (build-options-defaults-test, 10, chibios) (push) Waiting to run
test chibios / build (configure-all, 10, chibios) (push) Waiting to run
test chibios / build (fmuv2-plane, 10, chibios) (push) Waiting to run
test chibios / build (fmuv3, 10, chibios) (push) Waiting to run
test chibios / build (fmuv3-bootloader, 10, chibios) (push) Waiting to run
test chibios / build (iofirmware, 10, chibios) (push) Waiting to run
test chibios / build (new-check, 10, chibios) (push) Waiting to run
test chibios / build (periph-build, 10, chibios) (push) Waiting to run
test chibios / build (revo-bootloader, 10, chibios) (push) Waiting to run
test chibios / build (revo-mini, 10, chibios) (push) Waiting to run
test chibios / build (signing, 10, chibios) (push) Waiting to run
test chibios / build (stm32f7, 10, chibios) (push) Waiting to run
test chibios / build (stm32h7, 10, chibios) (push) Waiting to run
test chibios / build (stm32h7-debug, 10, chibios) (push) Waiting to run
test dds / build (sitl) (push) Waiting to run
test dds / build (stm32h7) (push) Waiting to run
test Linux SBC / build (bbbmini, armhf) (push) Waiting to run
test Linux SBC / build (bebop, armhf) (push) Waiting to run
test Linux SBC / build (bhat, armhf) (push) Waiting to run
test Linux SBC / build (canzero, armhf) (push) Waiting to run
test Linux SBC / build (erlebrain2, armhf) (push) Waiting to run
test Linux SBC / build (linux, base) (push) Waiting to run
test Linux SBC / build (navigator, armhf-musl) (push) Waiting to run
test Linux SBC / build (navigator64, aarch64) (push) Waiting to run
test Linux SBC / build (navio, armhf) (push) Waiting to run
test Linux SBC / build (navio2, armhf) (push) Waiting to run
test Linux SBC / build (pxf, armhf) (push) Waiting to run
test Linux SBC / build (pxfmini, armhf) (push) Waiting to run
test replay / build (replay, base) (push) Waiting to run
test replay / build (replay, clang) (push) Waiting to run
test scripting / test-scripting (push) Waiting to run
test scripts / build (astyle-cleanliness) (push) Waiting to run
test scripts / build (check_autotest_options) (push) Waiting to run
test scripts / build (logger_metadata) (push) Waiting to run
test scripts / build (param_parse) (push) Waiting to run
test scripts / build (python-cleanliness) (push) Waiting to run
test scripts / build (validate_board_list) (push) Waiting to run
test blimp / build (base) (push) Waiting to run
test blimp / build (clang) (push) Waiting to run
test blimp / autotest (sitltest-blimp) (push) Blocked by required conditions
test copter / build (base) (push) Waiting to run
test copter / build (clang) (push) Waiting to run
test copter / autotest (sitltest-copter-tests1a) (push) Blocked by required conditions
test copter / autotest (sitltest-copter-tests1b) (push) Blocked by required conditions
test copter / autotest (sitltest-copter-tests1c) (push) Blocked by required conditions
test copter / autotest (sitltest-copter-tests1d) (push) Blocked by required conditions
test copter / autotest (sitltest-copter-tests1e) (push) Blocked by required conditions
test copter / autotest (sitltest-copter-tests2a) (push) Blocked by required conditions
test copter / autotest (sitltest-copter-tests2b) (push) Blocked by required conditions
test copter / build-gcc-heli (push) Waiting to run
test copter / autotest-heli (sitltest-heli) (push) Blocked by required conditions
test ap_periph / build-gcc-ap_periph (push) Waiting to run
test ap_periph / autotest-can (sitltest-can) (push) Blocked by required conditions
test plane / build (base) (push) Waiting to run
test plane / build (clang) (push) Waiting to run
test plane / autotest (sitltest-plane-tests1a) (push) Blocked by required conditions
test plane / autotest (sitltest-plane-tests1b) (push) Blocked by required conditions
test plane / autotest (sitltest-quadplane) (push) Blocked by required conditions
test rover / build (base) (push) Waiting to run
test rover / build (clang) (push) Waiting to run
test rover / autotest (sitltest-balancebot) (push) Blocked by required conditions
test rover / autotest (sitltest-rover) (push) Blocked by required conditions
test rover / autotest (sitltest-sailboat) (push) Blocked by required conditions
test sub / build (base) (push) Waiting to run
test sub / build (clang) (push) Waiting to run
test sub / autotest (sitltest-sub) (push) Blocked by required conditions
test tracker / build (base) (push) Waiting to run
test tracker / build (clang) (push) Waiting to run
test tracker / autotest (sitltest-tracker) (push) Blocked by required conditions
test unit tests and sitl building / build (examples, base) (push) Waiting to run
test unit tests and sitl building / build (examples, clang) (push) Waiting to run
test unit tests and sitl building / build (sitl, base) (push) Waiting to run
test unit tests and sitl building / build (sitl, clang) (push) Waiting to run
test unit tests and sitl building / build (unit-tests, base) (push) Waiting to run
test unit tests and sitl building / build (unit-tests, clang) (push) Waiting to run
2025-03-18 12:37:26 +11:00