SAN => coordinates?
Posted: Mon Apr 09, 2018 5:58 pm
Greetings,
I'm using gnuchess to decide which move a robot should make, and using that output to control a robot arm (to execute the move on a real board).
However, gnuchess outputs SAN (Standard Algebraic Notation), such as "Nf3". To control the robot arm, it would be much more helpful to have a coordinate-based notation, such as "g1-f3".
My question is:
1) Is there a way to get gnuchess to output coordinate-based notation? I know it can accept such notation as input (human-supplied move).
-or-
2) Is there existing software (or detailed algorithm) that takes
(a) a SAN move
(b) a .eps board
and produces:
(c) a coordinate-based move?
Thanks!
Kevin
PS. I use Linux, and here is how I get gnuchess to make its (SAN) move recommendation:
#===================================================================
# Use gnuchess to decide on next move.
#
# 1. reads current position from file named $1 (.epd format)
# 2. decides what move to make (as white), using gnuchess
# 3. prints out move
# 4. also stores resulting board in dgt.chess.nextpos (.epd format)
rm -f dgt.chess.nextpos
printf "solveepd $1\nepdsave dgt.chess.nextpos\nquit\n" |
gnuchess |
grep -a 'My move is' |
sed 's/My move is : //'
I'm using gnuchess to decide which move a robot should make, and using that output to control a robot arm (to execute the move on a real board).
However, gnuchess outputs SAN (Standard Algebraic Notation), such as "Nf3". To control the robot arm, it would be much more helpful to have a coordinate-based notation, such as "g1-f3".
My question is:
1) Is there a way to get gnuchess to output coordinate-based notation? I know it can accept such notation as input (human-supplied move).
-or-
2) Is there existing software (or detailed algorithm) that takes
(a) a SAN move
(b) a .eps board
and produces:
(c) a coordinate-based move?
Thanks!
Kevin
PS. I use Linux, and here is how I get gnuchess to make its (SAN) move recommendation:
#===================================================================
# Use gnuchess to decide on next move.
#
# 1. reads current position from file named $1 (.epd format)
# 2. decides what move to make (as white), using gnuchess
# 3. prints out move
# 4. also stores resulting board in dgt.chess.nextpos (.epd format)
rm -f dgt.chess.nextpos
printf "solveepd $1\nepdsave dgt.chess.nextpos\nquit\n" |
gnuchess |
grep -a 'My move is' |
sed 's/My move is : //'