0.0.2rc43 2011-12-20 when changing the transparency of the robot control panel, leave the controls themselves (at 75% alpha) and only change the transparency control panel window (for more modern, "floating controls" -type of control panel gui) changed various command line options to toggles; now defaults to windowed full-screen, stylized fonts, fx, auto-hide, -u 5 -Y 5 etc. -- so if no options given, the app is entered w/ a more interesting(?) default look 0.0.2rc42 2011-12-12 new skybox (Mars!) new platform type 5 ("skybox-bottom"); uses skybox bottom texture as platform texture new function: platform(n) where n is 0-5, change platform (ground/floor) type (P key cycles types). n may also be one of: "invisible" "transparent" "solid" "transparent-grass" "solid-grass" "skybox-bottom" new command line: --platform-type n kiosk mode now uses --fx i.e., fx('all') option also 0.0.2rc41 2011-12-09 help('function') -- now prints a multi-line help for that (robot command) function. new function: apropos('pattern') -- searches help text for lines containting pattern; matching lines (with corresponding topic names) are printed. new command line options: --help-topic t print long help for t (function name) --html-functions print function docs as html robot_command.pdf manual (now 41 pgs) updated with expanded function docs section. new function: browser(url) -- open url in system default browser (windows) or BROWSER (linux) .height (z pos) restored to robot_coord() info new function: html_help() view functions.htm docs in browser 0.0.2rc40 2011-12-05 new function option: skybox('next') - use next skybox (cycles) kiosk, stacking game now use available skyboxes new command line option, --skybox n pulse arm movement, grasp, bend movements for keyboard/joystick (animates movements more smoothly) new function: fx(); fx('reverb'), fx('flange'), fx('all'), fx('none') -- audio sound effects; acts on everything except speech 0.0.2rc39 2011-11-29 dropped need for separate thread for key/joystick backwards walking ('s' key, or down arrow) ... random_sound() now prints (to console etc) the code for (sound{...}) only if the 'code' argument keyword is given, like random_sound('code') -- prints code random_sound('pickup','code') -- prints code random_sound() -- does not print code random_sound('pickup') -- does not print the code fixed std::map / memory allocation bug in joystick init halt button from console stops robot motion as well as halting (main lua) interpreter. Option: halt('threads') stops all interpreter threads launched via the thread() command, and halt('all') stops all threads and the main interp thread. command line .lua scripts bug fixed re: threading (functions defined there were not seen in threads) fixed mute/unmute bug which didn't mute impact channel in some instances make mouse cursor invisible after 1.5 secs after it is last touched, make mouse cursor visible again when mouse is touched. kiosk mode now enters with hud-mode set to 2, and no-top-buttons set. new function: skybox(n) - set skybox to n (0,1,2,...) default skybox, skybox(0), is in data/skybox; additional skyboxes are in subdirectories of data/skyboxes/ skybox(s) - set to the skybox with "s" in the path name skybox('none') - turn off skybox (yellow grid) skybox() - set to the default skybox, skybox(0) alt x - (new keyboard command) next skybox data/skyboxes/ - new skybox folder, with two new skyboxes 0.0.2rc38 2011-11-23 random_sound() instances in startup, tests, games now use sound type names (not the numerical code equivalents) new function halt() (like halt button in console - halts the "main" lua interpreter) *never halt an interp thread for simple robot motion control command keys from keyboard/joystick* separate master animation control from individual robot's motion control do count key commands for forward/back/left/right as 'touching the controls' ... fixed motor sound bug where motor did not sound in some instances when a block impact sound was playing console hide button (and close) turns off auto-hide mode fixed bug, crash if blocks deleted when robot was holding one improved "stacking_game"; smoother, robot movement does not halt game; replay crash fixed. fixed bug (crash) on exit if no sound had been played. 0.0.2rc37 2011-11-21 disable auto-hide for joystck view change command buttons animate legs when turning by keyboard or joystick now using latest mathomatic library, 15.7.1 ! 0.0.2rc36 2011-11-21 internal code improvements re application exit cleanup re threads, deleting objects, gui window activation, focus, more. random_sound(), synth_sound('code') now return lua table of params; ex: r = random_sound(); -- create new sound, r synth_sound(r) -- play r enhanced stacking game sounds, play new named options: show(s) where s is 'hide', 'control-panel', 'console', 'calc' new named options: view(s) where s is 'center', 'center-follow-robot', 'from-robot', 'map', 'plot' new named options: random_sound(s) where s is 'pickup', 'laser', 'explosion', 'powerup', 'hit', 'jump' 'blip' 0.0.2rc35 2011-11-18 --version option no longer crashes... new function: ignore_input(i) if i=1, ignore robot motion keyboard/joystick motion commands (for games) new functions: version() returns robot command version as string synth_sound{ ...sfxr...params... } synth a bleepy game sound (based on sfxr params: base_freq freq_limit p_freq_ramp freq_dramp duty duty_ramp vib_strength p_vib_speed vib_delay env_attack env_sustain env_decay p_env_punch lpf_resonance lpf_freq lpf_ramp hpf_freq p_hpf_ramp pha_offset pha_ramp repeat_speed arp_speed p_arp_mod) random_sound() synthesize a random sound; prints the synth_sound{} command to generate it on the console, ex: synth_sound{ base_freq = 0.491782, freq_limit = 0, freq_ramp = -0.0479938, freq_dramp = -0.557035, duty = 0.2004, duty_ramp = 0.557848, vib_strength = -0.00223781, vib_speed = 0.9522, vib_delay = 0.185, env_attack = 0.42832, env_sustain = 0.466762, env_decay = -0.6822, env_punch = 0.0193321, lpf_resonance = -0.6658, lpf_freq = 0.883571, lpf_ramp = -0.123655, hpf_freq = 0.0542909, hpf_ramp = -0.321582, pha_offset = -0.0889554, pha_ramp = 0.606785, repeat_speed = 0.2436, arp_speed = 0.1524, arp_mod = -0.0346 } synth_sound() (no args) will play (synth a sound) using the current synth settings. synth_sound("code") prints the settings for the currently synthesized sound. random_sound(0) -- pickup -type rand. sound random_sound(1) -- laser random_sound(2) -- explosion random_sound(3) -- powerup random_sound(4) -- hit random_sound(5) -- jump random_sound(6) -- blip random_sound(-1) -- mutate the current sound fixed bug in command scrolling for console, calc kiosk, demos, tests, stacking game: added various synthesized audio beeps and bleeps 0.0.2rc34 2011-11-16 fixed race condition bewteen gui and sdl joystick fighting over video device context... somtimes caused crash on startup or resizing (resizing when using a joystick is disabled for this reason). removed some unused gui-related dlls threads make memory reservations on startup restored stacking_game() length to 90 secs Ctrl a (change window alpha) changed to ctrl shift a (ctrl a should be select all, TBD) new command/function: thread_global(), a kind of global storage which is shared among threads) thread_global("k", v) -- store v (int or string) in k thread_global("k") -- fetch and return v, given k various stacking_game() improvements, using thread and thread_global new function: splash("filename.png") - image must be in data/imageset/ dir ... inset_mode() synched with render thread (could crash when attempting render and insetMode() change at same time) make mathomatic library more thread-safe by putting a mutex lock around calls to matho_process() turn off auto-hide when toggling control panel, console, calc from menu 0.0.2rc33 2011-11-05 restored auto-repeat for console, calc windows new command: thread(c) - run lua code in separate thread 0.0.2rc32 2011-11-04 new command key ctrl a - cycle through range of transparency values for currently active window new functions control_alpha(f); set alpha (transparency) for robot control panel colors() return lua associative table of color names => #rgb (for extended/basic colors in effect) used in list_all_colors() in startup.lua stacking_game() placed in separate data/games.lua source. Various improvements to stacking_game() 0.0.2rc31 2011-11-01 now using latest version of mathomatic: 15.6.5 ***** new command line option: --mute tweaked basic colour list to match simple, pre-school-ish toy building block colors and names synched console show/hide w/ gui render thread to fix problems caused when show/hide happens as text scrolls new command option: joystick( "config" ) lists current joystick configuration settings ... as joystick commands various tweaks in movement from keyboard joystick to make movement more responsive, smooth and natural - and more standardised to many 1st person -type games. turning speed setting scaled to make better range of speeds for turning robot, esp wrt animation dt 0.0.2rc30 2011-10-30 new command: joystick( "event", "action") where "event" is one of the strings: axis_a_lowval axis_a_highval axis_b_lowval axis_b_highval stick_centered button_0 button_1 button_2 button_3 button_4 button_5 button_6 button_7 button_8 button_9 button_10 and "action" is one of: reverse forward left right halt block arms_down arms_up grasp_open grasp_close bend_down bend_up next_win toggle_hud toggle_inset toggle_view none also, joystick( "x", n ) where "x" is one of: "axis_a", "axis_b", or "throttle_axis", and n is the axis number: 0 and greater. note: above joystick config command overrides system defaults greatly improved keyboard control... ! * movment with up,down,left,right,a,w,d,s keys more natural; happens only as long as key is pressed 0.0.2rc29 2011-10-29 auto-hide mode off for F4, F6, F7 (user is asking for specific windows to show/hide with those keys so auto-hide should just be turned off right at that point) new command line option: --joystick-number n [0] new optional startup.lua config setting: JOYSTICK_NUMBER play_wav: added (optional) volume arg; play_wav(wavfilename, volume, loops, millisecs) turns, bends, arms now more smoothly animated via command keys and joystick joystick: l/r u/d reassigment, sensitivity tweaks 0.0.2rc28 2011-10-26 control panel auto-hide mode on/off with (hud) auto-hide mode (control panel hides if no key/mouse/joystick after a few secs; top HUD display hides if no message change after a few secs). --hud-auto-hide renamed to simply --auto-hide new/modified functions for: ctl F3 toggle auto-hide (both HUD and control panel) F2 toggle control panel (now auto-hide off, too) alt a auto-hide toggle (new) alt f cycles through available fonts new command keys: ] increase speed [ decrease speed enhanced functions: console_font(n), msg_font(n), calc_font(n) ... new font number 2 (easy, 36pt) new font number 3 (easy, small) new functions: calc_font(n) play_wav( "file.wav" [, loops, [, msec]]) new menu options: block | basic colors use simple (10) color names block | extended colors use big list (300~ color names) added a new (easy, 36pt) font various command keys now also display a 1 sec. message telling what was just changed,cycled,toggled, etc. fixed a bug introdcued to nl_test1() when speak() function added to demo. 0.0.2rc27 2011-10-22 new options --no-top-buttons don't show big 3 HUD buttons --no-speech-thread speech synth not in sep. thread --hud-auto-hide hide (top display) HUD if no message change after a few secs new HUD funtions: buttons on/off: hud_mode('buttons-off'), hud_mode('buttons-on') auto-hide/show: hud_mode('auto-hide'), hud_mode('show') command key: alt F3 ... toggle hud button display ctl F3 ... toggle hud auto hide fixed missing impacting sounds for some block collisions make pop-up helps from latest lists of commands, keys, etc 0.0.2rc26 2011-10-20 new command line option: --no-idle for Win32, set the thread execution state to indicate that the display (and system!) are required - and so do not automatically sleep etc. (This option is also set for the --kiosk demo loop.) speech synthesis now runs in its own thread and no longer blocks (so might need to add calls to sleep() to prevent say() from interrupting itself in .lua scripts) math.random() wasn't random on Win32; srand() per lua thread now 0.0.2rc25 2011-10-19 new functions: hud_mode([n]) ........ top HUD mode 0-7 inset_mode([n]) ...... view inset 0=off,1=on some tweaks to the stacking game on_* spoken message selection make 'B' stack block, if possible 0.0.2rc24 2011-10-18 New game: the (block) "stacking game". The object of the game is to stack the most blocks in a minute or so. To count, a block should be part of a stack (doesn't matter how high). stacking_game() -- defined in data/tests.lua new (lightweight) countdown timer function game_timer('countdown', t[, c]) t = time in seconds to countdown c = lua callback code new functions (lightweight callbacks for block actions) on_grab(c) ........... run c on block grabs on_release(c) ........ run c on block drops refinements in logic for 'follows' mode in control panel after keyboard and/or joystick activity (in general, turns this mode back on more) 0.0.2rc23 2011-10-17 keyboard robot controls (turn,arms,etc) returned to previous degree of "smoothness" (keyboard made too coarse by joystick changes) new "game" functions that modify the (F3) HUD: game_display(n) ... 0 = off (i.e., default X,Y coords), 1=timer, 2=score game_score(n) ..... set score to n game_timer(s) ..... s=start|stop 0.0.2rc22 2011-10-15 joystick functioning improvments: smoother, better stops, (all-stop on joystick centering); first 10 buttons assigned common functions for robot movement, views. 0.0.2rc21 2011-10-14 improved kiosk mode: is halted when control panel is used, restarts if nothing is then touched after 45 secs new functions: run_on_idle(c,[s]) run c if idle s [60] secs speed(s) .......... set speed to s (1-50) joystick support added (enabled by default; new command line option --no-joystick disables joystick init and use) console_alpha()/calc_alpha() now synched w/ render thread. 0.0.2rc20 2011-10-10 New function say("text") - robotic text-to-speech! (flite) --kiosk mode now looks for kiosk() lua function to use for this option. kiosk function now combines 5 different demos, repeats block freeze functions also now synched w/ render... synch/thread coordination enhanced for scrolling text bug fixed in calc() command causing it to sometimes return incorrect (non-lua) equations, which broke plot_calc(), etc. new show(n) function: 1=show control panel, 2=show console, 3=show calc console, 0=hide control panels and consoles when consoles (robot command window, or robot calculation window) are maximized, don't show main / top buttons (which can't be clicked because window covers them) when choosing a random color for blocks, make that colour exactly match the rgb for a standard color name from the (extended) list of (standard) names. 0.0.2rc19 2011-10-4 delete_blocks() thread sync bug caused crash - block deletion now synchronized with block render thread fixed release_snap(0) - mode 0 should simulate releasing the block in the same orientation held just prior to release; the bug caused blocks to be wrongly snap/rotated on release new command line option: -M m, --main-view m (sets view to m; 0-3) also, new corresponding robot command lua function, view(m) 0.0.2rc18 2011-10-3 new function block_display(m) The mode, m, is one of: 0 (don't show blocks the robot encounters) 1 (display block name) 2 (display block colour name) 3 (display block name and block colour name) print_results() function renamed to print_console() formatted coordinates now show only a single decimal place for floats in many info/verbose startup.lua functions new command line option: -K t (or) --impactsdt t sets ImpactsDtThresh to t (defaults to 5.0 now) new function: random_blocks([n]) make [n] new blocks placed on the floor, randomly, If n is not given, make N_RANDOM_BLOCKS. (If N_RANDOM_BLOCKS is not defined, it defaults to 32 blocks.) new kiosk mode -type demo; demo_loop1() deletes blocks, makes 17 random ones, crudely piles them, repeats. 0.0.2rc17 2011-10-2 now chdir to path (P) if mmdp(.exe) is invoked with an explicit path, like P/mmdp various tweaks (threshold, drop height) to help "stack blocks" commands generate impact sound nl_test1() demo (in data/tests.lua) only loads blocks if none are present various improvements to linux .tgz distribution new puppy linux .pet installation (tested on lupu-528; needs Xorg and puppy's opengl package, but otherwise carries along needed .so libs) (registration code now optional at compilation via -DUSE_REGISTRAION; remains in effect) 0.0.2rc16 2011-09-29 fixed console scroll problems (for some Win32 machines); ghosting, blinking, losing alpha when scrolling text (first linux release: robot_command-0.0.2rc16.tgz !) 0.0.2rc15 2011-09-29 new command msg_font(f) f=0 (default, plain font) f=1 (stylized font); also alt-f (toggle font) command key. Similarly, new command console_font(f) new command line option: --random-blocks scatters some blocks when starting. increased radius around robot(s) where new blocks will not be (randomly) placed fixed bug where display2 (the longer message text display at the top) did not show on many (but not all) Win32 machines 0.0.2rc14 2011-09-23 fixed load/save common file dialog: load/save error (sub)dialogs didn't show text or buttons; fixed. more control panel interaction tweaks re: 'control follows' to provide smoother interaction when clicking on panel to push a putton or move a control. 0.0.2rc13 2011-09-20 After a control panel action-type button is pressed (run, block, stack), set the "control follows" mode ON (to allow control panel control movements to be seen which looks nicer and more lively.) new block menu command: delete (deletes all blocks) 0.0.2rc12 2011-09-11 new freeze_stack(m) setting; m=1 freeze blocks in stack when ungripping a block. m=0 don't freeze when stacking 0.0.2rc11 2011-09-08 now using most recent mathomatic library, version 15.6.4 new (optional) parameter for route, ii; route(ax,ay,bx,by[,ii]), where ii is one of: S F B N (Start,Finish,Both,Neither) * handles how obstacles near start,finish areas of route are handled. S=ignore objs near start, F=ignore objects near finish, B=ignore objs near start and finish; N=don't ignore objects near start or finish. ... (defaults to B) more fine tuning for obstacle margins in route planning 0.0.2rc10 2011-09-03 new data/tests.lua test, lay_blocks_in_tight_circle() create circle of blocks, layers up to make circular tower .blocks save/load handle block remembers colour (by color name) also remembers block name make lift (construction site elevator) speed follow robot speed stack button always uses block snap mode 3 (level to ground + center to block) separated lua tests out from data/startup.lua into (new) data/tests.lua some tweaks to Astar.cpp margins for unblocked (used in goto_clear_floor function affecting block/obstacle avoidance for grabbing/stacking in nl demo, etc.) 0.0.2rc09 2011-08-23 when computing A* route from a to b, ignore obstacles which are directly on top of points a and b, themselves lisp/prolog error message is now displayed in console after halt due to errors or a (quit "msg") bug in BuildingBlock::thaw() fixed; sometimes caused crash from thaw_blocks() help() now takes optional param, like help("apropos") only lists functions where "apropos" is found minor code cleanups, fn renaming in blockplan.l, startup.lua 0.0.2rc08 2011-08-14 new function console_alpha(f) where, f=0.10 very transparent, f=0.90 not transparent, etc. calc_alpha(f), too. 0.0.2rc07 2011-08-11 fixed a control panel show/init robot control positioning bug - caused robot motion when first showing control panel can stack/ unstack blocks up to 5 high frm control panel block buttons (without elevator. can stack higher with elevator) refactored goto_clear_floor(b) to find clear path near block, - which is reachable from current robot pos improved freezing/thawing logic, block geom->gl bug fixed caused loaded blocks to sometimes not stack correctly 0.0.2rc06 2011-08-07 unblocked(xa,ya, xb,yb, [m,[i]]) m (margins) =1 (default, use big margins) =0 (use small margins) i block (name) to ignore A* integrated into to nl_test(); also, various improvements to nl_test1()'s underlying lisp/prolog route and block placement logic, free floor space logic 0.0.2rc05 2011-08-05 new route(xa,ya, xb,yb) function (astar route saved in Approach_point_list) unblocked(xa,ya, xb,yb) (is path clear from a to b ?) 0.0.2rc04b 2011-08-02 include 4.blocks and blockplan.l 0.0.2rc04 2011-08-02 errors in startup.lua displayed even if not echoing to stdout. blocks in blocks_above() and blocks_below() sorted by height. (lua "lua-expr") return val fixed; n.b., lua-expr should contain return like, (lua "return lua-expr") to get lua return val back to lisp! the console print function, print_results(), no longer adds a \n - must add \n explicitly (so added many \n's to startup.lua) fixed a bug in reading blocks from a file that gave blocks a garbage rotation, slowing next freeze. 0.0.2rc03 2011-07-27 new prolog (pilog) robot command console mode alt m - select robot console mode (cycles through lua/lisp/prolog) control panel controls (arm angle, bend, etc) synched with robot when panel window displays, regardless of 'follows' setting new msg(s[,t,[,b]]) display message function. Makes short text message s appear on display for t [15] seconds. If b is supplied (and is not 0) then blink. 0.0.2rc02 2011-07-24 fixed lisp mode problems when given incomplete s-expr in console mode. changed console "lisp"/"lua" button to "mode" new function: console_in() returns user input line. waits for user to type something into the robot console input, and hit enter. fixed floor2glDegrees (90 is now E, not W) affected heading() function 0.0.2rc01 2011-07-19 added optional block name parameter to pick_up_block(): so now, pick_up_block() or pick_up_block('a') is allowed added optional block parameter to stack_block(), too fixed (lua "command") lisp function - only saw last arg 0.0.1rc15 2011-07-14 new --block-info cl switch, Alt-c toggle: display name and/or color name of seen/held blocks robot command (console) overhaul: new lua/lisp mode .. commands go directly to the interpreter that is currently enabled lisp/lua button changes mode lisp (console) commands run in own thread improved: separated command input area from command output scroll area (like traditional java/js /error consoles in browsers) improved lisp stdout capture to gui fixed system hang (after blocks->freeze) 0.0.1rc14 2011-07-11 new lua functions: blocks() .......... list all blocks block_info(n) ..... x,y.. for block n block_in_front() .. name of facing block block_held() ...... gripped obj name blocks_above(n) ... list blocks above n blocks_below(n) ... list blocks below n block_on_top(n) ... is n on top? time coordinate added to robot coords functions (a time integer like os.time returns) pick_up_block function/button now able to pick up top block if stacked (up to four high) other improvements in block pick up / stacking 0.0.1rc12 2011-07-06 new block_color(s) command, recognises common english color names, also #rrggbb hex/html color specifications golog.l bugs fixed (re: holds, partial unif.) --lisp option (enters lisp rep) --notouch-display2 option robot_command.pdf manual updated 0.0.1rc11 2011-06-30 picolisp error longjmp handled now golog.l 0.0.1rc10a 2011-06-25 new embedded lisp command: (lua any1 [... anyN]) * concatenates any1 ... anyN as string (like prinl) and executes it as a (robot command) lua statement. So robot command's lua functions can be called from picolisp, and vice versa. lua from lisp: (lua "pick_up_block()") lisp from lua: lisp('(? (equal "foo" @X))') 0.0.1rc09 2011-06-25 new embedded lisp interpreter (miniPicoLisp) new embedded prolog interpreter (pilog) new lua command: lisp(str) (reads string str as s-expr, evals, returns results as string) 0.0.1rc08 2011-06-15 improvements in handling interruptions in walking don't allow a new block to be created where a robot is 0.0.1rc07 2011-06-14 new control panel button (random blocks) limit blocks to 256 0.0.1rc06 2011-06-13 new release_snap(M) modes, if M = 0 = do not snap blocks 1 = NSEW - snap blocks, and level 2 = snap to be level with the ground 3 = snap level AND to center of stacking obj new --view-map command line switch improved make_curve(), parabola() examples - uses "robot calculation" CAS to manipulate y=f(x) -type equations to help place blocks on curve tangent freeze preserves vertical rotation (still snaps level to ground / block) new ctrl-r command (makes N_RANDOM_BLOCKS appear) 0.0.1rc05 2011-06-10 fixed a threading -related bug in the console that would crash program when scrolling text under certain circumstances allow multiple calc commands (algebraic expressions) separated by semicolon ; 0.0.1rc04 2011-06-07 new command line options: -m 'calc' -p (for initial xy equation plot) 'PAUSE' display limited to 1-sec improved control: halting plot button in robot calc uses plot_calc() improved plot_calc() improved 2d plot (scaled tick marks) new Block | Random (menu; makes some random blocks appear) 0.0.1rc03 2011-06-04 new plot_calc() script M (map/graph) feature; 2d plotting new plot() robot command added 'stack block' button to control panel added "code" button to control panel; uses new add_robot_coord() robot command to capture robot postion in ROBOT_COORDS[N_COORDS] enhanced robot_coord() robot command to record robot joint (arm, bending etc) angles. Also as labeled table fields (vs just {x,y} before) internally refactored MVC View class into AppViews and View